BASCOMAVR Dan Aplikasi

download BASCOMAVR Dan Aplikasi

of 27

Transcript of BASCOMAVR Dan Aplikasi

BASCOM-AVRApa itu Bascom-AVR? Sejenis peralatan dapur kah?BASCOM-AVR adalah salah satu perangkat software untuk pembuatan program, yang ditanamkan dan dijalankan pada mikrokontroler keluarga AVR seperti ATMega8, ATMega16, dll. BASCOM-AVR juga bisa disebut sebagai IDE (Integrated Development Environment) yaitu lingkungan kerja yang terintegrasi, karena disamping tugas utamanya (meng-compile kode program menjadi file HEX / bahasa mesin), BASCOM-AVR juga memiliki kemampuan / fitur lain yang berguna sekali, contoh : Simulator Programmer (untuk menanamkan program yang sudah di-compile ke mikrokontroler).Screenshot BASCOM-AVR :

Dan perlu diketahui, sesuai dengan namanya BASCOM (Basic Compiler) bahasa yang digunakan adalah bahasa BASIC. Jadi, jika anda sudah pernah menggunakan bahasa BASIC (Visual Basic, Turbo Basic, dll), akan menjadi modal penting untuk mempelajari tool ini karena secara struktur pemrograman dasar tidak ada perbedaan.Mikrokontroler keluarga AVR bermacam-macam jenisnya beberapa contoh yang umum digunakan untuk aplikasi dan alat otomasi adalah ATMega 8 dan ATMega 16 :

ATMega 8 ATMega 16

Sangat disarankan bagi Anda untuk membaca karakteristik dari mikrokontroler yang anda gunakan terlebih dahulu.

Langkah Awal Penulisan Program pada BASCOM-AVR

Untuk memulai pembuatan program dengan BASCOM-AVR, klik menu File -> New. Langkah awal penulisan program adalah dengan menentukan file register dan kristal yang digunakan, yakni dengan menuliskan :

$regfile = "m16def.dat"$crystal = 8000000

Dimana "m16def.dat" adalah nama file yang berisi konfigurasi alamat register pada mikrokontroler AVR ATMega 16, jika anda menggunakan jenis lain, maka anda harus mengganti nama file register ini sesuai dengan mikrokontroler yang anda gunakan. Sedangkan 8000000 adalah frekuensi denyut kristal yang digunakan, satuannya adalah dalam Hertz (8000000 = 8 MHz). Pada mikrokontroler keluarga AVR terdapat crystal internal : 1 MHz, 2 MHz, 4 MHz, dan 8 MHz, silahkan dipilih sesuai dengan keperluan anda.

Variabel & Tipe dataDi dalam pemrograman tipe data adalah hal yang sangat penting untuk diketahui sebelum kita memulai pemrograman itu sendiri. Pada bahasa Basic yang telah disesuaikan dengan BASCOM-AVR, tipe-tipe data yang dikenal dan dapat digunakan adalah sebagai berikut : Bit (1/8 byte). Satu bit hanya bisa menampung nilai 1 atau 0. Kumpulan dari bit sebanyak 8 disebut byte. Byte (1 byte). Byte bisa menampung angka binari 8 bit dengan jangkauan 0sampai 255. Integer (2 byte). Integer bisa menampung angka bulat 16 bit dengan jangkauan -32,768sampai +32,767. Word (2 byte). Wordsmemiliki daya tampung yang sama dengan Integer,perbedaannya adalah Wor tidakmendukung nilai negatif adapun jangkauannya adalah dari 0sampai 65535. Long (4 byte). Longmampu menampung angkabulat 32 bit mulai dari-2147483648sampai 2147483647. Single. Single mampu menampung angka pecahan (desimal) 32 bit dengan jangkauan dari 1.5 x 10^45sampai 3.4 x 10^38 Double. Double mampu menampung angka pecahan (desimal)64 bit dengan jangkauan dari 5.0 x 10^324sampai 1.7 x 10^308 String (bisa sampai254 byte). String bisa menampung karakter ataupun kumpulan karakter.Misalnya :"IVAN ANTARIKSA" => merupakan kumpulan karakter, sehingga bisaditampung ke dalam variabel dengan tipe data String.

