Përmbajtje:

Drejtimi motorik Atmega128A - ATMEL ICE AVR Timer UART PWM Control: 4 hapa
Drejtimi motorik Atmega128A - ATMEL ICE AVR Timer UART PWM Control: 4 hapa

Video: Drejtimi motorik Atmega128A - ATMEL ICE AVR Timer UART PWM Control: 4 hapa

Video: Drejtimi motorik Atmega128A - ATMEL ICE AVR Timer UART PWM Control: 4 hapa
Video: Проста ігрова консоль на Атмега 8. Простая игровая консоль на Атмега 8. 2024, Nëntor
Anonim
Drejtimi motorik proporcional Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Drejtimi motorik proporcional Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Drejtimi motorik Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Drejtimi motorik Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Drejtimi motorik Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Drejtimi motorik Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Drejtimi motorik proporcional Atmega128A - ATMEL ICE AVR Timer UART PWM Control
Drejtimi motorik proporcional Atmega128A - ATMEL ICE AVR Timer UART PWM Control

Në këtë udhëzues, unë do t'ju shpjegoj se si

  • kontrolloni një motor DC me PWM
  • komunikoni përmes UART
  • trajtoni ndërprerjet e kohëmatësit

Para së gjithash, ne do të përdorim një bord të zhvillimit të sistemit AVR Core të cilin mund ta gjeni në Aliexpress rreth 4 dollarë. Lidhja e bordit të zhvillimit është këtu. Ne gjithashtu do të përdorim Atmel ICE Debugger dhe Atmel Studio për të programuar dhe korrigjuar softuerin tonë.

Hapi 1: Zhytje e thellë në fletën e të dhënave dhe kodin burimor - Shpejtësia e orës

Zhytje e thellë në fletën e të dhënave dhe kodin burimor - Shpejtësia e orës
Zhytje e thellë në fletën e të dhënave dhe kodin burimor - Shpejtësia e orës
Zhytje e thellë në fletën e të dhënave dhe kodin burimor - Shpejtësia e orës
Zhytje e thellë në fletën e të dhënave dhe kodin burimor - Shpejtësia e orës
Zhytje e thellë në fletën e të dhënave dhe kodin burimor - Shpejtësia e orës
Zhytje e thellë në fletën e të dhënave dhe kodin burimor - Shpejtësia e orës

Në 1. plumb përcaktojmë frekuencën tonë kristalore ku mund të shohim në tabelën e zhvillimit

Hapi 2: Vendosja e regjistrave UART

Vendosja e regjistrave UART
Vendosja e regjistrave UART
Vendosja e regjistrave UART
Vendosja e regjistrave UART
Vendosja e regjistrave UART
Vendosja e regjistrave UART
Vendosja e regjistrave UART
Vendosja e regjistrave UART

Në mënyrë që të komunikoni me UART ju duhet të vendosni Regjistrat e Shkallës së Baud USART - UBRRnL dhe UBRRnH saktë mund ta llogaritni vetë ose mund të përdorni kalkulatorin online për të marrë me lehtësi vlerat e sakta

Llogaritësi në internet

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

Pra, vlera MYUBBR llogaritet atëherë, Në regjistrin UCSR0B ne aktivizojmë RXEN0 (aktivizimi i recv) TXEN0 (aktivizimi i transmetimit) dhe RXCIE0 (RX për ndërprerje). Në regjistrin UCSR0C zgjedhim madhësinë e karikimit 8 bit.

Pasi të vendosim bitin e ndërprerjes RX, duhet të shtojmë funksionin ISR për USART0_RX_vect

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

Ju nuk duhet të bëni ndonjë logjikë biznesi në rutinën tuaj të shërbimit të ndërprerë. Ju duhet ta bëni funksionin të kthehet sa më shpejt.

Hapi 3: Cilësimet e PWM

Cilësimet e PWM
Cilësimet e PWM

Në funksionin initPWM ne vendosim shkallëzuesin e orës sonë CPU, modalitetin Timer/Counter si PWM të shpejtë dhe vendosim sjelljen e tij me bit COM

Ne gjithashtu duhet të lidhim motorin DC me pinin OC2 i cili është specifikuar në Tabelën 66. Krahasoni Modalitetin e Daljes, Modalitetin e PWM të Shpejtë në fletën tonë të të dhënave, gjithashtu do të shihni që kunja OC2 është (OC2/OC1C) PB7

Hapi 4: Rezultati

Rezultati
Rezultati
Rezultati
Rezultati

Kur ngarkoni kodin burimor në shtojcë.

Mund të futni një vlerë të re PWM (0-255) nga UART (mund të përdorni terminalin e portit serik arduino) për të vendosur shpejtësinë e motorit DC.

Recommended: