Selasa, 07 April 2009

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.

Topik yang Populer