Tampilkan postingan dengan label Sensor-sensor. Tampilkan semua postingan
Tampilkan postingan dengan label Sensor-sensor. Tampilkan semua postingan

Senin, 25 Oktober 2010

TPA81 : Coding Kontrol Motor Servo

.
Mungkin agak telat dan nanti akhir maret akan kupindahkan post ini di bulan Oktober 2010 bersamaan dengan penjelasan sensor TPA81.

Penjelasan sebelumnya di post : TPA81 : Mengendalikan Motor Servo
dan sekarang akan saya bahas cara mengendalikan motor servo melalui sensor TPA81.

Coding TPA81 + Servo
Coding disamping TPA_address nya 0xD0

fungsi unsigned char TPA_wirte(char value) ganti dengan void TPA_write(char value), berfungsi untuk menulis data pergerakan sudut servo dan besarnya sudut ditentukan dari nilai value-nya.

Nilai value minimal adalah 0x00 atau 0 dan maksimal adalah 0x1F atau 31 nilai selain itu menyebabkan kontrol motor servo terhenti.

Pengulangan servo dari nilai variabel loop dan nilai sudut servo dari variabel x. Selain itu pada fungsi TPA81_write terdapat tundaan 10mS yang dibutuhkan oleh komunikasi I2C

Coding disamping terdiri dari 3 bagian yaitu :
  • Kontrol motor servo dari nilai 0 hingga nilai 32 dengan tundaan antar nilai adalah 0 mS (sebenarnya 10mS). Fungsi ini akan diulang sebanyak 5 kali.
  • Kontrol motor servo dari nilai 0 hingga nilai 32 dengan tundaan antar nilai adalah 100 mS (sebenarnya 110mS). Fungsi ini akan diulang sebanyak 3 kali.
  • Kontrol motor servo dari nilai 0 hingga nilai 32 dengan tundaan antar nilai adalah 250 mS (sebenarnya 260mS). Fungsi ini akan diulang sebanyak 1 kali.
Coding diatas masukkan langsung di coding sebelumnya yaitu :


Video-nya sudah saya buat dan nanti diupload.

Semoga membantu ...^^v...

Minggu, 24 Oktober 2010

TPA81 : Mengendalikan Motor Servo

Modul Sensor TPA81 adalah sensor thermopile array yang menggunakan mikrokontroller tipe PIC16F88. Selain berfungsi untuk mengakses dan membaca sensor suhu, juga ditambahkan fitur pengendalian motor servo. Oleh sebab itu terdapat pin kontrol motor servo.

Pin ini disediakan dengan maksud sebagai pendukung kerja sensor TPA81 namun tidak menutup kemungkinan digunakan untuk keperluan yang anda inginkan.

Motor servo yang digunakan berfungsi sebagai tempat sensor TPA81 diletakkan yang kemudian motor servo bergerak ke kiri-kanan (atau sesuai keinginan) sehingga dapat digunakan metode scanning untuk mendeteksi / membaca suhu.

Motor Servo
Pada datasheet sensor TPA81, contoh motor servo yang digunakan adalah motor servo Hitec HS-311 dengan spesifikasi berikut :
Link :
Motor Servo Hitec HS-311 A
Motor Servo Hitec HS-311 B



Jika tidak memiliki motor servo tipe tersebut maka bisa digantikan dengan tipe sejenisnya / spesifikasinya mirip, khususnya pada pewaktuan untuk mengontrol sudut pergerakan motor tersebut.

Register Command pada TPA81
Untuk mengakses motor servo, register yang digunakan adalah register 0.
Ingat register ini memiliki fungsi yang berbeda ketika di Baca dan ketika di Tulis.

Saat di Tulis register 0 akan berfungsi sebagai Command register, yaitu register yang akan memberikan perintah posisi motor servo.

Saat di Baca register 0 akan memberikan informasi versi softaware yang diprogram pada modul TPA81.

Posisi Motor Servo
Nilai command / posisi motor servo yang dapat diberikan pada modul TPA81 sebanyak 32 step (nilai command : 0 - 31) dengan tipikalnya untuk mempresentasikan sudut 180 derajat.
Cara menghitung sudut motor servo adalah :

Posisi Motor Servo = (Nilai Command * 60) + 540 uS


Jika nilai command diberikan yaitu nilai 0 - 31 maka range pulsa-nya antara 540 uS hingga 2400 uS dan setiap step perubahan waktunya adalah 60 uS. Menulis nilai command selain 0 - 31 (misalnya 32, 33, 34, dst) akan menghentikan pulsa untuk motor servo.

Coding Motor Servo
Dari tabel tersebut maka nilai command yang dapat diberikan pada register 0 antar 0 - 31 atau 0x00 - 0x1F
Memberikan nilai selain itu akan menghentikan sinyal pulsa motor servo.

Bukannya g mau posting coding-nya, tapi memang belum pernah mencoba mengakses motor servo melalui TPA81. Jadi Codingnya belum ku posting.
Tar lagi nyoba kok, ini lagi nunggu pesanan motor servonya.
Servo datang-program-test-lalu Posting, OK. Sabar ya..

Saya bukan tipe orang yang memposting sesuatu yang belum saya coba sama sekali.
Semoga manfaat ... ^^v...
CMIIW..

Rabu, 20 Oktober 2010

TPA81 : Waktu Sampling Pengukuran

Baca dulu :
Seperti yang sudah saya tuliskan pada post sebelumnya, sensor TPA81 adalah sensor yang dapat mendeteksi dan mengukur suhu secara simultan pada 8 titik/pixel tanpa menyentuh sumber panas tersebut. Dan berbeda dengan sensor PIR yang hanya dapat mendeteksi perubahan suhu, sensor TPA81 dapat mengukur suhu statik (suhu tidak berubah) maupun suhu dinamis.
Oleh sebab itu, sensor TPA81 baik jika digunakan untuk akuisisi pengukuran suhu (pada range tertentu >> suhu relatih rendah).

TPA81 Waktu Sampling
Sensor TPA81 memiliki waktu sampling minimal untuk memperoleh data pengukuran suhu yang valid. Pada datasheet sensor TPA81 halaman 3 tertulis sebagai berikut :



Arti pada 2 kalimat terakhir begini (Bhs Inggris pas-pasan) :
Register 2 - 9 adalah 8 pixel suhu / temperatur.
Akuisisi (pengambilan data) suhu dilakukan secara terus-menerus dan pembacaan akan tepat sekitar 40 mS setelah sensor berada pada posisi yang baru.

Bisa diartikan bahwa, Agar data yang diperoleh valid dan benar maka sebaiknya pengambilan data suhu pada sensor TPA81 setiap minimal 40 mS.
Masalahnya adalah sensor TPA81 memiliki 8 pixel / titik pengukuran suhu, sehingga sedikit membingungkan apakah 40 mS itu untuk setiap pixel yang terdapat pada sensor TPA81 atau 40 mS untuk seluruh pixel tersebut.

Jika 40 mS untuk 8 pixel maka waktu sampling sensor TPA81 minimal adalah 40 mS.
Sedangkan jika 40 mS untuk 1 pixel maka waktu sampling sensor TPA81 keseluruhan minimalnya adalah 40 mS x 8 = 320 mS.

TPA81 Waktu Sampling 40 mS
Saya pribadi menggunakan waktu sampling 40 mS dan codingnya sebagai berikut :








TPA81 Waktu Sampling 320 mS
Beberapa Coding yang menggunakan waktu sampling ini dan codingnya sebagai berikut :

Perbedaannya hanya pada menempatkan fungsi delay_ms(40);




Oiya terlanjur upload lg..
Loopingnya ganti tuh nilainya seperti berikut :
for (x=0; x<=7; x++)

Buru-buru + ngantuk, jadi khilaf deh..
Semoga manfaat ... ^^v...
CMIIW..

Selasa, 12 Oktober 2010

TPA81 : Mengakses dgn Protokol I2C

.
Seperti telah dijelaskan pada posting sebelumnya bahwa sensor TPA81 menggunakan protokol I2C dan memiliki koneksi interface seperti gambar disamping.
Jangan lupa menambahkan Resistor Pull Up di sisi master (Mikrokontroller) dengan nilai yang direkomondasikan 1k8 ohm.
Pastikan semua interface / hubungan antara mikrokontroller dengan sensor TPA81 telah sempurna, dan modul mikrokontroller anda juga berfungsi dengan baik.

Modul sensor TPA81 juga dilengkapi dengan pin motor Servo serta fungsi tambahan untuk mengatur sudut pergerakan motor servo tersebut. Sehingga anda cukup memberikan data sudut dalam heksadesimal dan modul TPA81 secara otomatis akan mengendalikan motor servo tersebut. Fungsi ini sangat berguna jika anda meletakkan modul sensor TPA81 pada motor servo lalu menggunakan metode scanning untuk pendeteksian / pengukuran suhu.

TPA81 Register
Sebelum ke coding, beberapa register harus di ketahui terlebih dahulu, seperti terlihat pada gambar di samping.
Hanya Register 0, 1, 2, dan 3 yang dapat di baca/tulis sedangkan register lainnya dapat di baca saja.




Register 0 memiliki 2 fungsi, jika di Tulis maka akan berfungsi sebagai register Command yang memberikan perintah data mengatur posisi motor servo. Sedangkan jika di Baca akan memberikan infomasi versi refisi software / firmware modul TPA81.

Register 1, 2, 3 digunakan untuk melakukan proses kalibrasi pada sensor TPA81 dan disarankan untuk tidak menulis pada register ini karena dapat merusak data kalibrasi yang telah di program oleh manufakturnya. Tapi tidak perlu khawatir karena terdapat proteksi untuk proses penghapusan dan penulisan kalibrasi pada register-register ini yaitu penulisan perintah sebanyak 3 byte secara berurutan yang dapat mencegah penghapusan data kalibrasi secara tidak sengaja.

Register 1 jika di Baca akan memberikan data Temperatur Ambient.
Register 2 - 9 jika di Baca akan memberikan data Temperatur Pixel 1 - Pixel 8.

Coding TPA81
Program berikut mengunakan CodeVisionAVR v2.03.9
Langkah-langkah :
  • Jalankan CoViAVR, buat project baru, dan gunakan CodeWizzard, Chip misal : ATmega8535, Clock : 11.0592 MHz.
  • Tampilan menggunakan komputer komunikasi UART, Protokol : Baudrate :9600,8N1.
  • Tampilan LCD 16 x 2 padaPortB.
  • Modul sensor TPA81 SDA : PORTC.0 dan SCL : PORTC.1

Program sebagai berikut :

Wah terlanjur Upload..
Ada yang lupa tuh..
Berikan waktu kira-kira (minimal) 40 mS sebelum membaca kembali data suhu terukur pada modul TPA81 agar datanya valid.

Ada sedikit kerancuan yang saya lihat pada beberapa Coding dan akan saya bahas di posting selanjutnya.

Semoga manfaat ... ^^v...
CMIIW..

Sabtu, 09 Oktober 2010

TPA81 Thermopile Array










Beberapa link bacaan :

Link-link d atas sudah sangat menjelaskan bagaimana cara mengakses sensor Thermopile Array. Dan saya mencoba menjelaskan dengan versi saya dan mungkin tidak jauh berbeda dengan link-link tersebut. Dan semakin banyak referensi semakin baik bukan ^^.

Thermopile Array TPA81
Sensor TPA81 adalah sensor Thermopile Array yaitu sensor yang terdiri dari 8 buah / pixel sensor panas yang tersusun secara berbaris. Setiap pixel sensor ini mampu mendeteksi cahaya inframerah dengan range 2 µm - 22 µm yaitu range yang dimiliki oleh radiasi panas. TPA81 merupakan sensor non kontak yaitu mampu mendeteksi suhu suatu benda tanpa perlu menyentuhnya.

Sensor PIR atau Sensor Pyro-electric juga merupakan sensor pendeteksi suhu (tubuh manusia) dan juga sensor non kontak akan tetapi kelemahan sensor ini adalah hanya dapat mendeteksi jika terjadi Perubahan Suhu oleh sebab itu PIR tidak dapat digunakan pada pengukur dan pendeteksi suhu statik / tetap. Jika menggunakan sensor PIR maka salah satu harus bergerak agar terjadi perubahan suhu yaitu objek-nya yang bergerak (Manusia berjalan didepan sensor PIR) atau sensor PIR-nya dibuat bergerak (dengan motor stepper / servo).

