Bagaimana Mengatur Kecepatan Motor DC dengan Arduino?


Mengatur Kecepatan Motor dengan Potensio Menggunakan Arduino (ADC-PWM Arduino)


Rangkain pengkabelan motor dc dengan driver TB6612FNG dan diatur dengan Potensiometer.
Gambar 1. Rangkaian Pengaturan Kecepatan Motor DC

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 :
  1. 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.
  2. 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.


Grafik PWM pengaturan kecepatan motor menggunakan Arduino

Grafik PWM pengaturan kecepatan motor dengan Arduino
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. 


Rangkain pengkabelan motor dc dengan driver TB6612FNG dan diatur dengan Potensiometer.
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.











Berlangganan update artikel terbaru via email:

0 Response to "Bagaimana Mengatur Kecepatan Motor DC dengan Arduino?"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel