Obsah:

Atmega128A Proporcionálne riadenie motora - Časovač ATMEL ICE AVR UART PWM Ovládanie: 4 kroky
Atmega128A Proporcionálne riadenie motora - Časovač ATMEL ICE AVR UART PWM Ovládanie: 4 kroky

Video: Atmega128A Proporcionálne riadenie motora - Časovač ATMEL ICE AVR UART PWM Ovládanie: 4 kroky

Video: Atmega128A Proporcionálne riadenie motora - Časovač ATMEL ICE AVR UART PWM Ovládanie: 4 kroky
Video: Управление 32 сервомоторами с помощью PCA9685 и Arduino: V3 2024, November
Anonim
Atmega128A Proporcionálne riadenie motora - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionálne riadenie motora - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionálne riadenie motora - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionálne riadenie motora - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionálne riadenie motora - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionálne riadenie motora - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionálne riadenie motora - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionálne riadenie motora - ATMEL ICE AVR Timer UART PWM Control

V tomto návode vám vysvetlím, ako na to

  • ovládať jednosmerný motor s PWM
  • komunikovať cez UART
  • zvládnuť prerušenia časovača

Najprv použijeme vývojovú dosku systému AVR Core, ktorú nájdete na Aliexpresse okolo 4 USD. Odkaz na vývojovú dosku nájdete tu. Na programovanie a ladenie nášho softvéru použijeme aj Atmel ICE Debugger a Atmel Studio.

Krok 1: Hlboké ponorenie do technického listu a zdrojového kódu - rýchlosť hodín

Hlboké potápanie do údajového listu a zdrojového kódu - hodinová rýchlosť
Hlboké potápanie do údajového listu a zdrojového kódu - hodinová rýchlosť
Hlboké potápanie do údajového listu a zdrojového kódu - hodinová rýchlosť
Hlboké potápanie do údajového listu a zdrojového kódu - hodinová rýchlosť
Hlboké potápanie do údajového listu a zdrojového kódu - hodinová rýchlosť
Hlboké potápanie do údajového listu a zdrojového kódu - hodinová rýchlosť

V 1. guľke definujeme našu kryštálovú frekvenciu, kde ju môžeme vidieť na vývojovej doske

Krok 2: Nastavenie registrov UART

Nastavenie registrov UART
Nastavenie registrov UART
Nastavenie registrov UART
Nastavenie registrov UART
Nastavenie registrov UART
Nastavenie registrov UART
Nastavenie registrov UART
Nastavenie registrov UART

Aby ste mohli komunikovať s UART, musíte správne nastaviť registre prenosovej rýchlosti USART - UBRRnL a UBRRnH, môžete si to vypočítať sami alebo pomocou online kalkulačky ľahko získať správne hodnoty

Online kalkulačka

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

Potom sa vypočíta hodnota MYUBBR. V registri UCSR0B povolíme RXEN0 (zapnutie recv) TXEN0 (povolenie prenosu) a RXCIE0 (RX pre prerušenie). V registri UCSR0C vyberieme 8 -bitovú veľkosť znaku.

Potom, čo nastavíme bit prerušenia RX, mali by sme pridať funkciu ISR pre USART0_RX_vect

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

Vo svojej rutine prerušenia by ste nemali robiť žiadnu obchodnú logiku. Musíte zaistiť, aby sa funkcia vrátila čo najskôr.

Krok 3: Nastavenia PWM

Nastavenia PWM
Nastavenia PWM

Vo funkcii initPWM sme nastavili náš scaler taktov CPU, režim Timer/Counter ako Fast PWM a nastavili sme jeho správanie s COM bitmi

Tiež by sme mali pripojiť DC motor na pin OC2, ktorý je uvedený v tabuľke 66. Porovnajte výstupný režim, rýchly režim PWM v našom technickom liste, uvidíte tiež, že pin OC2 je (OC2/OC1C) PB7

Krok 4: Výsledok

Výsledok
Výsledok
Výsledok
Výsledok

Keď nahráte zdrojový kód v prílohe.

Môžete zadať novú hodnotu PWM (0-255) z UART (môžete použiť terminál sériového portu arduino) na nastavenie otáčok motora DC.

Odporúča: