Rabu, 29 Juni 2011

MENGAKSES MODUL SENSOR GYROSCOPE LISY300 TERKALIBRASI MENGGUNAKAN CODEVISION AVR

[OVERVIEW]
Sensor gyroscope yang saya gunakan ini adalah sebuah modul yang terdiri dari sensor Gyroscope LISY300AL dan ADC serial ADC101S021 yang dikeluarkan oleh PARALLAX Inc. Pada modul ini pun telah dilengkapi dengan regulator tegangan 3.3 V sebagai supply nya. Modul Sensor Gyroscope LISY300AL dapat mendeteksi kecepatan sudut (angular rate) satu axis, yaitu sumbu Z (yaw). Dan mampu membaca sampai ± 300°/s full scale.  


PENGUKURAN KEMIRINGAN MENGGUNAKAN ACCELEROMETER MMA7260 DENGAN CODEVISION AVR TERKALIBRASI

Sensor accelerometer mma7260 buatan Freescale Semiconductor ini mempunyai 6 buah fungsi yaitu untuk mengukur gerakan (movement), getaran (vibration), jatuh (fall), kemiringan (tilt), posisi (positioning) dan benturan (shock).

 
Saya akan jelaskan bagaimana cara mengakses sensor accelerometer mma7260 untuk mengukur kemiringan (tilt measurement) yang ditampilkan pada LCD 2×16 menggunakan compiler CodeVision AVR.

CARA MELAKUKAN SIMULASI MENGGUNAKAN SOFTWARE PROTEUS

Pada postingan ini saya akan menjelaskan bagaimana cara melakukan simulasi menggunakan software Proteus ISIS. Untuk mendapatkan software Proteus silakan download disini. Tutorial simulasi ini saya fokuskan untuk rangkaian mikrokontroler dan rangkaian elektronika sederhana, dikarenakan jika anda sudah mahir menggunakan simulasi mikrokontroler dan elektronika sederhana, maka secara tidak langsung anda juga sudah bisa melakukan simulasi untuk rangkaian elektronika lainnya.

Dibawah ini adalah toolbar yang sering digunakan untuk melakukan simulasi beserta fungsinya.


PROGRAM MENGAKSES SENSOR JARAK SHARP GP2D12 MENGGUNAKAN CODEVISION AVR

Pada postingan ini saya akan menjelaskan bagaimana cara mengkalibrasi sensor GP2D12 dan programnya menggunakan CodeVision AVR. Akhirnya saya dapat menyelesaikan kalibrasi sensor Sharp GP2D12, dimana saya sebelumnya hanya mencoba program yang berasal dari beberapa blog.

PENGHITUNG KECEPATAN MOTOR DC MENGGUNAKAN OPTOCOUPLER DENGAN CODEVISION AVR

Pada dasarnya aplikasi ini hampir sama dengan aplikasi penghitung frekuensi (Frequency Counter), dimana letak perbedaanya hanya pada perumusannya saja, dimana perumusan tersebut tergantung dari pengubahan detik ke menit dan banyaknya pulsa encoder dalam 1 putaran motor DC.

Jika menggunakan optocoupler sebagai sensor anda harus menggunakan rotary encoder yang di-couple dengan as motor dc untuk mendeteksi kecepatan putaran motor DC. Biasanya pada rotary encoder dibuat lubang-lubang sebagai representasi banyaknya pulsa. Dan anda harus menentukan terlebih dahulu banyaknya pendeteksian pulsa atau lubang pada rotary encoder untuk satu putaran yang dilakukan motor DC. Karena banyaknya pulsa atau lubang akan mempengaruhi perumusan perhitungan kecepatan motor DC dan semakin banyak pulsa atau lubang maka akan meningkatkan resolusi pembacaan kecepatan motor DC, dengan kata lain pembacaan kecepatan akan semakin presisi.

PENGHITUNG FREKUENSI (FREQUENCY COUNTER) MENGGUNAKAN CODEVISION AVR

Penghitung frekuensi (Frequency Counter) digunakan untuk menghitung banyaknya gelombang dalam satu detik, sehingga mempunyai satuan Hz (Hertz).

Untuk menghitung pulsa (frekuensi) yang berasal dari luar digunakan sebuah eksternal interupt (EXT INT). EXT INT merupakan fitur AVR Atmega 8535 yang berfungsi untuk mencacah sinyal dari luar.

Selasa, 28 Juni 2011

JAM DIGITAL DENGAN PENAMPIL SEVEN SEGMENT TANPA RTC MENGGUNAKAN CODEVISION AVR

Aplikasi ini hampir sama dengan aplikasi jam digital menggunakan penampil LCD, hanya saja pada postingan ini saya tampilkan menggunakan display Seven Segment CA (common anoda) karena terlihat lebih menarik. Untuk mendapatkan datasheet penampil seven segment silakan download disini.

Jam digital menggunakan seven segment common anoda (CA) ini saya berikan 3 buah input berupa push button yang digunakan untuk menset nilai dari jam tersebut yaitu MENU, UP dan DOWN. Untuk lebih jelasnya mengenai cara kerja aplikasi ini dapat membaca postingan saya mengenai jam digital menggunakan penampil LCD. Sedangkan untuk dasar teori seven segment dapat membaca pada tutorial AVR mengenai seven segment dan untuk cara kerja Timer dapat membacanya pada tutorial Timer dan Counter.


JAM DIGITAL DENGAN PENAMPIL LCD TANPA RTC (REAL TIME CLOCK)

Mungkin ini sebuah project yang biasa saja, dan semua orang pasti sudah bisa membuatnya. Tapi disini saya akan tetap mempostingnya, mungkin saja berguna bagi yang lainnya. Dikarenakan pada aplikasi ini tidak menggunakan RTC (Real Time Clock), sehingga ketika catu daya atau power supply dimatikan maka nilai dari jam digital tersebut akan menunjukan pukul “12:0:0″. Oleh karena itu saya tambahkan 3 buah push button untuk menset nilai tersebut.

Cara kerja jam digital yang saya buat adalah menggunakan penampil LCD 2×16. Kemudian terdapat 3 buah pushbutton yaitu SET, UP dan DOWN. Tombol SET digunakan untuk menset jam, kemudian UP dan DOWN digunakan untuk menset nilai dari jam. Jika ingin menset menit maka harus menekan tombol SET kembali, begitu seterusnya untuk menset detik.

KARAKTER BERJALAN (RUNNING CHARACTER) PADA SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

Pada project ini saya akan membuat sebuah aplikasi yang disebut running character atau karakter berjalan dengan menggunakan seven segment tipe CA (common anoda). Untuk mendapatkan datasheet penampil seven segment silakan download disini. Pada aplikasi ini saya menggunakan 8 buah seven segment CA yang akan digunakan untuk menampilkan angka dari 0-9 yang kemudian akan digeser dari sebelah kanan kesebelah kiri (dari digit8 sampai digit1). Saya menggunakan metode scanning untuk menampilkan angka pada seven segment, setiap 1 detik dengan menggunakan fitur timer1 AVR, saya melakukan penggeseran untuk tiap digitnya. Yaitu yang awalnya ditampilkan pada digit8 digeser kedigit7, dari digit7 ke digit6 dan seterusnya sampai digit1 kemudian diulangi lagi ke awal.

COUNTER (PENGHITUNG) 0-9999 MENGGUNAKAN PENAMPIL SEVEN SEGMENT DENGAN CODEVISION AVR

Pada aplikasi counter 0000-9999 saya menggunakan fitur timer/counter1 yang dapat menghitung sampai 65536 (16 bit). Untuk lebih jelasnya mengenai timer dan counter AVR, dapat membaca postingan saya di tutorial timer dan counter AVR.

Dikarenakan saya menggunakan 4 buah seven segment tipe CA (common anoda), maka hanya dapat menampilkan maksimal 9999 penghitungan. Untuk mendapatkan datasheet penampil seven segment silakan download disini. Metode yang saya gunakan untuk menampilkan di seven segment adalah metode scanning, untuk lebih jelasnya tentang seven segment silakan baca tutorial seven segment. Jika penghitungan telah mencapai 10000 maka akan saya set kembali menjadi 0000. Berikut adalah schematic rangkaiannya.

PENGUNCI PINTU (DOOR LOCK) BERPASSWORD MENGGUNAKAN KEYPAD DAN LCD DENGAN CODEVISION AVR

