Selasa, 07 April 2009

Mobil Robot & IC L298

.
Baca dulu H-Bridge IC.

Rangkaian Schematic

Mobil robot yang akan dibuat menggunakan driver motor DC H-Bridge menggunakan IC L298. Rangkaian schematik yang saya gunakan seperti di bawah ini

Perhatikan pemilihan Port dan konfigurasi yang digunakan, mengapa PortD dan mengapa susunan setiap pin pada PortD untuk driver Motor DC seperti itu. Hal tersebut saya bahas pada topik Mobil Robot & AVR. Jika driver motor DC telah dibuat, sekarang pengujian pergerakan pada mobil robot.

Pengujian Pin-pin PORTD
Apabila menggunakan IC L298, sebenarnya anda tidak perlu mengetahui atau menghapal seluruh konfigurasi pin, yang penting adalah Pin EN12 (Enable 12) dan Pin EN34 (Enable 34). Karena menggunakan PWM dengan rentang nilai 0 - 255 maka untuk mikrokontroler AVR ATmega8535 pasti menggunakan PORTD dan menggunakan pin OCR1B (PORTD.4) dan OCR1A (PORTD.5).

Gambar 2 adalah listing program pengujian pergerakan motor DC pada mobil robot. Pengujian ini bertujuan untuk mengetahui apakah driver motor DC berfungsi sehingga tidak menggunakan PWM. Pengujian yaitu dengan menggerakkan salah satu motor DC agar bergerak maju atau mundur selama selang waktu 3 detik, oleh sebab itu mobil robot dibuat tidak menyentuh lantai dan tetap terkoneksi dengan komputer sambil diprogram. Agar motor DC bergerak maka Pin enable harus berlogika 1, yaitu PD.4 dan PD.5 berlogika 1 dan tidak boleh diubah logikanya.

Langkah-langkah pada program Gambar 2 sebagai berikut :
1. Motor DC di buat berhenti selama 2 detik tujuannya agar mengetahui awal program dimana sehingga jika Motor DC bergerak, dapat diketahui baris mana pada listing yang sedang dieksekusi.
2. PD.0 PD.4 dan PD.5 berlogika 1 yang lain berlogika 0.
3. PD.1 PD.4 dan PD.5 berlogika 1 yang lain berlogika 0.
4. PD.6 PD.4 dan PD.5 berlogika 1 yang lain berlogika 0.
5. PD.7 PD.4 dan PD.5 berlogika 1 yang lain berlogika 0.
6. PD.2 dan PD.3 tidak diuji karena port ini tidak digunakan pada driver motor DC.

Pada langkah 2 - 6 Lihat motor mana yang bergerak dan apakah maju atau mundur.
Beri catatan disamping baris listing program yang sedang dieksekusi.

Pengujian Pergerakan Mobil Robot

Gambar 3 adalah Listing program untuk menguji dan melihat pergerakan serta kecepatan mobil robot saat kecepatan penuh. Tujuannya adalah untuk mengetahui logika-logika yang akan diberikan pada setiap pin PD.0 PD.1 PD.6 dan PD.7 yang akan mengatur gerak robot seperti Maju, Mundur, Belok Kanan, Belok Kiri, Rotasi Kanan, dan Rotasi Kiri. Selain itu juga mengetahui kecepatan Maksimum mobil robot. Pengaturan port sama seperti pada Gambar 2.

Langkah-langkah pada program Gambar 3 sebagai berikut :
1. Menggunakan informasi dari pengujian Gambar 2.
2. Mobil Robot dibuat berhenti selama 2 detik, tujuannya sama.
3. Mobil Robot dibuat bergerak Maju 3 detik. Yaitu motor kanan dan motor kiri maju.
4. Mobil Robot dibuat bergerak Mundur 3 detik. Yaitu Motor Kanan dan motor kiri mundur.
5. Mobil Robot dibuat bergerak Belok Kanan 3 detik. Yaitu motor kanan stop dan motor kiri maju.
6. Mobil Robot dibuat bergerak Belok Kiri 3 detik. Yaitu motor kanan maju dan motor kiri stop.
7. Mobil Robot dibuat bergerak Rotasi Kanan 3 detik. Yaitu motor kanan mundur dan motor kiri maju.
8. Mobil Robot dibuat bergerak Rotasi Kiri 3 detik. Yaitu motor kanan maju dan motor kiri mundur.

Pengujian dengan PWM
Setelah pengujian 3 berhasil, selanjutnya menggunakan PWM.
Dari hasil pengujian 3, buat subrutin atau prosedur baru dengan nama ROBOT(unsigned char gerak) yang isinya hanya mengatur pergerakan mobil robot, jangan lupa bahasa C adalah case sensitive yaitu huruf besar dan huruf kecil dibedakan, manfaatkan hal ini untuk membedakan antara variabel dengan judul prosedur atau hal lainnya. Selain itu penggunaan type variabel juga harus diperhatikan yaitu kapan menggunakan unsigned char, signed char, unsigned int, signed int, dll, karena hal ini berpengaruh pada penggunaan memori AVR yang terbatas, berbeda pada komputer yang menggunakan hardisk dan ram.

