Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
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
Në 1. plumb përcaktojmë frekuencën tonë kristalore ku mund të shohim në tabelën e zhvillimit
Hapi 2: 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
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
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.