Mungkin teman-teman semua sudah tahu tentang aplikasi yang bernama pengunci pintu (door lock) berpassword, pada aplikasi ini sudah saya realisasikan pada hardware yang sesungguhnya dan berhasil.

Kesulitan utama dari aplikasi ini adalah ketika seorang user memasukkan password dengan menggunakan keypad, kita harus dapat menyimpan input yang berasal dari keypad kedalam satu variabel. Misalnya user menekan 6, lalu 2, lalu 0 dan 4 berarti passwornya adalah 6204 (misalkan). Nilai tersebut harus dijadikan dalam 1 variabel yang kemudian akan dibandingkan dengan password yang sebenarnya. Jika user memasukkan password dengan benar maka akan membuka kunci, jika salah maka kunci tidak akan terbuka.

SIMPLE STOPWATCH MENGGUNAKAN MIKROKONTROLER DENGAN CODEVISION AVR

Aplikasi ini merupakan sebuah stopwatch sederhana yang dapat menghitung sampai satuan waktu terkecil yaitu 1/100 detik atau 10 ms. Untuk membangkitkan timer 10 ms saya menggunakan fitur timer0 mikrokontroler AVR. Untuk lebih jelas mengenai fitur timer AVR silakan baca postingan saya mengenai tutorial Timer dan Counter AVR.

Pada aplikasi ini terdapat 3 buah tombol (push button) yang terdiri dari tombol START, STOP dan RESET. Tombol START digunakan untuk memulai stopwatch,  STOP digunakan untuk memberhentikan stowatch dan tombol RESET untuk me-reset (menset ulang kembali nilai stopwatch).

PENGISIAN TANGKI (TANDON) AIR OTOMATIS MENGGUNAKAN ATMEGA8535

Beberapa bulan yang lalu saya telah membuat aplikasi pengisian tangki air otomatis menggunakan mikrokontroler. Mungkin aplikasi ini sangat sederhana dan terbilang cukup mahal jika menggunakan mikrokontroler, dikarenakan dipasaran sudah banyak yang menjual sensor level air menggunakan bandul dan sudah mempunyai output untuk relay. Tetapi tidak ada salahnya jika kita mencoba membuatnya menggunakan mikrokontroler, anggap saja sebagai latihan.

Pada aplikasi ini saya menggunakan prinsip penekanan push button sebagai cara untuk mendeteksi level air (sensor level air). Terdapat 2 buah sensor level air yaitu MAX dan MIN, sedangkan GND digunakan untuk mendeteksi sensor mana yang sedang terbaca. Cara kerjanya jika air berada dibawah sensor MIN maka sensor MIN (PC3) akan belogika high. Kemudian jika air berada diatas sensor MIN maka sensor MIN (PC3) akan berlogika low (terhubung ke GND karena terkena air). Begitu juga untuk sensor MAX (PC2), jika air sudah penuh (menyentuh sensor MAX) maka yang awalnya sensor MAX (PC2) berlogika high akan berubah menjadi low.

USB DOWNLOADER AVRISP MK II SUPPORT CODEVISION AVR

Seperti yang saya telah janjikan sebelumnya, disini saya akan menjelaskan bagaimana cara membuat USB downloader AVR yang support dengan CodeVision AVR, dimana USB downloader yang saya gunakan bernama AVRISP MK II. Tidak seperti USBasp yang saya posting pada artikel sebelumnya, dimana USBasp masih memerlukan beberapa settingan agar dapat langsung support dengan CodeVision AVR. Untuk downloader USB AVRISP MK II ini sudah tidak lagi memerlukan settingan tertentu agar dapat support dengan CodeVision AVR. Berikut beberapa langkah cara pembuatannya: 

USB DOWNLOADER AVR USBasp SUPPORT CODEVISION AVR

Saya akan menjelaskan cara pembuatan downloader USB AVR yang bernama USBasp, yang dapat digunakan pada CodeVision AVR dengan tambahan fitur tertentu.

Syarat-syarat pembuatan USB downloader AVR USBasp adalah:
1. Membuat PCB sesuai gambar schematic dibawah ini
2. Mendownload firmware ke chip Atmega8 melalui port parallel dengan software Ponyprog atau CodeVision
3. Install driver pada sistem operasi windows XP (baru saya coba pada OS XP)
4. Mensetting beberapa fitur agar support dengan CodeVision AVR
5. Selesai dan selamat mencoba 

