Indholdsfortegnelse:

Atmega128A proportional motorkørsel - ATMEL ICE AVR -timer UART PWM -kontrol: 4 trin
Atmega128A proportional motorkørsel - ATMEL ICE AVR -timer UART PWM -kontrol: 4 trin

Video: Atmega128A proportional motorkørsel - ATMEL ICE AVR -timer UART PWM -kontrol: 4 trin

Video: Atmega128A proportional motorkørsel - ATMEL ICE AVR -timer UART PWM -kontrol: 4 trin
Video: PID Controlled Inverse Pendulum Robot Based on AVR ATMEGA8 2024, November
Anonim
Atmega128A proportional motorkørsel - ATMEL ICE AVR -timer UART PWM -kontrol
Atmega128A proportional motorkørsel - ATMEL ICE AVR -timer UART PWM -kontrol
Atmega128A Proportional Motorkørsel - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motorkørsel - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motorkørsel - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportional Motorkørsel - ATMEL ICE AVR Timer UART PWM Control
Atmega128A proportional motorkørsel - ATMEL ICE AVR -timer UART PWM -kontrol
Atmega128A proportional motorkørsel - ATMEL ICE AVR -timer UART PWM -kontrol

I denne instruktive forklarer jeg dig hvordan

  • styre en jævnstrømsmotor med PWM
  • kommunikere via UART
  • håndter timer afbrydelser

Først og fremmest vil vi bruge et AVR Core system Development board, som du kan finde på Aliexpress omkring 4 USD. Linket til Development board er her. Vi vil også bruge Atmel ICE Debugger og Atmel Studio til at programmere og debugge vores software.

Trin 1: Dyb dykker ind i datablad og kildekode - Urhastighed

Deep Diving Into Datablad & Kildekode - Urhastighed
Deep Diving Into Datablad & Kildekode - Urhastighed
Deep Diving Into Datablad & Kildekode - Urhastighed
Deep Diving Into Datablad & Kildekode - Urhastighed
Deep Diving Into Datablad & Kildekode - Urhastighed
Deep Diving Into Datablad & Kildekode - Urhastighed

I 1. kuglen definerer vi vores krystalfrekvens, hvor vi kan se på udviklingsbordet

Trin 2: Indstilling af UART -registre

Indstilling af UART -registre
Indstilling af UART -registre
Indstilling af UART -registre
Indstilling af UART -registre
Indstilling af UART -registre
Indstilling af UART -registre
Indstilling af UART -registre
Indstilling af UART -registre

For at kommunikere med UART skal du indstille USART Baud Rate Registers - UBRRnL og UBRRnH korrekt, du kan selv beregne det, eller du kan bruge online lommeregner til let at få korrekte værdier

Online lommeregner

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

Så MYUBBR -værdien beregnes derefter, i register UCSR0B aktiverer vi RXEN0 (recv enable) TXEN0 (transmitteraktivering) og RXCIE0 (RX for afbrydelse). I register UCSR0C vælger vi 8 bit char -størrelse.

Når vi har indstillet RX -afbrydelsesbit, skal vi tilføje ISR -funktion til USART0_RX_vect

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

Du bør ikke gøre nogen forretningslogik i din afbrydelsesrutine. Du skal få funktionen til at vende tilbage hurtigst muligt.

Trin 3: PWM -indstillinger

PWM -indstillinger
PWM -indstillinger

I funktion initPWM indstiller vi vores CPU -urskaler, timer/tæller -tilstand som hurtig PWM og indstiller dens adfærd med COM -bits

Vi bør også tilslutte DC -motoren til OC2 -stiften, som er angivet i tabel 66. Sammenlign Output -tilstand, Hurtig PWM -tilstand i vores datablad, du vil også se, at OC2 -stiften er (OC2/OC1C) PB7

Trin 4: Resultat

Resultat
Resultat
Resultat
Resultat

Når du uploader kildekoden i vedhæftede filer.

Du kan indtaste en ny PWM-værdi (0-255) fra UART (du kan bruge arduino seriel portterminal) til at indstille DC-motorhastigheden.

Anbefalede: