
Motor Stepper dan Servo
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.

Gambar 9.1 Stepper motor 4 phase
Berikut ini tabel logika untuk menggerakkan stepper motor bipolar yang dapat diterapkan pada motor stepper merek Mitsumi 9V standar.
Tabel 9.1
Tabel logika
motor stepper
|
No |
Half step(8 siklus) / Full step(4 siklus) |
|||
|
A (PD7) |
B (PD6) |
C (PD5) |
D (PD4) |
|
|
1 |
1 |
0 |
0 |
0 |
|
2 |
1 |
1 |
0 |
0 |
|
3 |
0 |
1 |
0 |
0 |
|
4 |
0 |
1 |
1 |
0 |
|
5 |
0 |
0 |
1 |
0 |
|
6 |
0 |
0 |
1 |
1 |
|
7 |
0 |
0 |
0 |
1 |
|
8 |
1 |
0 |
0 |
1 |
|
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.

Gambar 9.2 Driver L293D untuk Motor
Stepper/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.3ms, dan pulsa >= 1.7ms untuk berputar ke kiri dengan
delay 20ms, seperti ilustrasi berikut:
.


Gambar
9.3 Nilai pulsa untuk menggerakkan motor
servo
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 <mega16.h>
#include <delay.h>
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-
#include
<mega16.h>
#include <delay.h>
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 <mega16.h> //Menyertakan library file ATmega16
#include <delay.h>
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.
Tugas Pendahuluan
1. Jelaskan cara stepper motor bipolar dan unipolar.
2. Jelaskan cara kerja motor DC dengan gearbox dan servo motor.
3. Jelaskan fitur PWM (Pulse Width Modulation) pada mikrokontroler ATmega16.
Tugas Akhir Praktikum
1. Buatlah rancangan dan
program lengan robot 5 Degree of Freedom (DOF) menggunakan motor servo dan stepper yang dapat dikendalikan dari port serial PC seperti contoh berikut:

Gambar 9.6 Lengan Robot
5 DOF
Miliki materi lengkap ini :
Panduan Praktikum Mikrokontroler AVR ATmega16
Terbitan Elex Media Komutindo,
Januari 2008
Pesan ke Widodo@widodo.com atau desy@elexmedia.co.id