Field Of View (FOV)
Sensor TPA81 memiliki luas pandang /pendeteksian yang lebar karena dilengkapi dengan lensa dan rangkaian elektronik built in selain itu mampu mendeteksi cahaya lilin hingga jarak 2 meter tanpa terpengaruh cahaya lainnya. FOV TPA81 mencapai 41° x 6° sehingga setiap pixelnya memiliki FOV 5.12° x 6°.

Posisi Pixel pada sensor TPA81 sejajar dengan orientasi panjang PCB-nya dan pixel 1 ditunjukkan / terdekat dengan tanda tab / "topi" pada sensor Thermopile-nya seperti pada gambar disamping.





Koneksi / Interface I2C
Sensor TPA81 menggunakan komunikasi I2C (Inter Integrated Circuit) yang menggunakan 2 jalur saja yaitu SDA (Serial Data) dan SCK (Serial Clock) tetapi jangan lupa menggabungkan Ground-nya (Jika menggunakan 2 power supply). Oleh sebab itu komunkasi dengan sensor TPA81 juga menggunakan protokol I2C.

Resistor Pull Up sangat diperlukan pada jalur SDA dan SCK dengan nilai yang direkomondasikan adalah 1,8 Kohm akan tetapi saya mencoba dengan nilai 2200 ohm dan tidak ada masalah. Jika resistor Pull Up tidak terpasang maka data yang akan terbaca akan selalu konstan / sama meskipun sensor TPA81 didekatkan / dijauhkan terhadap lilin. Ketika saya mencoba tanpa resistor Pull Up, semua pixel TPA81 membaca data dengan nilai 191 ada juga yang 255 semua seperti pada link ini :
http://www.ccsinfo.com/forum/viewtopic.php?p=135506.

Karena menggunakan jalur I2C maka anda dapat memparallelkan jalur SDA dan SCK untuk mengakses perangkat I2C lainnya atau mengakses 8 buah sensor TPA81 untuk aplikasi Thermal Imaging 2 dimensi atau menampilkan pembacaan temperatur secara matriks dengan 8 x 8 = 64 pixel. Saya ingin mencoba tapi mengeluarkan biaya 8 x 1,2 juta = 9,6 juta hanya untuk ujicoba,
Wadduuuhhh....

Sensor TPA81 pada komunikasi I2C akan selalu menjadi Slave dan tidak mungkin Master. Hal yang perlu diingat jika mengakses 8 buah TPA81 adalah resistor Pull Up 1K8 ohm pada SDA dan SCK diletakkan sedekat mungkin dengan Master (Mikrokontroller anda) sehingga hanya ada 2 buah resistor Pull Up, hal ini karena pada sensor TPA81 telah terpasang resistor pull up internal dan tidak memerlukan resistor pull up tambahan.

Pada aplikasi CodeVisionAVR telah tersedia library yang berfungsi untuk mengakses komponen yang menggunakan komunikasi data menggunakan format I2C yaitu pada library I2C.h sehingga dapat mengakses dengan mudah sensor TPA81.
Untuk memahami cara komunikasi menggunakan protokol I2C, misalnya pada salah satu link berikut : http://www.robot-electronics.co.uk

Pin Do Not Connect (Jangan dihubungkan), sesuai dengan artinya jangan di hubungkan kemanapun. Pin Do Not Connect digunakan oleh pabriknya untuk memprogram mikrokontroller PIC16F88 pada modul TPA81 yaitu jalur CPU MLCR dan memiliki internal pull up.
Saya menghubungkan pin ini dan memberikan logika 1 atau logika 0 ke pin ini tapi tidak ada masalah, namun untuk amannya sebaiknya JANGAN dihubungkan (Ga tanggung jawab klo rusak lho).

Semoga manfaat... ^^v....

Sabtu, 27 Februari 2010

Error Pembacaan Jarak sensor PING

.
Sudah cukup lama si sekitar 2.5 tahun yang lalu..
Ketika saya sedang memprogram mobil robot peraba / pengikut dinding menggunakan metode Fuzzy.
Plan berikut adalah tugas akhir saya yaitu :
"Proyeksi posisi dinding menggunakan metode Fuzzy dgn Mobil Robot"
intinya :
Sebuah mobil robot dan perangkat komunikasi wireless dgn komputer yang akan berjalan pada ruangan labirin kemudian "memetakan" posisi dinding (apakah posisi dinding dikiri atau dikanan atau dikedua sisi mobil robot) sehingga pada komputer akan digambarkan secara Realtime bentuk ruangan yang dilalui mobil robot tersebut.

