reinicio arduino

Hola buenas tardes

Tengo un motor dc y lo estoy moviendo con l293 , la plataforma en la que esta sujeto tiene dos botones uno arriba y otro abajo
He escrito un programa que mueve el motor de arriba a bajo de forma que cuando llega arriba y pulsa el interruptor, baja hasta pulsar el otro y asi sucesivamente
El problema que tengo es que cuando lo hace varias veces el arduino se reinicia
Alguien sabe por que?
Este es el código:

const int topeSube = 3;
const int topeBaja = 2;
const int ledPin = 13;
const int motor1 = 7;
const int motor2 = 8;
int contador = 0;
int estadoBotonSube = 0;
int estadoBotonBaja = 0;
int ultimoEstadoBotonSube = 0;
int ultimoEstadoBotonBaja = 0;

void setup() {
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(topeSube, INPUT);
pinMode(topeBaja, INPUT);
pinMode(ledPin, OUTPUT);
}
void sube(){
digitalWrite(motor1, HIGH);
digitalWrite(motor2, LOW);
}
void baja(){
digitalWrite(motor1, LOW);
digitalWrite(motor2, HIGH);
}

void loop() {

estadoBotonSube = digitalRead(topeSube);
estadoBotonBaja = digitalRead(topeBaja);
if (estadoBotonSube != ultimoEstadoBotonSube){
if (estadoBotonSube == HIGH){
baja();
}
}
if (estadoBotonBaja != ultimoEstadoBotonBaja){
if (estadoBotonBaja == HIGH){
sube();
}
}
}

un saludo

Hola pulgares

Lo más probable es que la fuente de alimentación que utilizas no tenga potencia suficiente, y cuando arranca el motor y/o cambia de sentido, el consumo que provoca hace que la tensión caiga y no llegue a 7V que es la mínima para que Arduino funcione, haciendo que se resetee.

Prueba a separar la alimentación del motor y del Arduino (uniendo las masas), o a utilizar una fuente de alimentación que pueda suministrar más intensidad.

Saludos

Siguiendo lo que comenta Inuzul en vez de cambiar de sentido bruscamente podrías pararlo y luego cambiarle el sentido. No me acuerdo como se hacía pero hay una manera de frenar el motor mediante el l293. Normalmente el cambio brusco de sentido es cuando más corriente se consume.

hola
Ionhs te refieres al enable?
he probado con otra fuente una de 12v 3,7a juntando las masas y parece que va mejor pero todavia hay veces que se queda parado un rato, parece que el arduino ya no se reinicia .
Tambien he añadido al codigo estas lineas al final:

ultimoEstadoBotonSube = estadoBotonSube;
ultimoEstadoBotonBaja = estadoBotonBaja;
voy a probar con el enable del l293 a ver si asi deja de hacerlo ,
estoy alimentando el l293 con 5v y le meto los 12 por vs , pero me da miedito alimentarlo con 12 v por si me cargo el arduino.
un saludo y gracias

Hola Pulgares,

No te aconsejos que alimentes a 12v la tensión VCC1 del L293D (Alimentación de la parte lógica de entrada) , ya que según el datasheet la tensión máxima que admite es de 7v.

Lo único que se me ocurre es que puedan ser los parásitos de las escobillas del motor, podrías poner unos condensadores de 1uF a masa cada terminal del motor o un condensador (sin polaridad) en paralelo con el motor para eliminar estas chispas, y que no afecten al micro.

NOTA: ¿Se te calienta el L293D mucho? quizás salte la protección térmica del chip.

Saludos

Hola Inizul
No había pensado en las “chispas “ del motor, el caso es que le puse unos led para ver si el arduino mandaba bien los pulsos y resulta que se encienden y apagan correctamente,
Antes se detenía muy a menudo, con las dos fuentes se detiene menos pero todavía hay veces que se para, creo que es del arduino
A ver si puedo subir un video y veis lo que me pasa.
El l293 no se calienta nada va bastante bien , probare con unos condensadores ,
Gracias

perfecto
le he puesto 2 condensadores de 10uf (son los que tenia a mano) en la salida del l293 al motor
y va perfecto
muchas gracias