and i want make modification that servo can continuous rotate. I managed to modify servo but every time when i send the command to stop servo (servo.write(90);), servo every one second make a small turn, so my modification didnt work 100 %.
Then i found tutorial for continuous rotate that use 2 resistors and one wire instead of potentiometer and this work like a charm, but this mod is for other type of servos.
My question is: Can i use 2 resistor and one wire on my mini servos? Or will be damaged?
A common problem with servos modified for continuous rotation is they have to
be specifically calibrated so they stop moving when you send 1500-usec pulses.
This entails carefully adjusting the internal pot, however the pot resistances
tend to drift a little with time and temperature.
Short of going to carefully selected resistor values, 2 other things to try are:
find the pulsewidth that exactly stops the servo, and use that for your neutral
value [may have to be readjusted over time].
turn off the control pulses when you want the servo to stop.
I find #1 actually works fairly well for my robot servo tank.
You will need to use writeMicroseconds to be able to accurately get the servo to stop. Below is some test code you can try to setup the pot on your servo.
// zoomkat 10-22-11 serial servo test
// type servo position 0 to 180 in serial monitor
// or for writeMicroseconds, use a value like 1500
// for IDE 0022 and later
// Powering a servo from the arduino usually *DOES NOT WORK*.
String readString;
#include <Servo.h>
Servo myservo; // create servo object to control a servo
void setup() {
Serial.begin(9600);
myservo.writeMicroseconds(1500); //set initial servo position if desired
myservo.attach(7); //the pin for the servo control
Serial.println("servo-test-22-dual-input"); // so I can keep track of what is loaded
}
void loop() {
while (Serial.available()) {
char c = Serial.read(); //gets one byte from serial buffer
readString += c; //makes the string readString
delay(2); //slow looping to allow buffer to fill with next character
}
if (readString.length() >0) {
Serial.println(readString); //so you can see the captured string
int n = readString.toInt(); //convert readString into a number
// auto select appropriate value, copied from someone elses code.
if(n >= 500)
{
Serial.print("writing Microseconds: ");
Serial.println(n);
myservo.writeMicroseconds(n);
}
else
{
Serial.print("writing Angle: ");
Serial.println(n);
myservo.write(n);
}
readString=""; //empty for next input
}
}