JavaScript is disabled or you're using old browser, please turn on your JavaScript or upgrade your browser to see fancy looking.
Archive for the ‘tutorial AVR’ Category

  Older Entries 

Line Follower Robot dengan PID

Sesuai janji saya, kali ini akan saya bahas robot line follower dengan sistem kontrol PID. Patokan yang saya gunakan berasal dari artikel di Chibots, perbedaannya adalah sistem steering yang digunakan robot. Pada artikel tersebut PID digunakan untuk mengontrol servo rear (steering) dan kecepatan 1 servo belakang (moving). Pada kasus saya, robot menggunakan differential wheeled. Keseluruhan fisik robot (yang diberi nama Semar Mesem ini) dibuat oleh Dadank, saya hanya menulis programnya saja. Saya tidak memegang skematiknya, tapi kurang lebih rangkaiannya terdiri dari:

  • Microcontroller ATMega16 dengan clock 4MHz
  • L298 untuk driver motor yang terhubung dengan PORD.1 - PORTD.6
  • 10 Sensor (menggunakan phototransistor dan LED biru) yang terhubung ke IC LM339 (komparator). 8 sensor terhubung dengan PINA untuk sensor depan, 2 sensor (PINB.5 dan PINB.6) untuk bagian tengah kiri dan kanan ujung.
  • LCD 2×16 yang terhubung dengan PORTC
  • 4 tactile switch yang terhubung dengan PINB.0 - PINB.3. Switch ini digunakan untuk tombol navigasi menu yang ditampilkan lewat LCD.

Read the rest of this entry »

PWM Motor DC dari ADC

Kebetulan Mamank lagi buat PI untuk joystick yang mengatur PWM motor DC dari nilai ADC. Rangkaian yang dibuat sebelumnya dibuat tanpa menggunakan microcontroller. Nah sebenarnya kita bisa memanfaatkan microcontroller yang punya fitur ADC internal (seperti ATMega16 atau ATMega8535) untuk mengurangi komponen elektronik. Kebetulan ada yang bertanya lewat email mengenai program untuk ini, jadi sekalian saya jawab lewat posting ini. Rangkaian seperti ini banyak digunakan untuk joystick pengendali robot manual di KRI (Kontes Robot Indonesia). Saya menggunakan ADC0 (PINA.0) yang terhubung ke potensio untuk mengatur PWM motor kiri dan ADC1 (PINA.1) untuk motor kanan. PORTB untuk LCD dan PORTD ke driver motor DC. Rangkaian yang terhubung ke PIN ADC kurang lebih seperti ini :

Nilai R1, R2, R3 dan R4 bisa 180, 220 atau 330 ohm. Resistor tersebut hanya menjaga agar VCC dan GND tidak langsung terhubung saat nilai R1 dan R2 kecil. R1 dan R2 adalah potensio 10k atau 50k. Program sederhananya bisa di download di sini. Saya akan jelaskan sedikit programnya. Karena range nilai adc adalah 1 - 255, maka saya ambil nilai tengah 126 - 128 untuk kondisi motor stop. Saat nilai adc lebih besar dari 128, maka motor akan bergerak maju (cw) dan range 129 - 255 menjadi nilai pengali PWM. Formula sederhananya untuk PWM saat motor bergerak maju adalah ( data_adc - 128 ) * 2. Saat nilai adc kurang dari 126 maka motor akan bergerak mundur (ccw) dan range 1 - 125 menjadi nilai pengali PWM. Formula sederhananya untuk PWM saat motor bergerak mundur adalah 255 - (data_adc * 2). Saya menggunakan interrupt timer 0 dengan overflow untuk PWM motor. Nilai 255 adalah full speed (100%). LCD digunakan untuk mendebug nilai adc dan PWM (paling kiri adalah data untuk motor kiri, baris atas berupa nilai PWM dan status pergerakan motor dan baris bawah adalah nilai ADC0. Sedangkan sebelah kanan adalah data untuk motor kanan). Sesuaikan formula PWM dengan kecepatan motor DC yang ingin digunakan. Pada kasus saya, nilai PWM di bawah 15 sudah membuat motor berhenti. Semoga membantu.

Hamamatsu UV Tron dan AVR

Mmhh.. saya pertama kali menggunakan UV Tron (Hamamatsu R2868) sekitar awal 2007 (kalau tidak salah). Saya coba googling penggunaan UV Tron dan AVR, tapi belum menemukan hasil yang memuaskan. Jadi dulu seharian saya mengoprek ATMega8535 dan UV Tron, alhamdulillah akhirnya bisa juga. Well, tulisan kali ini saya akan sharing bagaimana menggunakan AVR (chipnya tidak masalah) dan Hamamatsu UV Tron. Banyak robot fire fighting menggunakan sensor UV ini untuk mendeteksi nyala lilin. Nyala sebuah lilin dapat dideteksi oleh UV Tron yang masih apik hingga jarak 5 meter, bahkan bara rokok juga dapat dideteksi dari jarak lebih dari 5 meter. UV Tron ini mendeteksi ultraviolet dari penggunaan efek photoelektrik dari logam dikombinasikan dengan efek penggandaan gas. Spektral cahaya yang dijangkau adalah 185 - 260 nm, jadi cahaya terlihat tidak mempengaruhi UV Tron (Nah, bagi yang menganggap senstifitas UV Tron dipengaruhi oleh terang tidaknya ruangan sepertinya salah ;) Tapi untuk mengantisipasi kondisi di luar ruangan bisa menggunakan background cancel level pada board - akan saya jelaskan di bawah ). UV Tron ini mempunyai sudut sensitivitas seperti gambar di bawah:

uvtron angular sensitivity

Gambar 1. Sudut jangkauan UV Tron

Dengan jangkauan sudut seperti gambar 1, maka cukup sulit menentukan posisi absolut sebuah lilin. Teknik yang lazim dilakukan adalah menggunakan pelindung untuk mengurangi jangkauan sudut. Pelindung yang digunakan kurang lebih nampak seperti ini:

uvtron dengan pelindung

Gambar 2. UV Tron dengan pelindung (sumber: http://www.superdroidrobots.com/product_info/uvtron_files/image017.jpg)

Read the rest of this entry »

Interfacing antara AVR dengan CMPS03

Well, malam rabu (or kamis ya?) saya bergadang dengan teman CERC lainnya. Dua robot kami belum menggunakan modul kompas, jadi saya terpaksa menemani Memet and friend. Sebelumnya terima kasih untuk teman CERC yang telah mentraktir makan di pasar ikan (egh pancingan untuk menginap?), lumayan juga ternyata upah dari pameran. Sesuai dengan janji saya pada postingan sebelumnya kali ini saya akan membahas penggunaan CMPS03 melalui jalur I2C, mungkin ini bisa juga berguna bagi yang lainnya yang ingin mencoba menggunakan CMPS03 dengan AVR (saya menggunakan AT90s2313), bahasa yang digunakan adalah C (dengan CodeVisionAVR). Untuk module CMPS03 ini terdapat dua cara interfacing, yaitu menggunakan PWM dan menggunakan I2C. Nah saya hanya akan membahas yang I2C. Yang dibutuhkan adalah: AT90s2313 (ini bisa digantikan dengan chip AVR lainnya), CMPS03 (serta 2 resistor 1K s/d 47K untuk pullup, nilai resistornya tidak menjadi masalah) dan LCD 2×16 (serta trimpot atau potensio untuk kontras LCD). Lebih bagus jika ada kompas marinir untuk kalibrasi nantinya. Jika Anda belum mengetahui susunan pin CMPS03, berikut adalah susunan pinnya:

Gambar 1. Susunan pin CMPS03 (sumber: http://www.robot-electronics.co.uk/images/cmps3pin.jpg)

Read the rest of this entry »

Menggunakan Jalur I2C

Saya tulis ini sebagai awalan sebelum memulai interfacing dengan CMPS03 dengan cara I2C. Sebenarnya saya dulu sempat menulis mengenai I2C di text file di komputer, tapi entah kemana file itu sekarang. OK langsung saja, I2C (Inter-Integrated Circuit), dibaca aytusi, merupakan jalur komunikasi serial multi-master yang dikembangkan oleh Philips, sekarang menjadi tanggung jawab NXP (perusahaan semikonduktor yang didirikan Philips). Ada beberapa versi spesifikasi yang dikeluarkan. Versi awal yang dibuat pada tahun 1982 hanya dapat mencapai kecepatan 100 Kbit/s (standard mode) dan pengalamatan hanya sebesar 7 bit. Hingga tahun 1992 (versi 1.0) kecepatan masih mencapai 100 Kbit/s, namun ada penambahan mode (Fast-mode) yang dapat mencapai kecepatan 400 Kbit/s (Fast-mode hanya kompatibel dengan versi terdahulu (downward)). Versi 2.0 (tahun 1998) menjadikan jalur I2C standar de facto yang diimplementasikan lebih dari 1000 IC yang berbeda dan dilisensikan ke 50 lebih perusahaan. Modifikasi versi 2.0 ini meliputi penambahan mode High-speed mode (Hs-mode) yang dapat meningkatkan bit rate sampai 3.4 Mbit/s. Perangkat dengan Hs-mode dapat berkomunikasi dengan perangkat lainnya (dalam satu jalur I2C) yang memiliki bit rate antara 0 s/d 3.4 Mbit/s (jadi kompatibel dengan Hs-mode dan standard mode). Tahun 2000 keluar lagi versi 2.1 dan saat tulisan ini saya buat spesifikasi I2C saat ini sudah mencapai versi 3.0. Menurut saya seharusnya I2C ini masuk ke dalam materi kuliah yang berhubungan dengan interfacing. Saya tidak tahu apakah I2C pernah dibahas pada saat mata kuliah interfacing, karena saya jarang masuk kuliah :mrgreen: .

Read the rest of this entry »

  Older Entries