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)
1
Bab 1
Anatomi 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.
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.
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.
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.
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.
Ada banyak sekali jenis mikrokontroler di pasaran seperti yang ditunjukkan oleh table 2.1.
di bawah ini.
4. 8051, 8052
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,
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.
6
e. ADC module Port
f. PWM Module e.
f. -
Kecepatan Prosesor Dibawah 40 MHz Beberapa GHz
RAM Beberapa Bytes Beberapa Kbytes
ROM Beberapa Bytes Beberapa Kbytes
Ruang untuk Flash, EEPROM (lectrically Harddisk
data/program 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.
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.
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
8
Konfigurasi I/O Mikrokontroler dapat dilihat dari Datasheet Mikrokontroller tersebut
yang disarikan sebagai berikut:
Output Mikrokontroler hanya digital yaitu tegangan outputnya 0V untuk keadaan 0 dan
5V untuk keadaan 1
Pin Mikrokontroler dapat menjadi Input atau Output tergantung Setting pada
pemogramannya
9
Gambar 2.4. Karakteristik Tegangan Input dan Output dari 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
11
Gambar 2.5 Rangkaian dasar untuk mengoperasikan PIC Mikrokontroler
5V
9V
C4 1m
C3 100n
1
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.
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
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
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.
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
16
Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah
operand (sebuah nilai atau variable. Operator hubungan dalam bahasa C :
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.
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.
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.
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)
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;
20
Dalam pemograman kita bisa menentukan nilai suatu port dengan perintah sebagai
berikut :
PORTB.F2=1 ;
Yaitu nilai PORT B2=1 ;
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
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
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.
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.
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.
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.
24
On page connector, penghubung bagian-
bagian flowchart yang berada pada satu
halaman
Off page connector, penghubung bagian-
bagian flowchart yang berada pada
halaman berbeda
Gambar 21.13 menunjukkan Flowchart dari algoritma di atas adalah sebagai berikut:
d. Menulis Program
25
atau klik dobel dari ikon MikroC di desk top.
Setelah itu program MikroC akan keluar. Dilanjutkan dengan Project Wizard dari Menu:
Project
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:
Perintah Keterangan
void main() Menunjukkan program Utama dimulai
{ atau } Adalah tanda kurung yang memudahkan kita
membagi/mengidentifikasi program dalam beberapa blok
// atau /*..*/ 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
PORTB = 0b00000000; Kita memberikan nilai awal PORTB=0 Mengeset PORTB
TRISB = 0b00000000; 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
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).
do while(1); Memerintahkan untuk memulai loop yang tak pernah berhenti.
While (1) artinya jika kondisi TRUE atau 1, maka akan
kembali ke do lagi.
PORTB = 0b00111111; 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
Delay_ms(1000); 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 atau dari menu File pilih save
Setelah itu klik Compile Icon atau build project atau tekan Ctrl+F9 atau dari menu
Project> Build
29
Maka MikroC akan mengkompilasi program tersebut, mengkompail artinya membuat
program assembler , debugger dan hex file. Hex file akan digunakan oleh 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
desktop . Lalu kita hubungkan kabel antara Serial Port COM (RS232) di computer
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 untuk memilih file hex yang akan dipindahkan 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 detikHijau (5 detik)kuning (2 detik).
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
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?
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; //P-Merah ON
PORTB.F5 = 1; //M-Hijau ON
PORTB.F4 = 0;
PORTB.F3 = 0;
}
}
while(1) ;
}
}
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.
37
.
3. Algoritma
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?
*/
void main()
{
PORTB = 0; //nilai awal PORTB=0
PORTA = 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) ;
}
}
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
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.
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 n
x = in (2 1) , (4.2)
Vref
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. 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:
*/
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. 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
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.
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
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.
48
8. Lalu akan muncul Jendela seperti ini:
10. Proses instalasi sudah selesai, selanjutnya, anda bisa memulai menggunakannya.
49
Ada beberapa menu seperti gambar di atas yang perlu diketahui , yaitu:
Untuk membaca Hex file yang ada di dalam PIC, data ini bisa
Read All
dicopy, dengan menu File>Save as.
50
Untuk menulis program Hex file ke PIC, hasilnya akan
Write
terlihat sebagai berikut:
Program All
Untuk verifikasi apakah data yang sudah kita kirim dalam PIC
Verify All
sama dengan data yang terdapat pada hex file di winpic.
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.
53