Obsah:

Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control: 4 kroky
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control: 4 kroky

Video: Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control: 4 kroky

Video: Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control: 4 kroky
Video: 3818-max-rampage-rc-toy38.flv 2024, Listopad
Anonim
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proporcionální řízení motoru - ATMEL ICE AVR Timer UART PWM Control

V tomto návodu vám vysvětlím, jak na to

  • ovládání stejnosměrného motoru pomocí PWM
  • komunikovat přes UART
  • zvládnout přerušení časovače

Nejprve použijeme vývojovou desku systému AVR Core, kterou najdete na Aliexpress kolem 4 USD. Odkaz na vývojovou desku je zde. K programování a ladění našeho softwaru použijeme také Atmel ICE Debugger a Atmel Studio.

Krok 1: Hluboké potápění do datového listu a zdrojového kódu - rychlost hodin

Hluboké potápění do datového listu a zdrojového kódu - rychlost hodin
Hluboké potápění do datového listu a zdrojového kódu - rychlost hodin
Hluboké potápění do datového listu a zdrojového kódu - rychlost hodin
Hluboké potápění do datového listu a zdrojového kódu - rychlost hodin
Hluboké potápění do datového listu a zdrojového kódu - rychlost hodin
Hluboké potápění do datového listu a zdrojového kódu - rychlost hodin

V 1. kulce definujeme naši krystalovou frekvenci, kde můžeme vidět na vývojové desce

Krok 2: Nastavení registrů UART

Nastavení registrů UART
Nastavení registrů UART
Nastavení registrů UART
Nastavení registrů UART
Nastavení registrů UART
Nastavení registrů UART
Nastavení registrů UART
Nastavení registrů UART

Abyste mohli komunikovat s UART, musíte správně nastavit registry přenosové rychlosti USART - UBRRnL a UBRRnH, můžete si to vypočítat sami nebo můžete pomocí online kalkulačky snadno získat správné hodnoty

Online kalkulačka

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

Takže se vypočítá hodnota MYUBBR, v registru UCSR0B povolíme RXEN0 (povolit příjem) TXEN0 (povolení přenosu) a RXCIE0 (RX pro přerušení). V registru UCSR0C vybereme 8bitovou velikost znaku.

Poté, co nastavíme bit přerušení RX, měli bychom přidat funkci ISR pro USART0_RX_vect

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

V rutině služby přerušení byste neměli dělat žádnou obchodní logiku. Musíte zajistit, aby se funkce vrátila co nejdříve.

Krok 3: Nastavení PWM

Nastavení PWM
Nastavení PWM

Ve funkci initPWM nastavíme náš scaler hodin CPU, režim Timer/Counter jako Fast PWM a nastavíme jeho chování s COM bity

Rovněž bychom měli připojit stejnosměrný motor na pin OC2, který je uveden v tabulce 66. Porovnejte výstupní režim, rychlý režim PWM v našem datovém listu, uvidíte také, že pin OC2 je (OC2/OC1C) PB7

Krok 4: Výsledek

Výsledek
Výsledek
Výsledek
Výsledek

Když nahrajete zdrojový kód v příloze.

Pro nastavení otáček motoru DC můžete zadat novou hodnotu PWM (0-255) z UART (můžete použít terminál sériového portu arduino).

Doporučuje: