Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
I denne instruksen vil jeg forklare deg hvordan
- styre en likestrømsmotor med PWM
- kommunisere via UART
- håndteringsuret avbryter
Først av alt, vil vi bruke et AVR Core -systemutviklingskort som du finner på Aliexpress rundt 4 USD. Linken til utviklingskortet er her. Vi vil også bruke Atmel ICE Debugger og Atmel Studio til å programmere og feilsøke programvaren vår.
Trinn 1: Dyp dykking i datablad og kildekode - Klokkehastighet
I 1. kulen definerer vi krystallfrekvensen vår der vi kan se på utviklingstavlen
Trinn 2: Angi UART -registre
For å kommunisere med UART må du angi USART Baud Rate Registers - UBRRnL og UBRRnH riktig, du kan beregne det selv eller du kan bruke online kalkulator for å få riktige verdier enkelt
Online kalkulator
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Så MYUBBR -verdien beregnes da, I register UCSR0B aktiverer vi RXEN0 (recv enable) TXEN0 (transmitter enable) og RXCIE0 (RX for interrupt). I register UCSR0C velger vi 8 biters char størrelse.
Etter at vi har satt RX -avbruddsbit, bør vi legge til ISR -funksjon for USART0_RX_vect
ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {buffer [bufferIndex] = rcvChar; bufferIndex ++; }}
Du bør ikke gjøre noen forretningslogikk i avbruddsrutinen. Du må få funksjonen tilbake så fort som mulig.
Trinn 3: PWM -innstillinger
I funksjon initPWM setter vi vår CPU -klokkeskaler, Timer/Counter -modus som Fast PWM og angir dens oppførsel med COM -bits
Vi bør også koble likestrømsmotoren til OC2 -pinnen som er spesifisert i tabell 66. Sammenlign Output Mode, Fast PWM Mode i vårt datablad, du vil også se at OC2 pin er (OC2/OC1C) PB7
Trinn 4: Resultat
Når du laster opp kildekoden i vedlegget.
Du kan angi en ny PWM-verdi (0-255) fra UART (du kan bruke arduino seriell portterminal) for å stille DC-motorhastigheten.