Cara mendeklarasikan sebuah variabel pada BASCOM-AVR adalah sebagai berikut :

Dim nama_variabel as tipedata, contoh : Dim x as Byte.

Khusus untuk tipe data String ada sedikit tambahan yakni jumlah karakter maksimal yang bisa ditampung oleh variabel tersebut. Contoh : Dim X as String * 10, berarti variabel X mampu menampung karakter sepanjang 10 karakter.

Di dalam penulisan nama variabel terdapat beberapa aturan yang harus di perhatikan :1. Tidak boleh menggunakan karakter khusus seperti : */#$@!%^&*(),;'~`?+=-\2. Tidak boleh menggunakan kata kunci yang telah ada di dalam bahasa pemrograman, contoh : for, next, do, loop, while, until, dll.3. Karakter pertama dalam nama varibel tidak boleh angka, contoh : 1var => salah, var1 => benar.4. Tidak boleh ada spasi, jika nama variabel lebih dari satu kata dapat dihubungkan dengan underscore(_).

OperatorOperator yang digunakan secara umum adalah, operator pembanding, operator aritmatik, dan operator logika.

1. Operator PembandingOperatorKeteranganPenggunaan

=Sama DenganA=B

Tidak Sama DenganAB

>Lebih Besar DariA>B

=B

pilih STK200/STK300 Programmer => centang AUTOFLASH => OKSedangkan untuk USBASP anda harus menginstal terlebih dahulu drivernya libusb_0.1.12.1 silahkan download search aja di mbah google, bagi yang belum punya. Berikut cara setting untuk downloader/programmer USBASP :Option => Programmer => pilih USB ASP => centang AUTOFLASH => OK

Cukup mengenai pengenalan dasar BASCOM-AVR. Mari kita langsung bermain dengan mikrokontrolernya

APLIKASI SEDERHANA MENGGUNAKAN BASCOM-AVR DAN MIKROKONTROLER ATMEGA 16

1. Mikrokontroler Sebagai Output (Menggunakan LED).Aplikasi sederhana yang biasa digunakan sebagai pengujian awal mikrokontroler. Buat rangkaian sebagai berikut.

Rangkaian output diatas menggunakan LED dimana untuk mengaktifkan (menyalakan) LED dengan memberikan logika 0. Ini yang disebut dengan rangkaian aktif low. Berikut listing program pada BASCOM-AVR.

Listing Program:$regfile "m16def.dat"$crystal = 8000000Config Portb = Output

DoPortb = &B11111110Wait 1Portb = &B11111101Wait 1Portb = &B11111011Wait 1Portb = &B11110111Wait 1Portb = &B11101111Wait 1Portb = &B11011111Wait 1Portb = &B10111111Wait 1Portb = &B01111111Wait 1LoopEndHasil Pengujian :Anda akan melihat nyala LED yang berjalan (running LED). Berikut hasil pengujian yang ditampilkan pada tabel.No.Port BOutput (LED)

PB .7PB .6PB .5PB .4PB .3PB .2PB .1L PB .0

1.&B1111111011111110

2.&B1111110111111101

3.&B1111101111111011

4.&B1111011111110111

5.&B1110111111101111

6.&B1101111111011111

7.&B1011111110111111

8.&B0111111101111111

NB : 1 = LED mati, 0=LED nyala

2. Mikrokontroler Sebagai Output (Menggunakan LED).Aplikasi berikutnya juga biasa digunakan sebagai pengujian awal I/O pada mikrokontroler. Buat rangkaian sebagai berikut.

Rangkaian output diatas menggunakan switch sebagai input dan LED sebagai output. Berikut listing program pada BASCOM-AVR.

