Hola estoy intentando trucar un servo micro servo 9g sg90 tower pro. He quitado la pestaña que tiene el eje del engranaje para que pueda girar libremente.
Ahora tengo 3 cables y los he conectado asi:
marron = gnd
rojo = 5v
naranja = control
¿a la hora de programar el servo para que gire con meterle 5v por control es sufieciente? (eso es lo que hago y no me funciona, solo cuando conecto y desconecto el control gira un poco) ¿o tal vez tengo que seguir usandolo como un servo, mandado pulsos de x tiempo...
¿Como hago para que gire en los 2 sentidos?
Una solución sería quitar todo el sistema de control y usarlo como un motor dc pero prefiero no hacerlo. Haber si alguien puede comentar que es lo que hago mal. Salu2
La verdad nunca lo he intentado aunque por lo que he ledido, ademas de cortar la pestaña deberias eliminar el potenciometro yu sustituirlo por dos resistencias; o por lo menos eso es lo que recuerdo.
Se supone que luego lo puedes usar como un servo normal
lo de eliminar la placa por lo menos yo no lo veo del todo util, ademas que como controlar el movimiento que hace y la posicion en la que esta?
Por lo que tengo entendido cuando lo trucas es para que gire como un motor por lo que no controlas en que posición está. Para controlar la posición ya tienes el servo sin trucar. Si quito la placa necesito un puente H para el motor, esa es la pega que tiene.
Lo de quitar el potenciometro y sustituirlo por dos resistencias es cuando el potenciómetro hace a la vez de eje de engranaje, asi el propio potenciometro limita el giro del motor. Cada vez estoy viendo más esta configuración y la verdad es que no me entusiasma demasiado, para trucar es una faena.
una vez truqué uno quitandole la pestaña y sacando el potenciómetro fuera, así giraba a la derecha sin parar cuando el duttycicle era superior al 50% y a la izq si era menor. además con control de velocidad. se consigue un motor bidireccional controlado por pwm, pero sin ser unas velocidades extrepitosas
las resistencias que se le ponen era para mantenerlo en la posicion central, yo le dejé el pot fuera pue además limita también el movimiento del mismo.
Primero acondicionar piñonería para que pueda girar libremente, en tu caso la pestañita.
Segundo el potenciómetro. Lo tenemos que engañar para que crea que está en el centro, la forma cutre es con una gota de loctite (primero hay que centrarlo muy bien con un tester, personalmente no lo recomiendo), la forma chachi es sustituirlo por dos resistencias de 5KOhm.
Desde el sketch lo trataremos como si el servo estuviese completo, es decir, con la librería servo.h y dándole grados, con la diferencia de que si lo tenemos en la posición 90º estará quieto, por encima girará en un sentido y por debajo girará en el otro sentido.
Para los radicales: podemos quitar el potenciómetro y el resto de la circuitería al servo, lo dejamos en un motor DC con piñonería reductora y lo pilotamos a través de un transistor de potencia (si solo queremos que gire en un sentido) o a través de un puente en H (si queremos que pueda girar en dos sentidos).
Primero acondicionar piñonería para que pueda girar libremente, en tu caso la pestañita.
Segundo el potenciómetro. Lo tenemos que engañar para que crea que está en el centro, la forma cutre es con una gota de loctite (primero hay que centrarlo muy bien con un tester, personalmente no lo recomiendo), la forma chachi es sustituirlo por dos resistencias de 5KOhm.
Desde el sketch lo trataremos como si el servo estuviese completo, es decir, con la librería servo.h y dándole grados, con la diferencia de que si lo tenemos en la posición 90º estará quieto, por encima girará en un sentido y por debajo girará en el otro sentido.
Para los radicales: podemos quitar el potenciómetro y el resto de la circuitería al servo, lo dejamos en un motor DC con piñonería reductora y lo pilotamos a través de un transistor de potencia (si solo queremos que gire en un sentido) o a través de un puente en H (si queremos que pueda girar en dos sentidos).
Un saludo.
No lo podria haber explicado mejor. Esto es muy util para ahorrar elementos en el control de un motor dc, simplemente hay que usar un servo modificado de esta manera, ademas si lo pones en el centro con el control, el valor que le pongas por ejemplo 90º, el motor se frena y se queda bloqueado en una posición.
Toma pedazo explicación, creo que lo tengo claro, haber si mañana lo abro otra vez para mirarlo y confirmo lo que josemanu nos ha comentado. Salu2
josemanu:
Trucar un servo de radio-control:
Primero acondicionar piñonería para que pueda girar libremente, en tu caso la pestañita.
Segundo el potenciómetro. Lo tenemos que engañar para que crea que está en el centro, la forma cutre es con una gota de loctite (primero hay que centrarlo muy bien con un tester, personalmente no lo recomiendo), la forma chachi es sustituirlo por dos resistencias de 5KOhm.
Desde el sketch lo trataremos como si el servo estuviese completo, es decir, con la librería servo.h y dándole grados, con la diferencia de que si lo tenemos en la posición 90º estará quieto, por encima girará en un sentido y por debajo girará en el otro sentido.
Para los radicales: podemos quitar el potenciómetro y el resto de la circuitería al servo, lo dejamos en un motor DC con piñonería reductora y lo pilotamos a través de un transistor de potencia (si solo queremos que gire en un sentido) o a través de un puente en H (si queremos que pueda girar en dos sentidos).
sigo con problemas no consigo que funcione como un motor. Al principio puse el potenciometro en la mitad (con el polimetro) y hizo lo mismo que ahora. Ahora he anulado el potenciometro y en su lugar he puesto 2 resistencias de 5K pero funciona igual de mal que con el polimetro. Gira hacia un lado y gira hacia el otro, pero no se para completamente al enviar 90, baja la velocidad pero no se para. Os pongo el programa:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int val=0; // variable que controla el giro
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
Serial.begin(9600); //
}
void loop()
{
val=0;
myservo.write(val); // gira a un lado
Serial.println(val,DEC);
delay(1000); // waits for the servo to get there
val=90;
myservo.write(val); //paramos el servo
Serial.println(val,DEC);
delay(1000);
val=180;
myservo.write(val); // gira al otro lado
Serial.println(val,DEC);
delay(1000);
val=90;
myservo.write(val); // paramos el servo
Serial.println(val,DEC);
delay(1000);
}
Os pongo un video para que vais que hace aunque falta luz y se ve mal - YouTube
A mi me da la sensación que con los 2 resistencias de 5K no está equilibrado el potenciometro. He medido el potenciometro y me da 5K22 ohms no tendría que poner 2 resistencias de 2K61 para que estuviera equilibrado? Como no tengo muchas resistencias a mano no puedo probarlo. Alguna idea?
No tengo demasiada idea, pero realmente de lo que sean 2 resistencias de 5k es un poco erróneo, ya que todo depende del potenciómetro del servo (no me he puesto a desmontar servos pero supongo que habrá de distintos valores). El tema es que las 2 resistencias sumadas sean de valores parecidos al potenciómetro del servo, aunque no creo que sea necesario una precisión absoluta, ni mucho menos, según he leído en esta guía para trucarlo lo que realmente es importante es que sean idénticas para "engañar" al servo y se crea que esta en el medio. Asi que siendo el potenciómetro de mas o menos 5, con que pongas las resistencias de 2.7k o 3.3k debería funcionar.
Gracias LuisAntonio conocía la web pero esta vez lo he leido muy detenidamente y me ha mosqueado esta frase:
Este servo tiene un potenciometro de 4.7K, asi que debemos utilizar resistores de 2.2K (o de 2.7K e incluso, de 3.3K).
Es importante que sean muy similares para que la electrónica crea que el cursor del potenciometro se encuentra en el centro. Si no fuesen identicos, el trucaje funcionará igual, pero deberemos compensar esta diferencia desde el software.
Así que en vez de meter números al azar he creado un bucle for para que envié el ángulo de 0 a 180 y he visto que cuando llega a 83 se para el motor y si el número es mayor gira en el otro sentido. Depende de las resistencias hay que buscarle el punto donde se para. Otra de las dudas que tenía es si la velocidad es constante o se puede variar. Os comento que se puede variar ya que si el ángulo está cerca del punto medio la velocidad es más lenta.
#include <Servo.h> // 83 se para el programa
Servo myservo; // create servo object to control a servo
int val; // variable que controla el giro
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
Serial.begin(9600); //
}
void loop()
{
for(val=0;val<=180;val++)
{
myservo.write(val); // Metemos al servo la señal de control, 90=stop 180=adelante y 0=atras
Serial.print("angulo ");
Serial.println(val,DEC);
delay(2000); // waits for the servo to get there
}
}
realmente el valor de las resistencias es lo de menos, deben ser del mismo orden, de unos pocos Kohms y deben ser iguales.
Si el pot es de 10K, puedes poner 2 resistencias de 5K, de 10K, 15K da igual.
¿como de iguales ? con las de tolerancia del 5% es suficiente ( las que podamos tener cualquiera en casa)
Por qué? porque un potenciómetro normal no tiene tanta precisión para ajustar la resistencia, también tiene una tolerancia.
Además estos valores varían con la temperatura.
es un divisor de tensión, se trata de que en el punto de unión de las 2 resistencias haya justo la mitad de la tensión que se aplica al conjunto de resistencias.
Como han dicho también se puede compensar por soft.