Arduino con L298 solo funciona con USB

Hola! Les acerco un problema que seguramente será muy simple pero a mi me está llevando su tiempo...

Tengo un arduino UNO con un controlador de motores L298. Quiero hacer una prueba de motores simple para luego poder controlarlos de otra forma.
Código:
// Motor A
const int ENA = 5; // Pin PWM
const int IN1 = 2;
const int IN2 = 3;

int velActualA = 0 ; 

///
void setup() {
    Serial.begin(9600);
 
    // Motores
    pinMode(ENA, OUTPUT);

    pinMode(IN1, OUTPUT);
    pinMode(IN2, OUTPUT);

 

}
 
void loop() {

 
 { 
    
        avanzaA();

 }
 
 
}

 
void avanzaA() {
   
 
  
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    velActualA=1000;
    analogWrite(ENA, velActualA);
}


El asunto es que enchufando el arduino al USB hace un sonido "continuo". Y el motor acciona de forma continua.

Cuando lo conecto a traves de Vin el arduino y uso la misma fuente de alimentación (7-9V) para alimentar el circuito L298 el funcionamiento es totalmente diferente: funciona como un motor paso a paso muy lento. Apenas acciona los motores a frecuencia muy baja.

Necesito incorporar algo extra al circuito?

Los 0v del arduino y el L298 son los mismos.

Si es necesario algún dato mas lo puedo aportar. Estoy algo complicado con este tema, si alguien me puede dar una mano se lo agradecería enormemente!
 
Como tienes conexionado el arduino y el L298 y sus alimentaciones?. edita esquema de conexionado, puede ser que la fuente que alimenta arduino no tenga suficiente intensidad, etc.
 
La fuente de 5V interna del arduino es minúscula, si has conectado de ahí el motor lo raro es que se mueva y que el arduino siga vivo.
 
Te adjunto un boceto del conexionado. A mi también me llama mucho la atención que el motor gire solo con la alimentación del USB.

Hay alguna configuración en el L298 que no estoy teniendo en cuenta?

El motor es muy chico, son de juguete, con 3V funciona.
 

Adjuntos

  • shot.jpg
    shot.jpg
    54.6 KB · Visitas: 51
Mmmm... si fuera un problema de software podría ser que al conectarlo por USB el arduino aumenta su velocidad de clock, y que cuando esta sin USB usa una frecuencia de reloj más baja. Esto es pura suposición, verificar (ver el código fuente para la placa Arduino de que se trate).

http://www.arduino.cc/en/Reference/AnalogWrite
On the Uno and similar boards, pins 5 and 6 have a frequency of approximately 980 Hz

Esa frecuencia es baja para hacer PWM con un motor, más si el motor es chico (menos carga, constante de tiempo más chica => responde más rápido y sigue mejor a la onda PWM). Para un motor chico empezar con 10KHz y subir si el problema sigue.
¿Como se hace eso en Arduino?, ni idea, quizás otros foristas puedan ayudar con eso.
 
Hoy a la noche cuando llegue a mi casa voy a hacer algunas pruebas mas, le voy a sacar una foto si puedo y se las paso. El L298 que uso es este:

Código:
https://tienda.patagoniatecnology.com/producto/puente-h-l298-2/

El único incoveniente que tengo es que el boton "Logic power supply button" no lo tengo, es decir, el docente cuando me pasó el módulo, no me dió ese componente porque lo había perdido. Tal vez esto tenga algo que ver...

El AnalogWrite de arduino tiene un duty de 0 a 255.

Voy a probar con la alimentación externa y un duty de 255 a ver si responde.
 
Si u no hablo de voltios, hablo de amperios.
Que funcione con 3V no significa que no tumbe la fuente del arduino que es "de juguete"
Prueba a alimentar el motor de otro sitio
 
Realiza los puentes correspondientes para simular el botón que te falta en el circuito, las características del circuito dicen que si la alimentación es mayor de 7 vcc, necesitas los 5 vcc que genera el regulador interno.
Logic Level Power Vss: +5 V ~ +7 V (Onboard 5V Regulator can be used if Motor Power is > 7.0V)
.
Por esa razón cuando lo alimentas vía USB funciona y con alimentación externa no te regula bien.

http://saber.patagoniatecnology.com/puente-h-l298-modulo-2/
 
Por ahora no he podido hacer cambio significativo.. pero si note que en condicion de alimentación externa el LED L parpadea 3 veces y luego se apaga. Este ciclo lo hace de forma indefinida... eso el Arduino lo hace cuando se resetea. Eso otorga alguna pista adicional al tema?
 
Si, estoy un 99% seguro que es por la regulación de la fuente. Es una fuente comercial que tiene varias regulaciones de voltaje: 1.5V, 3V, 4.5V, 6... hasta 12. Pero tiene de corriente máxima unos 500ma. Eso probablemente sea así con 1.5V pero cuando la hago funcionar con 6V la corriente debe ser mucho menor y el arduino se me resetea constantemente.

Ahora estoy en el trabajo pero cuando vuelva a mi casa lo chequeo. Muchas gracias por sus respuestas.
 
Buenas tardes, he intentado con
Fuente de Linksys de 12V y 1A. Resultado: activa el motor pero nuevamente resetea el arduino.
Fuente de 9V y 500ma. No llega a accionar los motores
Fuente de celular nokia de 5V (que en realidad era 8,5 sin regular..) y no llega ni a accionar el motor.



Es un tema de la fuente y el amperage que necesita pero el arduino se me resetea, estoy pensando que hay una caida de tensión cuando el motor se acciona y eso provoca el reset. Hay alguna forma para evitar que esto pase? Porque no quiero andar comprando una fuente de alimentación para que después no funcione :cry:
 
Apreciado heimmer, para realmente poderte ayudar el esquema de tu circuito tiene que mostrar a que pines conectas que! El resto es como leer en una bola de cristal! Los síntomas que describes parecen indicar a una alimentación inestable. De allí, que ciertas reglas de diseño son elementales para evitar el tratar de encontrar errores tipo difícil de reproducir de forma permanente!

1. Es recomendable separar de forma clara la alimentación eléctrica de circuitos digitales de aquellos de potencia. eso es equivalente del porque también hay que separa de forma clara la alimentación eléctrica para la funcionalidad análoga de la digital, razón por la cual microcontroladores tienen entradas de alimentación separadas para las partes del circuito digital, de aquellas de los circuitos análogos.

2. Hay que diferenciar entre una alimentación eléctrica estabilizada de una no estabilizada! Por tal razón yo uso en cada placa que hago por ejemplo un 7805 para crear una alimentación eléctrica estabilizada y así evitar problemas. Una fuente de alimentación como las que con seguridad tienes en tu casa a montón de equipos electrónicos que ya no usas da una alimentación no estabilizada. Por eso esa fuente debe dar una tensión superior a los 7VDC, mejor 9VDC, para que de allí el 7805 por ejemplo brinde la tensión estabilizada de 5VDC. Una tensión de 15 VDC no estabilizada por ejemplo causa mucho calor en el 7805, por lo que una tensión de 9VDc por ejemplo es preferible.

3. La fuente eléctrica para la alimentación del motor no require ser estabilizada, pero como se te ha indicado antes tiene que proveer la potencia adecuada. Si esta fuente es capaz de proveer el doble del amperaje que el motor de paso requiera como valor máximo, entonces esa fuente de potencia es adecuada para alimentar el motor de paso.

4. Existe un desentendimiento sobre los motores de paso en relación al voltaje que se les suministra. describo esto en mi tutorial avanzado sobre motores de paso! Los valores de tensión y amperaje indicados en la hoja de datos del motor o que sean indicados en una placa montada al motor se llaman valores nominales! El resultado de aplicar valores nominales a la alimentación eléctrica de un motor de paso no es buen criterio! Eso es algo en lo cual motores de paso son muy diferentes a motor DC por ejemplo! Miremos unos ejemplos para clarificar el tema:

Motor 1: 24 VDC, 1 Amperio!
La potencia nominal de tal motor de paso es:

P = V * I = 24VDC * 1A = 24W

Motor 2: 3VDC, 8A

P = V * I = 3VDC * 8A = 24W

Cual motor es mas potente? La respuesta de alguien que no sabe de motores de paso es que ambos motores tienen la misma potencia!

Mi respuesta: La potencia nominal de ambos motores es igual, pero la calidad de los motores y la potencia posible difiere muchísimo! Porque?

La mecánica y las bobinas en el motor 1 son de tal calidad reducida que si le aplicas mas de 1A de corriente el cableado de las bobinas se va a calentar, finalmente destruyendo el motor 1!

La mecánica y las bobinas en el motor 2 son tan superiores, que permiten el flujo de 8A de corriente!

Otro aspecto importante para comprender las implicaciones de los valores nominales de cualquier motor y por lo tanto también para motores de paso! sabemos, descrito por la ley de Ohm, que cuando mayor es la tensión que aplicamos a un circuito, mas es la corriente que va a fluir por este! Los valores nominales de un motor por lo tanto nos dicen, que si a este se le aplica la tensión nominal va a fluir el valor nominal de corriente! Si le aplicamos una tensión mayor a la nominal va a fluir un valor mayor de corriente que produce tal calentamiento del motor que este acaba dañandose! Continuemos con nuestra comparación de los 2 motores de arriba!

Asumamos que a ambos motores les vamos a aplicar la misma tensión de 24 VDC! Entonces sabemos que el motor 1 nos va a dar una potencia de 24W. Que ocurre con el motor 2 si le aplicamos directamente los 24VDC, como ocurre si controlando el L298, hacemos que cada bobina del motor de paso tenga esa tensión de 24VDC aplicada, lo único que controlamos son el puente H doble de cada bobina que permite definir la polaridad aplicada! la tensión esta 8x por encima del valor nominal de 3VDC, por la cual fluiría una corriente de 8 x 8A = 64A. El motor de paso muere quemándose!

Por tal razón un circuito para el control de un motor de paso no solo consiste de un L298, sino también de un L297! Que es lo que agrega de funcionalidad el L297 que evita que el motor de paso sea sometido a 64A de corriente, fuera de otros detallitos que describo en mi tutorial! El L297 tiene unos pines entre los cuales se conecta una resistencia. Dependiendo del valor de esta resistencia, la hoja de datos del L297 describe como seleccionar el valor adecuado de tal resistencia logrando de tal forma el L297, usando lo que se llama PWM, limitar el flujo de corriente a los 8A que máximo permite el motor 2 de forma continua! Que es el PWM? De forma simplificada es un switch que interrumpe el flujo de corriente de tal forma que solo pase la cantidad de corriente deseada. Digamos que el switch del PWM cuando tiene el valor "1", permite el libre flujo de corriente y cuando tiene el valor "0", lo interrumpe abriendo el circuito! Así, cuando el motor 2 le aplicamos 8 veces el valor de la tensión nominal, aquí los 24 VDC, entonces el PWM solo permitirá el flujo durante la octava parte del tiempo, así el promedio de corriente que fluye es de solo 8A! sabiendo esto, veamos que potencia nos brinda el motor 2 cuando le aplicamos los 24VDC y la corriente fluye solo la octava parte del tiempo!

P = V * I = 24VDC * 8A = 192W!

Claro que no es posible aumentar el valor de la tensión de potencia suministrada al motor de paso a cualquier valor altísimo para lograr mas potencia! Habrá un momento donde una tensión puede ser tan alta que la corriente salta como aro de chispas de un cable a otro causando un corto y dañando el motor. Por eso motores de paso bien documentados también indican hasta que tensión se les puede aplicar! Pero esto tiene un efecto colateral que explica porqué un forista comentando mi hilo del tutorial escibió muy correctamente que el conocía motores de paso, como aquel motor que se calienta anto que ya se había quemado el brazo!