Listing Program:$regfile "m16def.dat"$crystal = 8000000Config Portb = OutputConfig Portd = InputPortb=&11111111Portd=&11111111

DoPortb = PindLoopEnd

Hasil Pengujian :Anda akan melihat nyala LED sesuai dengan urutan switch yang ditekan. Berikut hasil pengujian yang ditampilkan pada tabel.

Kondisi Switch (SW)LED

PortB.7PortB.6PortB.5PortB.4PortB.3PortB.2PortB.1PortB.0

PortD.0 ditekan11111110

PortD.1 ditekan11111101

PortD.2 ditekan11111011

PortD.3 ditekan11110111

PortD.4 ditekan11101111

PortD.5 ditekan11011111

PortD.6 ditekan10111111

PortD.7 ditekan01111111

NB : 1 = LED mati, 0=LED nyala

3. LCD Kali ini kita akan mencoba, menggunakan lcd yang umum digunakan yaitu lcd 16x2, hanya beberapa pin yang digunakan untuk mengendalikan LCD,yaitu pin : RS, Enable, DB4, DB5, DB6, DB7. 6 pin ini dihubungkan dengan 6 pin pada mikrokontroler, peletakan pin pada mikrokontroler sesuka anda. Berikut contoh rangkaian lcd 16x2 yang dikendalikan menggunakan mikrokontroler.

Listing Program:$regfile "m16def.dat"$crystal = 11059200Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7Config Lcd = 16 * 2Cursor Off mematikan cursor pada LCDClsclearscreen = bersihkan layar LCDDo upperline Lcd " Ivan antariksa " lowerline Lcd " G1D007041 "LoopEnd

Hasil Pengujian

4. Motor ServoMotor servo adalah sebuah motor DC yang dilengkapi rangkaian kendali dengan sistem closed feedback yang terintegrasi dalam motor tersebut. Pada motor servo posisi putaran sumbu (axis) dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di dalam motor servo. Motor servo disusun dari sebuah motor DC, gearbox, variabel resistor (VR) atau potensiometer dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan batas maksimum putaran sumbu (axis) motor servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang pada pin kontrol motor servo.Operasional motor servo dikendalikan oleh sebuah pulsa selebar 20 ms, dimana lebar pulsa antara 0.5 ms dan 2 ms menyatakan akhir dari range sudut maksimum. Apabila motor servo diberikan pulsa dengan besar 1.5 ms mencapai gerakan 90, maka bila kita berikan pulsa kurang dari 1.5 ms maka posisi mendekati 0 dan bila kita berikan pulsa lebih dari 1.5 ms maka posisi mendekati 180. Berikut gambaran untuk pulsa yang diberikan pada motor servo, menyebabkan servo bergerak pada sudut tertentu.

Banyak aplikasi dari penggunaan motor servo seperti misalnya : tutup dan buka jendela, pendorong pada alat/mesin penjual rokok, robot lengan, robot laba-laba, dll.Berikut contoh sederhana untuk mengendalikan satu buah motor servo menggunakan mikrokontroler ATMega16.

Menggunakan port A.0, tidak ada pin khusus pada mikrokontroler untuk pemasangan motor servo, semua pin bisa digunakan, hanya butuh melakukan konfigurasi. Berikut listing program menggunakan BASCOM AVR.Listing Program:$regfile "m16def.dat"$crystal = 11059200Config Servos = 1 , Servo1 = Porta.0 , Reload = 10Config Porta.0 = OutputEnable Interrupts

Do Servo(1) = 45 Wait 3 Servo(1) = 90 Wait 3LoopEnd 'end program

Hasil PengujianGerakan servo putar kanan dan kiri

5. Relay, driver relay dan Motor DCPada pengendalian relay kita membutuhkan penguat arus. Yang umum digunakan adalah rangkaian transistor atau langsung menggunakan IC ULN2803. Kenapa dibutuhkan penguat arus? karena mikrokontroler memiliki kemampuan mengeluarkan arus yang kecil sehingga tidak mampu untuk mengaktifkan koil pada relay. Berikut rangkaiannya.

