Servo rotating too slowly
hello all,
i'm working on project requires servo rotate either direction in 60 degrees , return center (a round trip center needs .4 sec or less). have futaba s3003 supposed have rotational speed of .19 sec/ 60 degrees on 6v power feel round trip should take close .38 sec. however, takes closer 1 sec unacceptable. using 6v external power power servo don't think issue.
here code:
as can see, program repeatedly moves servo 60 in 1 direction , center, waits 1 sec moves servo 60 in other direction center. using softwareservo library results same standard servo.h library.
so question doing wrong in code? moving degree @ time seems clumsy way control servo can't seem work other way.
should invest in faster servo? if have suggestions? price not big issue, needs work well.
thanks help
i'm working on project requires servo rotate either direction in 60 degrees , return center (a round trip center needs .4 sec or less). have futaba s3003 supposed have rotational speed of .19 sec/ 60 degrees on 6v power feel round trip should take close .38 sec. however, takes closer 1 sec unacceptable. using 6v external power power servo don't think issue.
here code:
code: [select]
#include <softwareservo.h>
softwareservo _servo;
int servo_pin = 9;
int max_pulse = 2000;
int min_pulse = 800;
int center = 90;
int angle = 70;
int delay = 4;
void setup(){
_servo.attach(servo_pin);
_servo.setmaximumpulse(max_pulse);
_servo.setminimumpulse(min_pulse);
serial.begin(9600);
_servo.write(90);
delay(1000);
}
void loop(){
wackclockwise();
delay(1000);
wackcounterclockwise();
delay(1000);
}
void wackcounterclockwise(){
for(int pos = center; pos < center + angle; pos +=1){//move right
_servo.write(pos);
delay(delay);
softwareservo::refresh();
}
for(int pos = center + angle; pos >= center; pos -=1){//return center
_servo.write(pos);
delay(delay);
softwareservo::refresh();
serial.println(pos);
}
}
void wackclockwise(){
for(int pos = center; pos > center - angle; pos -=1){//move left
_servo.write(pos);
delay(delay);
softwareservo::refresh();
}
for(int pos = center - angle; pos <= center; pos +=1){//return center
_servo.write(pos);
delay(delay);
softwareservo::refresh();
serial.println(pos);
}
}
as can see, program repeatedly moves servo 60 in 1 direction , center, waits 1 sec moves servo 60 in other direction center. using softwareservo library results same standard servo.h library.
so question doing wrong in code? moving degree @ time seems clumsy way control servo can't seem work other way.
should invest in faster servo? if have suggestions? price not big issue, needs work well.
thanks help
the delay in servo control loop taking 4 ms per degree 240 ms (at least) reach 60 degrees. if tell move 90 150 go fast can. need delay wait there can tune time next command (150 90) comes reaches 150.
code: [select]
//servo @ 90°
servo.write(150);
delay(190); //60 degree in 190ms spec
servo.write(90);
delay(190);
Arduino Forum > Using Arduino > Motors, Mechanics, and Power (Moderator: fabioc84) > Servo rotating too slowly
arduino
Comments
Post a Comment