Hi Chaps,
Here is a good tutorial on standard servos. Basically the duration between pulses is 20mS - at the end of the 20mS period a PWM level is applied between - nominally - 1mS to 2mS where around 1.5mS is the centre - or there abouts. Sometimes, with certain servos, you can exceed the limits as in - less than 1mS and more than 2mS to increase throw, (rotation degrees) - which is mostly limited by the servo end stops and design. that is about is as far as the signalling goes and nothing much more to note.
https://learn.sparkfun.com/tutorials/ho ... torial/all
Keith, you 'seem' to be trying to drive the servo beyond it's normal design limit (180 degrees) ? which may work for some models of the SG90 but not for others.
I am not quite sure as to the capabilities of your specific servos, but the gauges you link to seem to be geared so as not to use > than the servo nominal throw angle.
you can easily test using the following arduino sketch -
Code: Select all
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
You can ignore the pot input for testing and bypass the analogRead and simply alter the 'val' in the myservo.write(val); code to suit ///
Joe.