Оглавление:

Atmega128A Пропорциональное управление двигателем - ATMEL ICE AVR Таймер UART ШИМ-управление: 4 шага
Atmega128A Пропорциональное управление двигателем - ATMEL ICE AVR Таймер UART ШИМ-управление: 4 шага
Anonim
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Таймер UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Таймер UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Таймер UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Таймер UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Таймер UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Таймер UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Таймер UART PWM Control
Atmega128A Proportional Motor Driving - ATMEL ICE AVR Таймер UART PWM Control

В этом руководстве я объясню вам, как

  • управлять двигателем постоянного тока с ШИМ
  • общаться через UART
  • обрабатывать прерывания таймера

Прежде всего, мы будем использовать плату разработки системы AVR Core, которую вы можете найти на Aliexpress по цене около 4 долларов США. Ссылка на плату разработки находится здесь. Мы также будем использовать Atmel ICE Debugger и Atmel Studio для программирования и отладки нашего программного обеспечения.

Шаг 1. Глубокое погружение в техническое описание и исходный код - тактовая частота

Глубокое погружение в техническое описание и исходный код - тактовая частота
Глубокое погружение в техническое описание и исходный код - тактовая частота
Глубокое погружение в техническое описание и исходный код - тактовая частота
Глубокое погружение в техническое описание и исходный код - тактовая частота
Глубокое погружение в техническое описание и исходный код - тактовая частота
Глубокое погружение в техническое описание и исходный код - тактовая частота

В 1. с помощью маркера мы определяем нашу частоту кристалла, которую мы можем видеть на плате разработки.

Шаг 2: Настройка регистров UART

Настройка регистров UART
Настройка регистров UART
Настройка регистров UART
Настройка регистров UART
Настройка регистров UART
Настройка регистров UART
Настройка регистров UART
Настройка регистров UART

Для связи с UART вам необходимо правильно настроить регистры скорости передачи USART - UBRRnL и UBRRnH, вы можете рассчитать их самостоятельно или можете использовать онлайн-калькулятор, чтобы легко получить правильные значения.

Онлайн калькулятор

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

Таким образом, вычисляется значение MYUBBR. В регистре UCSR0B мы включаем RXEN0 (разрешение recv), TXEN0 (разрешение передачи) и RXCIE0 (RX для прерывания). В регистре UCSR0C мы выбираем размер символа 8 бит.

После того, как мы установили бит прерывания RX, мы должны добавить функцию ISR для USART0_RX_vect

ISR (USART0_RX_vect) {char rcvChar = UDR0; если (rcvChar! = '\ n') {буфер [bufferIndex] = rcvChar; bufferIndex ++; }}

Вы не должны использовать бизнес-логику в своей программе обслуживания прерываний. Вы должны вернуть функцию как можно скорее.

Шаг 3: Настройки ШИМ

Настройки ШИМ
Настройки ШИМ

В функции initPWM мы устанавливаем масштабатор тактовой частоты процессора, режим таймера / счетчика как Fast PWM и устанавливаем его поведение с помощью битов COM.

Мы также должны подключить двигатель постоянного тока к выводу OC2, который указан в Таблице 66. Режим вывода сравнения, режим Fast PWM в нашем техническом описании, вы также увидите, что вывод OC2 - это (OC2 / OC1C) PB7.

Шаг 4: Результат

Результат
Результат
Результат
Результат

При загрузке исходный код во вложении.

Вы можете ввести новое значение ШИМ (0-255) из UART (вы можете использовать терминал последовательного порта Arduino), чтобы установить скорость двигателя постоянного тока.

Рекомендуемые: