Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control: 4 pasos
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control: 4 pasos
Anonim
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control
Conducción de motor proporcional Atmega128A - ATMEL ICE AVR Temporizador UART PWM Control

En este instructivo, te explicaré cómo

  • controlar un motor de CC con PWM
  • comunicarse a través de UART
  • manejar las interrupciones del temporizador

En primer lugar, usaremos una placa de desarrollo del sistema AVR Core que puede encontrar en Aliexpress alrededor de 4 USD. El enlace de la placa de desarrollo está aquí. También usaremos Atmel ICE Debugger y Atmel Studio para programar y depurar nuestro software.

Paso 1: Profundización en la hoja de datos y el código fuente - Velocidad del reloj

Profundización en la hoja de datos y el código fuente: velocidad del reloj
Profundización en la hoja de datos y el código fuente: velocidad del reloj
Profundización en la hoja de datos y el código fuente: velocidad del reloj
Profundización en la hoja de datos y el código fuente: velocidad del reloj
Profundización en la hoja de datos y el código fuente: velocidad del reloj
Profundización en la hoja de datos y el código fuente: velocidad del reloj

En 1. la bala definimos nuestra frecuencia de cristal donde podemos ver en la placa de desarrollo

Paso 2: Configuración de registros UART

Configuración de registros UART
Configuración de registros UART
Configuración de registros UART
Configuración de registros UART
Configuración de registros UART
Configuración de registros UART
Configuración de registros UART
Configuración de registros UART

Para comunicarse con UART, debe configurar los registros de velocidad en baudios de USART: UBRRnL y UBRRnH correctamente, puede calcularlo usted mismo o puede usar la calculadora en línea para obtener los valores correctos fácilmente

Calculadora online

ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…

Entonces se calcula el valor MYUBBR, en el registro UCSR0B habilitamos RXEN0 (habilitación de recv) TXEN0 (habilitación de transmisión) y RXCIE0 (RX para interrupción). En el registro UCSR0C seleccionamos tamaño de caracteres de 8 bits.

Después de configurar el bit de interrupción RX, debemos agregar la función ISR para USART0_RX_vect

ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {buffer [bufferIndex] = rcvChar; bufferIndex ++; }}

No debe hacer ninguna lógica comercial en su rutina de servicio de interrupciones. Tienes que hacer que la función regrese lo antes posible.

Paso 3: Configuración de PWM

Configuración de PWM
Configuración de PWM

En la función initPWM configuramos nuestro escalador de reloj de CPU, modo Timer / Counter como Fast PWM y configuramos su comportamiento con bits COM

También debemos conectar el motor de CC al pin OC2 que se especifica en la Tabla 66. Compare el modo de salida, el modo PWM rápido en nuestra hoja de datos, también verá que el pin OC2 es (OC2 / OC1C) PB7

Paso 4: Resultado

Resultado
Resultado
Resultado
Resultado

Cuando carga el código fuente en el archivo adjunto.

Puede ingresar un nuevo valor PWM (0-255) desde UART (puede usar el terminal de puerto serie arduino) para configurar la velocidad del motor de CC.