Inhoudsopgave:

Atmega128A proportioneel motorrijden - ATMEL ICE AVR Timer UART PWM-besturing - Ajarnpa
Atmega128A proportioneel motorrijden - ATMEL ICE AVR Timer UART PWM-besturing - Ajarnpa

Video: Atmega128A proportioneel motorrijden - ATMEL ICE AVR Timer UART PWM-besturing - Ajarnpa

Video: Atmega128A proportioneel motorrijden - ATMEL ICE AVR Timer UART PWM-besturing - Ajarnpa
Video: Внутрисистемный программатор AVR DRAGON 2024, November
Anonim
Atmega128A Proportionele motoraandrijving - ATMEL ICE AVR-timer UART PWM-besturing
Atmega128A Proportionele motoraandrijving - ATMEL ICE AVR-timer UART PWM-besturing
Atmega128A Proportionele motoraandrijving - ATMEL ICE AVR-timer UART PWM-besturing
Atmega128A Proportionele motoraandrijving - ATMEL ICE AVR-timer UART PWM-besturing
Atmega128A Proportionele motoraandrijving - ATMEL ICE AVR-timer UART PWM-besturing
Atmega128A Proportionele motoraandrijving - ATMEL ICE AVR-timer UART PWM-besturing
Atmega128A Proportionele motoraandrijving - ATMEL ICE AVR-timer UART PWM-besturing
Atmega128A Proportionele motoraandrijving - ATMEL ICE AVR-timer UART PWM-besturing

In deze instructable leg ik je uit hoe je

  • een DC-motor besturen met PWM
  • communiceren via UART
  • omgaan met timeronderbrekingen

Allereerst gebruiken we een AVR Core-systeemontwikkelingsbord dat u op Aliexpress ongeveer 4 USD kunt vinden. De link voor het ontwikkelbord is hier. We zullen ook Atmel ICE Debugger en Atmel Studio gebruiken om onze software te programmeren en te debuggen.

Stap 1: diep duiken in gegevensblad en broncode - kloksnelheid

Diep duiken in gegevensblad en broncode - kloksnelheid
Diep duiken in gegevensblad en broncode - kloksnelheid
Diep duiken in gegevensblad en broncode - kloksnelheid
Diep duiken in gegevensblad en broncode - kloksnelheid
Diep duiken in gegevensblad en broncode - kloksnelheid
Diep duiken in gegevensblad en broncode - kloksnelheid

In 1. de kogel definiëren we onze kristalfrequentie waar we kunnen zien op het ontwikkelbord

Stap 2: UART-registers instellen

UART-registers instellen
UART-registers instellen
UART-registers instellen
UART-registers instellen
UART-registers instellen
UART-registers instellen
UART-registers instellen
UART-registers instellen

Om met UART te communiceren, moet u de USART-baudrateregisters - UBRRnL en UBRRnH correct instellen, u kunt het zelf berekenen of u kunt een online rekenmachine gebruiken om gemakkelijk de juiste waarden te krijgen

Online rekenmachine

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

Dus de MYUBBR-waarde wordt dan berekend. In register UCSR0B schakelen we RXEN0 (recv enable) TXEN0 (transmit enable) en RXCIE0 (RX voor interrupt) in. In register UCSR0C selecteren we 8 bit char size.

Nadat we de RX-interruptbit hebben ingesteld, moeten we de ISR-functie toevoegen voor USART0_RX_vect

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

U moet geen bedrijfslogica toepassen in uw interruptserviceroutine. Je moet de functie zo snel mogelijk terug laten komen.

Stap 3: PWM-instellingen

PWM-instellingen
PWM-instellingen

In de functie initPWM stellen we onze CPU-klokscaler, Timer/Counter-modus in op Fast PWM en stellen we het gedrag ervan in met COM-bits

We moeten ook de DC-motor aansluiten op de OC2-pin die is gespecificeerd in Tabel 66. Vergelijk Output Mode, Fast PWM Mode in onze datasheet, je zult ook zien dat de OC2-pin (OC2/OC1C) PB7 is

Stap 4: Resultaat

Resultaat
Resultaat
Resultaat
Resultaat

Wanneer u de broncode uploadt in de bijlage.

U kunt een nieuwe PWM-waarde (0-255) van UART invoeren (u kunt de arduino seriële poortterminal gebruiken) om de DC-motorsnelheid in te stellen.

Aanbevolen: