Lab Elektronika Industri Mikrokontroler 1 DESIGN INTERFACE PADA AT89S52 8k Byte In-System Programmable 8bit Mikrokontroler I. FITUR UTAMA Perancangan interface terkait dengan fasilitas port yand ada pada mikrokontroler. AT89S52 memiliki fasilitas : a. 4 paralel port dua arah (input/output) yaitu P0, P1, P2 dan P3 masing-masing 8 bit yang bisa diakses secara byte maupun bit. b. 1 serial port dengan standart USART (Universal Synchronous-Asynchronous Recever-Transmitter) yang beroperasi secara full-duplex. Serial port mempunyai saluran RXD dan TXD. c. 3 timer/counter T0, T1 dan T2 dengan berbagai mode operasi. d. 8 sumber interupsi: 2 sumber eksternal RST, INT0, INT1 dan 5 sumber interupsi internal: 2 karena receive dan transmit UART, 3 timer/counter overflow. e. Mendukung memori program eksternal hingga 64KB f. Mendukung memori data eksternal hingga 64KB. I. PORT PARALEL P0, P1, P2 dan P3 mempunyai rangkaian internal seperti gambar di bawah. Port 0 tidak dilengkapi dengan resistor pull-up internal sedang port-port lainnya telang dilengkapi dengan resistor pull-up internal. Adanya resistor pull-up ini, setiap bit di masing-masing port bisa mengeluarkan arus, walaupun sangat kecil kecil, ketika port diberikan logika tinggi. Semua bit di masing-masing port bisa menarik arus cukup besar ketika port diberi logika rendah. Khusus port 0, setiap bit harus ditambahkan resistor pull-up eksternal sebesar 4k7 – 10k ohm. Tabel di bawah menjelaskan kemampuan setiap port untuk menarik arus maupun ketika mengeluarkan arus. Iwan B Pratama Mei 2008 Lab Elektronika Industri Mikrokontroler 2 Logika 0 Logika 1 Port 0 ≤ 20mA ≤ -800µA Port 1 ≤ 10mA ≤ -50µA Logika 0 Logika 1 Port 2 ≤ 10mA ≤ -50µA Port 3 ≤ 10mA ≤ -50µA Kondisi ini membawa konsekuensi sebagai berikut: 1. Port paralel P0, P1, P2 dan P3 sebaiknya dibuat aktif logika rendah karena bisa menangani arus yang jauh lebih besar dibanding jika aktif pada logika tinggi. 2. Pada saat aktif logika rendah, port-port bisa langsung menghidupkan LED yang diseri dengan R = 330Ω. 3. Sebagai port input, data baru bisa dibaca masuk ke LATCH jika sebelumnya port diberi logika tinggi lebih dulu. Catatan: saat reset semua port akan diberi logika tinggi semua. Setiap output port yang aktif logika rendah bisa langsung menghidupkan LED, opto-transistor, driver transistor PNP, atau opto-triac seperti rangkaian gambar di bawah. Port bisa langsung menghidupkan LED, display 7 segment, atau LED pada opto-coupler. Cara menghubungkan ke optocoupler transistor (4N35, TIL111) seperti rangkaian ke-2 sering dipakai jika ingin antara mikrokontroler dengan aktuator terisolasi secara listrik. Alasan lain menggunakan opto-transistor adalah karena bagian aktuator memakai tegangan kerja yang jauh lebih besar dari 5V. Diperlukan interface/driver transistor PNP (BD140) seperti rangkaian ke-3 jika beban yang digerakkan memerlukan arus dan tegangan kerja yang lebih besar. Beban yang bisa digerakkan oleh transistor misalnya: speaker, relay, lampu DC, motor-motor DC kecil, motor stepper kecil dll. Dibagian beban bisa diganti dengan rangkaian transistor lagi untuk menangani daya yang lebih besar. Iwan B Pratama Mei 2008 Lab Elektronika Industri Mikrokontroler 3 Rangkaian ke-4 sering dipakai untuk interface dengan beban yang bekerja dengan listrik AC dengan opto-triac (MOC3021, MOC3041). Di bagian output bisa disambungkan ke TRIAC yang lebih besar untuk menangani daya yang lebih besar. Jika logika rendah dituliskan ke port maka LED dirangkaian 1, 2 dan 4 akan menyala karena port akan bertegangan 0V sehingga akan timbul arus dari +5V – lewat LED – lewat R 330 – masuk ke port. Persamaannya menjadi: 5V – VLED (=2V) – I.R – 0V = 0 atau I = 3V/330Ω = 9mA Perhatikan, 0V di persamaan ini karena tadi menganggap bahwa tegangan port adalah 0V. Dalam praktek tegangan port akan sedikit lebih tinggai, misal 0.1V, sehingga arus yang muncul sedkit lebih kecil. Dirangkaian ke-3, jika port diberi logika rendah transistor akan menghantarkan arus lewat beban (keadaan ON). Hal ini karena, misal beban berupa motor DC 5V dengan resistansi 60Ω dan transistor BD140 dengan hfe = 50, akan muncul arus basis dari 5V – lewat motor – kaki EB transistor – lewat R 330 – masuk ke port. Karena terjadi arus basis maka akan muncul arus kolektor yang besarnya, IC = hfe x IB dan arus IE = IB + IC = IB + hfe.IB = IB (hfe + 1). 5V – IE.RMOTOR – VEB – IB.R330 – 0V = 0 5V – IB(50+1)(60Ω) – 0.7V – IB.330 = 0 IB = 1.27mA sehingga IC = 63.4mA Jika port diberi logika 1 maka tegangan port adalah 5V sehingga LED atau transistor di rangkaian atas akan mati. Hal ini karena tidak akan muncul arus yang lewat LED maupun arus I B. Port Aktif Logika Tinggi Adakalanya dalam pengendalian diinginkan agar port aktif pada logika tinggi. Untuk ini rangkaian interface yang sering digunakan adalah seperti gambar dibawah. Rangkaian ke-1 menggunakan transistor MOSFET tipe N misalnya IRF540. Transistor ini mampu mengalirkan arus hingga 15A dengan tegangan hingga 60V. Kelebihan lain dari mosfet adalah resistansi ON yang ekstra rendah (RON < 0.05Ω). Kelebihan ini membuat Mosfet sangat cocok untuk berbagai kendali aktuator, kendali motor dengan PWM, motor steper, servo motor dll. Dengan mosfet tidak membutuhkan penyerap panas yang besar seperti halnya transistor bipolar. Kekurangan dari mosfet adalah pada harga yang mahal. Iwan B Pratama Mei 2008 Lab Elektronika Industri Mikrokontroler 4 Rangkaian kedua menggunakan IC yang berisi transistor darlington seperti ULN2003 atau ULN2803. IC ULN2803 misalnya berisi 8 transistor darlington yang masing-masing bisa mengalirkan arus hingga 500mA pada tegangan hingga 50V. Masing-masing transistor darlington bisa diparalel agar bisa menangani arus yang lebih besar. Pada interface mode ini, jika diberikan logika 1 pada port, transistor akan ON dan arus bisa lewat ke beban yang menjadi hidup. Dan jika logika 0 diberikan ke port maka transistor akan OFF demikian juga beban akan mati. Pengguna harap hati-hati, karena semua port AT89S52 akan diisi logika 1 pada saat reset sehingga dengan software segera mematikan port dengan memberi logika 0 ke port. Jika tidak dilakukan, setelah reset semua peralatan yang aktif logika tinggi akan menyala dan bisa berbahaya. Model interface seperti ini cocok untuk mengendalikan beban dengan arus yang relatif besar (>100mA hingga 10A) pada tegangan yang relatif besar (<50V). Interface ini bisa untuk beban seperti motor DC, motor stepper, solenoid dll. Interface Tidak Benar Rangkaian ke-1 tidak benar karena menghubungkan LED langsung dari 5V ke port. Kesalahannya adalah ketika port diberi logika 0, maka seharusnya port akan bertegangan 0V. Tetapi karena tegangan drop LED ketika menyala hanya 2V, maka sekarang masih ada tegangan 3V yang harus dihilangkan. Rangkaian ini bisa merusak LED maupun merusak circuit internal di port. Rangkaian ke-2 tidak benar karena kita mencoba menyalakan LED dengan aktif logika tinggi. Saat port diberi logika tinggi, kita berharap LED akan menyala, tetapi tidak menyala. Ingat saat diberi logika tinggi, port AT89S52 hanya bisa mengalirkan arus keluar sebesar 50µA yang tidak cukup untuk menyalakan LED. Rangkaian ke-3 salah karena saat port diberi logika tinggi berharap transistor akan OFF, tetapi tidak. Saat port diberi logika tinggi, tegangan port adalah 5V, sedangkan tegangan rangkaian transistor adalah 15V, sehingga masih akan terjadi arus IB yang akan memunculkan arus IC, jadi transistor selalu ON. Iwan B Pratama Mei 2008 Lab Elektronika Industri Mikrokontroler 5 Instruksi Assembler Port P0, P1, P2 dan P3 bisa diakses secara paralel maupun secara bit per bit. Secara paralel berarti ke delapan jalur port (bit7 hingga bit0) ditulisi atau dibaca secara bersamaan. Sedangkan secara bit berarti masing-masing bit dalam port bisa ditulisi atau dibaca sendiri-sendiri. Instruksi assembler untuk akses secara paralel misalnya: Mov P0,#11101110b ;mengaktifkan P0.4 dan P0.0 sedang lainnya mati Mov P0,27h ; Mov P0,R0 ; Mov P0,@R0 ; Mov Mov A,P1 R1,P2 ;membaca dari port 1 dan hasilnya disimpan di A Catatan: untuk bisa membaca port dengan benar, sebelum instruksi baca sebaiknya port diberi logika satu dulu. Instruksi assembler untuk akses secara bit per bit misalnya: Setb P0.4 ;membuat P0.4 = 1 dan yang lain tidak diubah Clr P1.2 ;membuat P1.2 = 0 dan yang lain tidak diubah Cpl P2.7 ;membuat complement P2.7 sebelumnya Instruksi berikut membaca status port tanpa menyimpan hasilnya (test) Jb P2.0,bacaswitch Jnb P3.3,switchoff Hubungan Paralel Port dengan Chip lain Port AT89S52 bisa langsung dihubungkan dengan IC-IC lain dengan standard TTL (TransistorTransistor Logic) yaitu standar 0V dan 5V. Jenis IC TTL ada banyak sekali misalnya seri 74xxx, 74Sxxx, 74LSxxx, 74ASxxx, 74HCxxx, 74HCTxxx dan IC TTL lain. Bagian output AT89S52 port 1, port 2 dan port 3 masing-masing telah dilengkapi dengan internal resistor pull-up sehingga langsung bisa dihubungkan dengan IC-IC TTL lain. Sedang untuk output AT89S52 port 0 harus ditambahkan resistor pull-up eksternal seperti rangkaian di bawah ini: II. PORT SERIAL AT89S52 mempunyai port serial dengan standard USART (Universal Synchronous/ Asynchronous Receiver Transmitter). Port serial berguna untuk saling menukar data antara dua mikrokontroler atau antara mikrokontroler dengan komputer. Data dikirim dan bisa diterima hanya dengan 3 sambungan kabel yaitu kabel RxD, TxD dan GND (ground). Terdapat beberapa standar komunikasi serial seperti ini: 1. Standard level TTL 2. Standard RS232 3. Standard RS485 4. Standard RS422 III. Iwan B Pratama Mei 2008