Dulu saya tidak mengenal wireless seperti Zigbee, RFM12B, RLP434 + TLP434, dsb sehingga wireless seadanya saja dan komunikasi berupa karakter singkat dengan jarak maksimum 8 meter. Wallhasil kurang maksimal.

Kali ini hanya fokus pada permasalahan pembacaan sensor PING-nya.

Catatan PayZ :
Mobil robot menggunakan 3 buah sensor PING yang berada pada posisi depan semua. 1 buah sensor tegak lurus menghadap ke depan berfungsi agar mobil robot tidak menabrak dinding didepannya, 1 buah sensor menghadap depan kiri dengan sudut 45° dan 1 buah sensor lg menghadap depan kanan dengan sudut 45°.
Posisi sensor ping pada mobil robot seperti berikut.
Setelah sudah di program semua...lalu Test Drive..
Set point jarak yang diinginkan antara sensor PING dengan dinding adalah 24 cm - 26 cm, dan karena sensor PING miring 45° terhadap dinding sehingga jaraknya bisa mendekati 18cm - 22 cm. Anehnya mengapa kadang-kadang bisa lebih dekat dari 13 cm bahkan kurang.
Bingung..bingung..bingung...

Awalnya kupikir porgram Fuzzy-nya salah sehingga Crisp output Fuzzy-nya salah. Dan untuk mengurangi kesalahan, mobil robot di program, koneksi komputer via port COM dengan kabel (Ban tidak menapak), dan proses Fuzzy-nya ditampilkan di komputer pada HyperTerminal atau CoViAVR.

Simulasi dinding menggunakan telapak tangan yang didekatkan dengan sensor PING dan hasil yang ditampilkan di komputer semuanya benar dari Set Point, Jarak Aktual, Error, DError, ufError (derajat keanggotaan error 1 hingga 5), ufdError (derajat keanggotaan delta error 1 hingga 5), output Fuzzy Rule, Num, Denum, dan Crisp sudah benar semua.
Lalu apa.. apaaaa... (lebay).














Lama...lama...lama... istirahat.. lama.. lama.. lama..
Suatu saat, Uji coba lagi ah tapi kali ini simulasi tidak menggunakan tangan tetapi menggunakan Styrofoam sebagai simulasi dinding (labirinnya memang menggunakan Styrofoam sebagai dinding).
Styrofoam saya gerakkan pelan-pelan terhadap sensor PING dan hal mengejutkan ternyata tampak (alah) yaitu ketika pembacaan sensor PING sebagai berikut :
23 cm
24 cm
25 cm
26 cm
300 cm
300 cm
26 cm
25 cm

Mengapa setelah 26 bukannnya 27 melainkan 300 dan memang dalam program saya batasi nilai maksimum adalah 300 (dan ini kesalahan harusnya batasi 30 saja). Nilai error 300 inilah yang menyebabkan Mobil robot bergerak cepat mendekati dinding karena mobil robot "pikir dia sangat jauh dari dinding" sehingga terkadang mobil robot terlalu dekat dengan dinding.
Setelah dianalisa lalu diketahui bahwa pada sudut-sudut tertentu yaitu sudut pancaran ultrasonik terhadap dinding Styrofoam, kadang sinyal ultrasonik yang dipancarkan oleh pemancar tidak diterima oleh penerima karena Styrofoam / dinding memantulkan suara ultrasonik tersebut ke arah lain yang tidak mengenai sensor penerima.
Solusinya yaitu dengan menambahkan sensor PING untuk pembacaan yang lebih baik atau dengan mengatur secara manual posisi sudut sensor PING terhadap dinding sehingga didapatkan pembacaan jarak yang lebih baik..

Saya lebih suka cara kedua.. hemat...

Problem Solved.... (",)v

Jumat, 26 Februari 2010

Sensor Suhu Termocouple

.
Suatu saat ada yang minta tolong untuk diprogramkan (dan sedikit hardware) untuk Perangkat Pembakar Sampah menggunakan metode Kontrol Fuzzy dan Kontrol PI karena memang 1 alat ini dikerjakan oleh 2 orang dengan metode yang berbeda (biar boleh dijadikan TA).

Sedikit kesulitan pada coding adalah "Bagaimana menggabungkan 2 buah metode dalam satu program" sehingga si pengguna dapat memilih metode FUZZY atau metode Kontrol PI cukup dengan menekan tombol berdasarkan menu yang ditampilkan di layar LCD 16x2 dan tidak perlu mendownload program ke dalam MCU lagi.

Metode Fuzzy dengan 5 kelas derajat keanggotaan dan 25 buah Rule di tambah dengan metode kontrol PI menggunakan Mikrokontroller ATmega8535 menghabiskan total memori hingga 85%.

Kali ini tidak saya bahas lengkap tetapi fokus ke karakteristik driver + sensor termocouple.
Harga sensornya relatif murah yaitu Rp 20.000,- dan berikut gambar sensor Termocouple yang digunakan :











Catatan PayZ :
Driver sensor termocouple menggunakan IC AD595 buatan Analog Device. Ketika sedang uji coba driver + sensor termocouple, agar suhu cepat mencapai 100° hingga 150° Celcius saya menggunakan Solder.
Sudah cukup lama solder menempel pada sensor termocouple tetapi suhu yang baru di capai maksimum 80° C dan kemudian suhu turun kembali hingga 65° C.

Aneh..aneh... kenapa bisa begitu.
Awalnya kupikir sensor termocouplenya rusak karena si perancang hardware dulunya memotong dan mengupas kabelnya sehingga tidak diketahui terminal biru dan terminal merah selain itu kondisi kabel termocouple yang sudah tertekuk-tekuk yang menurutku bisa memungkinkan kabel didalamnya putus (patah).

Mengurangi kesalahan, terminal termocouple yang terhubung pada IC AD595 saya bolak balik tetapi datanya tetap error. Kemudian di cek menggunakan multimeter antar terminal tetapi tetap terhubung yang artinya kabel tidak putus.

Akhirnya biar tidak pusing, diputuskan beli sensor baru (toh murah n skalian buat jaga-jaga).
Saya tambah bingung, datanya memang lebih baik dari sebelumnya tetapi suhunya tidak lebih dari 90° padahal Solder sudah sangat panas.

Oiya saya ingat, biasanya jika sedang menyolder komponen LED, entah mengapa LED-nya bisa menyala sendiri meskipun redup padahal supply-nya tidak terhubung. Berarti LED tersebut memperoleh tegangan dan arus dari Solder tersebut.
Dari sinilah berarti IC AD595 memperoleh tegangan dan arus dari Solder sehingga mengacaukan pembacaan sensor termocouple.

Kemudian saya coba lagi menggunakan lilin yang lumayan besar agar apinya besar) dan...
Wallaa......
Suhu mencapai 110° C dan naikknya bertahap serta tidak mengalami penurunan kembali...

