Índice:

Atmega128A Motor Proportional Driving - ATMEL ICE AVR Timer Controle UART PWM: 4 etapas
Atmega128A Motor Proportional Driving - ATMEL ICE AVR Timer Controle UART PWM: 4 etapas

Vídeo: Atmega128A Motor Proportional Driving - ATMEL ICE AVR Timer Controle UART PWM: 4 etapas

Vídeo: Atmega128A Motor Proportional Driving - ATMEL ICE AVR Timer Controle UART PWM: 4 etapas
Vídeo: PID Speed Control of DC Motor with ATMEGA128 2024, Novembro
Anonim
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Timer UART PWM Control

Neste instrutível, vou explicar como

  • controlar um motor DC com PWM
  • comunicar via UART
  • lidar com interrupções do cronômetro

Em primeiro lugar, usaremos uma placa de desenvolvimento de sistema AVR Core que você pode encontrar no Aliexpress por volta de 4 USD. O link da placa de desenvolvimento está aqui. Também usaremos o Atmel ICE Debugger e o Atmel Studio para programar e depurar nosso software.

Etapa 1: Mergulho Profundo na Folha de Dados e Código Fonte - Velocidade do Relógio

Mergulho Profundo na Folha de Dados e Código Fonte - Velocidade do Relógio
Mergulho Profundo na Folha de Dados e Código Fonte - Velocidade do Relógio
Mergulho Profundo na Folha de Dados e Código Fonte - Velocidade do Relógio
Mergulho Profundo na Folha de Dados e Código Fonte - Velocidade do Relógio
Mergulho Profundo na Folha de Dados e Código Fonte - Velocidade do Relógio
Mergulho Profundo na Folha de Dados e Código Fonte - Velocidade do Relógio

Em 1. o marcador, definimos nossa frequência de cristal, onde podemos ver na placa de desenvolvimento

Etapa 2: Configurando Registros UART

Configurando Registros UART
Configurando Registros UART
Configurando Registros UART
Configurando Registros UART
Configurando Registros UART
Configurando Registros UART
Configurando Registros UART
Configurando Registros UART

Para se comunicar com o UART, você deve definir os registros de taxa de transmissão USART - UBRRnL e UBRRnH corretamente, você pode calculá-lo sozinho ou pode usar a calculadora online para obter os valores corretos facilmente

Calculadora Online

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

Então o valor de MYUBBR é calculado, no registro UCSR0B nós habilitamos RXEN0 (habilitar recv) TXEN0 (habilitar transmissão) e RXCIE0 (RX para interrupção). No registro UCSR0C nós selecionamos o tamanho do char de 8 bits.

Depois de definir o bit de interrupção RX, devemos adicionar a função ISR para USART0_RX_vect

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

Você não deve fazer nenhuma lógica de negócios em sua rotina de serviço de interrupção. Você tem que fazer a função retornar o mais rápido possível.

Etapa 3: Configurações de PWM

Configurações de PWM
Configurações de PWM

Na função initPWM, definimos o escalonador de relógio da CPU, o modo Timer / Contador como Fast PWM e definimos seu comportamento com bits COM

Também devemos conectar o motor DC ao pino OC2, que é especificado na Tabela 66. Compare o modo de saída, modo PWM rápido em nossa folha de dados, você também verá que o pino OC2 é (OC2 / OC1C) PB7

Etapa 4: Resultado

Resultado
Resultado
Resultado
Resultado

Quando você carrega o código-fonte no anexo.

Você pode inserir um novo valor PWM (0-255) do UART (você pode usar o terminal de porta serial do arduino) para definir a velocidade do motor DC.

Recomendado: