Dalam melakukan pengaturan kecepatan motor dc diperlukan penyetelan Pulse Width Modulation (PWM) pada mikrokontroler papan Arduino yaitu penyetelan perbandingan atau rasio high dan low (duty cycle) dari gelombang persegi.
Kenapa PWM dapat mengatur kecepatan motor dc ?
Akan lebih mudah menjawab pertanyaan di atas jika menggunakan analogi nyala LED. Jika Anda memiliki saklar atau switch yang digunakan untuk menyambung dan memutus arus pada LED, saat Anda menyambung dan memutus saklar secara cepat dengan perbandingan waktu sambung atau nyala lebih lama dibanding waktu memutus saklar maka LED akan terlihat lebih terang. Sebaliknya saat waktu putus lebih panjang dibanding waktu sambung maka LED akan terlihat lebih redup. Hal tersebut juga berlaku pada motor DC dimana saat sinyal persegi memiliki mondisi high lebih panjang atau lebih lama dibanding kondisi low maka motor dc akan berputar lebih cepat dibanding PWM sinyal persegi memiliki kondisi low lebih panjang dibanding high.
Frekuensi PWM yang digunakan pada grid line follower pada pembahasan ini adalah berdasar trial and error (uji coba) karena penulis menggunakan motor dc tamiya dan tidak mengetahui spesifikasi detil tentang motor dc tamiya tersebut. Dengan frekuensi yang disebutkan pada halaman ini, Anda dapat membangun grid line follower dengan kecepatan yang ditunjukan pada Video 1 dimana grid line follower berjalan cukup halus.
Berikut adalah penjelasan teknis mengenai penyetelan PWM Arduino melalui penyetelan register Timer/Counter.
Penyetelan Timer/Counter 1 Fast PWM 10 bit.
Merancang grid line follower pada halaman ini difokuskan pada penggunakaan register timer/counter 1 dimana timer/counter tersebut merupakan register timer yang dapat menghitung dari 0 hingga 16 bit dan mampu digunakan sebagai fast PWM atau Phase Correct PWM 8, 9 atau 10 bit.
Anda diharapkan mampu memahami tentang bagaimana melakukan penyetelan PWM, bagaimana caranya mengubah duty cycle sehingga kecepatan putar motor dc dapat berubah sehingga grid line follower dapat berjalan lebih halus dengan kecepatan yang dapat dikontrol sesuai keinginan. Materi dan gambar di bawah ini diambil dari materi datasheet IC mikrokontroler ATmega328P.
Anda diharapkan mampu memahami tentang bagaimana melakukan penyetelan PWM, bagaimana caranya mengubah duty cycle sehingga kecepatan putar motor dc dapat berubah sehingga grid line follower dapat berjalan lebih halus dengan kecepatan yang dapat dikontrol sesuai keinginan. Materi dan gambar di bawah ini diambil dari materi datasheet IC mikrokontroler ATmega328P.
Gambar 1. Timing diagram mode Fast PWM |
Keterangan Gambar 1 :
- TCNTn : merupakan register Timer/Counter yang digunakan untuk menghitung dari 0 hingga maksimum (tergantung bit counter yang digunakan) lalu dari maksimum menghitung ke bawah hingga 0 secara terus menerus dan berulang-ulang. Hal ini terjadi saat timer diaktifkan.
- OCRnx : Merupakan register yang digunakan untuk mengubah duty cycle, nilai pada register ini dibandingkan dengan nilai TCNTn yang hasilnya akan mengubah duty cycle pada keluaran atau output pada pin atau terminal OCnx.
- OCnx : Output Compare Register yang berhubungan dengan hasil perbandingan antara register TCNTn dan OCRnx. OCnx berhubungan langsung dengan pin atau terminal PWM (PWM output).
- Phase Correct PWM 8, 9 atau 10 bit
- Fast PWM 8,9, atau 10 bit
- Phase and Frequency Correct PWM
- Phase Correct PWM
- Fast PWM
Dalam menggunakan mode fast PWM10 bit dapat menggunakan data yang ditunjukan pada Tabel1 yang diambil dari datasheet ATMega328P.
Tabel 1. Diskripsi mode PWM
Untuk menyetal PWM sesuai data pada Tabel 1 perlu melakukan penyetelan register TCCR1 seperti ditunjukan pada Gambar 2 dan 3 di bawah :
Gambar 2. Register TCCR1A |
Gambar 3. Register TCCR1B |
Data Tabel 2 di bawah digunakan untuk mengubah register TCCR1A pada bit COM1A atau COM1B yang bertujuan untuk memilih mode PWM apakah inverting, non inverting atau memutus port OCA1A atau OC1B sehingga gelombang PWM tidak keluar dari pin PWM Arduino.
Tabel 2. Konfigurasi Output Mode Fast PWM
Tabel 3. Clock select bit
Contoh nilai setiap bit pada register TCCR1A :
- bit 0 : WGM10 bernilai 1
- bit 1 : WGM11 bernilai 1
- bit 2 : Bernilai 0
- bit 3 : Bernilai 0
- bit 4 : COM1B0 bernilai 0
- bit 5 : COM1B1 bernilai 1
- bit 6 : COM1A0 bernilai 0
- bit 7 : COM1A1 bernilai 1
TCCR1A = 0b10100011 atau TCCR1A = 0xA3
Contoh nilai setiap bit pada register TCCR1B :
- bit 0 : CS10 bernilai 0
- bit 1 : CS11 bernilai 0
- bit 2 : CS12 bernilai 1
- bit 3 : WGM12 bernilai 1
- bit 4 : WGM13 bernilai 0
- bit 5 : Bernilai 0
- bit 6 : ICES1 bernilai 0
- bit 7 : ICNC1 bernilai 1
TCCR1B = 0b00001100 atau TCCR1B = 0x0C
Maksud dari penyetelan register TCCR1A dan TCCR1B di atas adalah :
- Nilai bit WGM10, WGM11 bernilai 1 dan WGM12 bernilai 1 dan WGM13 bernilai 0 berarti menggunakan mode Fast PWM 10 bit.
- Nilai bit COM1B1, COM1A1 bernilai 1dan COM1B0, COM1A0 bernilai 0 berarti menggunakan mode non inverting. Jika Anda menggunakan inverting, Anda akan mendapatkan kecepatan motor yang berkebalikan dimana jika Anda menginginkan cepat justru malah lambat, dan sebaliknya.
- Pada register TCCR1B, bit CS10, CS11, CS12 bernilai 0, 0 dan 1yang berarti bahwa frekuensi PWM adalah frekuensi kecepatan clock crystal Oscilator dibagi dengan 256 (clkio/256).
Menggunakan frekuensi sekitar 61 Hz, motor dc tamiya dapat bekerja dengan baik seperti ditunjukan pada Video 1.
Setelah mengetahui konfigurasi fast PWM 10 bit, hal yang perlu dilakukan adalah memberikan kecepatan awal pada line follower dengan memberikan nilai pada OCR1A dan OCR1B dengan rentang nilai 0 hingga 1023 (10 bit).
Dengan penjelasan agak sedikit rumit di atas, sebenarnya kode yang perlu dituliskan untuk mengaktifkan fast PWM cukup menuliskan nilai dari register TCCR1A dan TCCR1B seperti contoh sebagai berikut :
void main ()
{
// Faast PWM 10 bit
TCCR1A = 0b10100011 ;
TCCR1B = 0b00001100 ;
OCR1A = 500 ; // duty cycle dibawah hampir 50% (Motor DC berputar lambat)
OCR1B = 500 ; // duty cycle dibawah hampir 50% (Motor dc berputar lambat)
}
Materi Proyek Grid Line Follower :
EoF
0 Komentar
Comment