Tampilkan postingan dengan label Robot-Wall Following. Tampilkan semua postingan
Tampilkan postingan dengan label Robot-Wall Following. Tampilkan semua postingan

Selasa, 07 April 2009

Mobil Robot & Wall Tracing

.
Sekarang ke algoritma.
Sebelum anda jauh melihat listing programnya, biar tidak bingung sebaiknya anda pelajari bahasa C mencakup struktur, command-command, tipe data, operator, membuat fungsi, dll. Tetapi jika anda menguasai bahasa pemrograman lain seperti bahasa Pascal, BasCom, atau assembler maka lihat bagaimana memprogramnya dan logika pemrogramannya lalu bagaimana mengimplementasikan pada bahasa pemrograman yang anda kuasai.

Saya akan memprogram mobil robot untuk mempertahankan jarak mobil robot terhadap dinding dengan jarak referensi 20 cm, bisa menggunakan hanya 1 buah sensor PING atau 2 sensor PING. Jika anda menggunakan hanya 1 sensor PING maka pada arena yg anda buat tidak boleh ada halangan di depan mobil robot. Mobil robot akan diprogram agar dapat berbelok dengan tikungan hingga 180 derajat. Hal penting sebelum ke program utama adalah menentukan nilai PWM yang akan diberikan pada mobil robot untuk kondisi jarak tertentu, tujuannya adalah agar menghasilkan pergerakan mobil robot yang halus, selain itu juga karena karakteristik motor DC yang berbeda-beda. Motor DC yang saya gunakan pasti berbeda dengan yang anda gunakan.

Listing pada Gambar 1 adalah pengujian untuk mengetahui karaktersitik motor DC yang anda gunakan apakah linier atau logaritmik. Jika anda telah mengetahui linier atau logaritmik maka akan mempermudah mencapai hasil yang maksimal nantinya, tetapi jika anda tidak sabaran silahkan langsung ke listing Gambar 2 dan lakukan Trial and Error dengan mengubah nilai PWM terus-menerus hingga didapatkan hasil yang maksimal. Apabila anda beruntung dengan sedikit coba-coba ketemu dah.

Pengujian yang baik dan lebih teliti tentu saja dengan menggunakan alat ukur kecepatan putaran
atau tachometer atau encoder, tetapi saya menganggap anda tidak memilikinya sehingga pengujian seperti di bawah ini (saya juga ga punya si).

Cara pengujian sebagai berikut :
- Program awal ROBOT(Stop) selama 3 detik.
- ROBOT(Maju) selama 3 detik dengan nilai PWM 250.
- ROBOT(Stop) selama 3 detik.
- ROBOT(Maju) selama 3 detik dengan nilai PWM 200.
- ROBOT(Stop) selama 3 detik.
- ROBOT(Maju) selama 3 detik dengan nilai PWM 150.
- ROBOT(Stop) selama 3 detik.
- ROBOT(Maju) selama 3 detik dengan nilai PWM 100.
- ROBOT(Stop) selama 3 detik.
- ROBOT(Maju) selama 3 detik dengan nilai PWM 50.
- Gunakan alas yang licin (lantai keramik) atau menggunakan kertas karton putih.
- Posisikan mobil robot dan beri tanda pada lantai posisi awal mobil robot.
- Setelah mobil robot di program dan sudut sensor PING telah diatur dengan baik, kemudian jalankan.
- Setiap mobil robot bergerak maju kemudian stop, berikan tanda pada lantai dimana posisi mobil Robot berhenti hingga mencapai akhir program.
- Catat perubahan jarak yang terjadi, dari listing diatas anda mendapatkan 5 data jarak.
- Dengan menggunakan rumus perbandingan antar jarak dengan nilai PWM maka dapat disimpulkan apakah motor DC anda Linier atau logaritmik. Jika motor DC anda linier tidak masalah tetapi jika logaritmik baru masalah (tenang ga gede kok).

Oh ya satu lagi, anda ubah nilai PWM pada listing Gambar 1 hingga nilai tersebut minimum, yaitu nilai PWM terkecil yang masih menyebabkan motor DC bergerak (pelaaaaaan banget), catat nilai PWM tersebut karena akan digunakan untuk berbelok 180 derajat.

Untuk mempermudah pemahaman program, saya gunakan perintah IF THEN ELSE saja, mengapa saya menuliskan program IF THEN ELSE seperti itu, silahkan pikirkan sendiri (Wkkk.....).
Nilai PWM dapat anda atur sesuai perhitungan anda berdasarkan karakteristik motor DC anda. Kalo ingin lebih cepat dan halus pergerakan mobil robot gunakan PI-Fuzzy, atau metode yg anda inginkan. Sensor PING berada pada sisi kiri mobil robot, jadi diprogram untuk meraba dinding kiri saja.

Kondisi awal pergerakan mobil robot adalah penting, jika mobil robot diprogram untuk mempertahankan jarak terhadap dinding kiri maka setelah mendeteksi dinding kiri, mobil robot tidak boleh melepas dinding ini, apabila mobil robot "tersesat" dari dinding kiri, buat prosedur cadangan.

Kondisi awal mobil robot hanya ada 2 :
- Tidak terdapat dinding di sisi kiri mobil robot.
- Terdapat dinding di sisi kiri mobil robot.

Lebih baik menganggap kondisi awal tidak ada dinding kiri daripada ada dinding kiri oleh sebab itu kondisi awal tidak ada dinding kiri. Jika tidak ada dinding kiri maka agar mobil robot cepat menemukan dinding kiri, mobil robot harus bergerak lurus dengan PWM 255 sampai tersentuh dinding kiri (atau dinding depan atau kanan --> ada PING depan dan kanan).

Bagaimana jika mobil robot lepas dari dinding kiri dan "tersesat" ?
Listing pada Gambar 2 menyebabkan mobil robot akan berputar-putar (belok kiri) jika dinding kiri memiliki jarak > 30 cm karena nilai PWM motor kiri pelan sekali (bahkan stop) sedangkan nilai PWM motor kanan 255 (maksimum). Gunakan variabel tambahan yaitu unsigned char cnt_kiri (count kiri) yang akan terus bertambah jika dinding kiri jarak > 30 cm. Karena unsigned char maka nilai maksimum cnt_kiri adalah 255. Nilai maksimum cnt_kiri anda tentukan sendiri dan sesuaikan dengan kecepatan motor DC anda, jika terlalu besar nilainya dapat membuat mobil robot akan berputar-putar cukup lama. Saya sarankan anda mengatur nilai maksimum cnt_kiri yang akan menyebabkan mobil robot berputar sebanyak 1 - 1,5 putaran.

Mengapa 1 - 1,5 putaran ?
Mobil robot saat melewati tikungan 180 derajat itu berarti mobil robot telah berputar sebanyak 1/2 putaran dan arena yang dibuat berupa bidang sehingga mobil tidak mungkin berbelok lebih dari 180 derajat, akan tetapi karena menganggap ada faktor X lainnya seperti ada batu atau tanjakan atau yang lain maka dibatasi 1 - 1,5 putaran, lebih dari itu menurut saya terlalu lama.

Nah sudah jadi nih Mobil Robot yang bisa jalan-jalan, klo udah berhasil dan anda mendapatkan pergerakan yang halus, sana pamerin aja trus kacak pinggang dan bilang "Ini Fuzzy ini, pake Sugeno ma Mammdani. Apik to.."

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.

Mobil Robot & Sensor PING

.
Pada mobil robot ini sensor yang akan digunakan adalah sensor Ultrasonik.
Saya sudah biasa menggunakan sensor PING karena ukurannya yang ideal dan memiliki akurasi yang cukup baik. Saya tidak akan berkomentar banyak tentang Sensor Ultrasonik, saya hanya akan membahas hal-hal perlu yang berkaitan dengan pembuatan mobil robot saja.

Silahkan lihat Data Sheet PING atau Gambar 1.

Dari Gambar 1 seharusnya sudah dapat memprogram untuk mengakses PING. Yang perlu diperhatikan adalah sinyal dan waktu yang dibutuhkan pada SIG pin (pin Sinyal).
Langkah-langkah operasi Sensor PING :
- Kondisi awal SIG pin adalah logika 0 minimal 100 us (tidak tercantum).
- Mengaktifkan PING agar mulai pengukuran dengan memberikan logika 1 selama 2 uS - 5 uS saya gunakan 5 uS (optional).
- Tunggu hingga 750 uS (Tholdoff) yaitu saat PING mulai memancarkan sinyal ultrasonik.
- Persiapkan SIG pin sebagai input yang akan membaca jarak dengan cara membuat SIG pin berlogika 1, Apabila SIG pin berubah kondisi dari logika 1 menjadi logika 0 maka itulah jarak terukur.
- Jika tidak terdapat dinding atau tidak ada jarak terukur maka waktu tin-max bernilai 18,5 ms berarti jarak terukur adalah 300 cm.

Ada 2 cara memprogram Sensor PING, yaitu menggunakan Interupsi Timer dan Scanning.
Mana yang terbaik ? Tergantung dari penggunaannya.
Jika anda menggunakan Sensor PING untuk mengukur jarak dengan tingkat presisi hingga milimeter maka gunakan interupsi timer. Apabila anda menggunakan banyak sensor PING dengan tingkat presisi hingga centimeter maka gunakan Scanning.
Saya menggunakan scanning dan menggunakan interupsi timer tidak saya jelaskan.

Sebelum memprogram dengan sistem Scanning maka harus diketahui terlebih dahulu nilai tundaan yang digunakan untuk menscan setiap sensor PING. Kecepatan sinyal suara di udara adalah
344 M/S = 34400 cm/S = 34400 cm/1000000 uS = 1 cm/29,069767441 uS.
Karena Sensor PING menggunakan pantulan maka untuk mengukur jarak 1 cm sama
dengan 2t sehingga
1 cm = 2 x 29,069767441 uS = 58, 139534 uS ~ 58 uS.
Berarti setiap tertunda 58 uS bertambah jarak sebesar 1 cm.

Mobil robot yang baik adalah mobil robot yang selalu memberikan informasi pada programer tentang apa yang terjadi didalam mikrokontroler dalam hal ini memberikan informasi berupa jarak yang diukur oleh sensor PING, oleh sebab itu dibutuhkan Display tambahan berupa LCD 16x2. Programer sering kesulitan mengetahui kesalahan yang terjadi pada programnya jika tidak terdapat umpan balik yang informatif.

Pada mobil robot yang saya buat tidak menggunakan LCD 16x2 sebagai umpan balik (lagi kere), mungkin anda juga tidak ingin menggunakan LCD tambahan. Bagaimana caranya meminimalkan kesalahan pada pengukuran jarak sensor PING ? Akan saya bahas selanjutnya pada gambar 2.

Listing pada Gambar 2 adalah mengukur jarak dengan sensor PING dan menampilkannya pada komputer melalui serial port (COM), lebih informatif dan jelas apalagi jika anda menggunakan sensor PING yang banyak, sebab tampilan LCD memiliki ruang yang terbatas dan programer tambah pusing lihat data yang berubah dengan cepat di ruang yang sempit. Mencatat saja tidak sempat. Jika anda menggunakan modul Mikrokontroler AVR yang dibeli jadi, perhatikan port Rx dan port TX atau PD.0 dan PD.1 apakah telah sesuai ?

Buat project baru, pada CodeWizzardAVR atur konfigurasi serial seperti Gambar 2 selain itu atur seluruh Port B menjadi Output, mengapa saya memilih PortB, Hal tersebut saya bahas pada topik Mobil Robot & AVR. Sensor PING depan di PB.0, sensor PING kanan PB.1, dan sensor PING kiri PB.2.

Misal jarak terukur depan 20, kanan 15, dan kiri 30, maka tampilan pada komputer adalah :
Cek PING
Depan
20
Kanan
15
Kiri
30

Jika berhasil ditampilkan berarti mengakses sensor PING sukses.
Jarak terukur maksimum dibatasi hanya sampai 99 cm, hal ini karena mobil robot akan meraba salah satu dinding dengan jarak referensi 20 cm dan maksimum 30 cm sehingga lebih dari 30 cm dianggap jauh tak terhingga. Apabila ingin dibatasi hingga 50 cm saja lebih baik lagi karena mengurangi waktu scanning sensor PING yang dibutuhkan.

Coba anda membaca jarak dinding diatas 45 cm akan terjadi kesalahan pembacaan jarak, misal jarak sesungguhnya 55 cm maka jarak terukur kurang dari 55 cm, hal ini adalah kelemahan sistem scanning. Telah didefinisikan bahwa 58 uS = 1 cm padahal jika anda menggunakan mikrokontroler AT89S51 dengan kristal 12 MHz maka 1 siklus mesin (1 cycle) = 1 uS berarti 58 siklus = 58 uS = 1 cm. Jika menggunakan bahasa Assembler, banyaknya siklus bisa dihitung (agak ribet tapi) sehingga bisa meminimal kesalahan, akan tetapi bahasa C jika di ubah ke bahasa mesin akan menjadi tambah panjang bahkan lebih panjang dibanding jika anda menulis sendiri dalam bahasa assembler apalagi dalam proses looping, hal ini menyebabkan waktu pengukuran tidak tepat 58 uS.
Selain itu pada Gambar 2 digunakan 3 sensor PING, jika lebih banyak lagi bisa mengurangi tingkat akurasinya. Akan tetapi untuk jarak tertentu pada sistem scanning masih bisa mendekati akurasi yang baik. Saya mencoba, menampilkannya, dan mendapatkan nilai 4 cm - 44 cm.

Hal penting lainnya pada pengujian sensor PING adalah mengatur sudut kemiringan sensor PING terhadap dinding yang akan diukur. Oleh sebab itu pada pengujian ini saya menyarankan anda membuat sensor PING dapat diubah-ubah sudutnya secara fleksibel dengan membuat pondasi sensor PING dapat diputar-putar.

Cara pengujian sensor PING dari Gambar 2 untuk sensor PING samping (sensor PING depan tidak perlu diubah sudutnya) yaitu :
- Pasang sensor PING pada mobil robot dan longgarkan bautnya agar bisa diputar.
- Posisikan mobil robot sejajar dengan dinding samping dengan jarak 20 cm.
- Sensor PING samping dibuat tegak lurus terhadap dinding.
- Setelah di program dan dijalankan, putar secara perlahan sensor PING setiap 1 detik sambil memperhatikan tampilan data pada komputer.
- Jika tampilan pada komputer 20 cm maka terus putar sensor PING hingga nilai tersebut berubah menjadi >= 20 cm.
- Apabila jarak terukur >= 20 cm maka itu adalah sudut maksimum sensor PING yang diperbolehkan untuk menghindari kesalahan pembacaan jarak.

Sudut sensor PING terhadap dinding harus diperhatikan, apalagi jika anda hanya menggunakan sedikit sensor PING.
Oh ya, cukup dengan hanya 1 sensor PING saja, mobil robot dapat berjalan secara halus dan bagus dengan meraba dinding selama tidak ada dinding didepan mobil robot.
Mobil robot yang saya paparkan disini minimal sensor PING adalah 2, tetapi jika anda kesulitan mendapatkan sensor PING cukup 1 saja.

Ada hal lain yang penting mengenai sensor PING.
Sensor PING membutuhkan supply 5 Vdc dengan arus 30 mA - 35 mA, tetapi saat sinyal suara ultrasonik dipancarkan dibutuhkan arus yang lebih besar (kurang tahu). Jika arus ini tidak terpenuhi akan mempengaruhi pembacaan jarak pada sensor PING. Untuk mengetahui apakah PING kekurangan supply yaitu dengan melihat LED indikatornya, jika cahayanya redup atau kurang terang dibanding sebelumnya maka sensor PING kekurangan supply. Oleh sebab itu karena alasan ini dan alasan lain, scanning setiap sensor PING jangan terlalu cepat, misalkan anda membaca jarak mobil robot terhadap dinding setiap 50 mS atau 100 mS.

Mobil Robot & AVR ATmega8535

.
Banyak jenis dan tipe mikrokontroler, semua disesuaikan dengan kebutuhan perancangan.
Jika dulu anda menguasai MCS51 dengan bahasa assembler atau bahkan bahasa C dengan keil C, maka saya sarankan untuk mempelajari jenis mikrokontroler tipe lain. Cari tipe mikrokontroler yang memiliki fitur lengkap dan fleksibilitas tinggi. Jika anda menguasai DSP (Digital Signal Processing) maka gunakan mikroprocessor DSP, menguasai display dan Grafis maka gunakan mikroprocessor grafis, banyak lagi (apa yaa ?).

Saat ini anda akan merancang mobil robot yang menggunakan PWM dan sensor PING saja, anggap anda punya angan-angan mobil robotnya nanti ditambah fungsi mendeteksi perbedaan warna, mendeteksi perubahan suhu, menggunakan sensor inframerah, dapat dikendalikan dengan JoyStick analog, mendeteksi cahaya lilin, dll, maka penggunaan setiap pin pada mikrokontroler haruslah seefisien mungkin, sebab jika tidak mobil robot akan dibongkar kembali karena pin mikrokontroler yang dibutuhkan atau penting telah terpakai. Apabila anda menggunakan kabel jumper yaa lain lagi, tapi kabel jumper yang banyak membuat bingung,
ada kerusakan akan susah diperbaiki, dan mobil robot seperti rongsokan (katanya si seni).

Prioritas pin setiap mikrokontroler disusun berdasarkan fitur yang dimiliki oleh pin-pin
mikrokontroler. Disini agar lebih mudah dipelajari saya gunakan AVR ATmega8535 (bisanya ini si). Dengan fitur yang cukup lengkap untuk diaplikasikan pada mobil robot dan rangkaian kendali. Lihat Data Sheet ATmega8535.

Prioritas yang dapat disusun dari gambar 1 antara lain :
- Fungsi Input dan Output
- Fungsi ADC
- Fungsi USART
- Fungsi PWM
- Fungsi Interupsi eksternal
- Fungsi komparator analog
- Fungsi Serial Interface I2C
- ...

Gunakan terlebih dahulu pin-pin yang tidak memiliki fungsi khusus atau banyak jumlahnya atau pin itu harus digunakan karena wajib.
- PD.0 dan PD.1 gunakan untuk komunikasi serial USART.
- PD.2 dan PD.3 gunakan sebagai interupsi eksternal.
- PD.4 dan PD.5 gunakan sebagai PWM pengatur kecepatan motor DC.
- PB.6 PB.7 PB.8 PC.2 PC.3 PC.4 PC.5 gunakan sebagai Input dan Output biasa.
- PC.0 dan PC.1 gunakan sebagai interface I2C, misal anda menggunakan sensor kelembaban dengan interface I2C atau menggunakan Serial RTC I2C atau Serial EEPROM I2C tambahan.
- PB.0 - PB.7 gunakan sebagai ADC 10 bit akan tetapi jika terpaksa dapat digunakan beberapa pin.
- Pin-pin lain yang anda tidak ketahui fungsinya dapat anda gunakan sesuai keinginan apabila rancangan mobil robot anda sudah Final.

Saya menggunakan PortB untuk mengakses sensor PING, dan seluruh PortD untuk mengakses Motor DC (kecuali PD.2 dan PD.3) alasannya :
Untuk PortD karena saya menggunakan kabel pelangi 10 baris dan jika PD.0 dan PD.1 tidak saya gunakan maka harus mengambil dari port lain yang berarti ada jumper yang tidak perlu sedangkan nantinya pin interupsi PD.2 dan PD.3 nanti akan dipakai sebagai interupsi eksternal, selain itu mobil robot bergerak terus dan tidak perlu komunikasi serial dengan komputer.
Untuk PortB karenaaaaa...... udah terlanjur si. Seharusnya PortC dulu yang saya gunakan sampai habis, tetapi karena tidak masalah ya lanjut aja.

Alasan anda memilih sebuah port terserah anda yang jelas sesuaikan dengan fungsi-fungsi yang anda ingin aplikasikan.

Mungkin cukup ini saja yang dibahas pada ROBOT dan AVR, untuk mikrokontroler tipe lain tidak saya bahas dan maaf karena tidak bisa.

Senin, 06 April 2009

Mekanik Wall Tracing

.
Perancangan mekanik Mobil robot bisa dibilang gampang-gampang susah.
Tentu saja, karena bidang yang saya fokus adalah Elektro dan tidak maksimal pada mekanik, dan jika saya melihat teman-teman dari teknik Mesin membuat mekaniknya, seluruh jempol yang ada saya acungkan. (Kalo bisa kelingking menyamar jadi jempol.)

Jika anda ingin membuat mekanik robot yang kompleks atau fungsi mekanik robot yang anda yakin bisa buat 70 % sebaiknya serahkan pada ahlinya. Pasti banyak revisinya, apalagi jika membutuhkan presisi tinggi dan biaya tinggi.

Untuk Robot yang akan saya paparkan pada blog ini adalah mobil robot yang bisa dibuat dengan selembar acrilic atau bahan logam dengan mekanik sederhana sehingga dapat dibuat sendiri atau dibeli di toko mainan.

Jika anda baru pertama kali membuat mobil robot, anda yang memprogram, dan hampir semua anda yg kerjakan, maka saya hanya bisa menyarankan untuk motor DC tegangan maksimum 24 Vdc yang torsi tinggi dengan kecepatan yang cukup (optional).
Tujuannya agar logika program pada mobil robot bisa terlihat dan anda paham kesalahan pada program anda nantinya. Hal ini berlaku hampir pada semua program yang anda buat dan tidak hanya pada pergerakan mobil robot.

Untuk mekanik saya tidak bisa koment banyak, yang jelas bisa mengetahui teorinya dan rancangan dasar mekanik sudah cukup. Selanjutnya serahkan pada ahlinya dan sebaiknya anda ahli dibidang anda sendiri dalam hal ini Elektronika Digital (Robotika).

Topik yang Populer