Senin, 30 Januari 2012

REALISASI HIGH PASS FILTER PADA DISKRET PROGRAMMING

High Pass Filter digunakan untuk melewatkan frekuensi tinggi. Batasan frekuensi yang akan dilewatkan disebut frekuensi cut off, dimana persamaan dari frekuensi cut off adalah:
Persamaan diskret dari penurunan High Pass Filter adalah:

REALISASI LOW PASS FILTER PADA DISKRET PROGRAMMING

Low Pass Filter digunakan untuk melewatkan frekuensi rendah. Batasan frekuensi yang akan dilewatkan disebut frekuensi cut off, dimana persamaan dari frekuensi cut off adalah:
Persamaan diskret dari penurunan Low Pass Filter adalah:

Senin, 31 Oktober 2011

FUSION SENSOR ACCELEROMETER DAN GYROSCOPE MENGGUNAKAN ALGORITMA COMPLEMENTARY FILTER

Mengapa diperlukan penggabungan (fusion) sensor accelerometer dengan gyroscope?

Jawabannya: 

Accelerometer dapat memberikan pengukuran sudut kemiringan (tilt) yang akurat ketika sistem sedang diam (statis). Bila sistem sedang berotasi atau bergerak, accelerometer tidak bisa mengikuti pergerakan yang cepat dikarenakan responnya yang lamban dan memiliki noise. 

Gyroscope dapat membaca kecepatan sudut (angular rate) yang dinamis. Setelah melakukan komputasi menggunakan integral data dari waktu ke waktu, maka perpindahan sudut atau sudut kemiringan dapat dihitung. Tetapi sudut ini akan menjadi tidak akurat dalam jangka panjang karena efek bias yang dihasilkan oleh gyroscope.

Untuk lebih jelasnya tentang kelemahan sensor-sensor tersebut, saya telah melihat dan membuat grafik tentang respon output dari kedua sensor tersebut. Grafik ini saya dapatkan dengan mengirimkan data output masing-masing sensor ke komputer melalui komunikasi serial.

Accelerometer.
Accelerometer yang saya gunakan adalah MMA7260Q.
Untuk dapat mengkases dan membaca serta mengkalibrasi sensor ini, silakan klik disini.
Setelah saya lakukan kalibrasi, sensor tersebut saya gunakan untuk mengukur kemiringan sudut (tilt). Berikut adalah keluaran sensor accelerometer saat mengukur kemiringan sudut 0 derajat.
 
Dari output accelerometer terlihat jelas bahwa sinyal keluarannya masih memiliki noise.

Gyroscope
Gyroscope yang saya gunakan adalah LISY300 Gyroscope Module.
Untuk dapat membaca atau mengakses sensor ini silakan klik disini.
Gyroscope mempunyai cara kerja sebagai berikut: 
"Sensor gyroscope yang digunakan akan mempunyai nilai keluaran jika sedang berotasi. Ketika sensor gyroscope berotasi searah jarum jam pada sumbu Z, maka tegangan keluarannya akan mengecil. Sedangkan jika berotasi berlawanan arah jarum jam, maka tegangan keluarannya akan membesar. Jika sensor gyroscope tidak berotasi (keadaan diam) maka keluaran tegangan gyroscope akan bernilai sama dengan nilai offset-nya."

Berikut adalah ourput gyroscope ketika berotasi:
Label a menunjukkan bahwa sensor gyroscope berotasi searah jarum jam yang ditandai dengan mengecilnya nilai keluaran sensor gyroscope. Sedangkan label b, menunjukkan bahwa sensor gyroscope berotasi berlawanan arah jarum jam yang ditandai dengan membesarnya nilai keluaran sensor gyroscope.

Jumat, 14 Oktober 2011

TWO WHEELS BALANCING ROBOT

Balancing robot ini mempunyai dua buah penggerak yang dihubungkan ke roda yang terdapat disebelah kanan dan kiri robot. Cara kerja secara general untuk dapat menyeimbangkan robot ini adalah ketika robot akan terjatuh kesisi depan, maka untuk menstabilkan/menyeimbangkannya harus mengirimkan sinyal kontrol yang sesuai ke motor DC sehingga motor DC berputar ke arah depan dan mampu mengikuti pergerakan robot dan dapat kembali ke posisi semula (alias tegak lurus terhadap permukaan bumi), begitu juga sebaliknya jika robot akan terjatuh kearah belakang.

Balancing robot beroda dua ini pada dasarnya seperti pendulum terbalik yang sistemnya tidak stabil. sehingga diperlukan sebuah metode yang baik dan efisien sehingga mampu membuat robot tersebut stabil. Silakan cari di google saja untuk informasi lebih lengkap.

Video diatas masih menggunakan program yang masih versi 1, jadi blm cukup baik responnya, ntar saya upload lagi respon yang sudah lebih baik lagi

CATATAN: robot selalu bergerak maju dan mundur sambil berbelok... maklum salah satu gearbox motor DC saya bermasalah, sehingga kecepatan motor DC nya lamban sebelah... ketika mau beli lagi di internet stock barangnya sudah habis... jadi terpaksa masih dipakai.. tapi tetap stabil!!!



Update: Final two wheel balancing robot... more stable
Replace DC motor 12V, MT020201 gearbox ratio 34:1 to GM320051-SY4424 12-24V gearbox ratio 1:51

===HARDWARE===
*Microcontroller: AVR ATmega16
*Sensor: Accelerometer MMA7260Q & LISY300 Gyroscope Module
*Penggerak: Motor DC 12V, tipe MT020201 rasio gearbox 34:1
*Driver DC motor: H-Brigde (IRF540 & IRF9540, Photocoupler PC817)      //Thank's to helmi
*Penampil: LCD 16x2
*Roda: Bubut nylon sendiri, Diameter 10 cm lebar 2 cm
*Catu daya: 4 buah baterai 4.2 Volt 1000 mAh (3 buah diseri untuk motor DC dan rangkaian lainnya, 1 buah untuk LCD)


===SOFTWARE===
*Compiler: CodeVisionAVR
*Kontrol Proportional Integral (PI)
*ADC 10 bit untuk pembacaan sensor Accelerometer
*Komunikasi SPI untuk pembacaan sensor Gyroscope
*Complementary filter untuk penggabungan (fusion) Accelerometer & Gyroscope
*Timer 0 Interupsi Overflow untuk sampling data sensor setiap 10 ms
*Timer 1 mode fast PWM 8 bit

Pengembangan selanjutnya:
Balancing robot ini akan dikembangkan dapat melakukan tracking (berjalan maju, mundur, belok kiri dan kanan) dengan menggunakan remote control.

Sabtu, 16 Juli 2011

ROBOT SERANGGA BERKAKI EMPAT


Robot meyerupai serangga berkaki empat (tahap pembuatan)

Robot ini mempunyai 4 buah kaki dan tiap kakinya delengkapi oleh 2 buah motor servo dengan torsi yang cukup besar. Sehingga tiap kakinya mempunyai 2 derajat kebebasan (2 degree of freedom/2 DOF) atau dengan kata lain tiap kakinya dapat melakukan gerakan horizontal maupun vertikal.

Jika sudah selasai akan segera diposting... As Soon As Possible

Telah mendapat izin dari shuvit

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