Pemograman Praktis Mikrokontroler Menggunakan PIC untuk Aplikasi Robot Oleh Dr. Riza Muhida Topics:
1. Anatomi Robot. (0.5 h) 2. Pengantar Mikrokontroler. (0.5 h) 3. Membuat Proyek Sederhana dengan PIC sperti: Lampu lalu Lintas, Sistem Keamanan, membaca data dari sensor. (1.5 h) 4. Bagaimana Mengontrol Motor Menggunakan Mikrokontroler. (0.5 h)
International Islamic University Malaysia 2008
1
Bab 1 Anatomi Robot 1.1 Sejarah dan Perkembangan Robot Kata robot pertama kali diperkenalakan oleh seorang penulis dari Czech yang bernama Karel pada tahun 1921 dalam karya sastranya. Kata Robot berasal dari kata ‘robota’ yang berarti: pekerja sendiri. Sejarah robot bermula ketika sistem otomatis dibuat oleh Jacques de Vaucanson pada tahun 1938, yang membuat bebek mekanik yang dapat memakan dan mencincang biiji bijian, membuka dan menutup sayapnya. Kemudian tahun 1796, Hisashine Tanaga di Jepang berhasil membuat mainan mekanik yang dapat mnghidangkan the dan menulis huruf kanji. Lalu 1926, Nikola Tesla mendemintrasikan perahu bot yang dapat dikontrol dengan radio. Tahun 1928, Makoto Nishimura membuat robot pertama di Jepang. Sejalan dengan perkembangan teknologi Elektronika, maka perkembangan robot ini melaju pesat, seprti tahun 1948, William Grey Walter membuat robot elektronik otomatis pertama dimana robot ini dapat merespon cahaya dan dapat melakukan kontak dengan objek dari luar. Pada tahun 1954, saat dimulainya zaman digital, sebuah robot digital yang dapat deprogram ditemukan oleh George Devol. Pada abad modern ini sudah bermacam-macam robot yang dicipta dan digunakan seperti dalam industri, rumah sakit, transportasi, pendidikan dan kehidupan sehari-hari. Seperti robot yang digunakan untuk mengecat mobil, robot yang digunakan untuk merakit komponen elektronik dan juga humanoid robot yaiitu robot yang memiliki muka, yang mampu berjalan dan bertindak seperti manusia.
1.2. Fungsi Robot Ada beberapa fungsi robot, sehingga manusia memerlukan kehadirannya yaitu: 1. Meningkatkan Produksi, akurasi dan daya tahan. Robot ini banya digunakan di industri. 2. Untuk tugas-tugas yang berbahaya, kotor dan beresiko. Robot ini digunakan ketika manusia tidak mampu masuk ke daerah yang beresiko. Seperti Robot Untuk menjelajah planet, robot untuk mendeteksi limbah nuklir, robot militer dll. 3. Untuk pendidikan. Banyak robot yang digunakan untuk menarik pelajar belajar teknologi seprti robot Lego dll. 4. Untuk menolong manusia. Seperti di rumah untuk membersihkan rumah pakai penghisap debu otomatis, di rumah sakit untuk menghantar makanan, membantu operasi dll. 1.3. Sifat Robot Beberapa sifat robot: 1. Tidak alamiah atau sesuatu yang dibuat. 2. Bisa merasai, memanipulasi dan berinteraksi dengan lingkungan yang diberikan. 3. Memiliki kemampuan untuk memilih berdasarkan kondisi lingkungan yang diberikan, hal ini karena adanya control otomatis dalam diri robot.
2
4. Diprogram. 5. Bergerak. Kalau melihat sifat-sifat tersebut banyak benda yang bisa dimasukkan dalam robot. Seperti mesin cuci otomatis, escalator otomatis, pintu yang dapat membuka dan menutup sendiri. Tapi ada juga yang tidak dapat didefinisikan sebagai robot, seperti mobil (kecuali mobil otomatis), mesin pemotong rumput, hair dryer dll, dimana alat-alat ini termasuk mesin bukan robot. Dari karakteristik di atas semua robot adalah mesin, tapi tidak semua mesin adalah robot. 1.4. Anatomi Robot Minimal ada 3 komponen penyususn robot, yaitu: 1. Adanya sensor, yaitu komponen yang dapat merespon kondosi lingkungan yang diberikan. Sensor ini bdapat berupa sensor cahaya, suara, suhu, tekanan dll. 2. Adanya Aktuator atau penggerak, yaitu komponen yang menhasilkan gerak mekanik, actuator ini dapat berupa motor, relay, pnematik atau hidrolik actuator. 3. Adanya Mikrokontroler. Sebagai pusat pemikir untuk memproses data dari sensor dan memerintahkan actuator untuk bertindak. 1.5 Perbandingan antara Robot dan Manusia Gambar 1-1. a dan 1-1.b menunjukkan perbandingan struktur antara robot dan manusia. Dimana manusia memungkinkan membuat sebuah robot yang hamper mirif dengan dirinya.
Gambar 1-1.a Struktur Tubuh Manusia
Gambar 1-1.b Struktur Robot
Terlihat pada gambar di atas pada robot terdapat Pengontrol yang berfungsi sama dengan otak manusia, yang fungsinya untuk membaca data dari sensor kemudian data ini diproses dan memerintahkan aktuator (motor) untuk bergerak.
3
Untuk robot yang biasanya menjalankan untuk satu tugas maka blok diaram yang dimilikinya ditunjukkan dalam Gambar 1-2.
Gambar 1-2. Blok Diagram dari proses kerja sebuah Robot
Dari Blok diagram di atas terlihat bahwa semua proses yang ada pada dirobot diatur oleh sebuah mikrokontroler, yang fungsinya hampir sama dengan otak pada tubuh manusia.
4
Bab 2 Pengantar Mikrokontroler 2.1. Pengantar Mikrokontroler disebut juga MCU atau μC adalah salah satu komponen elektronik atau IC yang memiliki beberapa sifat seperti komputer, yaitu: CPU (Central Processing Unit) atau unit pemprosesan terpusat, kode memori, data memori, I/O (port untuk input dan output), bentuknya yang kecil dan harganya murah sehingga dapat dicangkokkan (embedded) di dalam berbagai peralatan rumah tangga, kantor, industri atau robot. Mikrokontroller dapat diprogram melalui program software yang dapat menulis, membaca dan dihapus isi mikrokontroler tersebut. Mikrokontroler sering digunakan dalam beberapa peralatan otomatik seperti pengontrol mesin di mobil, pengontrol jarak jauh, mesin cuci otomatis, pengkondisian udara (AC) peralatan perkantoran dll. Keuntungan dari penggunaan mikrokontroler yaitu memperkecil ukuran peralatan, mengurangi biaya dan konsumsi listrik. Ada banyak sekali jenis mikrokontroler di pasaran seperti yang ditunjukkan oleh table 2.1. di bawah ini.
No 1.
2.
Tabel 2.1 Berbagai Jenis Mikrokontroler Di Pasaran Merek atau nama Perusahaan Nama atau No. Seri Mikrokontroler AT-Tiny (Tini 11, Tini 12) ATmega (ATmega 8, ATmega8535) AT90SXXXX (AT90S1200, AT90S2313) Z8GP, eZ80, Z80P
3.
6HC05, 6HC08, 6HCC11, 6HC12
4.
8051, 8052
5.
Kinerja Rendah (Low End) (12 bit): 12C508, 12C508, 12CR509A Kinerja Menengah (Mid End)(14 bit): 16C61, 16CR84, 16CE624, 16F628 Kinerja Tinggi (High End)(16 bit) 18C242, 18F242, 18F8525
Setiap Mikrokontroler ada kelebihan antara satu dengan lainnya,Dalam buku ini ini peulis akan memperkenalkan PIC mikrokontroler, PIC adalah singkatan dari Programmable Interface Controller atau disingkat dengan nama lain Programmable Intelligent Computer. PIC yang merupakan mikrokontroller produksi dari Microchip yang dapat menggantikan fungsi dari ratusan IC atau transistor. PIC ini sangat populer dikalangan
5
pengembang dan penggiat (hobbyists) elektronika dikarenakan harganya yang murah, kemampuannya yang besar untuk berbagai aplikasi, juga tersedia banyaknya buku dan informasi tentangnya, kempuannya diprogram menggunakan serial port dan USB, juga program di dalamnya dapat diprogram berkali-kali menggunakan flash memori, selain itu software penunjangnya terdapat dalam open-source atau free-ware. Karena PIC ini mudah digunakan oleh siapa saja, sehingga banyak yang menggunakannya, hingga saat ini jumlah PIC yang telah menjual lebih dari 6 milyar. PIC bisa berprilaku seperti kombinasi dari gerbang digital, timer, counter dll. Prilaku kerja dari PIC tergantung kepada program yang kita berikan,
Gambar 2.1 Menunjukkan beberapa keistimewaan yang dimiliki oleh PIC. Walaupun PIC sangat kecil dibandingkan dengan computer (PC) tetapi fungsi yang dimiliki PIC tidak kalah dengan komputer (PC). Tabel 2.1. menunjukkan perbandingan antara PIC dan computer.
Item Program
Catu Daya Tobol Reset I/O
Tabel 2.2. Perbandingan antara PIC and Komputer PIC Komputer (PC) Firmware yaitu program yang Software yaitu program disisipkan dalam ROM dan untuk mengoperasikan menjadi bagian yang permanen komputer dalam komponen IC 3 – 6 Volt DC 220 Vac Tersedia Tersedia a. LCD/LED/ 7 segment a. Monitor b. Buzzer, speaker b. Speaker c. Keypad, tombol switch c. Keyboard/Mouse d. Serial, parallel, USB port d. Serial, parallel, USB
6
e. f.
Kecepatan Prosesor RAM ROM Ruang untuk data/program
ADC module PWM Module
Port e. – f. Dibawah 40 MHz Beberapa GHz Beberapa Bytes Beberapa Kbytes Beberapa Bytes Beberapa Kbytes Flash, EEPROM (lectrically Harddisk erasable programmable read- Gbytes only memory), ROM Beberapa Kbytes
Dengan ukurannya yang kecil, murah dan berdaya rendah memungkinkan PIC digunakan untuk tugas-tugas sederhana dalam menggantikan komputer.
Banyak Peralatan yang bekerja menggunakan Mikrokontroler seperti yang ditunjukkan dalam gambar 2-1.
Gambar 2-1 Beberapa aplikasi penggunaan Mikrokontroler
2.2. Cara menggunakan Mikrokontroller Cara penggunaan mikrokontroler adalah sangat mudah, setelah kita membeli sebuah mikrokontroler kosong dari pasar, lalu kita isi program di dalamnya menggunakan software programmer dan downloader, lalu mikrokontroler siap digunakan. Gambar 2.2 Menunjukkan Proses penggunaan dari Mikrokontroller.
7
Gambar 2-2. Proses Pengunaan Mikrokontroler. 2.3. Mengenal PIC 16F88 Pada workshop ini akan diperkenalkan PIC16F88, mikrokontroller ini sangat kecil, hanyak memiliki 18 kaki (pin), harganya cukup murah, dan dapat diaplikasikan untuk proyek-proyek sederhana di sekolah atau proyek Robot. Gambar 2-3 menunjukkan configurasi dari kaki-kaki PIC16F88
Gambar 2-3 Configurasi PIC16F88
8
Konfigurasi I/O Mikrokontroler dapat dilihat dari Datasheet Mikrokontroller tersebut yang disarikan sebagai berikut: 1. Input Mikrokontroler dapat berupa digital atau analog. Kalau digital maka tegangan inputnya 0V untuk keadaan 0 dan 5V untuk keadaan 1. Kalau analog maka input range tegangannya adalah antara 0 sd 5V Output Mikrokontroler hanya digital yaitu tegangan outputnya 0V untuk keadaan 0 dan 5V untuk keadaan 1 Pin Input Analog (AN0-AN6): 17, 18, 1, 2, 3, 12, 13 Pin Input Digital: PORT A (RA0-RA4): 17, 18, 1, 2, 3 PORT B (RB0-RB7): 6, 7,8, 9, 10,11, 12, 13
Pin Output hanya digital: PORT A (RA0-RA4): 17, 18, 1, 2, 3 PORT B (RB0-RB7): 6, 7,8, 9, 10,11, 12, 13 Pin Mikrokontroler dapat menjadi Input atau Output tergantung Setting pada pemogramannya PIC adalah komponen semikonduktor yang termasuk golongan CMOS, Complementary metal-oxide-semiconductor (CMOS) yaitu devais yang memiliki struktur fisika dari Field Effect Transistor (Transistor yang dipengaruhi Medan) dimana transistor ini memiliki gerbang elektroda yang diletakkan di atas isolator oksida semikonduktor yang menyusunnya. Karena termasuk CMOS transistor maka karekteristik tegangan input dan out akan mengikuti gambar 2.4. Dimana pada PIC PORT akan mendeteksi input sebagai 0 (LOW atau 0V) jika tegangan sinyal yang masuk adalah dari 0-1.5 V. Lalu akan mendeteksi input sebagai 1 (HIGH atau 5V) jika tegangan sinyal yang masuk adalah 3.55V. Untuk tegangan antara 1.5-3.5 V adalah tegangan yang tidak diperhatikan (don’ care) ini tergantung kepada tegangan sebelumnya. Untuk Output, PIC PORT akan memberikan output sebagai 0 (LOW atau 0V) dimana tegangan yang dikeluarannya 0-0,05 V. Dan akan memberikan output sebagai 1 (HIGH atau 5V) dimana tegangan yang dikeluarannya mendekati 4.95-5 V..
9
Gambar 2.4. Karakteristik Tegangan Input dan Output dari PIC 2.4. Menggunakan PIC Untuk menggunakan PIC ada beberapa software dan Hardware yang diperlukan, yaitu: 1. Software: PIC Compiler, yaitu software untuk menulis program lalu mengkompilasi program tersebut menjadi bahasa assembler dan bahasa mesin (hex file). Dalam buku ini kita menggunakan MikroC. Karena bahasa C adalah bahasa yang paling banyak digunakan di dunia industri dan perguruan tinggi. MikroC adalah software produksi perusahaan Microelektronika. Software ini gratis untuk demo version dan dapat di download pada: http://www.mikroe.com/en/compilers/mikroc/pic/download.htm. Dalam CD yang menyertai buku ini juga terdapat program ini. Dalam Demo version tidak ada batas waktu penggunaan, hanya ada batasan maksimal file hex adalah 2kb. Untuk program robot yang digunakan untuk lomba, 2kb sudah mencukupi. Atau kalau tidak puas dengan fasilitas gratis 2kb, maka dapat membeli langsung Full version software tersebut. Untuk metode instalasi software MikroC bisa dibaca pada lampiran 1 buku ini. 2. Software: Winpic800, yaitu software untuk mengirim hex file ke PIC, software ini gratis dan bisa di download pada: http://www.winpic800.com/index.php?lang=en Dalam CD yang menyertai buku ini juga terdapat program ini. Dengan menggunakan software ini kita bisa mengecek kondisi PIC, membaca program, menulis program dan menghapus program yang ada di PIC. Untuk metoda menginstalasi software Winpic800 ini bisa dibaca pada lampiran 1 buku ini. 3. PIC Programmer, yaitu alat atau hardware untuk menuliskan program dari computer ke PIC. Kebanyakan di pasaran saat ini untuk digunakan hardware ICSP (In Circuit Serial Programming) yaitu antar muka serial yang digunakan PC untuk mendownload suatu program kedalam program memori di PIC. Diagram pemograman menggunakan ICSP adalah ditunjukkan dalam gambar 2.4. 4. Rangkaian Dasar, adalah rangkaian minimal yang diperlukan agar PIC dapat bekerja. Rangkaian ini memerlukan PIC, Tombol Reset, Catu Daya 5 V dan Oscillator. Dengan adanya rangkaian dasar ini maka kita siap mengoperasikan PIC . Gambar 2.5 Menunjukkan rangkaian dasar untuk mengopersionalkan PIC. Sedangkan Gambar 2.6
10
adalah
rangkaian
catu
daya
yang
biasa
diapakai
untuk
PIC.
Gambar 2.4.a. Diagram hubungan antara PC, PIC programmer dan PIC Mikrokontroler
Gambar 2.4.b. Rangkaian Programmer
11
5V D1 1N1183
U2 LM7805C
R2 1k
3
LED1 CQX35A
C4 1m
OUT
C3 100n
IN
1
2
GND
9V
Gambar 2.5 Rangkaian dasar untuk mengoperasikan PIC Mikrokontroler
Gambar 2.6. Rangkaian Catu Daya 5V untuk PIC
2.5. Hal-hal penting dalam menggunakan PIC 1. Arah soket PIC tidak boleh terbalik. Perhatikan no PIN dan kepala PIC. Perhatikan gambar 2.7, pada kepala PIC sebelah kiri terdapat pin No. 1 lalu No 2 dan seterusnya mengikuti arah berlawanan jarum jam (Counter Clock Wise). Bila terbalik maka akan merusak PIC tersebut, ingat harga PIC16F88 perbuah sekitar Rp 30.000,-
12
Gambar 2.7 No urut pin di PIC16F88 bila dilihat dari atas 2. Matikan Switch (switch Off) atau putuskan hubungan ke catu daya ketika memasang PIC ke soketnya. 3. Karena tubuh kita memiliki listrik statik, maka sebaiknya sebelum menyentuh PIC tempelkan tangan kita ke lantai atau badan computer.Diusahakan ketika memegang PIC kita tidak menyentuh kaki-kakinya. Pergunakan alat lain (tool) seperti obeng dan pinset ketika membuka PIC dari soketnya. 4. Input tegangan yang lebih dari 5V atau kurang dari 0 V untuk setiap port akan merusak PIC secara permanen, cek dahulu tegangan yang akan kita hubungkan ke PIC untuk menjaga keamanan. 5. Untuk menghemat baterei, sebaiknya ketika kita tidak menggunakan Rangkain PIC kita, kita putuskan hubungan (atau matikan switch) ke baterai. 2.6. Kit Mikrokontroler Untuk mempelajari Mikrokontroler diperlukan suatu alat yang disebut Kit. Kit yang dipersembahkan dalam Training ini adalah MINI18 PIC Training Kit yaitu Kit untuk Pendidikan (Educational Mini Microcontroller Kit). Yang didesain untuk memberikan dasar-dasar mikrokontroller (memogram , mengetes dan mengembangkan) beserta latihan mengerjakan beberapa proyek praktis. Kit ini terdiri dari Programmer dan Rangkaian Aplikasi. Kit ini menggunakan PIC16F88, Mikrokontroller ini dipilih karena termasuk yang murah dan lengkap untuk berbagai aplikasi. Terdapat 14 pin I/O juga ada fungsi ADC dan PWM. Sehingga cocok digunakan untuk dunia pendidikan dan lomba Robot. Gambar 2.8 Menunjukkan Kit yang akan kita gunakan, sedangkang pada gambar 2.9 menunjukkan rangkaian aplikasi yang akan digunakan .
13
Gambar 2.8 MINI PIC Training Kit
Gambar 2.9 Rangkiana Aplikasi dalam MINI PIC Training Kit Cara menggunakan Kit ini adalah dengan mencolokkan langsung Port Programmer ke Serial Port di komputer seperti yang ditunjukkan adalam gambar 2.10.a dan 2.10 b
14
Gambar 1.10.a. Menghubungkan Programer ke Komputer
Gambar 1.10.b Kit dihubungkan ke PC mendownload program dari komputer ke PIC Kemudian seteleah setelah selesai mendonload program maka PIC dicabut dari Rangkaian Prograamer dan dipindahkan ke rangkaian Aplikasi.
15
Lalu sambungkan catu daya 9 V dan tekan Switch ON untuk menjalankan. 2.7. Perintah Dasar Bahasa C dalam memprogram PIC Tidak semua perintah bahasa C yang akan kita gunakan untuk memprogram PIC, beberapa hal yang penting adalah: a. Deklarasi Variabel Bentuk umum pendeklarasian suatu variable adalah : Nama_tipe nama_variabel; Contoh : int x; // Deklarasi x bertipe integer char y, huruf, nim[10]; // Deklarasi variable bertipe char float nilai; // Deklarasi variable bertipe float double beta; // Deklarasi variable bertipe double int array[5][4]; // Deklarasi array bertipe integer char *p; // Deklarasi pointer p bertipe char b. Operator Penugasan Operator Penugasan (Assignment operator) dalam bahasa C berupa tanda sama dengan (“=”). Contoh : nilai = 80; A = x * y; Artinya : variable “nilai” diisi dengan 80 dan variable “A” diisi dengan hasil perkalian antara x dan y. c.Operator Aritmatika Bahasa C menyediakan lima operator aritmatika, yaitu : * : untuk perkalian / : untuk pembagian + : untuk pertambahan - : untuk pengurangan d. Operator Hubungan (Perbandingan)
16
Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah operand (sebuah nilai atau variable. Operator hubungan dalam bahasa C : d.1 .Operator Arti Contoh < Kurang dari <= Kurang dari sama dengan > Lebih dari >= Lebih dari sama dengan == Sama dengan != Tidak sama dengan
x < y // x kurang dari y x <= y // x kurang dari sama dengan y x > y // x lebih dari y x >= y // x lebih dari sama dengan y x == y // x sama dengan y x != y // x tidak sama dengan y
d.2. Operator Logika Jika operator hubungan membandingkan hubungan antara dua buah operand, maka operator logika digunakan untuk membandingkan logika hasil dari operator-operator hubungan. Operator logika ada tiga macam, yaitu : • && Logika AND (DAN) • || Logika OR (ATAU) •! Logika NOT (INGKARAN)
e. Pemilihan Pernyataan e.1. Struktur Kondisi if…. dan if..else Dalam struktur kondisi if.....else minimal terdapat dua pernyataan. Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua yang dilaksanakan. Bentuk umumnya adalah sebagai berikut : if(kondisi) {…..} if(kondisi){pernyataan-1} else {pernyataan-2 } Contoh: if (m == 1) {x = x + 20} else {y = y – 10}; // jika m=1 maka harga x baru=x+20, jika tidak maka harga y yang baru = y-10. e.2. Perulangan while Banyak digunakan pada program yang terstruktur. Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true) atau 1 dan akan berhenti bila kondisinya bernilai salah. Bentuk umum dari pengulangan will ini adalah :
17
while(kondisi){ pernyataan}; Contoh: int s, i; s = i = 0; while (i < 6) { s = s + 2; i = i + 1; } Kode ini akan menambah bilangan 2 untuk variabel s sebanyak 6 kali dan di akhir program s akan menjadi 12. e.3. Pengulangan do..while Pada dasarnya struktur perulangan do....while sama saja dengan struktur while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di atas sementara pada perulangan do....while, seleksi while berada di bawah batas perulangan. Jadi dengan menggunakan struktur do...while sekurangkurangnya akan terjadi satu kali perulangan. Bentuk umum: do {pernyataan} while(kondisi); Contoh: int s, i; s = i = 0; do { s = s + 2; i = i + 1; } while (i < 7); Kode ini akan menambah bilangan 2 untuk variabel s sebanyak 7 kali dan di akhir program s akan menjadi 14. 2.8. Perintah-perintah Penting untuk Mikrokontroler a. Menegaskan suatu PORT sebagai Input atau Output PORTB sebagai Output TRISB = 0 ; PORTB sebagai Input TRISB = 0; PIN B1 sebagai output saja TRISB.F1 = 0; b. Menegaskan nilai output suatu PORT
18
Nilai semua PORTB = 0 V (Keadaan 0) PORTB = 0 ; Nilai semua PORTB = 5 V (Keadaan 1) PORTB = 255; (Karena 255= 1111 1111 di binary) Nilai awal PIN B1 = 5 V saja PORTB.F1 = 1; c. Pernyataan Pernyataan tidak akan diproses oleh komputer hanya membantu untuk pembuat dan pembaca program. Menggunakan tanda // untuk satu baris pernyataan atau /*...pernyataan........*/ untuk satu paragraf PORTB = 0; //Membuat nilai semua PORTB = 0 d. Struktur Program Untuk setiap program perlu pernyatan memulai dengan pernyataan: void main() e. Loop (Pengulangan) Agar program kita diulang terus menerus oleh mikrokontroler maka perlu perintah: do
//awal loop { …. …. } while(1) ; //akhir loop f. Mengecek Nilai digital input Nilai digital input yang masuk (0V atau 5 V) dapat dicek dengan perintah If (pernyataan) {maka….} Contoh:jika nilai Port RA1 = 5 V maka Output pada Port RB1 akan 5 V. If (PORTA.F1 == 1) {PORTB.F1=1}
g. Waktu Tunda (pause) yaitu membuat program sebelumnya bekerja dalam jangka waktu tertentu Untuk menunggu 1 detik (1000 ms) maka perintahnya: Delay_ms(1000) g. Mengeset Apakah Konversi Analog ke Digital Aktif atau Pasif Untuk menggunakan agar Input Analog pada mikrokontroler aktif maka dengan mengesetnya menggunakan perintah ADCON0: Kalau ingin fungsi ADC aktif, maka perintahnya: ADCON0 = 1; Kalau ingin fungsi ADC tidak aktif, maka perintahnya: ADCON0 = 0;
19
h. Mengeset apakah suatu input digital atau anlog dengan perintah ANSEL, perhatikan gambar 2.9, hanya pin yang berlabel AN saja yang dapat menggunakan fungsi ini. Misalkan kita ingin mengeset AN0 sebagai analog, maka perintahknya: ANSEL.F0=1; Kalau ingin pin AN3 sebagai digital maka perintahnya: ANSEL.F3=0; Kalau semua pin analog digital maka perintahnya: ANSEL=0;
2.9. Bilangan Desimal, Binari dan Hexadesimal Dalam Pemograman PIC MIkrokontroller ada beberapa cara penulisan bilangan 1. Binari, yaitu bilangan yang terdiri dari 0 dan 1. 2. Desimal, yaitu bilangan yang terdiri dari bilangan 0,1,2,3,4,5,6,7,8,9 3. Bilangan Hexadesimal yang terdiri dari bilangan 0-9, A, B, C, D, E, F Tabel bilangan tersebut ditujukkan dalam Table 3.
20
Dalam pemograman kita bisa menentukan nilai suatu port dengan perintah sebagai berikut : Bilangan Binari
Operator 0b
Contoh PORTB=0b00111111;
Hexadesimal
0x
PORTB=0x0F ;
Desimal
PORTB =12 ;
Arti Nilai PORT B0=1, B1=1, B2=1, B3=1, B4=1, B5=1, B6=0, B7=0 0F setara dengan 00001111, jadi nilai PORT B B0=1, B1=1, B2=1,B3=1,B4=0,B5=0, B6=0, B7=0 Nilai 12 setara dengan 00001100 dalam binari, maka nilai PORT B B0=0,B1=0, B2=1, B3=1, B4=0,B5=0, B6=0, B7=0
Kita juga dapat menentukan perintah perbit PORTB.F2=1 ; Yaitu nilai PORT B2=1 ; Mengkonversi bilangan dec, hex dan bin Untuk Mengkonversi antara decimal, binary dan hexadecimal dapat digunakan calculator converse pada microC. Caranya setelah membuka MikroC. Pada bagian bawah dari Windows MikroC akan kita dapatkan tab-tab: Messages, Find, Qconvertorseperti yang ditunjukkan oleh gambar 1.11. Kemudian klik Qconveror maka kita akan mendapatkan gambar 1.12. Dengan menuliskan salah satu kolom yang ada maka nilai bilangan lainnya bisa kita peroleh. Misalkan kita tulis 255 di decimal, maka akan kita peroleh FF di hexadecimal dan 11111111 di binary.
21
Gambar 1.11 Windows di MikroC
Gambar 1.12. Fasilitas QConvertor di MikroC
22
2.10. Proyek Pertama menggunakan PIC a. Persoalan Pada proyek ini kita akan menghidupkan LED dengan aturan sebagai berikut: 1. Pada satu detik pertama semua LED (Ada 6) yang ada di PORT B (RB0 hingga RB5) hidup semua. 2. Lalu satu detik berikutnya yang hidup hanya LED pada PORT B0, B2, B4. Atau LED Merah-Hijau-Kuning 3. Kemudian satu detik berikutnya yang hidup hanya LED pada PORT B1, B3 dan B5. Atau LED Kuning-Hijau-Merah 4. Proses in berulang ke No. 1 b. Rangkaian Elektronik Kita menggunakan rangkaian gambar 1.13
Gambar 1.13 Rangkaian PIC dan LED Pada gambar 1.13 output PIC adalah 5V dan arus 10mA. Karena tegangan maksimal LED hanya 2.1 V, sehingga diperlukan tahanan 470 Ohm. Keterangan secara terperinci tentang hubungan LED, Tegangan dan Tahanan di Jelaskan pada gambar 1.14.
Gambar 1.14 Cara menghubungkan LED dengan Resistor (tahanan).
23
c. Algoritma dan Flow Chart Algoritma adalah urutan logis yang disusun secara sistematis untuk memecahkan masalah. Penulisannya bisa menggunakan Flow Chart atau dengan urutan biasa. Untuk persolan di atas algoritmanya yaitu. 1. Mendefinisikan PORT yang akan kita pakai sebagai output 2. Menentukan nilai awal untuk PORT yang akan kita pakai 3. Memulai Program 4. Membuat output HIGH (1) untuk pin di PORT B0-B5 5. Tunggu satu detik atau 1000 ms. 6. Membuat Output HIGH untuk PORT B0, B2, B4., lainnya LOW 7. Tunggu 1000 ms 8. Membuat Output HIGH untuk PORT B1, B3 dan B5. 9. Tunggu 1000 ms 10. Mengulang lagi ke No. 3 Flowchart adalah pemaparan algoritma dalam bentuk gambar, yaitu diagram alir dari algoritma yang ada dengan menggunakaan symbol-simbol yang saling terhubung dan membentuk urutan penyelesaian masalah. Biasanya dengan flow chart proses pemograman akan mudah dimengerti. Tablel. Menunjukkan beberapa symbol dalam Flowchart yang biasa digunakan Simbol
Arti Terminator, fungsinya sebagai permulaan / akhir program. Diagram alir, atau arah alir fungsinya untuk menunjukkan arah aliran program. Preparation, fungsinya untuk proses inisialisasi/pemberian harga awal atau untuk perulangan/looping Proses, fungsinya untuk proses perhitungan/proses pengolahan data. Input data, fungsi untuk proses input data, parameter. Output data, output data, informasi
Decision, perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk langkah selanjutnya
24
On page connector, penghubung bagianbagian flowchart yang berada pada satu halaman Off page connector, penghubung bagianbagian flowchart yang berada pada halaman berbeda Gambar 21.13 menunjukkan Flowchart dari algoritma di atas adalah sebagai berikut:
Gambar 1.15 Flowchart untuk mengatur LED di PORT B
d. Menulis Program Langkah berikutnya adalah bagaimana menyusun algoritma di atas kedalam suatu program. Kita menggunakan program MikroC, pertama-tama kita aktifkan program MikroC, dari program yang ada di windows, Start> All Programs > Mikroelectronika > MikroC atau klik dobel dari ikon MikroC di desk top.
25
atau klik dobel dari ikon MikroC di desk top.
Setelah itu program MikroC akan keluar. Dilanjutkan dengan Project Wizard dari Menu: Project
Pilih New Project, maka akan keluar:
26
Pada Project Name: Tulislah nama project Anda misalkan PROYEK_PERTAMAKU Isilah Project Path, yaitu tempat/folder mana proyek itu akan disimpan Discription, anda bisa tulis juga bisa tidak (hanya pilihan) Pada Device, pilihlah PIC16F88 karena kita akan memakai devais tersebut. Pada Clock anda tuliskan 20.000000 (20 MHz) Klik default untuk menggunakan konfigurasi default. Lalu klik OK untuk melanjutkan. Selanjutnya MikroC compiler akan menyiapkan satu proyek file dan source file yang masih kosong. Lalu anda bisa menulis program pada window editor.
27
Tulislah Program ini di pada window editor: /* Nama Program PROYEK_PERTAMAKU Connection: LED B0-M, B1-K, B2-H, B3-M, B4-K, B5-H B6_SW1, B7-SW2 A1-Buzzer A0=LDR */ void main() { PORTB = 0; //nilai awal PORTB=0 TRISB = 0; //PORTB sebagai Output { do { PORTB = 0b00111111; //bilangan binari 00111111 Delay_ms(1000); PORTB = 0b00101010; //bilangan binari 00101010 Delay_ms(1000); PORTB = 0b00010101; //bilangan binari 00010101 Delay_ms(1000); } while(1) ; } }
Keterangan untuk Program di atas: Perintah void main() { atau } // atau /*…..*/
PORTB = 0b00000000; TRISB = 0b00000000;
Keterangan Menunjukkan program Utama dimulai Adalah tanda kurung yang memudahkan kita membagi/mengidentifikasi program dalam beberapa blok Adalah komen atau keterangan yang tidak akan dieksekusi oleh computer Kalau // untuk satu baris saja, sedangkan Kalau /* di awal paragraph dan */ diakhir paragraph dapat membuat komen untuk satu paragraf atau banyak baris sekaligus Kita memberikan nilai awal PORTB=0 Mengeset PORTB sebagai Output Dalam bahasa C, apabila angka dimulai dengan 0b maka ini diidentifikasi sebagai angka binary, karena PORTB ada 8 PORT, maka dengan mengeset PORTB = 0b00000000 artinya PORT B0 hingga B7 akan memiliki nilai awal 0. Untuk bilangan hexadecimal digunakan bilangan yang dimulai 0x, sedangkan bilangan decimal biasa tidak menggunakan 0. Contoh yang bisa kita buat adalah: 0xff akan sama nilainya dengan 0b11111111 juga akan sama dengan 255 di bilangan desimal.
28
do… while(1);
PORTB = 0b00111111;
Delay_ms(1000);
Dengan mengeset TRISX, maka kita dapat mengkondisikan suatu PORT itu akan menjadi input atau output, conthonya: TRISX = 0x00 membuat PORT X sebagai output dan TRISX = 0xff membuatnya menjadi Input. makes the port as inputs. Sebagian input dan sebagian output juga bisa diset, misalkan TRISA= 0b00001111 artinya PORTA pin A0,A1,A2,A3 segai input (karena set 1) dan pin A4,A5,A6,A7 sebagai output (karena set 0). Memerintahkan untuk memulai loop yang tak pernah berhenti. While (1) artinya jika kondisi TRUE atau 1, maka akan kembali ke do lagi. Pada PORTB kita berikan output B0=1,B1=1,B2=1,B3=1,B4=1,B5=1, B6=0, B7=0 Dibaca bit dari belakang Artinya pause atau tunda waktu selama 1000 ms atau 1 detik. Untuk waktu yang lama maka perlu dibuat kelipatan 1 menit atau Delay_ms(60000);
e. Mengkompilasi Program Setelah anda tulis program di atas, lalu klik icon save
Setelah itu klik Compile Icon atau build project Project> Build
29
atau dari menu File pilih save
atau tekan Ctrl+F9 atau dari menu
Maka MikroC akan mengkompilasi program tersebut, mengkompail artinya membuat program assembler , debugger dan hex file. Hex file akan digunakan oleh PIC. f. Mentrasfer Hex File ke PIC Menstransfer Hex file ke PIC dikenal juga dengan mendownload program ke PIC, caranya kita harus memiliki programmer hardware dan WinPIC800 software. Pertama kita panggil program WinPIC800 dengan cara klik doble icon program tersebut di . Lalu kita hubungkan kabel antara Serial Port COM (RS232) di computer desktop dengan rangkaian programmer. Setelah kita klik dobel program WinPic800 akan keluar windows:
30
Pilihlah PIC pada pull down selection yaitu 16F88 seperti yang ditunjukkan pada gambar di atas. Lalu click untuk mengecek PIC dan juga kabel antara computer dan programmer. Setelah itu klik untuk menghapus semua program yang terdahulu dalam PIC. Setelah itu klik open File icon PIC.
untuk memilih file hex yang akan dipindahkan ke
Lalu klik Open kemudian kembali ke window WinPic800 Lalu klik
untuk menulis/menstransfer semua program hex ke PIC.
Setelah All Program selesai maka proses download hex file ke PIC sudah selesai, selanjutnya anda dapat memindahkan PIC yang telah di tulis itu kepada rangkaian PIC LED di atas (gambar 1.16), lalu hubungkan batrei 9V ke batrei socket dan tekan switch ON untuk menyalakan dkemudian anda akan melihat LED akan bergantian menyala seperti yang anda programkan.
31
Gambar 1.16 Rangkaian Aplikasi.
32
Bab 3 Membuat Proyek Sederhana dengan PIC A. Membuat Sistem Lalu Lintas untuk penyebrang Jalan Lampu lalu lintas adalah hal yang umum kita lihat di jalan sehari-hari, dan menggunakan PIC anda pun bisa membuatnya. Dengan mempelajari proyek ini anda akan tahu bagaimana membaca input digital, juga mengatur waktu untuk menghasilkan output yang dikendaki. 1.Persoalan Sebuah penyebrangan Jalan sebagaii mana terlihat dalam gambar 3.1. Terdapat lampu lalu lintas untuk penyebrang Jalan dan untuk mobil yang lewat. Pada setiap lampu lalu lintas terdapat tombol yang kita beri nama Switch E0 dan E1. 1. Kondisi normal adalah : Lampu Untuk Mobil Hijau dan Lampu Untuk Penyebrang Merah. 2. Ketika Penyebrang menekan salah satu switch maka lampu akan berubah: Lampu untuk Mobil: Kuning (2 Detik)Æ Merah (7 detik) Lampu Untuk Penyebrang: Merah 2 detikÆHijau (5 detik)Ækuning (2 detik).
Gambar 3.1. Lampu Lalu Lintas Untuk Penyebrang Jalan 2. Rangkaian Elektronik Untuk membuat Lampu Lalu Lintas dalam skala Lab atau skala kecil kita memerlukan 6 buah LED dengan warna Hijau, Kuning, Merah dan 2 buah Switch, serta PIC mikrokontroler untuk mengontrol semuanya. Gambar diagram dari rangkaian elektrik yang diperlukan ditunjukkan di gambar 3.2.
33
Gambar 3.2. Rangkaian Elektronik untuk Proyek Lampu lalu lintas bagi Penyebrang Jalan Terlihat bahwa 6 buah LED kita hubungkan dengan PIN B0 – B5, dan switch kita hubungkan dengan Pin E0 dan E1. 3. Algoritma Untuk persolan di atas algoritmanya yaitu. 1. Mendefinisikan PORT yang akan kita pakai sebagai input dan output 2. Mengeset PORT E0 dan E1 sebagai pembaca input digital. 3. Menentukan nilai awal untuk PORT yang akan kita pakai 4. Memulai Program 5. Set Untuk kondisi normal: LED Merah Penyebrang ON dan LED Hijau Mobil ON 6. Jika Salah satu switch ditekan (Switch 1 atau Switch 2) maka: • 1. Set 2 detik pertama Lampu LED Merah Penyebrang ON dan Lampu LED Kuning Mobil ON • 2. Kemudian, Pada waktu 5 detik, Lampu LED Hijau Penyebrang ON dan Lampu LED Merah Mobil ON • Set 2 detik terakhir, Lampu LED Kuning Penyebrang ON dan Lampu LED Merah Mobil ON 6. Kembali Ke kondisi normal 4. Menulis Program Gunakan Program Berikut dan tuliskan di MikroC, lalu lakukan kompilasi untuk membuat Hex file dan download ke PIC menggunakan PIC Programer. Kemudian tes program tersebut dan lihatlah apakah program yang anda buat berhasil? /* Nama Program SWITCH *Connection: LED B0-M, B1-K, B2-H, B3-M, B4-K, B5-H B6_SW1, B7-SW2 A1-Buzzer
34
A0=LDR *Warna Lampu Penyebrang Hijau=Port B2, Kuning=B1, Merah=B0 **Warna Lampu Mobil Hijau=B5, Kuning=B4, Merah=B3 **Switch Penyebrang ada di PORT B6 dan B7 */ void main() { PORTB = 0; //nilai awal PORTB=0 PORTA = 0; //nilai awal PORTA=0 //SET PORT B sebagai INPUT atau OUTPUT TRISB.F0 = 0; //PORT B0 sebagai Output TRISB.F1 = 0; //PORT B1 sebagai Output TRISB.F2 = 0; //PORT B2 sebagai Output TRISB.F3 = 0; //PORT B3 sebagai Output TRISB.F4 = 0; //PORT B4 sebagai Output TRISB.F5 = 0; //PORT B5 sebagai Output TRISB.F6 = 1; //PORT B6 sebagai input TRISB.F7 = 1; //PORT B7 sebagai input //SET PORT A1 SEBAGAI OUTPUT TRISA.F1 = 0; //Analog Selection ANSEL.F5 = 0; //Set AN5 sebagai digital ANSEL.F6 = 0; //Set AN6 sebagai digital { do { if((PORTB.F6==1) || (PORTB.F7==1)) //jika switch B6 atau B7 HIGH { /*Penyebrang (B2(M),B1(K),B0(M)): merah 2 detik lalu hijau 5 detik kemudian kuning 2 detik ** Mobil (B5(H),B4(K),B3(M)): kuning 2 detik lalu merah 7 detik **Set 2 detik pertama B2 ON dan B4 ON */ PORTB.F2 = 0; PORTB.F1 = 0; PORTB.F0 = 1; //P-Merah ON PORTB.F5 = 0; PORTB.F4 = 1; //M-Kuning ON PORTB.F3 = 0; Delay_ms(2000); //2 detik pertama //Set 5 detik, PORTB.F2 = 1; //P-Hijau ON PORTB.F1 = 0; PORTB.F0 = 0; PORTB.F5 = 0; PORTB.F4 = 0; PORTB.F3 = 1; //M-Merah ON Delay_ms(5000); //Set 2 detik terakhir PORTB.F2 = 0; PORTB.F1 = 1; //P-Kuning ON PORTB.F0 = 0; PORTB.F5 = 0; PORTB.F4 = 0; PORTB.F3 = 1; //M-Merah ON Delay_ms(5000); } else {
35
PORTB.F2 = 0; PORTB.F1 = 0; PORTB.F0 = 1; PORTB.F5 = 1; PORTB.F4 = 0; PORTB.F3 = 0; } } while(1) ;
//P-Merah ON //M-Hijau ON
} }
B. Membuat proyek Sistem Keamanan di Rumah Sistem Keamanan di Rumah adalah sesuatu hal yang peling penting untuk setiap orang, karena kita tidak akan membiarkan rumah kita dicereboh oleh pencuri atau perampok. Untuk itu diperlukan suatu system yang mendeteksi kehadiran pencuri atau perampok dan melaporkannya secara cepat kepada kita dalam bentuk suara alarm. Dalam proyek ini anda akan belajar cara membuat sistem kemanan rumah dan mengujinya. 1. Persoalan Gambar 3.6. Menunjukkan sebuah rumah yang memiliki 2 alat pendeteksi atau sensor kehadiran pencuri. Yang pertama yaitu switch sentuh (micro switch) yang diletakkan di bawah keset dan yang kedua switch yang diletakkan di Jendela. Apabila pencuri menginjak keset atau membuka jendela akan mengaktifkan switch yang ada. Pada keset kita buat suatu kondisi, apabila keset diinjak maka nilai output switch akan HIGH. Sedangkan pada jendela apabila jendela dibuka maka kondisi nilai switch akan LOW. Disini kita sudah mengeset kondisi switch yaitu normali open (NO) (dalam kondisi normal dua elektroda kontak di switch tidak terhubung atau dalam kondisi normal nilai tegangannya LOW) dan normali close (NC) (dalam kondisi Normal dua elektroda kontak terhubung atau dalam kondisi normal nilai tegangannya HIGH). Untuk melaporkan kepada kita, maka kita gunakan lampu merah LED akan kelap-kelip dan buzzer akan akatif menghasilkan suara alarm. 1. Kondisi normal adalah : Switch di set LOW dan Switch di Jendela High, Lampu LED menyala Hijau dan Buzzer Off. 2. Ketika Pencuri masuk dengan Jalan Menginjak Keset Atau Membuka Jendela, maka lampu LED merah akan menyala kelap kelip dan buzzer akan aktif.
36
Gambar 3.6 Sistem keamanan pada rumah 2. Rangkaian Elektronik Untuk membuat Sistem keamanan rumah kita memerlukan 2 buah switch, yang kita letakkan di Pin B6 dan B7 pada PIC, 2 buah LED berwarna hijau dan merah yang kita hubungkan di pin B3 (hijau) dan B0 (Merah) dan satu buah Buzzer yang kita hubungkan dengan pin A2, serta sebuah PIC mikrokontroler untuk mengontrol semuanya. Gambar diagram dari rangkaian elektrik yang diperlukan ditunjukkan di gambar 3.7. Hubungan antara pin di PIC dan komponen yaitu: LED Hijau LED Merah Switch 1 Switch 2 Buzzer
Pin B3 Pin B0 Pin E6 Pin E7 Pin A1
37
. Gambar 3.7. Diagram hubungan anatra PIC dan Komponen 3. Algoritma Untuk persolan di atas algoritmanya yaitu. 1. Mendefinisikan PORT yang akan kita pakai sebagai input dan output 2. Menentukan nilai awal untuk PORT yang akan kita pakai 3. Mengeset PORT E0 dan E1 sebagai pembaca input digital. 4. Memulai Program 5. Set Untuk kondisi normal: LED Hijau selalu ON untuk Menyatakan sitem ready. 6. Jika Salah satu switch ditekan (Switch 1 atau Switch 2) maka: • Lampu LED Merah menyala Kelap kelip dan Buzzer ON selama 10 detik. Kembali Ke kondisi normal 4. Menulis Program Gunakan Program Berikut dan tuliskan di MikroC, lalu lakukan kompilasi untuk membuat Hex file dan download ke PIC menggunakan PIC Programer. Kemudian tes program tersebut dan lihatlah apakah program yang anda buat berhasil? /* Nama Program SWITCH Connection: LED B0-M, B1-K, B2-H, B3-M, B4-K, B5-H B6_SW1, B7-SW2 A1-Buzzer A0=LDR */ void main() { PORTB = 0; PORTA = 0;
//nilai awal PORTB=0 //nilai awal PORTA=0
38
//SET PORT B sebagai INPUT atau OUTPUT TRISB.F0 = 0; //PORT B0 sebagai Output TRISB.F1 = 0; //PORT B1 sebagai Output TRISB.F2 = 0; //PORT B2 sebagai Output TRISB.F3 = 0; //PORT B3 sebagai Output TRISB.F4 = 0; //PORT B4 sebagai Output TRISB.F5 = 0; //PORT B5 sebagai Output TRISB.F6 = 1; //PORT B6 sebagai input TRISB.F7 = 1; //PORT B7 sebagai input //SET PORT A1 SEBAGAI OUTPUT TRISA.F1 = 0; //Analog Selection ANSEL.F5 = 0; //Set AN5 sebagai digital ANSEL.F6 = 0; //Set AN6 sebagai digital { do { if((PORTB.F6==1) || (PORTB.F7==1)) //jika switch B6 atau B7 ON { /*Maka Buzzer ON dan LED Merah Menyala Kelap Kelip */ PORTA.F1 = 1; //PORTE Pin A1 High, Buzzer ON //LED Merah Kelap kelip PORTB.F0 = 1; //LED Merah ON Delay_ms(500); PORTB.F0 = 0; //LED Merah OFF Delay_ms(500); PORTB.F0 = 1; //LED Merah ON Delay_ms(500); PORTB.F0 = 0; //LED Merah OFF Delay_ms(500); PORTB.F0 = 1; //LED Merah ON Delay_ms(500); PORTB.F0 = 0; //LED Merah OFF Delay_ms(500); PORTB.F0 = 1; //LED Merah ON Delay_ms(500); PORTB.F0 = 0; //LED Merah OFF Delay_ms(500); PORTB.F0 = 1; //LED Merah ON Delay_ms(500); PORTB.F0 = 0; //LED Merah OFF Delay_ms(500); Delay_ms(500); PORTB.F0 = 1; //LED Merah ON Delay_ms(500); PORTB.F0 = 0; //LED Merah OFF Delay_ms(500); Delay_ms(500); PORTB.F0 = 1; //LED Merah ON Delay_ms(500); PORTB.F0 = 0; //LED Merah OFF Delay_ms(500); Delay_ms(500); PORTB.F0 = 1; //LED Merah ON Delay_ms(500); PORTB.F0 = 0; //LED Merah OFF Delay_ms(5000); //Buzzer ON selama 5 detik } else { PORTB.F2 = 1; //Kondisi normal LED Hijau ON PORTA.F1 = 0; //Buzzer OFF
39
} } while(1) ; } }
C. Membaca Data Dari Sensor Membaca d ata dari sensor, mirip kita melakukan akusisi data menggunakan mikrokontrler. PIC16F88 dapat digunakan sebagai IC untuk melakukan akusisi data karena memiliki Analog Digital Converter Port, ada 6 analog input yaitu pada PORT AN0 hingga AN5. RA0-RA4 terdapat AN0 hingga AN4, dan pada RB6 dan RB7 terdapat AN5 dan AN6. jika sinyal yang diterima oleh port ini berupa analog, maka oleh PIC sinyal ini dokonversi menjadi nilai digital untuk diolah dalam proses selanjutnya. Dengan memiliki PORT Analog ini maka PIC dapat menerima output sinyal dari sensor. Selain itu yang perlu diingat adalah sinyal analog yang dapat diterima oleh PIC harus dalam jangkauan tegangan 0-5 V, apabila sinyal tegangan dari sensor berada di luar jangkauan ini, maka harus dibuat rangkaian pengkondisian sinyal agar dapat berada pada 0 – 5 V. Selain itu Polaritas + dan – harus diperhatikan juga, kabel negative dari sensor harus dihubungkan ke ground pada PIC input dan kabel postif dihubungkan ke PORT A0, A1, A2, A3, B6, dan B7 Perintah Dasar ADC MikroC memiliki library (Kode pustaka) untuk menjalankan operasi ADC yaitu: 1. Adc_Read Fungsi: Memulai membaca port analog Penulisan: Adc_Read(No_chanel_analog_port); 2. ADCON1 Fungsi: Mengaktifkan Konversi analog ke digital Penulisan: ADCON1 = 0; Mengaktifkan ADC pada semua port analog Pengkonversi Analog ke Digital (Analog-Digital Converter) Disingkat dengan ADC, A/D atau A to D adalah suatu proses mengkonversi sinyal (tegangan) analog ke bilangan digital diskrit. ADC ini terdapat dalam IC ADC atau salah satu bagian di IC yang mengkonversi sinyal kontinyu ke bilangan digital diskrit. Proses pengkonversian meliputi pencuplikan sinyal (sampling) kemudian mengubahnya menjadi bilangan digital yang akan diterima oleh komputer. Ada beberapa istilah yang perlu diketahui ketika menggunakan ADC. Yang pertama adalah bit, yaitu singkatan dari binary digit, unit atau satuan terkecil dari penyimpanan informasi data dan komunikasi digital. Bilangan binary ini berupa 0 atau 1, Panjang Bit adalah jumlah bilangan binary yang dapat diproses oleh suatu instrument, contohnya 10100011 memiliki panjang 8 bit. Sedangkan byte adalah koleksi atau jumlah dari bit. ADC memiliki batasan bit, yaitu
40
jumlah bit maksimal yang dapat diproses. Gambar 4.2. menunjukkan proses konversi yang terjadi.pada suatu ADC yang miliki 3 bit dan tegangan input dari 0 hingga 10 V. Untuk ADC yang mimiliki 3 bit maka bilangan binary minimal adalah 000 dan maksimal 111. Jumlah bilangan binary dari 000 ke 111 adalah 23-1=7, yaitu 000, 001, 011, 100, 101, 110, 111.
Gambar 4.2. Proses Konversi dari analog ke digital Karena tegangan masukan ADC dari 0 hingga 10 V, kemudian ada 7 bilangan binary maka tegangan dari 0 hingga 10 V dibagi 7 tingkatan, dan setiap peningkatan bilangan binary akan berkaitan dengan peningkatan tegangan input sebesar 1.25 V. Dalam ADC juga dikenal istilah resolusi yaitu nilai peningkatan terkecil bilangan binary yang dapat dibaca, untuk menghitung resolusi ini menggunakan rumus V −V Q = max n min (4.1) 2
dimana Vmax dan Vmin adalah tegangan maksimal dan minimal input ADC, dan n adalah jumlah bit ADC. Kalau kita gunakan rumus ini untuk menghitung resulusi ADC pada gambar 4.2 maka akan kita dapatkan resolusi ADC ini adalah 10 −3 0 = 1.25 . Maka computer 2
akan meninterprestaikan setiap perubahan 1 digit bersesuaian dengan 1.25V. Apabila bilangan digital 110 ini setara dengan tegangan 8.75 V. Untuk latihan suatu PIC Mikrokontroler memiliki 8 bit ADC, ini berarti tingkatan digital adalah dari 0 – 255. Jika kita set tegangan referensi adalah 5 V, maka 0 – 5 V bisa direpresentasikan sebagai 0-255 dalam format digital. Misalkan 5 V akan ditunjukkan
41
dengan 255, dan 2.5 V ditunjukkan dengan 128. Rumus untuk menghitung tagangan dalam unit digital adalah ⎛V x = ⎜ in ⎜ Vref ⎝
⎞ n ⎟(2 − 1) , ⎟ ⎠
(4.2)
dimana Vin adalah tegangan masukan ke ADC, Vref adalah tegangan referensi atau tegangan untuk skala full, n adalah bit ADC. Kalau kita hitung Resolusi ADC PIC 8 bit ini adalah: 5/256=19.5 mV.
Persoalan Pada bagian berikut kita akan mengambil data dari sensor LDR. LDR adalah optoelektronik sensor, yang akan memberikan response terhadap cahaya. Dengan meningkatnya intensitas cahaya yang diterimanya maka tahanan yang ada pada LDR akan menurun. Dengan menggunakan rangkaian pembagi tegangan, maka perubahan tahanan ini akan dikonversi menjadi tegangan listrik. Diagram dari sensor yang kita gunakan adalah ditunjukkan pada gambar 4.4.
Gambar 4.4. Konfigurasi Sensor Cahaya
Gambar 4.4. Menunjukkan Diagram Rangkaian listrik yang akan kita gunakan, yang terdiri dari 1 LDR sebagai sensor, terletak di PORT A0. Hasilnya kita ingin ditunjukkan dengan perubahan hidup matinya LED di PORT B0 sampai B4. . Program untuk menyelesaikan soal di atas ditunjukkan di sini: /* Nama Program ADC Connection: LED B0-M, B1-K, B2-H, B3-M, B4-K, B5-H B6_SW1, B7-SW2 A1-Buzzer A0=LDR */
42
unsigned short input_a0; void main() { PORTB = 0; //nilai awal PORTB=0 PORTA = 0; //nilai awal PORTA=0 //SET PORT B sebagai INPUT atau OUTPUT TRISB.F0 = 0; //PORT B0 sebagai Output TRISB.F1 = 0; //PORT B1 sebagai Output TRISB.F2 = 0; //PORT B2 sebagai Output TRISB.F3 = 0; //PORT B3 sebagai Output TRISB.F4 = 0; //PORT B4 sebagai Output TRISB.F5 = 0; //PORT B5 sebagai Output TRISB.F6 = 1; //PORT B6 sebagai input TRISB.F7 = 1; //PORT B7 sebagai input //SET PORT A1 SEBAGAI OUTPUT TRISA.F1 = 0; //Analog Selection ANSEL.F5 = 0; //Set AN5 sebagai digital ANSEL.F6 = 0; //Set AN6 sebagai digital ANSEL.F0 = 1; //Set A1 sebagai analog input ADCON1 = 0; //Mengaktifkan ADC pada semua port analog { do { input_a0 = ADC_Read(0); // Dapatkan data analog dari A0 PORTB = input_a0; //Nilai binari PORTB = data analog A0 } while(1); } }
Data yang diterima oleh PORT A0 adalah analog berkisar antara 0- 5V, kemudian diconvert ke binari, lalu nilai binari ini bisa dilihat di nyala LED.
43
Lampiran 1 Menginstal Software 1.1. Cara Menginstal MikroC MikroC adalah software produksi dari mkroElektronika untuk mengetik program untuk PIC dalam bahasa C dan juga mengkompilasi program tersebut menjadi bahasa Asembler dan dalam format hex, cara menginstalasinya adalah sebagai berikut: 1. Click dobel (double click) pada file mikroC installer yang ada di folder software di CD atau download di http://www.mikroe.com/en/compilers/mikroc/pic/download.htm
2. Lalu akan muncul instruksi sebagai berikut:
Klik Next untuk melanjutkan proses instalasi 3. Lalu pilih tombol I accept the terms in the License Agreement.
Kemudian tekan Next untuk melanjutkan 4. Akan muncul layer untuk instruksi berikutnya, lalu klik Next
44
5. Pilihlah folder di mana anda akan menginstal software ini, kalau anda setuju dengan default directory (directory yang diusulkan oleh software), anda bisa langsung klik Install.
6. Lalu proses instalasi bermula
7. Lalu setelah selesai proses instalasi, berikutnya klik finish.
45
8. Untuk instalasi Flash tidak disarankan karena harware programernya tidak sama dengan programmer kit yang kita gunakan. Sebaiknya klik No, tapi anda boleh menginstal jika anda menghendakinya.
9. Setelah selesai proses instalisasi di atas, maka anda dapat menecek di start> All programs > Mikroelektronika > mikroC
Juga anda akan dapatkan sebuah ikon sort cut di desktop PC anda.
10. Proeses instalasi selesai maka anda siap menggunakan software ini.
46
1.2. Cara Menginstal Winpic800 1. Click dobel (double click) pada file winpic800 installer yang ada di folder software di CD atau download di http://www.winpic800.com/index.php?lang=en
2. Lalu akan muncul instruksi sebagai berikut:
Pilih bahasa Inggris, selanjutnya klik Next 3. Lalu akan muncul jendela berikut.
Pilihlah folder di mana anda akan menginstal software ini, kalau anda setuju dengan default directory (directory yang diusulkan oleh software), anda bisa langsung klik Install. 4. Lalu proses instalasi bermula.
47
5. WinPic menannyakan apakah perlu membuat Shortcut di desktop, klik OK jika anda setuju.
6. Lalu proses instalasi akan berlanjut dengan menginstal Driver, lalu klik Next.
7. Proses Instalasi selanjutnya adalah mengeset hardware. Dengan memulai dari menu Windows Start>Programs>WinPic800 atau klik dobel pada shortcut WinPic800 di desktop.
48
8. Lalu akan muncul Jendela seperti ini:
9. Mengeset Hardware: Pada Menu: Setting> Hardware, pilihlah JDM Programmer, karena rangkaian elektronik yang digunakan untuk programmer adalah jenis JDM Programmer.
Kemudian klik Save atau Apply edit
10. Proses instalasi sudah selesai, selanjutnya, anda bisa memulai menggunakannya.
49
Ada beberapa menu seperti gambar di atas yang perlu diketahui , yaitu:
Detect Device
Untuk Mendeteksi PIC apakah ada atau tidak, kondisinya juga jenisnya. Apabila diklik menu ini akan keluar window hasil deteksi software Winpic terhadap PIC yang kita punyai seperti ini:
Read All
Untuk membaca Hex file yang ada di dalam PIC, data ini bisa dicopy, dengan menu File>Save as. Window hasil membacanya akan terlihat sebagai berikut:
50
Write Program All
Verify All
Erase All
Untuk menulis program Hex file ke PIC, hasilnya akan terlihat sebagai berikut:
Untuk verifikasi apakah data yang sudah kita kirim dalam PIC sama dengan data yang terdapat pada hex file di winpic.
Untuk menghapus semua data/memori yang ada di dalam PIC
51
11. Untuk memulai WinPic, pertama sambungkan Kabel RS232 ke COM Port di computer dan ujung kabel lainnya sambungkan ke programmer yang ada di Papan Rangkaian (Circuit Board) di Robot. Lalu klik menu Detect Device, kalau Ok, lalu klik menu Erase All. 12. Lalu pilih File> Open atau klik , pilihlah hex file yang sudah anda buat sebelumnya dengan menggunakan mikroC
Lalu Open, maka hex file itu akan dimuat di dalam jendela Winpic.
52
13. Lalu click menu Program All, maka semua hex file tersebut sudah dimuat dalam PIC.
Maka PIC anda bisa digunakan untuk menjalankan proyek anda.
53