L298N calentándose al conducir un Nema 17 con Arduino

Me acabo de comprar un Nema 17 ( Motor NEMA 17 40mm 1,2A 2,6kg/cm 1,8º 42STH40 1204A CNC ) para montar un comedero para mascotas, y para controlarlo estoy usando un driver L298N que también he comprado . He cableado todo junto como se muestra en la siguiente foto. Conecto un adaptador de corriente de 12 V, 1,5 A al conector hembra de la derecha. El Arduino se enciende desde el 5V + GND del L298N

Imagen

Estoy usando la biblioteca Stepper de Arduino y funciona bien. Sin embargo, la placa L298N se calienta rápidamente y se pone muy caliente, ni siquiera puedo tocar el disipador de calor. Estoy bastante seguro de que estoy haciendo algo mal. ¿Por qué hace tanto calor?

Edición 1 : aquí están las especificaciones del motor.

  • operación bipolar de 4 hilos
  • Compatible con el estándar NEMA17
  • Dimensiones: 42x42x40mm
  • Diámetro del eje del motor: 5 mm
  • Ángulo de paso: 1,8 grados
  • Número de pasos por revolución: 200
  • Voltaje estándar: 2V
  • Corriente de fase: 1.2A
  • Resistencia de fase: 1,7 ohmios
  • Par de retención: 4N.m (mínimo)
  • Peso: 290g
el calor como el juguete del que estamos hablando proviene principalmente de un lugar: i^2 * R. Entonces, ¿sabe la corriente que demanda su motor a 12 V y sabe lo que dice el L298N sobre Rds_on?
el motor es este? ebay.com/itm/…
¿Se calienta con carga o simplemente cuando gira libremente? Es bastante fácil pasar por encima de la corriente con los motores paso a paso y el suyo parece ser el caso. Además, el motor tiene una potencia nominal de 1,2 A, pero su fuente de alimentación es de 1,5 A y el controlador del motor es de 2 A MAX. Esto significa que tendrá problemas de calor una vez que su motor esté en carga... o algo peor.
Bueno, ¿cuál es la resistencia del motor? 12 voltios divididos por la resistencia del motor le indica qué corriente fluirá. ¡Sospecho que es demasiado alto! Creo que necesitas una resistencia en serie (potencia).
He agregado las especificaciones del motor. @BruceAbbott sí, ese es el indicado. No hay carga en el motor por ahora. Pensé que el 1.5A en la fuente de alimentación era la corriente máxima.
No estaba familiarizado con el estándar NEMA 17, así que fui al índice de estándares en NEMA.org y no pude encontrarlo. ¿Qué es este estándar? ¿Es este realmente un tamaño de estructura de motor NEMA?

Respuestas (3)

Los módulos L298 económicos no tienen chopper ni configuración de corriente, por lo que debe agregar una gran resistencia de potencia en serie con cada devanado si desea un rendimiento relativamente alto. También podría reducir el voltaje de suministro a aproximadamente 5 V desde 12 V, lo que funcionaría, pero el motor no podría acelerar tan rápido.

Para obtener 2V con un suministro de 12V, debe desechar 10V en las resistencias y el chip, lo que es realmente un desperdicio. Si quieres probarlo, puedes probar 1A o 1.1A, con algo así como un 6.8 Ω o 7.5 Ω resistencia en cada devanado, clasificado para 10W o ​​menos.

O compre un controlador paso a paso que tenga una configuración actual y un circuito chopper. Probablemente pueda obtener uno de esos por no mucho más que las dos resistencias de potencia. Algunos de ellos te permitirán aumentar la tensión de alimentación a 24 o 36V lo que te dará un mejor rendimiento. Debe configurar la corriente (consulte las instrucciones sobre cómo hacerlo) en algo así como 1A o 1.1A) y el controlador PWM automáticamente la potencia al motor para mantener la corriente cerca del nivel correcto desde inactivo hasta la velocidad máxima . Algunos también tienen una función de reducción de corriente inactiva que reduce la corriente a través de las bobinas a un nivel más bajo para que los motores no giren fácilmente (como lo harían si apagara completamente la corriente), pero funcionan más fríos.

Editar: la resistencia en serie (o PWM, pero no estoy hablando de eso aquí) significa que la constante de tiempo L/R se reduce significativamente (siendo L la inductancia de la bobina). En el caso de una resistencia de 6,8 ohmios en serie con una bobina de 1,7 ohmios, se reduce por un factor de 5.

Leí sobre el DRV8825 y pedí uno de manera preventiva en eBay por un par de euros. ¿Funcionaría ese? Ese tiene una configuración actual para el motor paso a paso.
Parece una buena elección.

Vale la pena leer las especificaciones .

Standard Voltage: 2V
Phase current: 1.2A
Phase resistance: 1.7 ohm

Los controladores laterales Hi+Lo tienen algunas especificaciones que equivalen aproximadamente a 1 ohm por lado, por lo que tiene...

Pd= 5V^2/3.7=6.75W por fase x2=13.5W con 2/3.7=54% de la energía total descargada en el disipador de calor que en base a aproximadamente 1sq"/W (mi regla general) hace que este disipador de calor esté demasiado caliente al tacto y su limitación actual inadecuada.

Pruebe PWM para reducir la corriente en reposo.

Dicen que está bien usar 12 V en estos motores, pero no en ralentí después de completar el paso. El límite térmico es de 2V promedio en los devanados.

Esta es una publicación antigua, pero pensé en traer algo más útil para los novatos. El stepper.harchivo de inclusión solo proporciona un objeto de motor paso a paso muy básico. El L298N es un controlador de motor muy básico.

Lo que falta es una función inactiva. A pesar de la cuestión de las especificaciones, creo que un alimentador de mascotas no debería requerir controladores de fuerza de la industria.

Cuando se usa el stepper.harchivo, el motor paso a paso siempre se detiene en una posición en la que se mantiene a plena corriente. Esto mata al L298N y se calienta como una sartén.

Por lo general, los pines de Arduino que se utilizan para controlar el L298N son 8, 9, 10 y 11. Asegúrese de que los pines de salida estén configurados en 0 después de una myStepper.step()instrucción. Utilice esta sencilla rutina después de cada paso (ver ejemplo). Puede ejecutar esto para siempre sin que el controlador se caliente.

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(300);
  // initialize the serial port:
  Serial.begin(9600);
}

void setStepperIdle() {
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
}


void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  setStepperIdle();
  delay(500);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  setStepperIdle();
  delay(500);
}