Pendahuluan
Motor DC, stepper dan servo merupakan aktuator yang paling banyak digunakan pada sistem otomasi industri dan robotika. Masing-masing motor tersebut mempunyai teknik pemrograman dan karakteristik tersendiri. Pada praktikum ini, lebih ditekankan konsep pemrograman motor stepper dan motor servo continuous parallax.
Tujuan Praktikum
1. Praktikan dapat menjelaskan cara pemrograman motor DC, stepper dan servo.
2. Praktikan dapat memprogram motor stepper dan servo untuk berputar ke kiri dan ke
kanan.
3. Praktikan mengusulkan suatu rancangan sistem elektronika berbasiskan motor DC,
stepper dan servo pada lengan robot
Konsep Motor Stepper
Motor stepper banyak digunakan untuk aplikasi-aplikasi yang biasanya cukup menggunakan torsi yang kecil, seperti untuk penggerak piringan disket atau piringan CD. Motor stepper merupakan motor DC yang tidak memiliki komutator. Pada umumnya motor stepper hanya mempunyai kumparan pada statornya sedangkan pada bagian rotornya merupakan magnet permanen. Dengan model motor seperti ini maka motor stepper dapat diatur posisinya pada posisi tertentu dan/atau berputar ke arah yang diinginkan, searah jarum jam atau sebaliknya. Kecepatan motor stepper pada dasarnya ditentukan oleh kecepatan pemberian data pada komutatornya. Semakin cepat data yang diberikan maka motor stepper akan semakin cepat pula berputarnya.
Berikut ini tabel logika untuk menggerakkan stepper motor bipolar yang dapat diterapkan pada motor stepper merek Mitsumi 9V standar.
Keterangan
Urutan data ke bawah, arah : CCW
Urutan data ke atas, arah : CW
Gambar di bawah ini menampilkan penggunaan driver L293D untuk dapat menggerakkan motor stepper / motor DC karena membutuhkan arus yang cukup besar. 4 jalur output pada IC tersebut dapat mengendalikn 1 buah stepper motor atau 2 buah motor DC. Untuk motor DC, cukup berikan logika high atau low di salah satu pin dari 2 pin yang digunakan oleh tiap motor, dimana logika high /low tesebut menentukan arah putar motor DC.
Konsep Servo Motor
Servo motor banyak digunakan sebagai aktuator pada mobile robot atau lengan robot. Servo motor umunya terdiri dari servo continuous dan servo standar. Servo motor continuous dapat berputar sebesar 360 derajat.. Sedangkan servo motor tipe standar hanya mampu berputar 180 derajat. Servo motor yang umum digunakan ialah Continuous Parallax. Namun jika Anda ingin servo motor yang berkekuatan besar dan cepat, idealnya Anda milliki servo HS-311 (continuos ) dan servo HS-322HD(standar).
Untuk menggerakkan motor servo ke kanan atau ke kiri, tergantung dari nilai delay yang kita berikan. Untuk membuat servo pada posisi center, berikan pulsa 1.5ms. Untuk memutar servo ke kanan, berikan pulsa = 1.7ms untuk berputar ke kiri dengan delay 20ms, seperti ilustrasi berikut:
Spesifikasi dari servo continuous parallax ialah:
§ Power 6vdc max
§ Average Speed 60 rpm - Note: with 5vdc and no torque
§ Weight 45.0 grams/1.59oz
§ Torque 3.40 kg-cm/47oz-in
§ Size mm (L x W x H) 40.5x20.0x38.0
§ Size in (L x W x H) 1.60x.79x1.50
§ Manual adjustment port
Penerapan pada Program
Percobaan 1. Memutar motor stepper
Langkah-langkahnya:
1. Siapkan SmartAVR Robotics ver 2.0, dan hubungkan dengan kabel AVR ISP Programmer ke PC.
2. Hubungkan stepper motor dengan output L293D di port D.
3. Buat program di bawah ini :
Stepper.c:
// Percobaan 9.1, Percobaan stepper motor
// LED terhubung di Port B
#include
#include
flash unsigned char string[]={data stepper};
void main(void) {
unsigned char i;
PORTC=0x00;
DDRC=0x00; //PC0-PC7 sebagai input
PORTD=0xFF;
DDRD=0xF0; //PD4-PD7 sebagai output
i=1;
while (1)
{
if (PINC.0==0) //Jika tombol yang terhubung dengan PC0 ditekan,
{ // maka motor stepper berputar CW half step
i--;
if (i==0xFF) i=7;
PORTD=string[i];
}
else //Jika tombol PC0 tidak ditekan, motor stepper berputar CCW half step
{
i++;
if (i==8) i=0;
PORTD=string[i];
}
delay_ms(100); // Delay bouncing saklar
PORTD=0; //Nilai logika stepper = '0'
};
}
4. Kompilasi dan jalankan, maka motor stepper akan bergerak dengan arah sesuai dengan penekanan saklar di Port C.0
Percobaan 2. Mengendalikan motor stepper melalui port serial PC
Langkah-langkahnya:
1. Siapkan SmartAVR Robotics ver 2.0, dan hubungkan dengan kabel AVR ISP Programmer ke PC. Hubungkan juga kabel serial mikrokontroler ke PC.
2. Hubungkan stepper motor dengan output L293D di port D.
3. Buat program pendeteksian penerimaan angka 0 dan 1 melalui port serial. Jika data yang diterima ialah karakter a, maka motor stepper akan bergerak ke kanan, jika data yang diterima ialah karakter b, maka motor stepper bergerak ke kiri, seperti contoh berikut:
SerialStepper.c:
//Percobaan 9.2, Pengendalian putaran motor Stepper dengan VB .Net 2005
//Buah karya Mr. Widodo
//Le Creusot- France, 21 November 2007
#include
#include
flash unsigned char string[]={0x80,0xC0,0x40,0x60,0x20,0x30,0x10,0x90};
void main(void) {
unsigned char i; unsigned char data;
UCSRA=0x00; //konfigurasi baud rate 9600bps
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0X00;
UBRRL=0X19;
PORTD=0xFF;
DDRD=0xF0; //PD4-PD7 sebagai output
i=1;
while (1) {
while (UCSRA.7) //Apakah ada data baru yang belum dibaca
{
data=UDR;
PORTB=data; // data dikirim ke Port B
}
if (data==’a’) //Jika karakter a dikirim,
{ // maka motor stepper berputar CW half step
i--;
if (i==0xFF) i=7;
PORTD=string[i];
}
if(data==’b’) //Jika karakter b dikirim,
{ //motor stepper berputar CCW half step
…
}
delay_ms(100); //Untuk bouncing saklar
PORTD=0; //Nilai logika stepper = '0'
};
}
4. Buat form VB .Net seperti gambar bawah ini :
Gambar 9.4 Form yang harus dibuat
5. Kita akan mengggunakan file library Mr_Widodo.dll yang dapat diunduh di www.widodo.com. Tambahkan referensi dengan cara klik Add Reference pada Solution Explorer, lalu pilih Mr_Widodo.dll, yang berisi fungsi-fungsi untuk komunikasi serial dan paralel.
6. Masukkan kode berikut:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
tampilkanport()
Dim about As New Mr_Widodo.KomunikasiSerial
Label3.Text = about.DisplayPembuat
End Sub
…
Private Sub btnPutarKiri_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPutarKiri.Click
Dim Serial As New Mr_Widodo.KomunikasiSerial ‘buat objek
Serial.KirimDataSerial("a", cbPort.Text) ‘Putar kiri
End Sub
Private Sub btnPutarKanan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Serial As New Mr_Widodo.KomunikasiSerial
Serial.KirimDataSerial("b", cbPort.Text) ‘Putar Kanan
End Sub
End Class
7. Jalankan program, dan pastikan mikrokontroler telah berisi program pendeteksian penerimaan karakter a dan b dari port serial yang telah Anda buat sebelumnya. Klik button pada form tersebut, dan lihat hasil pergerakan motor stepper.
Percobaan 3. Pemrograman Servo Continuous Parallax
Langkah-langkahnya :
1.Siapkan SmartAVR Robotics ver. 2.0, dan hubungkan dengan kabel AVR ISP Programmer
ke PC. Hubungkan juga kabel serial mikrokontroler ke PC.
2.Hubungkan motor stepper di port D.0, berikut susunan kabel servo:
Gambar 9.5 Susunan kabel servo motor
2. Buat program di bawah ini:
Servo.c:
// Percobaan 9.3, Percobaan pemutaran Servo Continous Parallax
// LED terhubung di Port B
#include //Menyertakan library file ATmega16
#include
unsigned char j=0;
void putar_kanan (void) {
PORTD.0=1;
for (j=1; j<=220; j++)
delay_us(10);
PORTD.0=0;
delay_ms(20);
}
void putar_kiri (void) {
…);
}
void main(void) {
PORTD=0xFF;
DDRD=0x01; //PD0 sebagai output
UCSRA=0x00; //konfigurasi baud rate 9600bps
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0X00;
UBRRL=0X19;
PORTD=0xFF;
DDRD=0xF0; //PD4-PD7 sebagai output
i=1;
while(1) {
while (UCSRA.7) //Apakah ada data baru yang belum dibaca
{
data=UDR;
}
if (data==0x30) //Jika angka 0/data 0 dikirim
{
putar_kanan(); //putar kanan
}
if (data==0x31) //Jika angka 1/data 1 dikirim
{
putar_kiri(); //putar kiri
}
};
}
3. Jalankan program, berikan angka 0 atau 1 pada Hyperterminal, lihat pergerakan motor servo tersebut.