Mengapa unsigned char ?
signed char memiliki nilai -128 hingga 127
Unsigned char memiliki nilai 0 hingga 255
signed int memiliki nilai -32768 hingga 32767
Unsigned int memiliki nilai 0 hingga 65535
lebih jelas lihat help -> C Compiler Reference -> Data Type

Data yang dibutuhkan hanya :
- Stop dengan nilai 0
- Maju dengan nilai 1
- Mundur dengan nilai 2
- Bkanan dengan nilai 3
- Bkiri dengan nilai 4
- Rkanan dengan nilai 5
- Rkiri dengan nilai 6
Berarti data yang diperlukan hanya 7 data, jika unsigned char bahkan tersisa 256 - 7 = 249 data yang berarti lebih dari cukup. Pada mikrokontroler nilai 0 - 255 berarti menggunakan 1 buah register saja (1 byte memori).

.... Lanjut ....
Buat project baru dan lakukan konfigurasi seperti gambar 4 pada Code WizardAVR yaitu menggunakan timer 1, dan atur konfigurasi Port D seperti pada Gambar 2. Berdasarkan schematik Gambar 1 serta pengujian 2 dan pengujian 3 maka PD.4 atau OC1B adalah pin PWM yang akan mengatur kecepatan motor kanan sedangkan PD.5 atau OC1A adalah pin yang mengatur kecepatan motor kiri.

Lihat kembali Gambar 4.
Saat ROBOT(Stop) tidak diberikan nilai PWM karena berapapun nilai PWM yang diberikan tetap saja kedua motor DC akan berhenti. Mobil robot akan berhenti selama 2 detik kemudian maju 3 detik dengan PWM 255 (kecepatan penuh) lalu maju pelan 3 detik dengan nilai PWM 150. Tanpa berhenti mobil Robot akan mundur pelan 3 detik dangan nilai PWM 150 yang kemudian menjadi mudur cepat dengan nilai PWM 255 selama 3 detik. Untuk ROBOT(Bkanan) atau robot belok kanan berapapun nilai PWM yang diberikan pada motor kanan tidak berpengaruh karena motor kanan berhenti dan motor kiri yang bergerak begitu pula sebaliknya pada ROBOT(Bkiri) atau robot belok kiri . Untuk ROBOT(Rkanan) dan ROBOT(Rkiri) nilai PWM saya buat berbeda antara kanan dan kiri agar terlihat pergeseran karena perbedaan nilai PWM.

Jika anda ingin menguji 2 buah motor DC yang bertipe sama yaitu apakah motor DC memiliki RPM yang sama dan simetris, begini caranya :
(dengan catatan poros atau as pada kedua roda mobil robot sejajar dan segaris).
- Ukur jarak maksimum antar roda kanan dan roda kiri pada mobil robot.
- Gunakan alas atau lantai yang tidak kasar (lantai keramik) atau kertas karton putih.
- Gambar lingkaran dengan diameter jarak maksimum antar roda.
- Program mobil robot untuk berotasi ke kanan (atau kekiri) dengan kedua PWM bernilai 255.
- Tempatkan mobil robot hingga kedua roda tepat berada didalam lingkaran dan jalankan.
Jika semakin lama mobil robot keluar dari lingkaran maka kedua motor DC tidak simetris.
Apabila anda kesulitan mendapatkan motor DC yang simetris maka usahakan agar perbedaannya tidak besar karena bisa disesuaikan pada algoritma pemrogramannya.

Pada pengujian 4 mungkin anda mengalami hal seperti ini :
Mobil robot berjalan-jalan Maju...Maju...Mundur...Mundur...Stop.... atau Maju...Maju...Stop... atau Maju...Stop... atau Maju...Maju...Mundur...Stop... atau banyak variasi lain.

Mengapa begitu ??
Mungkin anda akan berpikir jika logika pemrogramannya yang salah, kemudian diutak-atik masih sama dan terus-menerus. Coba anda lihat listingnya lagi, perintah stop kemudian maju adalah perintah awal yang diberikan pada mobil robot. Hal ini berarti program tidak sampai selesai dieksekusi, jalan sedikit kemudian kembali ke awal yang berarti mikrokontroler selalu Reset.
Penyebabnya adalah Mikrokontroler kekurangan tegangan atau arus karena digunakan motor DC, apalagi jika motor DC berubah kondisi dari berputar ke kanan kemudian berputar ke kiri dengan nilai PWM 255 (kecepatan maksimum). Oleh sebab itu Power Supply yang diberikan untuk mikrokontroler harus berbeda dengan yang diberikan untuk motor DC.
Misal mikrokontroler baterai kotak 9 Vdc dan motor DC aki kering 24 Vdc atau mikrokontroler baterai kotak 9 Vdc 1 buah dan motor DC baterai kotak 9 Vdc 3 buah jadi ada 4 baterai kotak.

Topik yang Populer