Selasa, 21 September 2010

RPM motor DC : Perancangan Alat

.
Saya akan mencoba menulis salah satu aplikasi dalam menggunakan timer.
Pada kasus ini mikrokontroller berfungsi sebagai penghitung kecepatan putaran motor DC dengan satuan RPM atau Tachometer.
Spesifikasi :
  • Motor DC satu arah.
  • Sensor berupa encoder piringan menggunakan lubang.
  • Lubang = logika 0, No lubang = logika 1.
  • Banyak lubang 4 buah dengan perbedaan 90 derajat.
  • Update nilai RPM setiap 1 detik.
  • Interupsi encoder dengan mode Falling Edge / NGT
Update nilai 1 detik sebenarnya cukup lama, nilai 1 detik dipilih agar nanti penjelasan pada timernya mudah dipahami.

Rangkaian Encoder
Rangkaian sensor encoder banyak diinternet dan sensornya pun banyak dijual di pasaran dengan harga terjangkau. Selain itu juga bisa dibuat menggunakan sensor cahaya seperti LDR atau sensor phototransistor atau sensor InfraRed meskipun hasilnya kurang presisi dibanding menggunakan sensor encoder.
Seperti pada link berikut :
http://letsmakerobots.com/node/12293
http://thedenneys.org/pub/robot/encoders/

Tambahan :
  • Gunakan IC 74HC14 (untuk kecepatan tinggi dan jika lubang pada piringan encoder sangat banyak) atau 74LS14 (murah dan kecepatan rendah) agar output pada sensor encoder menjadi kotak sempurna (Sinyal digital).
  • Setelah rangkaian encoder selesai, uji coba dulu rangkaian tersebut dengan menggunakan AVOmeter, jangan lanjut ke proses selanjutnya jika belum sempurna.
  • Pasang rangkaian tampilan indikator LED di port mikrokontroller sebagai indikator Lubang terdeteksi.
Diagram Blok Alat
Gambar diagram blok dibawah ini adalah perancangan alat yang akan digunakan.
Output sensor Encoder menjadi input IC 74HC14 agar sinyalnya menjadi kotak sempurna yang menjadi input digital INT0 (Interupsi 0) pada port mikrokontroller AVR.
Pada PORTC.0 ditambahkan LED indikator yang LED ini akan menyala atau mati (toggle) setiap terdeteksi lubang pada encoder.
Output PWM pada timer 1 OC1A digunakan untuk mengendalikan kecepatan motor DC.

Atur Interupsi Sensor
Hubungkan output sensor Encoder pada mikrokontroller pin INT0 atau INT1 (terserah tapi harus sesuai dengan codingnya). Interupsi yang saya coba pilih adalah interupsi 0 / INT0.

Buka aplikasi CoViAVR dan gunakan CodeWizzardAVR seperti berikut : Pilih : Falling edge / NGT.









  • Low Level : Sinyal input akan dianggap interupsi jika sinyal input berada pada Low Level / Logika 0.
  • Any Change : Sinyal input akan dianggap interupsi jika terjadi perubahan sinyal dari logika 0 - logika 1 atau logika 1 ke logika 0.
  • Falling Edge : Sinyal input akan dianggap interupsi jika terjadi perubahan input dari logika 1 ke logika 0.
  • Rising Edge : Sinyal input akan dianggap interupsi jika terjadi perubahan input dari logika 0 ke logika 1.
Pada fungsi interupsi eksternal INT0 tulis sebagai berikut :
(Jangan lupa DDRC.0 = 1 yaitu PORTC.0 sebagai output)
Program chip dan coba cek lagi sensor encodernya.

Uji coba dan LED pada PORTC.0 harus mati-nyala-mati-nyala setiap sensor encodernya di halangi-tidak dihalangi (dengan benda gelap). Klo belum cek rangkaian sampai sempurnya.

Next : RPM Motor DC : Pengaturan Timer 16 bit

Semoga manfaat ;)

Topik yang Populer