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- France, 21 November 2007

#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