Go Down

Topic: Problemas con Arduino Nano y Servos Futaba S3003 (Read 670 times) previous topic - next topic

IsaacMorenoMasvidal

Hola a todos, soy nuevo en este mundo de Arduino y tengo un problema con dos servos futaba S3003.

Les explico lo que me sucede. He realizado el circuito que les muestro en la imagen y he programado la placa de arduino Nano con el programa que les muestro al final del post. Cuando conecto la placa al ordenador portatil todo funciona perfectamente pero si conecto la placa a una bateria externa de 6v-12v (pilas CR2032 de 3v)  no funciona nada. Bueno, el led de la placa parpadea constantemente y parece como si no se activara el programa que tiene instalado.

He medido (con un voltímetro) el voltaje de salida del USB del ordenador portatil y son 5.15V y la bateria externa oscila entre los 5.75v-11.05v.

El programa sirve para abrir el casco de Ironman y lo que hace el programa es que cuando se presiona el interruptor los servos giran 180º y se apagan los leds y cuando se vuelve a presionar el interruptor los servos vuelven a la posición inicial y las luces se encienden.

Quiero poner las baterias dentro del casco de Ironman pero sinó funcionan los servos ni la placa sin estar conectados al ordenador portatil , no tengo ni idea como solucionarlo.

Espero que me puedan ayudar con este problema.

Muchas gracias por vuestra atención.

#include <Servo.h>
//servo 1
Servo myservo;
Servo myservo1;
int val; // variable for reading the pin status
int val2; // variable for reading the delayed/debounced status
int buttonState;
int pos = 0;
int pos1 = 180;
int servostatus = 0;
int switchPin =2; // Switch connected to digital pin 2
int ledPin = 5;
int ledPin2 = 18;
void setup() // run once, when the sketch starts
{
//servo 1

myservo.attach(9);
myservo1.attach(10);
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
buttonState = digitalRead(switchPin);
myservo.write(0);
myservo1.write(175);
pinMode(ledPin2, OUTPUT);
}

void loop() // run over and over again

//servo 1
{
val = digitalRead(switchPin); // read input value and store it in val
delay(10); // 10 milliseconds is a good amount of time
val2 = digitalRead(switchPin); // read the input again to check for bounces
if (val == val2) { // make sure we got 2 consistant readings!
if (val != buttonState) { // the button state has changed!
if (val == LOW) { // check if the button is pressed
if (servostatus == 0) { // is the light off?
servostatus = 1; // turn light on!

myservo.write(0);
myservo1.write(180);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);


// fading
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
delay(30);


}

} else {
servostatus = 0; // turn light off!


digitalWrite(ledPin, LOW);
delay(15);
digitalWrite(ledPin2, LOW);
myservo.write(180);
myservo1.write(0);

}
}
}
buttonState = val; // save the new state in our variable
}
}

tauro0221

Hi,
Si yo lo entiendo tu estas usando baterias CR2032 creo en serie para producir 6 a 12 voltios para mover dos servos. Tu sabes cual es la corriente max de la bateria CR2032 son mas o menos .2 miliamperios. tu crees que con esa corriente podras mover dos servos Futaba S3003 que cada uno require 8 ma. cuando estan inactivos. Vaz tener que usar una bateria mas fuerte que sea suficiente para mover los sevos

IsaacMorenoMasvidal

Muchas gracias por contestar tan deprisa. ¿Entonces que bateria puedo poner para que me quepa dentro del casco de Ironman, no abulte mucho y que tenga suficientes mA para mover los servos?

tauro0221

Hi,
Podrias decir el tamano del casco de IROMAN pues no tengo idea de tamano. Todo de depende cuanto tiempo ejecuta el switche para poder deterrminar que bateria necesitas y el tamano.

surbyte

Por favor lee las normas del foro y edita tu post inicial para que el código luzca como se espera usando etiquetas </> y la imagen sea visible.

Go Up