Menggunakan port A.0, tidak ada pin khusus pada mikrokontroler untuk pemasangan output seperti relay ini, semua pin bisa digunakan, hanya butuh melakukan konfigurasi. Berikut listing program menggunakan BASCOM AVR.Listing Program:$regfile "m16def.dat"$crystal = 11059200Config Porta.0 = OutputMotor1a alias porta.0 Motor1b alias porta.1Porta=0Do Motor1a = 0 Motor1b= 1 Wait 3 Motor1a = 1 Motor1b = 0 Wait 3LoopEnd 'end program

Hasil PengujianGerakan Motor DC searah putaran jam selama 3 detik dan dan berputar berlawanan selama 3 detik.

6. Seven SegmentPada sebuah alat elektronik tampilan berupa angka, biasa menggunakan seven segment. Bagian dalam dari setiap segmennya adalah LED yang di rangkai seri atau parallel tergantung produknya. Ada dua jenis seven segmen, yaitu : common anoda dan common katoda. Untuk yang common anoda berarti anoda dari setiap segmentnya telah menjadi satu jadi dan dihubungkan dengan tegangan positif, sedangkan untuk menyalakan masing-masing segmennya dibutuhkan tegangan negatif. Sebaliknya utk common katoda berarti katoda dari setiap segmentnya telah menjadi satu jadi dan dihubungkan dengan GND, sedangkan untuk menyalakan masing-masing segmennya dibutuhkan tegangan positif. Banyak metode yang digunakan untuk mengendalikan penyalaan seven segment menggunakan mikrokontroler. Salah satunya adalah masing-masing segment (a,b,c,d,e,f,g,h) dihubungkan dengan pin pada mikrokontroler. Berikut rangkaiannya.

Listing program$regfile "m16def.dat"$crystal = 11059200Config Porta = OutputPorta = 255

Do Porta = &B11000000 '0 Wait 1 Porta = &B11111001 '1 Wait 1 Porta = &B10011011 '2 Wait 1 Porta = &B11001111 '3 Wait 1Loop

Hasil Pengujian seven segmenAkan menampilkan angka 0,1,2, dan 3 secara bergantian dengan selang waktu 1 detik.

7. Sensor CahayaSensor cahaya banyak digunakan dalam dunia otomatisasi, misalnya pada alat penghitung(counter) kendaraan, penyalaan lampu jalan otomatis, pengukuran kecepatan kendaraan, pintu gerbang otomatis, dll. Salah satu sensor cahaya yang umum digunakan adalah photodiode. Photodiode akan melewatkan arus jika terkena cahaya matahari, semakin besar cahaya yang diterima, maka akan semakin banyak arus yang dapat dilewatkan. Berikut rangkaian sensor cahaya yang dihubungkan dengan mikrokontroler dan LCD 16x2 sebagai tampilan hasil pengolahan mikrokontroler dari masukan sensor cahaya.

Pada rangkaian sensor cahaya seperti ini, dapat digunakan sebagai inputan, yang dapat memberikan logika 1 jika sensor terkena cahaya dan memberikan logika 0 ke mikrokontroler jika tidak terkena cahaya matahari. Masukkan program berikut :Listing Program$regfile "m16def.dat"$crystal = 11059200Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7Config Lcd = 16 * 2Config porta.0 = input konfigurasi porta.0 sbg inputan dari sensorCursor Off mematikan cursor pada LCDClsclearscreen = bersihkan layar LCDupperlineLcd " Sensor Cahaya "lowerlineLcd " Ivan antariksa "Wait 1clsPorta.0=1DoIf pina.0 =0 thenUpperlineLcd Gak Kena Cahaya Else LowerlineLcd Kena Cahaya End ifLoopEnd

Hasil PengujianTampilan pada LCD Gak Kena Cahaya ketika sensor ditutupi, dan tampilan pada LCD Kena Cahaya ketika sensor diberi cahaya.

