Temporizadores de microcontroladores y sus aplicaciones

0

Hola, deseo comprender más sobre los temporizadores del microcontrolador (AVR) porque me resulta difícil entenderlos básicamente. Entonces, lo que realmente pregunto es que: a) cuando intenta controlar, por ejemplo, una velocidad de motor paso a paso (unipolar), ¿cómo configura los temporizadores para que la MCU genere pulsos de salida y cambie la velocidad de pulso de los pulsos? ¿Para girar el motor paso a paso a diferentes velocidades? b) ¿Hay algún otro algoritmo que pueda usarse junto a los temporizadores?

Gracias.

    

2 respuestas

1

Los temporizadores son atractivos porque están definidos por hardware. Esto significa que utiliza el silicio real para realizar la operación de conteo. Puede configurar y olvidar (en su mayor parte).

Habrá algún código que deberá escribir para inicializar los parámetros del temporizador y decirle que comience a funcionar. Esto se puede encontrar en la hoja de datos de MCU. Mientras se cuenta en segundo plano, puedes ejecutar tu MCU como lo harías normalmente.

Generalmente, un temporizador contará hasta que su valor coincida con algún valor que le hayas dado para comparar. Cuando esto ocurra, se llamará a una rutina de servicio de interrupción (ISR) para manejar el evento.

Si no está familiarizado con los ISR, le recomendaría conocerlos.

Los temporizadores son útiles para situaciones como manejar eventos de alta velocidad como PWM, o medir con precisión eventos sensibles al tiempo como pulsos entrantes, por nombrar algunos.

Espero que esto ayude.

    
respondido por el Daniel
0

Le sugiero que comience por comprender el tipo de señales que necesita para conducir un motor paso a paso unipolar. Un buen lugar para comenzar es 'Jones on Stepping Motors' , y específicamente la sección sobre motores paso a paso unipolares .

De eso se puede ver que hay varias secuencias de señales diferentes. Le sugiero que comience con la secuencia de pasos individuales más simple, es decir,

Winding 1a 1000100010001000100010001  
Winding 1b 0010001000100010001000100  
Winding 2a 0100010001000100010001000  
Winding 2b 0001000100010001000100010  

Si dibuja gráficos de esas señales, verá que hay cuatro señales, y cada señal está encendida durante un cuarto de tiempo. Los temporizadores comunes en, por ejemplo, ATmega328 no son capaces de generar esta secuencia en hardware.

He generado las señales de cuatro fases de los temporizadores ATmega utilizando rutinas de servicio de interrupción (ISR). Es un ejercicio interesante.

La hoja de datos describe los temporizadores y el hardware del prescaler, que establece la tasa de conteo base, en cuatro capítulos (19 a 22). Son razonablemente comprensibles si has leído este tipo de cosas anteriormente; pero si todo esto es nuevo para usted, puede ser mejor encontrar una biblioteca de Arduino que los configure de una manera útil.

(Busqué una hace unos 8 años y no encontré nada que me gustara, así que desarrollé mi propia biblioteca bastante peculiar, pero puede encontrar algo que se adapte a sus necesidades utilizando un motor de búsqueda web. )

Así que tienes algunas opciones sencillas:

  1. use una MCU con temporizadores diseñados para controlar cuatro señales de fase
  2. diseñe cuidadosamente su software para que su bucle principal sea lo suficientemente rápido para generar con precisión las cuatro señales
  3. utilice rutinas de servicio de interrupción, controladas por temporizadores, para generar el señales
  4. use un módulo o chip de controlador de motor paso a paso

Existen varias bibliotecas paso a paso de Arduino que funcionan sobre la base de que su bucle principal está escrito de modo que llame a la biblioteca con la frecuencia suficiente para controlar las señales, opción 3, por ejemplo Arduino AccelStepper .

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas