Innholdsfortegnelse:

Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll: 4 trinn
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll: 4 trinn

Video: Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll: 4 trinn

Video: Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll: 4 trinn
Video: PID Speed Control of DC Motor with ATMEGA128 2024, November
Anonim
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll
Atmega128A proporsjonal motorkjøring - ATMEL ICE AVR -timer UART PWM -kontroll

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

Dyp dykking i datablad og kildekode - Klokkehastighet
Dyp dykking i datablad og kildekode - Klokkehastighet
Dyp dykking i datablad og kildekode - Klokkehastighet
Dyp dykking i datablad og kildekode - Klokkehastighet
Dyp dykking i datablad og kildekode - Klokkehastighet
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

Angi UART -registre
Angi UART -registre
Angi UART -registre
Angi UART -registre
Angi UART -registre
Angi UART -registre
Angi UART -registre
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

PWM -innstillinger
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

Resultat
Resultat
Resultat
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.

Anbefalt: