Novato con Arduino y dos encoder.

Sección General del foro
Responder
Fydo
Pi Newbie
Pi Newbie
Mensajes: 3
Registrado: 19 Dic 2021, 13:15
Agradecido: 1 vez
Agradecimiento recibido: 0

Hola buenas! Soy nuevo en el mundo de Arduino, me dedico a la programación de robótica con lenguaje rapid (Abb robot industrial).

El caso es que quiero hacer lo más simple con un Arduino Uno y dos motores encoder. Tal simple como mover los brazos y las piernas de un Papa Noel artesano para colocar en el balcón.

He creado un programa sencillo, para que primero se lleva un encoder y luego el otro. Pero el problema es que al cabo de unos minutos el Arduino empieza a reiniciarse. Si solo le dejo un encoder, no hay problema pero con los dos es como que le falta chicha.

Le he puesto un adaptador de 12v con 1,5a, le he metido paradas entre movimiento y movimiento por si esto afecta a la placa, pero nada. No hay manera de dejar los dos funcionando.

El programa es este (es el primero que hago). A ver si hay algo que se me escape.

Muchas gracias!!

Código: Seleccionar todo

#include <Servo.h>
 
// Declaramos la variable para controlar el servo
Servo servoMotor;
Servo servoMotor2;
 
void setup() {
  // Iniciamos el monitor serie para mostrar el resultado
  Serial.begin(9600);
 
  // Iniciamos el servo para que empiece a trabajar con el pin 9
  servoMotor.attach(10);

  servoMotor2.attach(11);
  
  servoMotor.write(80);
  servoMotor2.write(80);
}
 
void loop() {
  

mecedor();
mecedor();
mecedor();
mecedor();
mecedor();
escalador();

  
 
  
}

void mecedor() {

  // Desplazamos a la posici贸n 90潞
  servoMotor.write(80);
  // Esperamos 1 segundo
  delay(1000);
  
  // Desplazamos a la posici贸n 0潞
  servoMotor.write(0);
  // Esperamos 1 segundo
  delay(700);

  
}


void escalador() {


// Desplazamos a la posici贸n 0潞
  servoMotor2.write(40);
 
// Desplazamos a la posici贸n 90潞
  servoMotor.write(80);
// Esperamos 1 segundo
  delay(900);
  
  
// Desplazamos a la posici贸n 90潞
  servoMotor2.write(80);
// Desplazamos a la posici贸n 0潞
  servoMotor.write(0);
// Esperamos 1 segundo
  
  delay(800);

  
  
// Desplazamos a la posici贸n 180潞
  servoMotor2.write(20);
// Desplazamos a la posici贸n 90潞
  servoMotor.write(80);
// Esperamos 1 segundo
  delay(800);

// Desplazamos a la posici贸n 180潞
  servoMotor2.write(70);
// Desplazamos a la posici贸n 0潞
  servoMotor.write(0);
// Esperamos 1 segundo
  delay(800);

// Desplazamos a la posici贸n 180潞
  servoMotor2.write(0);
// Desplazamos a la posici贸n 90潞
  servoMotor.write(80);
// Esperamos 1 segundo
  delay(800);

// Desplazamos a la posici贸n 180潞
  servoMotor2.write(80);
  servoMotor.write(0);
// Esperamos 1 segundo
  

  
}
fotoflipao
Pi Alpha
Pi Alpha
Mensajes: 14
Registrado: 20 Dic 2021, 15:19
Agradecido: 0
Agradecimiento recibido: 1 vez

Mis conocimientos son bastante limitados, pero como dices, puede ser que al Arduino le falte "chicha". Que recuerde, las salidas de Arduino tienen muy poca intensidad, como mucho unos 40 mA. Por mucho que lo alimentes con un transformador más tocho no vas a conseguir que de las salidas salga más.

Tampoco dices qué servos estás usando, si requieren más intensidad que esa. Si fuera eso tendrías que usar una fuente de alimentación adicional, que mediante algún transistor tipo TIP120 o similar suministre intensidad suficiente para moverlo a través de la orden que dé desde la salida de Arduino. A mí me pasó con una válvula solenoide; tuve que usar un transistor de ese tipo para poderlo alimentar.
Estos usuarios agradecieron al autor fotoflipao por el mensaje:
Fydo
Fydo
Pi Newbie
Pi Newbie
Mensajes: 3
Registrado: 19 Dic 2021, 13:15
Agradecido: 1 vez
Agradecimiento recibido: 0

fotoflipao escribió: 20 Dic 2021, 16:15 Mis conocimientos son bastante limitados, pero como dices, puede ser que al Arduino le falte "chicha". Que recuerde, las salidas de Arduino tienen muy poca intensidad, como mucho unos 40 mA. Por mucho que lo alimentes con un transformador más tocho no vas a conseguir que de las salidas salga más.

Tampoco dices qué servos estás usando, si requieren más intensidad que esa. Si fuera eso tendrías que usar una fuente de alimentación adicional, que mediante algún transistor tipo TIP120 o similar suministre intensidad suficiente para moverlo a través de la orden que dé desde la salida de Arduino. A mí me pasó con una válvula solenoide; tuve que usar un transistor de ese tipo para poderlo alimentar.
Muchas gracias! Al final pasé a lo mas sencillo: Conectar otro Arduino nano que tenía por ahí. Los encoder creo que necesitaban bastante chicha.
Responder