Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
In diesem anweisbaren erkläre ich Ihnen, wie man
- einen Gleichstrommotor mit PWM ansteuern
- kommunizieren über UART
- Timer-Interrupts verarbeiten
Zuallererst verwenden wir ein Entwicklungsboard für das AVR-Core-System, das Sie bei Aliexpress für etwa 4 USD finden können. Der Link zum Entwicklungsboard ist hier. Wir werden auch Atmel ICE Debugger und Atmel Studio verwenden, um unsere Software zu programmieren und zu debuggen.
Schritt 1: Tiefes Eintauchen in Datenblatt und Quellcode - Taktgeschwindigkeit
In 1. dem Aufzählungspunkt definieren wir unsere Quarzfrequenz, die wir auf der Entwicklungstafel sehen können
Schritt 2: Einstellen von UART-Registern
Um mit UART zu kommunizieren, müssen Sie die USART-Baudratenregister – UBRRnL und UBRRnH korrekt einstellen. Sie können es selbst berechnen oder Sie können den Online-Rechner verwenden, um einfach die richtigen Werte zu erhalten
Online-Rechner
ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…
Der MYUBBR-Wert wird dann berechnet. Im Register UCSR0B aktivieren wir RXEN0 (recv enable) TXEN0 (transmit enable) und RXCIE0 (RX für Interrupt). Im Register UCSR0C wählen wir die 8-Bit-Zeichengröße.
Nachdem wir das RX-Interrupt-Bit gesetzt haben, sollten wir die ISR-Funktion für USART0_RX_vect hinzufügen
ISR (USART0_RX_vect) { char rcvChar = UDR0; if(rcvChar != '\n') { Puffer[PufferIndex] = rcvChar; PufferIndex++; } }
Sie sollten keine Geschäftslogik in Ihrer Interrupt-Service-Routine verwenden. Sie müssen die Funktion so schnell wie möglich zurückgeben.
Schritt 3: PWM-Einstellungen
In der Funktion initPWM stellen wir unseren CPU Clock Scaler, Timer/Counter-Modus als Fast PWM ein und stellen sein Verhalten mit COM-Bits ein
Wir sollten auch den Gleichstrommotor an den OC2-Pin anschließen, der in Tabelle 66 angegeben ist. Vergleichen Sie den Ausgangsmodus, den schnellen PWM-Modus in unserem Datenblatt. Sie werden auch sehen, dass der OC2-Pin (OC2/OC1C) PB7 ist
Schritt 4: Ergebnis
Wenn Sie den Quellcode im Anhang hochladen.
Sie können einen neuen PWM-Wert (0-255) von UART eingeben (Sie können den seriellen Arduino-Anschluss verwenden), um die DC-Motordrehzahl einzustellen.