8. Sensor Suhu (LM35)Sensor suhu yang umum digunakan adalah LM35. Cukup ekominis, banyak dijual dipasaran, dan mudah penggunaannya adalah alasan kenapa sensor ini banyak diminati. Keluaran sensor berupa tegangan, dimana setiap kenaikan 1oC, tegangan keluaran sensor akan naik 10mV. Mikrokontroler yang kita gunakan ATMega16 yang memiliki fasilitas ADC (Analog to Digital Converter) 10 bit. Keluaran sensor langsung dihubungkan dengan ADC. Berikut rangkaiannya.

Ada beberapa metode yang digunakan untuk mengkonversi nilai adc yang ditangkap mikrokontroler menjadi data suhu. Saya lebih suka menggunakan rumus, berikut rumusnya :

Dimana telah kita ketahui dari datasheet LM35 bahwa setiap kenaikan 1oC, tegangan keluaran sensor akan naik 10mV. Dan Vref adalah tegangan referensi, tegangan yang masuk ke kaki AREF pada mikrokontroler, dapat diukur menggunakan AVO. Kita misalkan Vref yang digunakan adalah = 3,5 Volt. Dan pembacaan nilaiADC sensor LM 35 adalah 210. Maka,

Vin, kita konversi ke mV sehingga menjadi 718 mV dan dibagi 10 untuk mendapatkan data suhunya..Silahkan masukkan program dibawah dengan Vref= 3,5 Volt, silahkan ukur terlebih dahulu tegangan referensi yang anda gunakan.

Listing Program$regfile "m16def.dat"$crystal = 11059200Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7Config Lcd = 16 * 2Deflcdchar [0],28,20,28,32,32,32,32,32 karakter oConfig Adc = Single , Prescaler = AutoDim nilaiadcsensor as wordDim suhu as singleDim vin as single

Cursor Off mematikan cursor pada LCDClsclearscreen = bersihkan layar LCDupperlineLcd "Pengujian S.Suhu"lowerlineLcd " Ivan Anatariksa "Wait 1clsStart AdcDoNilaiadcsensor=getadc(0)Vin = Nilaiadcsensor*3.5Vin=Vin/1023Vin=Vin*1000 biar jadi mVSuhu=vin/10 kenaikan 10mV setiap kenaikan 1oC upperlineLcd "Suhu = "; fusing(suhu, "#.##");chr(0);C

LoopEnd

Hasil pengujianTampilan suhu pada LCD dengan 2 digit angka dibelakang koma.

9. OptokoplerOptokopler terdiri dari bagian pemancar dan penerima, bagian pemancarnya menggunakan LED dan penerimanya menggunakan sensor cahaya, ada yang menggunakan photodiode atau phototransistor. Banyak sekali jenis optokopler di pasaran, ada yg model IC misalnya 4n25, PC817, dll sedangkan yang model lain ada yang berupa optokopler U. Opkopler dapat digunakan untuk pendeteksi logika high/low, penghitung pulsa, dll. berikut gambaran dari optokopler. Pada aplikasi kali ini akan menggunakan optokopler U seperti pada gambar di atas (sebelah kiri), untuk mendeteksi ada dan tidaknya benda yang melewati celah. Berikut rangkaiannya.

Masukkan program berikut.Listing Program$regfile "m16def.dat"$crystal = 11059200Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7Config Lcd = 16 * 2Config porta.0 = input konfigurasi porta.0 sbg inputan dari sensorCursor Off mematikan cursor pada LCDClsclearscreen = bersihkan layar LCDupperlineLcd " Optokopler U "lowerlineLcd " Ivan Antariksa "Wait 1clsPorta.0=1DoIf pina.0 =0 thenUpperlineLcd Ada Benda Else LowerlineLcd Tidak Ada Benda End ifLoopEnd

BUKU SEDERHANA ANTARA CINTA DAN MIKROKONTROLERIVAN ANATARIKSAJln. Jalan Pembangunan No:19 Rt:05 Rw:02 Pasar Ujung Kepahiang