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:

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

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62