Съдържание:

Atmega128A Пропорционално задвижване на двигателя - ATMEL ICE AVR Таймер UART PWM управление: 4 стъпки
Atmega128A Пропорционално задвижване на двигателя - ATMEL ICE AVR Таймер UART PWM управление: 4 стъпки

Видео: Atmega128A Пропорционално задвижване на двигателя - ATMEL ICE AVR Таймер UART PWM управление: 4 стъпки

Видео: Atmega128A Пропорционално задвижване на двигателя - ATMEL ICE AVR Таймер UART PWM управление: 4 стъпки
Видео: Широтно-импульсная модуляция AVR | Часть 1 | Программирование микроконтроллеров AVR 2024, Ноември
Anonim
Atmega128A Пропорционално задвижване на двигателя - ATMEL ICE AVR Таймер UART PWM управление
Atmega128A Пропорционално задвижване на двигателя - ATMEL ICE AVR Таймер UART PWM управление
Atmega128A Пропорционално управление на двигателя - ATMEL ICE AVR Таймер UART PWM контрол
Atmega128A Пропорционално управление на двигателя - ATMEL ICE AVR Таймер UART PWM контрол
Atmega128A Пропорционално управление на двигателя - ATMEL ICE AVR Таймер UART PWM контрол
Atmega128A Пропорционално управление на двигателя - ATMEL ICE AVR Таймер UART PWM контрол
Atmega128A Пропорционално управление на двигателя - ATMEL ICE AVR Таймер UART PWM контрол
Atmega128A Пропорционално управление на двигателя - ATMEL ICE AVR Таймер UART PWM контрол

В тази инструкция ще ви обясня как да

  • управлява DC мотор с PWM
  • комуникирайте чрез UART
  • дръжка таймер прекъсвания

На първо място ще използваме дъска за разработка на AVR Core система, която можете да намерите на Aliexpress около 4 USD. Връзката към борда за развитие е тук. Ще използваме също 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 (разрешаване на повтор) TXEN0 (разрешаване на предаване) и RXCIE0 (RX за прекъсване). В регистър UCSR0C избираме 8 -битов размер на символа.

След като зададем бит за прекъсване на RX, трябва да добавим ISR функция за USART0_RX_vect

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

Не бива да правите никаква бизнес логика в рутинната си услуга за прекъсване. Трябва да накарате функцията да се върне възможно най -скоро.

Стъпка 3: Настройки на PWM

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

Във функцията initPWM задаваме нашия скейлер за часовник на процесора, режим Таймер/Брояч като бърз ШИМ и задаваме поведението му с COM битове

Също така трябва да свържем DC двигателя към OC2 щифт, който е посочен в Таблица 66. Сравнете изходния режим, бърз PWM режим в нашия лист с данни, ще видите също, че OC2 щифт е (OC2/OC1C) PB7

Стъпка 4: Резултат

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

Когато качите изходния код в прикачения файл.

Можете да въведете нова PWM стойност (0-255) от UART (можете да използвате терминал за сериен порт на arduino), за да зададете скоростта на DC двигателя.

Препоръчано: