mechatronerz+15 official website
r33x. mechatronic department. in bandung polytechnic for manufacturing.
Don't be hesitated to contact us if you have something to say.

Interface MOTOR SERVO dengan mikrokontroler ATMEGA

| 2 komentar | 16.1.10
|







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:








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




Listing Program dengan CodeVisionAVR :


unsigned char servo;
unsigned char servo_data;
unsigned int t;


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
  t++;
  if (t==2000) t=0;
  if (servo==1)
  {
    if (t<=servo_data)
    {
    PORTD.6=1;
    }
    else
    {
    PORTD.6=0;
    }
  }
  else if (servo==2)
  {
    if (t<=servo_data)
    {
    PORTD.7=1;
    }
    else
    {
    PORTD.7=0;
    }
  }
}


void mservo(int a,int b)
{
        servo= a;
        servo_data= b;
        delay_ms(100);       
}  






void main(void)
{
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
#asm ("sei")
while (1)
      {
                mservo(1,65);
                delay_ms(500);
                mservo(2,100);
                delay_ms(500);
      };
}
}