Pembelajaran tentang Motor pada arduino ini, menjelaskan tiga jenis motor :
Motor DC
Motor Servo
Stepper
Contoh-contoh yang diberikan dapat dijadikan sebagai landasan untuk menyusun proyek-proyek terapan.
Sketch di depan menggunakan salah satu pin yang mendukung PWM mengingat nilai Yang akan dikirimkan ke motor tidak sekadar HIGH dan LOW, melainkan bervariasi. Dalam hal ini, Pin 11 Yang digunakan. Pin tersebut diperlakukan sebagai OUTPUT dan diatur melalui:
pinMode (PIN PWM, OUTPUT) ;
Selanjutnya, pernyataan
analogWrite (PIN PWM, 255) ;
digunakan untuk mengirimkan nilai analog sebesar 255. Nilai ini digunakan untuk memutar motor dengan kecepatan paling tinggi. Pernyataan
delay (5000) ;
digunakan untuk mengatur motor berputar selama 5 detik. Selanjutnya,
analogWrite (PIN PWM, 128) ;
membuat putaran motor melambat. Terakhir,
analogWrite (PIN PWM, 0) ,
membuat motor berhenti berputar.
Informasi tentang Pin PWM
Pulse width modulation (PWM) adalah suatu teknik yang memungkinkan pin digital dapat bulat antara O dan 255 (untuk mencerminkan isyarat analog) dengan perubahan nilai secara periodis. Hal ini bermanfaat untuk mengatur kecerahan LED atau kecepatan motor. Arduino IJno menyediakan enam pin PWM. Masing-masing ditandai dengan simbol N. Pin-pin yaitu pin 3, 5, 6, 9, 10, dan 11. Untuk menghasilkan nilai analog di pin-pin PWM, analogWrite ( ) perlu digunakan. PWM dilakukan dengan memodulasi daur tugas (duty cycle) gelombang kotak. Sebagaimana diketahui, gelombang kotak adalah gelombang yang secara periodis bernilai 0 dan 1 secara bergantian. Daur tugas adalah persentase antara nilai di gelombang kotak saat bernilai dibandingkan secara keseluruhan. Normalnya, gelombang kotak memiliki daur tugas sebesar Artinya, nilai 1 dan 0 berimbang. Nilai daur tugas yang melebihi 50% menyatakan bahwa saat bernilai 1 lebih sedikit lama daripada saat bernilai O. Beberapa contoh daur tugas gelombang kotak ditunjukkan berikut ini
Dengan menggunakan WM, Kecerahan LED seperti diatur, padahal yang terjadi sebenarnya adalah terjadi keadaan mati dan hidup dalam waktu yang singkat. Hal ini berlaku pula pada pegauran kecepatan motor.
untuk mengatur kecepatan putaran di motor dc, potensiometer 5k bisa digunakan. rangkaiannya diperlihatkan di gambar 6.4. contoh penyusunan rangkaian diperlihatkan di gambar 6.5.
Gambar 6.4 Rangkaian motor DC dengan pengatur kecepatan berupa potensiometer
Gambar 6.7 Contoh penyusunan rangkaian motor DC menggunakan ULN2003
Untuk menguji rangkaian di atas, Anda bisa menggunakan sketch motordc. Jika susunan rangkaian sudah benar, putaran pada motor DC akan berubah-ubah dari kecepatan tinggi, sedang, dan berhenti.
6.3 Motor Servo
Motor servo adalah jenis motor yang memiliki tiga kabel. Masing-masing digunakan ground, dan kontrol. Kabel kontrol digunakan untuk menentukan motor untuk memutar rotor ke arah tertentu. Biasanya, rotor hanya berputar hingga 2000. Namun, ada pula yang mampu berputar
Contoh motor servo diperlihatkan di Gambar 6.9. Motor servo biasa digunakan untuk menggerakkan robot atau memutar pada alat ukur yang bersifat analog.
Gambar 6.8 Pengontrolan motor bC menggunakan modul ULN2003
Jika dikehendaki untuk mengontrol motor DC yang menggunakan catu daya yang berbeda antara yang digunakan untuk memasok IC dan motor, dua pin yang terhubung secara bawaan (di Gambar 6.8 hal ini dijelaskan dalam ilustrasi) dapat dipisahkan dengan cara mencabut penghubung kedua Pin. Selanjutnya, catu daya untuk motor DC dipasang di dua pin tersebut.
Gambar 6.9 Motor servo
Gambar 6.10 memperlihatkan contoh penyusunan rangkaian motor servo. Biasanya, motor ini dilengkapi dengan tiga kabel berwarna merah, oranye, dan cokelat. Dalam hal ini, kabel merah dihubungkan dengan catu daya SV, kabel oranye dihubungkan ke pin digital yang mendukung PWM, dan kabel cokelat dihubungkan ke ground. Pada Gambar 6.10, kabel kontrol dihubungkan ke pin 11.
Untuk menguji motor servo, Anda bisa menggunakan skerch berikut :
Sketch:servo
// ——————————————–
// Contoh untuk mengontrol motor servo
// ——————————————–
#include <Servo . h>
const int PIN_SERVO = 11;
// Buat objek
Servo motorServo ;
void setup ( )
// Motor servo dihubungkan ke pin servo
motorServo.attach(PIN_SERVO) ;
}
void loop ( )
{
motorServo write (0)
delay(2000);
motorServo.write (90);
delay(2000);
motorServo.write(135);
delay(2000);
}
Sketch:servo2
// ——————————————–
// Contoh untuk mengontrol motor servo
// ——————————————–
#include <Servo . h>
const int PIN_SERVO = 11 ;
const int PIN_A0 =0 ;
// Buat objek
Servo motorServo ;
void setup ( )
// Motor servo dihubungkan ke pin servo
motorServo.attach (PIN_SERVO) ;
}
void loop ( )
{
// Baca data potensiometer
int nilai analogRead (PIN_A0) ;
int sudutMotor map(nilai, 0, 1024, o, 180) ;
motorServo.write(sudutMotor);
delay(20);
}
Secara berturut-turut, sketch di atas akan membuat motor berputar menuju posisi 00, 900, dan 350 diperlihatkan di Gambar 6.11.
Potensiometer dapat digunakan untuk mengatur arah putar motor servo. Gambar 6.12 memperlihatkan contoh penyusunan rangkaian yang melibatkan potensiometer untuk mengatur kecepatan motor.
Nilai yang menyatakan potensiometer diperoleh melalui:
Secara berturut-turut, sketch di atas akan membuat motor berputar menuju posisi 00, 900, dan 350 diperlihatkan di Gambar 6.11.
Potensiometer dapat digunakan untuk mengatur arah putar motor servo. Gambar 6.12 memperlihatkan contoh penyusunan rangkaian yang melibatkan potensiometer untuk mengatur kecepatan motor.
Nilai yang menyatakan potensiometer diperoleh melalui:
int nilai analogRead (PIN_A0) ;
Selanjutnya. tersebut perlu dipetakan ke nilai antara 0 dan 180 mengingat sudut yang berlaku di motor servo hanya dalam jangkauan nilai tersebut. Hal Itu dilakukan melalui:
int sudutMotor map(nilai, 0, 1024, 0, 180) ;
6.4 Motor Stepper
Motor stepper (atau kadang disebut motor step) adalah jenis motor yang menyerupai motor servo karena posisi rotor bisa ditentukan, tetapi menggunakan pendekatan yang berbeda. Pada motor stepper, setiap posisi direpresentasikan Oleh suatu elektromagnetik gerigi, yang memungkinkan posisi dapat dipertahankan walau motor tidak lagi diberi catu daya. Setiap posisi ini dinamakan step (langkah). Rotor dapat berputar 3600.
Salah satu motor stepper yang populer dan harganya murah adalah 28BYJ-48 (Gambar 6.13). Akan tetapi motor jenis unipolar ini mempunyai kecepatan yang termasuk Iambat. Satu putaran ditempuh dengen2048 step.
Motor stepper dibedakan menjadi dua jenis: 1) unipolar dan 2) bipolar.
Motor stepper berjenis unipolar adalah jenis motor stepper yang memiliki 5 hinga 6 kabel.
Motor stepper berjenis bipolar adalah jenis motor stepper yang memiliki 4 kabel
Motor 28BYJ-48 dilengkapi 5 kabel dengan warna biru, merah muda, kuning, oranye, dan merah dihubungkan ke Arduino dengan menggunakan motor driver ULN2003. Cara menghubungkan diperllhatkan di Gambar 6,14.
Gambar 6.14 Rangkaian Arduino, IC ULN2003, dan motor stepper
Gambar 6.15 memperlihatkan contoh pemakaian modul ULN2003 pada motor stepper. Jika menggunakan hanya Pin IN 1 hingga IN 4 yang dapat digunakan.
Sketch berikut digunakan untuk mencoba rangkaian di atas :
Sketch:motorstep
// ——————————————–
// Contoh untuk menggerakkan motor stepper
// satu putaran
// baik searah maupun berlawanan arah jam
//
// Motor : 28BYJ-48 unipolar
// ——————————————–
#include <Stepper . h>
const int STEP_SATU_PUTARAN = 2048 ;
void setup ( )
// atur kecepatan
motorStepper.setSpeed (4) ;
}
void loop ( )
{
// Putar searah jarum jam
motorStepper.step (STEP SATU PUTARAN);
delay (1000) ;
// Putar berlawanan arah jarum jam
motorStepper.step (-STEP SATU PUTARAN);
delay (1000) ;
}
Untuk memprogram motor stepper, Anda perlu menyertakan baris berikut :
# include < Stepper.h>
palam hal ini, pustaka Stepper telah disediakan oleh Arduino.
Berbeda dengan kebanyakan motor stepper yang lain, motor 28BYj-48 memerlukan dekiarasî obleÈ›’ vang berbeda. Deklarasinya seperti berikut:
Jika Anda menggunakan motor stepper lain (bukan 28BYj-48), Anda perlu membaca datasheet motor bersangkutan. Hal ini disebabkan nilai step per putaran dan kecepatan yang diperlukan untuk menggerakkan motor berbeda dengan contoh yang diberikan di buku ini.
Konstanta STEP SATU PUTARAN menyatakan jumlah step yang dîper\ukan untuk mendapatkan satu putaran.
Kecepatan motor diatur melalui:
motorStepper.setSpeed (4) ;
pernyataan
motorStepper. step (STEP_SATU_PUTARAN) ;
digunakan untuk memutar satu putaran penuh. Adapun
motorStepper.step(-STEP SATU PUTARAN) ;
digunakan untuk memutar satu putaran dengan arah yang berlainan dengan putaran sebelumnya.
6.5 Pengaturan Motor DC Agar Bisa Berputar
Searah Jam atau Berlawanan Arah Jarum Jam
Sering kali motor DC diaplikasikan pada robot mobil. Salah satu kebutuhan pada aplikasi seperti itu adalah membuat motor dapat digerakkan maju (putaran searah jarum jam) atau mundur (putaran be jarum jam).
Ada beberapa cara yang bisa ditempuh untuk melakukan hal tersebut. Salah satu cara adalah menggunakan relai (Gambar 6.16). Relai memungkinkan suatu terminal terhubung ke terminal lain ketika terdapat medan listrik di dalam kumparan. Pada Gambar 6.16, terminal D terhubung ke C Pada normal, yaitu ketika tidak ada arus listrik yang mengalir di kumparan A-B. Saat kumparan A-B
Gambar 6.16 berfungsi seperti saklar yang dikendalikan oleh medan listrik di dalam kumparan
Cara kedua yang biasa digunakan adalah dengan memanfaatkan motor driver. cara kedua ini akan dibahas.
Contoh penggunaaan relai idbhas di Bab 18. Dalam hal ini empat relai digunakan untuk mengendalikan dua motor.
Dasar Jembatan-H
Dasar yang digunakan untuk mengontrol motor agar dapat diputat pada atah Brum jam atau bedawanan iarum jam adalah jembatan-H. Oisebut jembatan-H, katena motor tetsusun membentuk huruf H (lihat sambar 6.17 pada bagian motor).
Ada empat keadaan yang terjadi di jembatan-H. Keadaan terbuka dan braking akan membuat motor Odak berputar. Dua keadaan berikutnya akan membuat motor berputar berlawanan arah.
Terbuka
Ke Depan
Ke Belakang
Braking
Gambar 6.17 Jembatan-H
Penggunaan Motor Driver L289N
Salah satu modul yang menyediakan jembatan-H adalah modul LSON L298N seperti yang terlihat di Gambar 6.18. Variasi modul L298N yang tersedia di pasaran sangat banyak. Namun, secara prinsip semua modul menyediakan pin-pin berikut:
Enable A
Input 1
Input 2
Output 1
Output 2
Enable B
Input 3
Input 4
Output 3
Output 4
Dalam hal ini, Enable A untuk mengontrol Output 1 dan Output 2. Input 1 menentukan Output 1 dan 1m menentukan Output 2. Hal yang serupa berlaku untuk Enable B, Input 1, Input 2, Output 1, dan Outp Tabel 6.1 memperlihatkan hubungan pin-pin tersebut.
Tabel 6.1 Hubungan pin-pin di motor driver L289N
Enable
Input 1
Input 2
Keterangan
>0
0
1
Berputar ke depan
>0
1
0
Berputar ke belakang
>0
1
1
Berhenti berputar
>0
0
0
Berhenti berputar
0
Motor tidak berputar
Percobaan Tanpa Arduino
Motor driver dapat digunakan untuk menguji putaran motor tanpa harus menggunakan Arduino keperluan ini, sediakan komponen-komponen berikut:
Motor driver L298N
baterai alkaline 9V dan pencoloknya;
motor DC 5V; v/
kabel-kabel penghubung.
Secara bawaan, pin Enable A dan pin Enable B dihubungkan ke pin 5V melalui jumper untuk membuat pin tersebut dalam keadaan HIGH (lihat Gambar 6.19 kiri). Mengingat nilai untuk kedua pin akan dikendalikn Oleh Arduino pada percobaan-percobaan di belakang, kedua jumper yang menghubungkan pin-pin tersebut ke pin 5V perlu dicabut (lihat Gambar 6.19 kanan).
Gambar 6.18 Modul Motor driver LSON L298N
Gambar 6.19 Jumper di modul L298N
Selanjutnya Anda bisa memulai untuk membuat rangkaian seperti terlihat di Gambar 6.20. Rangkaian tersebut digunakan untuk memutar motor yang dihubungkan ke OUT 1 dan OUT 2 searah jarum jam. Hal itu dilakukan dengan membuat Enable A (ENA) dalam keadaan HIGH, Input 1 (IN1) dalam keadaan HIGH dan Input 2 (IN2) dalam keadaan LOW.
Gambar 6.20 Percobaan untuk memutar motor berlawanan arah jarum jam
Pengontrolan Motor DC dengan Arduino
setelah Anda memahami prinsip pemutaran motor pada dua arah yang berbeda, Anda bisa mencoba untuk mengendalikan motor DC dengan menggunakan Arduino. Untuk keperluan ini, silakan susun rangkaian seperti terlihat di Gambar 6.22.
Sketch: hbridge
// ——————————————–
// Contoh pengaturan arah motor
// menggunakan H-bridge L298N
// ——————————————–
int PIN_I1 = 8; // Pin untuk port I1
int PIN_I2= 9; // Pin untuk port I2
int PIN_EA= 11; // Pin untuk port EA / PWM
const int KECEPATAN = 128; // Antara 0 dan 255
void setup ( )
{
pinMode(PIN_I1, OUTPUT);
pinMode(PIN_I2, OUTPUT);
pinMode(PIN_EA, OUTPUT);
// atur kecepatan
analogWrite(PIN_EA, KECEPATAN); // Atur kecepatan
}
void loop ( )
{
// Berlawanan arah jarum jam
digitalWrite(PIN_I1, LOW);
digitalWrite(PIN_I2, HIGH);
delay(2000);
// Stop putaran
digitalWrite(PIN_I1, LOW);
digitalWrite(PIN_I2, LOW);
delay(2000);
// Searah jarum jam
digitalWrite(PIN_I1,HIGH);
digitalWrite(PIN_12,LOW);
delay(2000);
// Stop putaran
digitalWrite(PIN I1,LOW);
digitalWrite(PIN_I2, LOW);
delay(2000);
}
Di setup ( ) , pin S,9, dan 11 diatur dengan mode keluaran. Selanjutnya, kecepatan motor diatur sebesar nilai KECEPATAN. Nilai yang digunakan adalah nilai 128 yang merupakan nilai tengah antara 0 dan 255. Hal ini dilakukan dengan mengirimkan nilai tersebut ke pin Enable. Sebagaimana diketahui, nilai lebih besaro pada pin Enable di modul L29SN berguna untuk mengatur kecepatan.
Berdasarkan Tabel 6.1, Pemberian kode
digital Write (PIN_Il, LOW) ;
digitalWrite (PIN_12, HIGH) ;
membuat motor berputar berlawanan arah jarum jam mengingat INI diisi dengan LOW dan 12 dengan HIGH.
Adapun
digital Write (PIN_Il, HIGH) ;
digitalWrite (PIN_12, LOW) ;
Adapun
digitalWrite(PIN_11, HIGH) ;
digitalWrite (PIN_12, LOW) ;
membuat motor berputar searah jarum jam.
Untuk menghentikan putaran motor, ada beberapa cara yang bisa ditempuh. Salah satu caranya seperti berikut:
digitalWrite (PIN_11, LOW) ;
digital Write (PIN_12, LOW) ;
Baik INI maupun IN2 pada modul L298N diisi dengan LOW.
Dengan dasar seperti di atas, Anda bisa mengembangkan sendiri pengontrolan motor DC dengan menggunakan modul L298N dan Arduino. Sebagai contoh, kecepatan motor dapat diatur melalui potensiometer. Selain itu, Anda bisa mengendalikan dua motor DC sekaligus.
Pengendalian dua motor DC dengan menggunakan L298N bermanfaat untuk pembuatan robot mobil. Dengan menggunakan motor dua DC, dimungkinkan untuk membuat mobil berjalan lurus, mundur, berbelok kiri, ataupun berbelok kanan.