Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В этом руководстве я объясню вам, как
- управлять двигателем постоянного тока с ШИМ
- общаться через UART
- обрабатывать прерывания таймера
Прежде всего, мы будем использовать плату разработки системы AVR Core, которую вы можете найти на Aliexpress по цене около 4 долларов США. Ссылка на плату разработки находится здесь. Мы также будем использовать Atmel ICE Debugger и Atmel Studio для программирования и отладки нашего программного обеспечения.
Шаг 1. Глубокое погружение в техническое описание и исходный код - тактовая частота
В 1. с помощью маркера мы определяем нашу частоту кристалла, которую мы можем видеть на плате разработки.
Шаг 2: Настройка регистров 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), чтобы установить скорость двигателя постоянного тока.