Go Down

Topic: [SOLUCIONADO] Problema con servos (Read 1 time) previous topic - next topic

jlsogorb

Mar 26, 2018, 08:31 pm Last Edit: Apr 05, 2018, 08:04 pm by jlsogorb
Estoy haciendo un pequeño robot y tengo un problema con los servos (se ponen en marcha nada más arrancar el programa). He probado a dejar solo lo básico:

Code: [Select]
#include <Servo.h>

Servo servoLeft;          // Define left servo
Servo servoRight;         // Define right servo

void setup() {
 servoLeft.attach(10);  // Set left servo to digital pin 10
 servoRight.attach(9);  // Set right servo to digital pin 9
}

void loop() {            // Loop through motion tests
}


Y aún así se ponen en marcha. En principio está bien conectado (cable blanco al 9 y 10 respectivamente). Rojo a + y Negro a - (fuente de alimentación externa).
¿Alguna idea?

surbyte

Corre los ejemplos disponibles en la librería Servo de tu IDE.
Modifica los pines y luego nos dirás como se comportan.

jlsogorb

#2
Mar 26, 2018, 08:48 pm Last Edit: Mar 26, 2018, 09:08 pm by jlsogorb
Gracias, Surbyte. He probado a cargar solo un servo, con el sketch de ejemplo que hay en Arduino, lo he cambiado además al pin 5, pero se sigue poniendo en marcha nada más ejecutar la orden myservo.atach


Code: [Select]
#include <Servo.h>
Servo myservo;  // create servo object to control a servo
void setup() {
 myservo.attach(5);  // attaches the servo on pin 5 to the servo object
}
void loop() {
}

surbyte

Lee los dos privados por favor.

Deja de postear códigos sin etiquetas, lee mi instructivo para editarlos.

jlsogorb


surbyte

Bueno, que Servo usas. No he leído ese dato aún.

jlsogorb

Son 2 Futaba S3003. Están 'tocados' para que puedan girar totalmente. Esta tarde cuando vuelva a casa voy a probar con otra placa de Arduino, a ver si pasa lo mismo.

jlsogorb

#7
Mar 27, 2018, 06:16 pm Last Edit: Mar 27, 2018, 06:46 pm by jlsogorb
Pues nada, esto me está volviendo loco.
Hoy he probado con otra placa de Arduino, he conectado solo un motor (cable rojo a +, negro a - y blanco a la salida 5, con pilas externas y negativos de las pilas y placa Arduino unidas).
He usado uno de los ejemplos de Arduino simplificado:
Code: [Select]
#include <Servo.h>
Servo myservo;  // create servo object to control a servo

void setup() {
  myservo.attach(5); 
}

void loop() {   
  //myservo.write(50);                 
     delay (5000);               
}


Nada más conectarlo y ponerse el programa a andar, se pone en marcha en un sentido y si le quito las '//' del comentario para que funcione con myservo.write, entonces va en sentido contrario. Ya no sé que puede ser. Además he probado con el otro servo y pasa exactamente lo mismo. Si separo las masas, y no lo uno con la placa de Arduino, entonces no me funciona en ningún momento, ni con programa ni sin programa.
El problema parece ser en el momento del 'attach' y pone a girar directamente al revés. En algún foro he leido que problemas similares podrían ocurrir porque en el inicio el Servo tiende a buscar una posición concreta en función de los pulsos que se le envían y que están definidos en Servo.h (DEFAULT_PULSE_WIDTH), pero he probado a ponerle 0 en lugar de los 1500 que tiene por defecto y ocurre lo mismo. ¿qué os parece?

jlsogorb

Buenas de nuevo. Me contesto a mí mismo. Los servos los tengo desde hace años y releyendo sobre el trucaje de los mismos ya me queda la duda si en el momento de desmontarlos, aparte de quitarles el tope mecánico hice lo de la calibración del potenciómetro que veo en algunos artículos. ¿Es posible que sea eso, o que se haya desrregulado por algún motivo?¿Me podéis recomendar alguna página que explique el proceso claramente?

_jose_

a que te refieres con que estan "tocados"? les has quitado el tope y puesto dos resistencias en vez del potenciometro?

tauro0221

Hi,
En el setup despues que definas los pines ejecuta un write a los servos con un angulo de 90 grados. A ver que sucede. Deben de quedarse quietos creo.

jlsogorb

a que te refieres con que estan "tocados"? les has quitado el tope y puesto dos resistencias en vez del potenciometro?
Pues ahí está la cosa, que como lo hice hace mucho tiempo no tengo la seguridad de que le hiciera bien lo de las resistencias. Luego sí que los probe con un ejemplo que movia aleatoriamente el robot para adelante y atrás , pero como lo hacía nada más entrar en el loop no estoy seguro de que no ocurriera lo que me ocurre ahora. Tendré que desmontarlos para asegurarme, lo que pasa es que me toca descuajeringar todo el robot para acceder a los servos :(

Hi,
En el setup despues que definas los pines ejecuta un write a los servos con un angulo de 90 grados. A ver que sucede. Deben de quedarse quietos creo.
Probaré eso que tu dices también. Gracias.

_jose_

#12
Mar 28, 2018, 01:13 pm Last Edit: Mar 28, 2018, 01:14 pm by _jose_
Si las resistencias no son exactamente iguales ,puede ser que la posicion de parado no sea 90 si no algo cercano ,deberas hacer pruebas si no se para en 90.

jlsogorb

#13
Mar 28, 2018, 05:42 pm Last Edit: Mar 28, 2018, 06:08 pm by jlsogorb
Si las resistencias no son exactamente iguales ,puede ser que la posicion de parado no sea 90 si no algo cercano ,deberas hacer pruebas si no se para en 90.
Pues no se paran en 90, de hecho no se paran nunca. He desmontado uno al final y sí que llevan las resistencias (son de 2,2k con un 5% de tolerancia). Me imagino que será por eso.

Las desoldaré y si nos son exactamente igual, me imagino que tendré que conseguir 2 que sean exactas, ¿no?

surbyte

No te apures. Espera a _jose_ que te aconseje

Go Up