Makalah Seminar Tugas Akhir
Emulasi Komunikasi Bus I2C Pada Mikrokontroler AT89C51 Oleh : Tedy Soeprapto (L2F 097 678) Jurusan Teknik Elektro Universitas Diponegoro Semarang
Abstrak --- Protokol bus I2C merupakan protokol yang pertama kali dikembangkan oleh Philips semiconductor. Bus I2C sendiri merupakan sistem bus serial yang didasarkan pada konsep master dan slave. Piranti master dalam suatu sistem bus I2C dapat merupakan mikrokontroler yang memang diperuntukkan untuk melakukan komunikasi dalam sistem bus I2C dengan antar muka yang telah terintegrasi didalamnya. Tetapi, tidak menutup kemungkinan dikarenakan kesederhanaan protokol bus I2C menjadikannya dapat secara mudah untuk diemulasikan pada suatu mikrokontroler biasa. Dalam Tugas Akhir ini, dilakukan emulasi konsep komunikasi berdasarkan protokol bus I2C pada mikrokontroler AT89C51 dan juga dibuat suatu rangkaian yang digunakan untuk mendemonstrasikan komunikasi antara master dan slave pada suatu sistem bus I2C. Dilakukan pengujian perangkat lunak emulasi bus I2C pada mikrokontroler AT89C51, pengujian fungsi dari tiap slave yang terhubung pada sistem bus I2C.
•
1.
Pendahuluan Ada beberapa macam standar komunikasi serial yang telah dikembangkan oleh perusahaan-perusahaan semikonduktor di dunia. Salah satu standar yang populer adalah teknik komunikasi I2C (Inter Integrated Circuit) karena kesederhanaan arsitektur dan protokolnya. Untuk memahami konsep komunikasi berdasarkan standar komunikasi bus I2C maka harus dilakukan pemahaman pada konsep dan protokol dari bus I2C. Mikrokontroler Atmel AT89C51 merupakan mikrokontroler boolean yang tidak mendukung konsep komunikasi bus I2C. Tetapi karena kesederhanaan konsep arsitektur dan protokol dari standar komunikasi bus I2C, membuatnya dapat diemulasikan dan diwujudkan dalam suatu sistem bus I2C master tunggal dengan beberapa buah slave yang merupakan IC-IC yang mendukung standar komunikasi bus I2C.
Komponen yang mengontrol transfer sinyal pada bus I2C dengan frekuensi detak tertentu disebut sebagai master • Komponen yang dikontrol oleh master disebut sebagai slave Dalam konsep komunikasi bus I2C hanya dibutuhkan enam operasi dasar sederhana untuk mentransmisikan dan menerima informasi. Keenam kode operasi itu adalah sebagai berikut : 1. Sebuah bit start 2. Suatu alamat slave 7-bit 3. Suatu bit read/write yang akan menentukan apakah slave akan berfungsi sebagai transmitter atau receiver. 4. Suatu bit pemberitahuan (acknowledge) 5. Bit pesan yang dibagi ke dalam segmen 8-bit 6. Suatu bit stop
2.
2.1
Landasan Teori Bus I2C merupakan singkatan dari bus Inter Integrated Circuits yang secara langsung menjelaskan fungsi dasarnya yaitu menyediakan jalur komunikasi diantara Rangkaian Terintegrasi (Integrated Circuits – IC). Bus I2C bekerja berdasarkan prinsip master dan slave. Secara fisik sistem bus I2C terdiri dari 2 buah kawat aktif dan jalur catu daya serta ground. Dua buah kawat aktif yaitu SDA yang merupakan kepanjangan dari Serial Data dan SCL yang merupakan kepanjangan Serial Clock merupakan jalur kawat dua arah (bidirectional) Dalam konsep bus I2C ada beberapa istilah yang didefinisikan sebagai berikut • Komponen yang mengirim sinyal ke bus I2C disebut sebagai transmitter • Komponen yang menerima sinyal disebut sebagai receiver
Kondisi Start dan Stop Kondisi START didefinisikan sebagai perubahan logika jalur data dari high ke low pada saat logika jalur detak berada pada logika high sedangkan kondisi STOP didefinisikan sebagai perubahan logika jalur data dari low ke high pada saat logika jalur detak berada pada logika high. Kedua kondisi ini diilustrasikan pada gambar 2.1.
SDA
SCL
S
P
Kondisi Start
Kondisi Stop
Gambar 2.1 Kondisi Start Dan Stop
Makalah Seminar Tugas Akhir
2.2
Pengalamatan 7-bit Setelah dikirimkannya kondisi start, maka dilakukan pengiriman alamat dari slave yang akan diakses. Pengiriman ini dilakukan dalam byte pertama dengan susunan dari byte pertama ini diilustrasikan pada gambar 2.2. MSB
LSB R/W
high dan master akan membangkitkan kondisi Stop untuk membatalkan pengiriman data. Jika suatu master receiver membuat jalur SDA tetap berlogika high saat pulsa detak acknowledge, master memberikan sinyal akhir dari transmisi dan slave transmitter akan “melepaskan” jalur data sehingga master dapat menggerakkan kondisi Stop. Kondisi acknowledge pada bus I2C ini diilustrasikan pada gambar 2.4.
Alamat Slave Transmitter
Gambar 2.2 Format Pengalamatan 7-bit
Acknowledge
Receiver
SCL
7-bit pertama dari byte pertama yang dikirim oleh master adalah alamat dari slave yang akan diakses. Bit terakhir akan menentukan arah data. Jika bit ini berlogika “0” maka berarti master akan mengirimkan data ke slave yang dialamati pada 7 bit pertama, sedangkan jika bit ini berlogika “1” maka master akan menerima data dari slave. Setiap piranti yang terhubung pada sistem bus I2C memiliki alamat unik tersendiri. Umumnya susunan 7-bit dari alamat piranti terdiri dari bit alamat tetap dan bit alamat yang dapat diprogram. Susunan bit alamat tetap ditentukan oleh Philips Semiconductor sebagai pemegang hak paten dari bus ini. Sedangkan susunan bit yang dapat diprogram ditentukan oleh desainer dari sistem bus yang akan digunakan. Setiap pengiriman data pada bus I2C dilakukan dalam paket satu byte. Satu bit data akan dikirim untuk setiap pulsa detak. Data harus stabil selama periode logika high dari detak. Jalur data hanya dapat berubah saat jalur detak berada pada logika low. Tranfer bit data ini diilustrasikan dengan gambar 2.3. SDA
SCL Jalur Data Stabil Data Valid
Perubahan Data diperbolehkan
1
2
8
Kondisi Start
Gambar 2.4 Kondisi Acknowledge
Suatu contoh komunikasi lengkap yang terjadi pada bus I2C dapat dilihat pada gambar 2.5.
Gambar 2.5 Contoh Komunikasi pada Bus I2C
3. Perancangan Alat Pada gambar 3.1. ditunjukkan blok diagram perangkat keras dari rangkaian demo komunikasi bus I2C. Blok diagram ini terdiri dari beberapa bagian utama yaitu mikrokontroler AT89C51 yang berfungsi sebagai master dalam sistem bus I2C, dan dua buah IC lain yang berfungsi sebagai slave yaitu PCF8591 Konverter Analog ke Digital dan Digital ke Analog 8-bit dan PCF8574A Pengekspansi Masukan/Keluaran 8-bit. Dua buah LED indikator digunakan sebagai penanda adanya sinyal ACK dari masing-masing slave yang terhubung ke bus.
Gambar 2.3 Tranfer Bit Data 2
2.3 Acknowledge Dalam suatu sistem bus I2C, untuk setiap transfer data satu byte yang terjadi harus diikuti dengan suatu bit acknowledge atau bit not acknowledge. Master akan membangkitkan pulsa detak acknowledge. Transmitter akan melepaskan jalur data (SDA) selama pulsa detak acknowledge. Jika tidak terdapat kesalahan, receiver akan mem-pull down jalur SDA selama periode logika high dari pulsa detak acknowledge. Jika suatu slave receiver tidak dapat memberikan sinyal acknowledge maka slave akan membuat jalur SDA tetap berkondisi
9
S
PCF8591
C
AT89C51
Resistor Variabel
PCF8574A
LED
LED Indikator
Gambar 3.1 Blok diagram rangkaian demo komunikasi bus I2C
Makalah Seminar Tugas Akhir
3.1 Rangkaian Indikator SDA
Sistem
Bus
I2C
dengan
LED
3.3 Rangkaian PCF8574A A1
Vcc R1 2K2
A2
R2 2K2
Vcc
P1.2
SCL
P1.3 LED 1
A3
+5 V 330 Ω
P0
P1.4
P1 P1.6 LED 2
P2
AT89C51
P3 GND
GND
Gambar 3.2 memberikan ilustrasi mengenai rangkaian sistem bus I2C dengan dua buah LED indikator. Jalur SDA dan SCL yang membangun bus I2C dibentuk dengan menggunakan port 1.2 dan 1.3. Jalur ini kemudian di-pull up ke tegangan catu VCC dengan memberikan dua buah resistor pull up sebesar 2K2 ohm. 3.2 Rangkaian PCF8591 +5 V AIN0 AIN1 AIN2 AIN3
16
1 2
15
3
14
4
13
V DD AOUT VREF
+5 V DAC Output
A1 +5 V
A2 Vss
15
3
14
4
13
+5 V To SDA Line
SCL
To SCL Line
INT
5
12
6
11
7
10
8
9
+5 V
+5 V
P7
330 Ω
P6 P5 P4
5
12
6
11
AGND
7
10
8
9
EXT OSC
PCF8574A memiliki delapan buah port yang dapat digunakan sebagai masukan atau keluaran 8 bit. Pada rangkaian ini, ke delapan port masukan/keluaran yang ada, digunakan semuanya sebagai keluaran. Sebagai keluaran, port ini dihubungkan dengan 8 buah LED yang telah diseri dengan resistor 330 Ω dan dihubungkan Karena semua port dengan tegangan VCC. masukan/keluaran yang ada digunakan sebagai keluaran maka pin INT dihubungkan dengan VCC. Untuk memperoleh alamat unik dari PCF85874A, pengaturan alamat yang dapat diprogram dari PCF85874A dipilih dengan menghubungkan A0 – A2 dengan GND, sehingga diperoleh alamat 0111 000X untuk PCF85874A.
+5 V
PCF8591 A0
2
VCC SDA
Gambar 3.4 Rangkaian PCF8574A
Gambar 3.2 Rangkaian sistem bus I2C dengan LED indikator
VR 10 K
16
PCF8574A
R4 300 Ω R4 300 Ω
1
NC
SCL
To SCL Line
SDA
To SDA Line
Gambar 3.3 Rangkaian PCF8591
PCF8591 memiliki empat buah masukan analog dan sebuah keluaran analog. Dari empat buah masukan analog yang ada, hanya satu masukan yang digunakan yaitu masukan analog AIN0 yang dihubungkan dengan variabel resistor 10 KΩ yang telah terhubung dengan tegangan catu. Untuk dapat menggunakan pembangkit detak (oscillator) internal yang telah terdapat pada PCF8591, maka pin EXT dihubungkan dengan ground dan pin OSC, diambangkan (no connect). Pada pin AOUT dapat diketahui besarnya tegangan hasil konversi digital ke analog yang dilakukan PCF8591. Pin-pin SDA dan SCL dihubungkan dengan sistem bus I2C yang ada. Pengaturan alamat PCF8591 dipilih dengan menghubungkan A0 – A1 dengan GND dan A2 dengan tegangan VCC, sehingga diperoleh alamat 1001 100X untuk PCF8591.
3.4 Rutin Emulasi Bus I2C Untuk melakukan komunikasi berdasarkan bus I2C dengan menggunakan mikrokontroler boolean biasa seperti AT89C51, maka ada beberapa protokol dasar yang diemulasikan pada mikrokontroler AT89C51. Protokol dasar itu antara lain adalah protokol start, stop, mengirim byte dan menerima acknowledge atau no acknowledge, menerima byte dan mengirim not acknowledge atau acknowledge 3.4.1 Rutin Start Start
Buat Jalur Data SDA "High"
Buat Jalur Data SCL "High"
Buat Jalur Data SDA "Low"
Buat Sinyal Detak SCL "Low"
End
Gambar 3.5 Diagram alir rutin Start dari bus I2C
Makalah Seminar Tugas Akhir
Start didefinisikan sebagai perubahan kondisi jalur SDA dari logika high ke logika low pada saat jalur SCL berlogika high. Diagram alir untuk rutin Start dari bus I2C dapat diperhatikan pada gambar 3.5. rutin dimulai dengan memastikan kedua jalur SDA dan SCL berlogika high. Kemudian diikuti pengubahan logika jalur SDA menjadi low. Rutin start ini diakhiri dengan pengubahan logika jalur SCL menjadi low.
Start
Isi R7 dengan 8
Geser Kiri Isi Accumulator A ke Bit Pemanji C
Kirim Isi Bit Pemanji C ke SDA
Buat Sinyal Detak SCL "High" kemudian "Low"
3.4.2 Rutin Stop Pulsa Stop selalu dikirimkan oleh master untuk menandai akhir dari pengiriman data. Stop ditandai dengan perubahan kondisi logika SDA dari logika low ke logika high pada saat kondisi logika SCL high.
Kurangi Isi R7
Tidak R7 = 0 ?
Start
Ya
Buat Jalur Data SDA "Low"
Ambil Sinyal ACK atau No ACK di SDA
End
Buat Jalur Data SCL "High"
Buat Jalur Data SDA "High"
End
Gambar 3.6 Diagram alir rutin Stop dari bus I2C
pada diagram alir gambar 3.6, pertama kali logika SDA dibuat berlogika low yang diikuti dengan dibuatnya jalur SCL menjadi berlogika high. Hal ini dilakukan untuk memastikan kedua jalur berada pada kondisi logika yang benar. Dengan demikian perubahan logika dengan membuat kondisi logika SDA menjadi high pada lanjutan rutin Stop akan diterjemahkan oleh setiap slave yang diakses master sebagai suatu pulsa Stop 3.4.3
Rutin Mengirim Byte dan Menerima Acknowledge atau No Acknowledge
Pada gambar 3.7, rutin mengirim byte dan menerima acknowledge atau no acknowledge ini dimulai dengan pengisian register 7 dengan 8. Angka 8 dimaksudkan sebagai banyaknya bit yang dikirimkan dalam satu byte pengiriman. Data yang tersimpan pada accumulator A kemudian akan digeser satu bit ke kiri dengan memanfaatkan bit pemanji C. Dengan penggeseran ke kiri ini, maka pengiriman data yang terdapat pada accumulator A akan dimulai dari bit yang paling bernilai (MSB – Most Significant Bit). Kondisi logika yang terdapat pada bit pemanji C, kemudian dikirim ke jalur SDA dari bus I2C.
Gambar 3.7 Diagram alir rutin mengirim byte dan menerima acknowledge atau no acknowledge
Rutin dilanjutkan dengan mengurangi isi register 7 dan memeriksa apakah isi R7 = 0. Bila tidak, rutin akan melanjutkan pengiriman bit berikutnya yang terdapat dalam accumulator A. Bila semua bit sudah terkirim, rutin akan diakhiri dengan pengambilan sinyal acknowledge atau no acknowledge yang dikirim oleh slave. 3.4.4
Rutin Menerima Byte dan Aknowledge atau No Acknowledge
Mengirim
Untuk mengambil data pada jalur SDA maka kondisi logika jalur SCL dibuat high. Kondisi logika jalur SDA kemudian dikirim ke bit pemanji C. Isi bit pemanji C dikirim ke accumulator A dengan cara menggeser satu bit ke kiri. Isi R7 kemudian dikurangi dengan 1, untuk menandakan telah diambilnya satu bit data dari jalur SDA. Kondisi jalur SCL kemudian dibuat low. Rutin dilanjutkan memeriksa isi R7 apakah R7 = 0. Bila tidak, rutin akan dilanjutkan dengan pengambilan bit data berikutnya. Bila satu byte data sudah terambil, rutin akan diakhiri dengan pengiriman sinyal acknowledge atau no acknowledge.
Makalah Seminar Tugas Akhir Start
Isi R7 dengan 8
Buat Sinyal Detak SCL "High"
Ambil Kondisi Logika SDA, Kirim ke Bit Pemanji C
Geser Kiri Isi Bit Pemanji C ke Accumulator A
Kurangi Isi R7
Buat Sinyal Detak SCL "Low"
dimulai dengan pengiriman pulsa start yang diikuti dengan pengiriman alamat PCF8591 mode pembacaan yaitu alamat 99h. Setelah sinyal acknowledge diterima, maka master akan melepaskan jalur SDA untuk memberi kesempatan kepada PCF8591 mengirimkan data hasil konversi analog ke digital. Setelah semua bit dalam suatu byte data diterima master, master akan memberikan sinyal no acknowledge kepada PCF8591. Sinyal ini akan memberikan tanda kepada PCF8591 untuk menghentikan pengiriman data hasil konversi analog ke digital ke master. Master kemudian mengirim sinyal stop untuk menandai berakhirnya komunikasi dengan slave. 3.6 Rutin Konversi Digital ke Analog PCF8591 Start
Tidak R7 = 0 ?
Mengirim Pulsa Start
Ya Kirim Sinyal ACK atau No ACK ke SDA
Mengirim Alamat PCF8591 Mode Write (98h)
End
Gambar 3.8 Diagram alir rutin menerima byte dan menerima
PCF8591 Ackowledge ?
Tidak
acknowledge atau no acknowledge Ya
3.5 Rutin Konversi Analog ke Digital PCF8591 Start
Mengirim Perintah 40h ke PCF8591
PCF8591 Ackowledge ?
Mengirim Pulsa Start
Tidak
Ya
Mengirim Alamat PCF8591 Mode Read (99h)
Mengirim Data ke PCF8591
Mengirim Pulsa Stop PCF8591 Ackowledge ?
Tidak
End Ya Menerima Data 1 Byte dari PCF8591
Gambar 3.10 Diagram alir rutin konversi digital ke analog PCF8591
Mengirim Sinyal Not Acknowledge
Mengirim Pulsa Stop
End
Gambar 3.9 Diagram alir rutin konversi analog ke digital PCF8591
Untuk memberi perintah kepada PCF8591 agar bekerja pada mode konversi analog ke digital, maka rutin
Rutin ini digunakan untuk mengirimkan perintah yang akan mengatur register kontrol yang terdapat pada PCF8591 dan memberi perintah dilaksanakannya proses konversi data digital ke data analog. Rutin dimulai dengan pengiriman pulsa start yang diikuti dengan pengiriman alamat PCF8591 mode penulisan yaitu alamat 98h. Bila PCF8591 mengirimkan sinyal acknowledge, maka PCF8591 memberikan isyarat kepada master untuk dapat mengirimkan data berikutnya. Data berikutnya yaitu 40h, diterjemahkan sebagai perintah bagi PCF8591 untuk mengatur register kontrolnya dengan konfigurasi seperti pada gambar 3.11
Makalah Seminar Tugas Akhir
MSB 0
LSB 1
0
0
0
0
Mode empat masukan tunggal Keluaran analog diaktifkan
0
0
ADC Channel 00
Auto increment tidak diaktifkan
Gambar 3.11. Konfigurasi register kontrol PCF8591
Setelah itu, rutin dilanjutkan dengan kembali memeriksa ada atau tidaknya acknowledge dari PCF8591. Jika terdapat acknowledge, maka dilakukan pengiriman data biner yang akan diubah menjadi data analog oleh PCF8591. Pengiriman alamat 98h pada permulaan rutin ini, akan membuat PCF8591 bekerja dalam mode konversi digital ke analog. Data yang dikirimkan setelah alamat ini harus berupa data yang akan mengatur konfigurasi dari register kontrol PCF8591. Setelah itu, PCF8591 akan melakukan konversi terhadap setiap data biner yang dikirimkan oleh master. 3.7 Rutin Pengiriman Data ke PCF8574 Diagram alir rutin pengiriman data ke PCF8574A dapat dilihat pada gambar 3.12. Seperti pada rutin pengaksesan PCF8591, rutin pengiriman data PCF8574A juga dimulai dengan sinyal start diikuti alamat PCF8574A yaitu 70h. Pengiriman ini membuat PCF8574A bekerja dalam mode slave receiver dan akan memfungsikan setiap port masukan/keluaran yang ada menjadi port keluaran.
4. Hasil Pengujian 4.1 Pengujian Rutin Start dari Protokol Bus I2C Pengujian rutin start dilakukan dengan mengirimkan sinyal start yang diikuti pengiriman alamat piranti PCF8574A. Bila PCF8574A mengenali sinyal start ini, maka PCF8574A akan membandingkan alamat yang dikirim oleh master. Bila alamatnya sesuai maka PCF8574A akan mengirimkan sinyal ACK untuk yang menandakan kesiapannya menerima data berikutnya. Dalam pengujian dilakukan juga pengurangan perintah waktu tunda nop saat perubahan kondisi logika SDA ke low yang diikuti perubahan kondisi logika SCL ke low. Hasil pengujian rutin start dicantumkan pada tabel 4.1. Tabel 4.1 Hasil pengujian rutin start Jumlah perintah nop PCF8574 ACK 5
ACK
4
ACK
3
ACK
2
ACK
1
ACK
0
ACK
Dari tabel 4.1, LED ACK2 menyala untuk berbagai variasi perintah nop. Hal ini berarti PCF8574A mengenali sinyal start dan alamat yang dikirimkan oleh master dan mengirimkan bit low yang menandakan sinyal ACK dari PCF8574A.
Start
4.2 Pengujian Pengiriman Data ke PCF8574A. Mengirim Pulsa Start
Mengirim Alamat PCF8574A Mode Write (70h)
PCF8574A Ackowledge ?
Tidak
Ya Mengirimkan Data ke PCF8574A
Mengirim Pulsa Stop
Pengujian pengiriman data ke PCF8574A dilakukan dengan mengirimkan data biner ke PCF8574. Hasil dari pengiriman data dapat dilihat dari keluaran PCF8574A yang telah terhubung dengan LED. Hasil pengujian pengiriman data, dapat dilihat pada tabel 4.2. Tabel 4.2 Hasil pengujian pengiriman data ke PCF8574A Data dikirimkan (hex)
Keluaran PCF8574A(hex)
56h
56h
A2h
A2h
FFh
FFh
D5h
D5h
37h
37h
End
Gambar 3.12 Diagram alir rutin pengiriman data PCF8574A
Setelah ada acknowledge dari PCF8574A, master akan mengirimkan data biner hasil konversi analog ke digital dari PCF8591 dan diakhiri dengan pulsa stop.
dari hasil pengujian yang diperoleh pada tabel 4.2, dapat disimpulkan PCF8574A telah bekerja dengan baik.
Makalah Seminar Tugas Akhir
4.3 Pengujian Rutin Mengirim Byte dan Menerima Acknowledge atau No Acknowledge dari Protokol Bus I2C Pengujian dilakukan dengan mengirimkan data digital 55h ke PCF8574A. Hasil pengujian dari rutin pengiriman byte untuk berbagai variasi frekuensi detak dapat dilihat pada tabel 4.3. Tabel 4.3 Hasil pengujian rutin pengiriman byte
4.5 Pengujian Rutin Menerima Byte dan Mengirim Not Acknowledge dari Protokol Bus I2C. Pada pengujian ini dilakukan dengan pengambilan data digital dari PCF8591 dan kemudian data digital ini dikirim ke PCF8574A. Hasil pengujian dari rutin pengambilan byte untuk berbagai variasi frekuensi detak dapat dilihat pada tabel 4.5. Tabel 4.5 Hasil pengujian rutin pengambilan byte
Frekuensi detak (KHz)
Keluaran PCF8574A
Frekuensi detak
Masukan
Keluaran
166,67
55h
(KHz)
Analog
PCF8574A
142,86
55h
250,00
2,24 V
79h
125,00
55h
200,00
2,24 V
79h
111,12
55h
166,67
2,24 V
79h
100,00
55h
142,86
2,24 V
79h
125,00
2,24 V
79h
Dari tabel 4.3, untuk frekuensi detak sampai dengan 166,67 KHz, PCF8574A tidak mengalami kesalahan pada saat menerima byte data dari master. Pengujian tidak dapat dilakukan untuk menghasilkan frekuensi detak pada jalur SCL lebih dari 166,67 KHz. Hal ini disebabkan terbatasnya kemampuan mikrokontroler yang digunakan dalam menghasilkan frekuensi detak yang lebih tinggi lagi. Mikrokontroler AT89C51 mendukung penggunaan frekuensi kristal hingga 24 MHz yang sudah digunakan dalam pengujian ini. 4.4. Pengujian Konversi Analog ke Digital Pengujian konversi analog ke digital dilakukan dengan mengirimkan perintah baca ke PCF8591. Data kemudian dikirimkan kembali ke PCF8574 setelah sebelumnya mengalami proses komplemen-1. Data digital hasil konversi ini dapat dilihat pada keluaran PCF8574A. Data hasil pengujian konversi analog ke digital dapat dilihat pada tabel 4.4. Tabel 4.4 Hasil pengujian konversi analog ke digital PCF8591 Tegangan
Keluaran
Nilai analog dari
masukan
PCF8574A (hex)
data digital (V)
0,13
07h
0,1288
2,07
70h
2,0608
3,39
B8h
3,3856
4,70
FFh
4,692
3,10
A8h
3,0912
4.6 Pengujian Konversi Digital ke Analog dari PCF8591 Pengujian konversi digital ke analog dari PCF8591 dilakukan dengan mengirimkan data ke PCF8591 untuk diubah dengan mengirimkan perintah tulis dan pengaturan register PCF8591 yang diikuti dengan pengiriman data digital yang akan dikonversi. Data hasil pengujian konversi digital ke analog dari PCF8591 ditunjukkan pada tabel 4.6. Tabel 4.6 Hasil pengujian konversi digital ke analog PCF8591 Data (hex)
Nilai data (V)
Keluaran AOUT
15h
0,3864
0,39
29h
0,7544
0,75
3Fh
1,1592
1,16
5Ch
1,7112
1,72
79h
2,2264
2,23
4.7 Pengujian Rangkaian Sistem Bus I2C. Pengujian demo ini dilakukan dengan menggunakan semua rutin yang telah dibentuk dan memeriksa apakah sistem telah bekerja dengan baik. Hasil pengujian dapat dilihat pada tabel 4.7. Tabel 4.7 Hasil Pengujian Rangkaian Sistem Bus I2C AIN
LED
Nilai data
AOUT
PCF8591
PCF8574A
(V)
PCF8591
1,51 V
51h
1,4904 V
1,50 V
0,89 V
30h
0,8832 V
0,89 V
3,30 V
AFh
3,22 V
3,25 V
Makalah Seminar Tugas Akhir 3,90 V
CFh
3,8088 V
3,81 V
1,00 V
34h
0,9568 V
0,97 V
2,5 V
87h
2,4840 V
2,49 V
4.8 Pengujian Jarak Transmisi Komunikasi Bus I2C.
Data
3. Pada
4.
Pengujian jarak transmisi data pada komunikasi bus I2C dilakukan dengan menggunakan berbagai macam variasi panjang kabel yang digunakan untuk mengirimkan data digital melalui bus I2C. Hasil pengujian untuk panjang kabel penghubung sampai jarak 400 cm ditunjukkan pada tabel 4.8. Tabel 4.8 Hasil pengujian jarak transmisi Panjang kabel
AIN
LED
Nilai data
AOUT
PCF8591
PCF8574A
(V)
PCF8591
100 cm
4,50 V
F4h
4,4896 V
4,49 V
200 cm
4,50 V
F4h
4,4896 V
4,48 V
250 cm
4,50 V
F4h
4,4896 V
4,49 V
300 cm
4,50 V
F4h
4,4896 V
4,49 V
350 cm
4,50 V
F4h
4,4896 V
4,49 V
380 cm
4,50 V
-
-
-
400 cm
4,50 V
Dari hasil pengujian ini, pada panjang kabel 380 cm, bus I2C tidak bekerja sehingga tidak terjadi transmisi data antara slave dan master. Dalam penggunaan kabel penghubung seperti ini harus dilakukan dengan hati-hati dan secermat mungkin. Pada pengujian yang dilakukan, pemasangan konektor penghubung pada soket konektor yang tidak kencang maupun pemasangan kabel penghubung pada konektor yang tidak cermat akan menyebabkan bus komunikasi I2C tidak akan bekerja sehingga tidak terjadi transmisi data antara slave dan master. 5. Kesimpulan dan Saran 5.1 Kesimpulan Berdasarkan hasil data yang diperoleh penulis melalui pengujian dan pengamatan, penulis dapat menarik kesimpulan sebagai berikut:
1. Antar muka setiap piranti yang terhubung ke bus I2C yang menggunakan open collector/open drain memerlukan suatu resistor pull up untuk menjamin level logika high mendekati +5 V. 2. Pengamatan pada sinyal yang terjadi pada bus mengalami kesulitan meskipun menggunakan osiloskop storage. Untuk itu, dapat digunakan perangkat seperti LED untuk mengetahui bahwa bus dan piranti yang terhubung padanya bekerja dengan baik dengan memanfaatkan keharusan
5.
6. 7.
5.2
pengiriman sinyal ACK yang berlogika low, meskipun tidak mengamati secara langsung sinyal yang dihasilkan. Diperoleh frekuensi sampai dengan 166,67 KHz pada pembentukan frekuensi detak jalur SCL saat pengiriman data ke PCF8574A. Diperoleh frekuensi sampai dengan 250 KHz pada pembentukan frekuensi detak jalur SCL saat pengambilan data dari PCF8591. Pada penggunaan kabel-kabel penghubung untuk menggantikan jalur-jalur PCB, harus diperhatikan hubungan antar konektor, agar tidak terjadi kegagalan komunikasi pada bus I2C. Pada pengujian penggunaan kabel penghubung di luar jalur PCB, sistem bus I2C hanya bekerja hingga panjang kabel 380 cm. Konversi Analog ke Digital dan Digital ke Analog yang dilakukan dengan PCF8591 menghasilkan keluaran yang masih berada dalam batas kesalahan linearitas (linearity error) sebesar ± 1,5 LSB. Saran
Saran-saran untuk pengembangan Tugas Akhir ini antara lain adalah : 1. Untuk lebih memperdalam pengetahuan mengenai konsep komunikasi bus I2C, dapat dipelajari karakteristik bus I2C pada sistem yang menggunakan lebih dari satu master dimana master yang digunakan dapat berupa mikrokontroler yang mendukung bus I2C ataupun mikrokontroler boolean seperti Atmel AT89C51 dengan mengemulasikan protocol bus I2C di dalamnya 2. Untuk membangun sistem bus I2C dengan frekuensi detak jalur SCL yang lebih tinggi lagi dapat digunakan mikrokontroler dengan proses eksekusi yang lebih cepat contohnya seri AVR dari Atmel 3. Untuk mengetahui kelebihan dan kekurangan bus I2C dibandingkan dengan berbagai macam standar, dapat dilakukan pendalaman dan pembandingan lebih lanjut dengan berbagai macam konsep komunikasi serial lain seperti MicroWire dari National Semiconductor Serial Peripheral Interface (SPI) dari Motorola atau konsep 1-Wire dari Dallas Semiconductor.
Makalah Seminar Tugas Akhir
DAFTAR PUSTAKA Disetujui Oleh 1. Anonim, Atmel AT89C51 8-Bit Microcontroller with 4 Kbytes Flash, Atmel Corporation, California, http://www.atmel.com,1997. 2. --------, Two-Wire Peripheral Expansion for the AT89C2051 Microcontroller. Atmel Corporation, California, http://www.atmel.com, 1997. 3. --------, The I2C Bus Specification, versi 2.1, Philips Semiconductors,Amsterdam,http://www.philips.semi conductor.com2000. 4. --------, PCF8574 Remote 8-bit I/O expander for I2Cbus. Texas Instrument, http://www.ti.com Amsterdam, 1997. 5. --------, PCF8591 8-bit A/D and D/A converter. Philips Semiconductors, Amsterdam, http://www.philips.semiconductor.com, 1998. 6. Blozis, Steve, I2C Device Overview, Philips Semiconductors,Amsterdam,http://www.philips.semi conductor.com, 2002. 7. Hogenboom, P, Data Sheet Book 3 : Catatan Aplikasi, Elex Media Computindo, Jakarta, 1988. 8. Hogenboom, P, Microprocessor Data Book, Elex Media Computindo, Jakarta, 1994 9. Malik, Ibnu, Anistardi, Berkesperimen dengan Mikrokontroler 8031, Elex Media Computindo, Jakarta, 1997. 10. Malvino, Albert Paul, Elektronika Komputer Digital Edisi 2, Erlangga, Jakarta, 1996. 11. Malvino, Albert Paul, Prinsip-prinsip Elektronika Jilid 1, Erlangga, Jakarta, 1987. 12. Malvino, Albert Paul, Prinsip-prinsip Elektronika Jilid 2, Erlangga, Jakarta, 1987. 13. Marthur, Aditya P, Introduction to Microprocessor, Mc Graw-Hill Publishing Limited, New Delhi, 1987. 14. Nana, Emmanuel Tomdio, Improving System Interrupt Management Using the PCF8574 and PCF8574A I/O Expanders for the I2C Bus. Philips Semiconductors, Amsterdam, 2001. 15. Prosser, Franklin P.,Winkel, David E., The Art of Digital Design, Prentice-Hall International Inc, 1987. 16. Tocci, Ronald J, Digital System Principles and Application , Prentice-Hall International Inc, 1995. 17. Tokheim, Roger L, Prinsip-prinsip Digital, Ed. Kedua, Erlangga, Jakarta, 1994 18. Yeralan, Sencer, Ahluwia, Ashutosh, Programming and Interfacing the 8051 Microcontroller, Addison Wesley Publishing Co, Massachusetts, 1995. Penulis adalah mahasiswa Jurusan Teknik Elektro Universitas Diponegoro Semarang Angkatan 1997, dengan Kontrol sebagai pilihan konsentrasi.
Ir Sudjadi , MT NIP: 131 558 567