7 Januari 2017 hendril satrian purnama arduino, CV-AVR, learning, microcontroller, robotic,
technologyakses, arduino, control, elektro, hitec, mikrokontroller, programming, pulse, pwm,
robot, servo, teknologi
Motor servo adalah sebuah perangkat atau aktuator putar (motor) yang dirancang dengan sistem
kontrol umpan balik loop tertutup (close loop), sehingga dapat di set-up atau di atur untuk
menentukan dan memastikan posisi sudut dari poros output motor.
Pada umumnya terdapat 2 tipe motor servo yaitu servo standard dan servo rotation (continuous).
Dimana biasanya untuk tipe standar hanya dapat melakukan pergerakan sebesar 180° sedangkan
untuk tipe continuous dapat melakukan rotasi atau 360°.
Pada postingan kali ini sya akan menjelaskan tentang servo standar yang hanya dapat berputar
180°. Salah satu servo standar yang paling sering dipakai adalah servo HITEC dimana servo
hitec sendiri memiliki performa yang cukup baik di kelasya… Lets Cek it out…
Pada dasarnya motor servo tersusun dari motor DC, rangkaian kontrol, gearbox dan
potensiometer. Berikut gambar motor servo beserta komponen internal motor servo.
Prinsip Kerja :
Motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide
Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan
menentukan posisi sudut putaran dari poros motor servo. Sebagai contoh, lebar pulsa dengan
waktu 1,5 ms (mili detik) akan memutar poros motor servo ke posisi sudut 90⁰. Bila pulsa lebih
pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰ atau ke kiri (berlawanan dengan arah
jarum jam), sedangkan bila pulsa yang diberikan lebih lama dari 1,5 ms maka poros motor servo
akan berputar ke arah posisi 180⁰ atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan
gambar dibawah ini ;
Ketika lebar pulsa kendali telah diberikan, maka poros motor servo akan bergerak atau berputar
ke posisi yang telah diperintahkan, dan berhenti pada posisi tersebut dan akan tetap bertahan
pada posisi tersebut. Jika ada kekuatan eksternal yang mencoba memutar atau mengubah posisi
tersebut, maka motor servo akan mencoba menahan atau melawan dengan besarnya kekuatan
torsi yang dimilikinya (rating torsi servo). Namun motor servo tidak akan mempertahankan
posisinya untuk selamanya, sinyal lebar pulsa kendali harus diulang setiap 20 ms (mili detik)
untuk menginstruksikan agar posisi poros motor servo tetap bertahan pada posisinya.
/*****************************************************
#include
#include
#include
#include
if (data>2400)data=1500;
if (data<500)data=1500;
sv=n*data;
sprintf(buff,"Data : %d ",data);
lcd_gotoxy(0,1);
lcd_puts(buff);
lcd_gotoxy(0,0);
lcd_putsf("--MICRO SERVO--");
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out
Func0=Out
// State7=T State6=T State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x3F;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTC=0x7F;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 16000,000 kHz
TCCR0=0x01;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Characters/line: 16
lcd_init(16);
lcd_clear();
#asm("sei")
while (1)
{
// Place your code here
run();
}
}
#include
Servo myservo;
int potpin = 0;
int val;
void setup()
{
myservo.attach(9);
}
void loop()
{
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 180);
myservo.write(val);
delay(15);
}
Rangkaian :
……