Senin, 27 Juni 2011

DOWNLOADER PARALLEL UNTUK AVR KANDA SYSTEM STK200+/300 SUPPORT CODEVISION AVR DAN PONYPROG

Bagi temen-temen yang masih punya port parallel biasanya ada pada PC (personal computer), berikut adalah rangkaian downloader AVR menggunakan port parallel (biasa disebut LPT). Downloader ini support dengan Codevision AVR dan Ponyprog,  serta mendukung Atmega8535, Atmega8, Atmega16, dan Atmega32. (mungkin mendukung beberapa jenis Atmega lainnya, karena baru saya tes dengan chip yang baru saja disebutkan). Downloader parallel ini biasa disebut Kanda System STK200+/300.

DRIVER MOTOR DC MENGGUNAKAN IC L293D

Pada dasarnya beberapa aplikasi yang menggunakan motor DC harus dapat mengatur kecepatan dan arah putar dari motor DC itu sendiri. Untuk dapat melakukan pengaturan kecepatan motor DC dapat menggunakan metode PWM (Pulse Width Modulation) sedangkan untuk mengatur arah putarannya dapat menggunakan rangkaian H-bridge yang tersusun dari 4 buah transistor. Tetapi dipasaran telah disediakan IC L293D sebagai driver motor DC yang dapat mengatur arah putar dan disediakan pin untuk input yang berasal dari PWM untuk mengatur kecepatan motor DC. Untuk mendapatkan datasheet L293D silakan download disini.

REALISASI KONTROL PID (PROPORSIONAL INTEGRAL DERIVATIF) KEDALAM BAHASA PEMROGRAMAN BAHASA C

Menurut sebuah survey, bahwa 97% industri yang bergerak dibidang proses menggunakan kontrol PID dalam melakukan pengontrolannya. Luasnya penggunaan kontrol PID pada dasarnya dilatarbelakangi beberapa hal diantaranya:
  • Kesederhanaan struktur kontrol. Hanya mempunyai 3 parameter utama yang perlu diatur (tuning).
  • kontrol PID memiliki sejarah yang panjang. PID telah digunakan jauh sebelum era digital berkembang (1930an)
  • Kontrol PID dalam banyak kasus telah terbukti menghasilkan unjuk kerja yang relatif memuaskan baik digunakan sebagai sistem regulator maupun sebagai sistem servo.
Pada awalnya kontrol PID umumnya diimplementasikan dengan menggunakan rangkaian elektronika analog. Bahkan  banyak diantaranya direalisasikan dalam komponen mekanis dan pneumatis murni.

TIPS UNTUK MIKROKONTROLER: SINKING OUTPUT VS SOURCHING OUTPUT?

Pada postingan ini saya akan memberikan tips yang berkaitan dengan output pada mikrokontroler. Mungkin saja bisa berguna bagi teman-teman yang lain. Dibawah ini ada  rangkaian output mikrokontroler silakan teman-teman perhatikan terlebih dahulu:


MENGAKSES MOTOR SERVO

Dipasaran terdapat 2 tipe motor servo yaitu servo standard dan servo rotation (continuous). Dimana biasanya untuk tipe standar hanya dapat melakukan pergerakan sebesar 180° sedangkan untuk tipe continuous dapat melakukan rotasi atau 360°.

Pada dasarnya motor servo tersusun dari motor DC, rangkaian kontrol, gearbox dan potensiometer. Berikut gambar motor servo beserta komponen internal motor servo.

PROGRAM MENGAKSES SEVEN SEGMENT MENGGUNAKAN CODEVISION AVR

Sebelumnya teman-teman harus mengerti terlebih dahulu tentang dasar-dasar dari seven segment. Sebenarnya seven segment tersusun dari 8 buah led yang dibentuk menyerupai angka 8 yang terdiri dari 7 segmen dan ditambah 1 segmen berupa titik (dot). Untuk mendapatkan datasheet penampil seven segment silakan download disini.

Seven segment terdiri dari 2 jenis konfigurasi yaitu katoda bersama atau common cathoda (CC) dan anoda bersama atau common anoda (CA) .

PROGRAM MENGAKSES EEPROM INTERNAL AVR MENGGUNAKAN CODEVISION

Pada postingan ini saya akan menjelaskan cara mengakses internal EEPROM AVR, yang berupa intruksi read dan write EEPROM, serta akan saya berikan sebuah contoh aplikasi untuk merealisasikannya dalam sebuah program.

Beberapa mikrokontroler AVR telah memiliki EEPROM (Electrically Erasable Programmable Read Only Memory) internal sebagai tempat penyimpanan data semi-permanen. Jadi seperti halnya flash memory, EEPROM tetap dapat menyimpan data meskipun catu daya dimatikan, dengan kata lain data tidak akan hilang walaupun catu daya dimatikan. EEPROM internal ini tidak dipetakan bersama dengan register utama, register I/O dan SRAM. EEPROM hanya dapat diakses melalui register spesial dan operasi read/write sehingga waktu aksesnya lebih lamban dari pada mengakses register ataupun SRAM.

MEMBUAT SINYAL PWM MENGGUNAKAN TIMER AVR

Mungkin teman-teman semua sudah tau pengertian dari PWM (Pulse Width Modulation), jadi saya tidak akan membahasnya lagi. Disini saya akan menjelaskan beberapa istilah yang berhubungan dengan PWM sehingga nantinya akan mempermudah teman-teman dalam pembuatan sinyal PWM menggunakan Timer pada AVR.


INTERUPSI EKSTERNAL AVR

Untuk Atmega8535 ada 3 sumber interupsi eksternal yaitu INT0 (PD2), INT1 (PD3) dan INT2 (PB2). Ketiga interupsi itu dapat dipicu dengan adanya perubahan level baik transisi naik (rising edge) maupun transisi turun (falling edge). Untuk pengaturan mode dan cara kerjainterupsi eksternal dilakukan melalui 2 buah register MCUCR dan register MCUCSR. Untuk lebis jelasnya tentang register-register tersebut lebih baik dibaca datasheetnya, silakan download datasheet ATmega8535 disini.. Tetapi tenang saja, jika menggunakan compiler CodeVision AVR, kita tidak perlu dituntut untuk tau tentang kedua register tersebut, karena secara otomatis CodeVision AVR akan mensettingnya saat kita menset CodeWizard AVR.

TIMER DAN COUNTER AVR

Mungkin teman-teman semua sudah tau pengertian timer, jadi saya tidak akan menjelaskan panjang lebar mengenai pengertian timer. Sedangkan untuk counter  (pencacah/penghitung) berbeda dengan timer, perbedaan yang mendasar adalah pada sumber clocknya. Jika timer, sumber clocknya berasal dari internal mikrokontroler dalam hal ini berasal dari kristal. Sedangkan untuk counter sumber clocknya berasal dari luar mikrokontroler (eksternal). Sebagai contoh counter, jika kita ingin menghitung banyaknya barang yang lewat pada konveyor, maka sumber clocknya berasal dari sensor yang mendeteksi barang saat melewatinya. Mungkin sampai disini Teman-teman sudah mengerti perbedaan yang mendasar antara timer dan counter.

>>>TIMER<<<
Pada ATmega8535 terdapat 3 buah timer, yaitu Timer0 (8 bit), Timer1 (16 bit) dan Timer2 (8 bit). Untuk perbedaan dan cara kerja masing-masing timer, teman-teman dapat membacanya pada datasheet. Disini saya akan coba membahas Timer0 dan Timer1 saja. Untuk lebih jelasnya silakan download datasheet ATmega8535 disini.

ANALOG TO DIGITAL CONVERTER (ADC)

Mikrokontroler ATmega8535 memiliki fasilitas analog yang sudah build in didalam chip. Fitur internal ADC inilah yang menjadi salah satu kelebihan mikrokontroler ini jika dibandingan dengan beberapa jenis mikrokontroler lainnya.

Atmega memiliki resolusi ADC 10 bit (dapat juga menggunakan ADC 8 bit) dengan 8 channel (PA0-PA7) input ADC dan mendukung 16 macam penguat beda. ADC ini bekerja dengan teknik succecive approximation. Rangkaian internal ADC memiliki catu daya tersendiri yaitu pin AVCC. Untuk lebih jelasnya silakan download datasheet ATmega8535 disini.

Data hasil konversi ADC 10 bit (1024) adalah:
ADC=(Vin*1024)/Vref

LCD DAN KEYPAD

>>>KEYPAD<<<

Pada dasarnya keypad yang ada dipasaran baik yang berukuran keypad 3×3, 3×4 atau 4×4, hanya tersusun dari beberapa push button yang dikonfigurasikan antara kolom dengan baris. Sehingga sering disebut juga keypad matriks nxm (n=kolom m=baris). Kolom dan baris ini nantinya yang digunakan untuk pendeteksian penekanan tombol. Berikut adalah konfigurasi dasar untuk keypad 4×4.
 

MENGAKSES INPUT OUTPUT (I/O) AVR

Pada dasarnya untuk mengakses I/O (input output) AVR ada beberapa register yang harus disetting terlebih dahulu, yaitu:
1. Data Register (PORTx)
2. Data Direction Register (DDRx) dan
3. Port Input Pin (PINx)

DDRx digunakan untuk mendefinisikan port sebagai input atau output, Jika level logika pada register DDR bernilai 1 maka Port tersebut dikonfigurasikan sebagai Output. Sedangkan jika level logika pada register DDR bernilai 0 maka Port tersebut dikonfigurasikan sebagai input.
Contoh: DDRA=0xff → maka Port A sebagai Output
00 hh  0DDRA=0×00 → maka Port A sebagai Input

THERMOMETER DAN JAM DIGITAL MENGGUNAKAN CODEVISION AVR

Aplikasi ini dapat menampilkan suhu dan jam digital. Dimana sensor suhu yang digunakan adalah LM35. Aplikasi ini merupakan gabungan dari aplikasi yang telah saya buat sebelumnya yaitu thermometer dengan LM35 dan jam digital menggunakan LCD. Berikut adalah shematic dan setting CodeWizard CodeVision. Untuk listing program  dan file simulasi proteus dapat didownload pada akhir artikel ini.

SCIENTIFIC CALCULATOR MENGGUNAKAN CODEVISION AVR

Saya menemukan aplikasi  scientific calculator ini di situs www.avrprojects.info, aplikasi ini merupakan sebuah kalkulator dengan menggunakan keypad dan ditampilkan pada LCD. Cukup menarik, dan ternyata sudah disimulasikan menggunakan  software Proteus dan berhasil, algoritma programnya pun cukup baik dan efisien. Berikut adalah schematic rangkaiannya sedangkan untuk listing program lengkap dapat didownload diakhir artikel ini.

JAM DIGITAL MENGGUNAKAN RTC DS1307 DENGAN CODEVISION AVR

RTC DS1307 berkomunikasi dengan antarmuka I2C (Inter Integrated Circuit). RTC DS1307 memiliki pewaktu dalam variabel detik, menit, jam, hari, tanggal, bulan dan tahun. Selain itu, RTC ini menyediakan pin battery-backup untuk dihubungkan pada baterai lithium 3V atau catu daya lain sehingga ketika power (catu daya) mati, battery-backup akan mengambil alih dan timer tetap akan berjalan sebagaimana mestinya. Sedangkan kristal yang digunakan menurut datasheet bernilai 32,768 KHz. Untuk mendapatkan datasheet DS1307 silakan download disini.

PENGUKURAN NEGATIVE THEMPERATURE (MINUS) MENGGUNAKAN LM35 DENGAN CODEVISION AVR

Menurut datasheet, LM35 dapat mengukur dengan range -55° sampai 150°C dengan akurasi 0,5°C. Untuk lebih jelasnya dapat dibaca pada datasheet. Untuk mendapatkan datasheet LM35 silakan download disini. Aplikasi ini pun telah saya simulasikan menggunakan software proteus, dan mempunyai hasil yang sangat presisi untuk pembacaannya. Dibawah ini adalah schematic rangkaiannya:

APLIKASI PEMBACAAN SUHU LM35 DENGAN PENAMPIL LCD MENGGUNAKAN CODEVISION AVR

Aplikasi pembacaan suhu (monitoring suhu) ini, menggunakan sensor LM35 yang merupakan sebuah sensor suhu dengan harga yang relatif murah dan output nya sudah berupa tegangan yang sudah linear.