Bagaimana Mengatur Kecepatan Motor DC dengan Arduino?
Mengatur Kecepatan Motor dengan Potensio Menggunakan Arduino (ADC-PWM Arduino)
Konsep ADC
Pin Analog pada arduino ada 6 buah yaitu pada pin A0 -
A5. Pin Analog ini menbaca tegangan 0 –
5v. dengan step kenaikan 10 bit yaitu 0 – 1023. Itu berarti 0 – 5v
dikonversikan menjadi nilai data digital 0 – 1023.
Data ADC = (Vin/Vref) x Maksimal Data
Digital(resolusi)
Sebenarnya pencacahan nilai angka 0 – 5v dapat dilakukan
dengan jumlah tak terhingga tetapi mikroprosesor yang digunakan memiliki
keterbatasan hanya 10 bit saja yaitu antara 0 – 1023.
Konsep PWM
saya akan memberikan ilustrasi terlebih dahulu. Ketika kita
ingin meredupkan lampu atai mengatur kecepatan motor kira-kira apa yang kita
lakukan ?
Ada 2 cara yang bisa kita lakukan yaitu :
- Kita bisa mengurangi tegangan (mengubah nilai arus) pada lampu atau motor. Dengan begitu lampu akan redup atau kecepatan motor akan berkurang. Ini bisa dilakukan dengan menggunakan resistor variable. Dengan merubah nilai resistansinya kita bisa mengarur kecerahan lampu atau pula mengatur kecepatan motor.
- Mengubah frekuensi yaitu menyalakan dan mematikan lampu atau motor dengan cepat atau lambat. Saat lampu atau motor menyala dan mati dengan kecepatan tinggi maka mata kita tidak akan mengetaguinya. Yang kita tahu tingkat kecerahan lampu (terang atau redup) atau kecepatan motor (cepat atau lambat) berubah.
Pada cara yang pertama memang kita dapat mengatur kecepatan
motor. Tetapi kelemahannya disini adalah torsinya akan turun dan kekuatan motor
untuk menggerakan sesuatu akan turun. Ini merupakan suatu kerugian ketika kita
memang membutuhkan torsi yang sesuai sengan torsi motor. Oleh karena itu cara
kedua lebih efektif kita gunakan.
Dalam ilmu elektronika, cara yang kedua inilah yang
merupakan konsep PWM (Pulse Width Modulation). Untuk dapat menggunakan fungsi
dari PWM arduino kita dapat menggunakan fungsi instruksi analogWrite(). Pada
arduino, fungsi analogWrite memiliki nilai 8 bit (0 – 254).
Contoh seperti gambar dibawah ketika kita mau mengatur
kecepatan 50 % maka kita beri nilai (50/100)*254=127, maka kita beri nilai
analogWrite(127). Dengan begitu maka pada 1 siklus PWM, pada 50% siklus
bernilai tegangan +5V dan pada 50% siklus selanjutnya bernilai tegangan 0V. Sedangkan
ketika kita mau mengatur kecepatan 25 % maka kita beri nilai (25/100)*254=64,
maka kita beri nilai analogWrite(64). Dengan begitu maka pada 1 siklus PWM,
pada 25% siklus bernilai tegangan +5V dan pada 75% siklus selanjutnya bernilai
tegangan 0V.
Gambar 2. Grafik PWM pengaturan kecepatan motor dengan Arduino |
Pada Arduino pin/kaki yang memiliki fasilitas PWM adalah
pin/kaki yang memiliki symbol (~) seperti pada pin 3, 5, 5 dan seterusnya.
Arduino memiliki frekuensi yang digunakan untuk PWM yaitu 500Hz yang artinya
500 siklus yang berlangsung pada 1 detik. Jadi dengan kecepatan itu tidak akan
terlihat oleh mata manusia.
Gambar 3. Rangkaian Pengaturan Kecepatan Motor DC |
Program :
const int pinPot = A0;
const int AIN1 = 4;
const int AIN2 = 5;
const int PWM = 9;
int kecepatan = 0;
int sensor = 0;
void setup() {
pinMode(pinPot, INPUT);
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(PWM, OUTPUT);
}
void loop() {
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);
sensor = analogRead(pinPot);
kecepatan = map(sensor, 0, 1023, 0, 255);
analogWrite(PWM, kecepatan);
}
Penjelasan Program :
PROGRAM PENJELASAN PROGRAM
const int pinPot = A0; Deklarasi Pin A0 untuk pinPot
const int AIN1 = 4; Deklarasi Pin 4 untuk AIN1
const int AIN2 = 5; Deklarasi Pin 5 untuk AIN2
const int PWM = 9; Deklarasi Pin 9 untuk PWM
int kecepatan = 0; Inisislisasi variable kecerahan dengan tipe data int
dan nilai awal 0
int sensor = 0; Inisislisasi variable sensor dengan tipe data int dan
nilai awal 0
void setup() {
pinMode(pinPot, INPUT); Seting pinPot (Pin A0 arduino) sebagai input
pinMode(AIN1, OUTPUT); Seting AIN1 (Pin 4 arduino) sebagai output
pinMode(AIN2, OUTPUT); Seting AIN2 (Pin 5 arduino) sebagai output
pinMode(PWM, OUTPUT); Seting PWM (Pin 9 arduino) sebagai output
}
void loop() { Program yang dieksekusi terus menerus.
digitalWrite(AIN1, HIGH); Memberikan logika high pada pin AIN1(Pin 4
Arduino)
digitalWrite(AIN2, LOW); Memberikan logika high pada pin AIN2(Pin 5
Arduino)
sensor = analogRead(pinPot); Sensor membaca tegangan di pin A0 dan
merubahnya menjadi data digital.
kecepatan = map(sensor, 0, 1023, 0, 255); Nilai data ADC di variable sensor yang bernilai
0 – 1023 dibandingkan dengan nilai 0 – 255
dan nilai hasil dimasukan ke variable kecepatan.
analogWrite(PWM, kecepatan); Keluarkan nilai data pada variable kecerahan
berupa nilai PWM ke variable PWM atau Pin 9.
}
Silahkan berEksperimen dan mencoba. Semoga Bermanfaat .........
Detail dari konsep PWM dan ADC saya bahas pada artikel lainnya.
0 Response to "Bagaimana Mengatur Kecepatan Motor DC dengan Arduino?"
Post a Comment