Motores de paso son un tipo de motor maravilloso, pero exige entenderlos un poco para saber seleccionar el motor de paso adecuado y para definir los valores de alimentación eléctrica apropiados! existe algo que se llama pasos completos y que dependiendo del motor que se piense usar normalmente tiene un valor entre 8 y 200 pasos completos para hacer un giro de 360°. Pero también existe algo que se llama micropasos! Micropasos son pasos adicionales que el motor de paso hace durante un paso completo. El número de micropasos por paso completo puede tener un valor entre 2 y 1024 por ejemplo. Viejos circuitos como el de las componentes L297/L298 brindan un valor de 2 o 4 micropasos por paso completo. Si mi motor de paso da 200 pasos por giro completo y si usa 2 micropasos por paso completo, entonces mi motor dará 2 * 200 = 400 micropasos para un giro de 360°. Un circuito actual es capaz de dar 256 micropasos por paso completo de lo que resultan: 256 * 200 = 51.200 micropasos para un giro completo de 360°!

Porqué demonios esos micropasos y que beneficio brindan? Pues bien son 2 beneficios fundamentales que impactan la decisión cuando un motor de paso es adecuado para ser usado en una aplicación y cuando no!

1. Si uso por ejemplo 256 micropasos, entonces es posible parar el motor de paso en 51.200 posiciones angulares diferentes durante cada giro de 360°

2. El motor de paso funciona de forma mas estable cuando lo hago funcionar con 256 micropasos!

El beneficio "1" se explica a si mismo! Si requiero posicionar algo con mucha exactitud, entonces el motor de paso me ofrece una altísima resolución y me es posible girar a esa posición deseada puramente dando el número de micropasos requerido!

El beneficio "2" requiere de una explicación mas detallada:

9483371177_daf1f68bf0_z.jpg


Vemos en este gráfico que uso con el permiso por escrito de la empresa Trinamic, que cuando un motor de paso está siendo operado solo con pasos completos el alto valor de cambio de tensión induce oscilaciones del valor de la tensión y por lo tanto también de la corriente que fluye por las bobinas!

9486170534_f2594ff3f3_c.jpg


este segundo gráfico muestra las diferencias entre las 2 formas de operar un motor de paso. Sea solo con pasos completos o con micropasos! Vemos los grandes saltos que da la alimentación de las bobinas del motor de paso, comparado con la forma senoidal de la alimentación eléctrica cuando se dan micropasos. Lo que ocurre es que no se invierten la polaridad de la alimentación eléctrica, resultando en un cambio de tensión abrupto de 2x el valor de la tensión aplicada, en nuestro ejemplo del motor 2 con 24VDc, el cambio de tensión operando el motor de paso en pasos completos sería de 48VDC! La tensión va siendo alterada siguiendo valores que equivalen al cambio de valores siguiendo la curva senoidal. Aquí el gráfico que lo muestra:

9486170248_1656370fbf_z.jpg


Este gráfico no esta totalmente correcto pero sirve para mi propósito! En realidad las bobinas y los magnetos permanentes no se encuentran el una exactamente al frente del otro, pero esto aquí facilita la explicación!

Como todos sabemos, polos iguales se rechazan, polos diferentes se atraen! Así dependiendo de la polaridad los magnetos permanentes en el centro buscarán alinearse al frente de una bobina que tenga la polaridad opuesta magnética. Así pues, si la corriente que fluye por la bobina varía de forma prácticamente continua, siempre será un ángulo diferente donde la parte rotativa en el centro se encuentre en la posición mas adecuada. Habiendo 256 diferentes valores de la corriente fluyendo por las bobinas, estas van a crear campos magnéticos de 256 diferentes fuerzas y así realizando los 256 micropasos por paso completo.

Ahora, cuando empecé a dedicarme a los motores de paso me compré una placa con las componentes L297 y L298 y en ebay un motor de paso. saben que, nunca funcionó y empecé a dudar de mis habilidades! Cuando me compre la placa "stepRocker" con las componentes de trinamic pude ver, que realmente el motor recién empezaba a funcionar con un número de micropasos superior al que es posible con aquella placa basada en el L298/L298!

15240655563_c93506f81d.jpg


Otra cosa bien molesta es el ruido y la vibración cuando se operan motores de paso. Los videos de mis experimentos pueden encontrarse en el tutorial.

Así pues apreciado heimann, vale meterse y estudiar un poco a fondo las materias para entender su funcionamiento! Pon el circuito completo y detallado y se podra investigar si has cometido algun error mayor!
 
Hola, gracias por la ayuda a todos.
Si, conecto todo de la misma fuente, supuse que con proveer unos 9V al Vin del Arduino y esos mismos 9V al VCC del L298 debería funcionar por el regulador interno de 5V del Arduino, parece que no porque al accionar el motor cae la tensión y se apaga el arduino.

Las conexiones son:
Arduino L298
Pin 5 >> ENA
Pin 2 >> IN1
Pin 4 >> IN2

Fuente
+9v a VCC (L298) y a Vin del Arduino.
El negativo de la fuente va a GND del Arduino y a 0V del L298.

Luego tomo los +5V del Arduino y lo conecto a +5V del L298.

Esa es toda la conexión.

Sugieren que me consiga algun 7805 para el arduino y otro 7812 para el L298 y alimente todo de una fuente más potente? El problema con esto es que recalentaría mucho sin lugar a dudas los integrados.

O alimentar con baterías sería mas estable? Desconozco totalmente este mundo porque me dedico a programar plc, disculpen si soy muy bestia.
 
parece que no porque al accionar el motor cae la tensión y se apaga el arduino.

es que parece que no lees los mensajes que te ponemos... :unsure:

si cae el voltaje es que el consumo de los motores (en amperios) es mayor que el amperaje que proporciona tu fuente y por eso se resetea, en palabras coloquiales y para que quede bien entendido la fuente de 9v que usas no tiene huevos XD perdon por la palabra pero ya todos dijimos eso.
 
No heimmer, creo que el problema se debe a la capacidad de la fuente de alimentación que usas!Si te interesa es muy facil ver el efecto en un experimento.

Primero mide la tensión que da tu fuente, cuando no está conectada a nada. ese valor por lo general es un valor por encima del nomnal de la fuente, en tu caso 9VDC si te entendí bien.

Segunda, alimenta con esa mismafuente la placa Arduino creo que la que tienes y mide el valor de la tensión ahora, veras que el valor es inferior al de la primera medición y probablemente casi los 9VDc nominales.

Tercero, mide el valor de la corriente que fluye si conectas esa fuente de tensión a algún motor DC que tengas de 12VDC por ejemplo. la multiplicación del valor de la corriente con el de la tensión en ese mismo momento te dara el dato sobre cuantos vatios esta surtiendo la fuente. Si este valor calculado es superior al nominal, entonces probablemente estaras midiendo una tensión inferior a los 9VDC.

Pero existe un efecto dinámico que probablemente es el responsable que el Arduino deje de funcionar. Cuando se conecta la tensión electrica a una carga, en tu caso al motor de paso, entonces en el momento del encendido va a fluir una corriente aún mayor a la continua que has medido en el tercer experimento. La razón es que en el momento del encendido, cuando el circuito alimentado por la fuente eléctrica es sometido a la carga ocurre un breve máximo de solicitación de tu fuente eléctrica. eso se puede contrarrestar y minimizar conectando un capacitor grande en paralelo a la fuente eléctrica. Este capacitador tiene que cargar suficiente energía para contrarrestar la carga adicional durante el encendido. Así su energía se le suma a aquella que es provista por la fuente.
 
Atrás
Arriba