Problem Solved.... (",)v

Minggu, 14 Juni 2009

Pengecekan Sensor LDR / IR

.
Salah satu hal yang selalu saya tekankan sebagai perancang yaitu Software lebih mudah dibanding Hardware akan tetapi Software akan jauh lebih sulit ketika mengerjakan Software tetapi sebenarnya kesalahan terjadi pada Hardware, atau Hardware belum sempurna tetapi sudah mengerjakan software sehingga Programmer selalu merasa Softwarenya salah akan tetapi sebenarnya Hardwarenya yang tidak berfungsi.
Oleh sebab itu rancanglah dan periksa Hardware semaksimal mungkin kemudian Software akan menjadi mudah.

Sebelum membuat sensor garis menggunakan komponen lain atau yang kompleks sebaiknya periksa dulu setiap sensor yang akan anda gunakan, karena sensor garis nantinya akan menggunakan 8 buah sensor. Selain itu anda akan mengetahui sesuatu yang mungkin tidak anda sadari sebelumnya.

Cek sensor LDR
Pengecekan LDR relatif lebih mudah karena sumber cahayanya terlihat oleh mata dan gangguannya juga terlihat oleh mata.


Langkah-langkah :
  1. Pasang kedua terminal sensor LDR pada ohmmeter.
  2. Berikan cahaya pada sensor LDR (senter, lampu, LED, dll).
  3. Amati perubahan nilai resistansinya jika perubahan sangat drastis antara gelap dan terang berarti sensor LDR berfungsi dengan sangat baik.
  4. Catat nilai resistansi saat gelap dan saat terang klo bisa datanya minimal 3 biar valid.
  5. Tempelkan solder yang sudah panas maksimal (dan ada timahnya) pada kedua terminal.
  6. Tahan hingga minimal 3 detik.
  7. Berikan intensitas cahaya yang sama pada sensor LDR.
  8. Catat nilai resistansi saat gelap dan saat terang sebagai data baru.
  9. Bandingkan nilai resistansi tersebut.

Cek Sensor IR part I
Pengecekan sensor IR agak susah karena sumber cahayanya tidak terlihat oleh mata dan gangguannya juga tidak terlihat oleh mata. Sensor IR yang digunakan berbentuk LED dengan 2 terminal bukan sensor IR dengan 3 terminal. Pengecekan pada bagian I lakukan pada malam hari dengan cahaya lampu neon.

Langkah-langkah :
  1. Berikan supply pada LED IR pemancar yang telah di seri dengan resistor 300 ohm.
  2. Tempelkan kedua terminal sensor IR dengan probe ohmmeter.
  3. Dekatkan sensor IR dengan pemancar dan jauhkan secara perlahan-lahan kemudian tutup sensor IR tersebut hingga gelap.
  4. Perhatikan perubahan resistansi pada ohmmeter.
  5. Jika tidak terjadi perubahan nilai resistansi maka balikkan posisi probe (merah dan hitam) tersebut terhadap terminal sensor IR lakukan langkah 3 dan 4.
  6. Jika masih tidak terjadi perubahan nilai resistansi maka sensor IR berarti rusak.
  7. Jika terjadi perubahan maka, jika ohmmeter DIGITAL, probe merah berarti terminal tersebut adalah ANODA dan probe hitam adalah terminal KATODA.
  8. Jika terjadi perubahan maka, jika ohmmeter ANALOG, probe merah berarti terminal tersebut adalah KATODA dan probe hitam adalah terminal ANODA.
  9. Dapat juga dilakukan pengujian dengan penyolderan seperti pada sensor LDR.
Berapa jenis sensor LDR maupun sensor IR tidak tahan terhadap panas yang berlebihan sehingga nilai resistansinya berubah setelah proses penyolderan, hal ini juga berpengaruh pada nilai dan kepekaan sensor nantinya. Cara mengatasinya yaitu dengan menjepit kaki sensor LDR atau sensor IR dengan TANG ketika disolder agar panas tersebut sebagian diserap oleh TANG, selain itu jangan menyolder 1 kaki komponen dalam waktu yang lama (belajar meyolder yg cepat).

Beberapa komponen lain seperti LED, resistor, transistor, IC, dll juga tidak tahan terhadap panas berlebihan ketika proses penyolderan, untuk komponen lain dapat dilihat Datasheet mengenai suhu maksimum penyolderan dan waktu maksimalnya.
Untuk LED ketika terlalu lama disolder akan mengurangi intensitas cahaya yang dihasilkan (LED lebih redup).

Cek Sensor IR part II
Pengecekan sensor IR bagian II membahas tentang gangguannya.

Langkah-langkah :
  1. Pada malam hari, tempelkan kedua terminal sensor IR (sudah diketahui Anoda dan Katodanya) pada ohmmeter, tutup sensor IR tersebut hingga tak ada cahaya yang masuk dan catat nilainya.
  2. Buka sensor IR tersebut dan catat nilai resistansinya.
  3. Nyalakan lampu pijar hingga kira-kira mengenai sensor IR dan catat pula nilai resistansinya.
  4. Nyalakan Lilin atau sumber api (korek, obor, kompor, dll) catat nilai resistansinya.
  5. Kemudian siang hari catat pula nilai resistansinya.
  6. Bandingkan semua data yang diperoleh.
Sensor IR mendeteksi sinar infra merah yang tak dapat dilihat oleh mata sehingga kita tidak mengetahui sebenarnya disekitar kita banyak sumber gelombang cahaya infra merah yang mempengaruhi kerja sensor tersebut. Cara mengatasinya dengan menggunakan pelindung atau filter cahaya untuk meminimalkan gangguan atau dengan menggunakan frekuensi tertentu (40 kHz) pada pemancar dan penerima sehingga gelobang cahaya inframerah dari luar terabaikan.

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