Inhaltsverzeichnis:

Atmega128A Proportionalmotorantrieb - ATMEL ICE AVR Timer UART PWM Steuerung - Gunook
Atmega128A Proportionalmotorantrieb - ATMEL ICE AVR Timer UART PWM Steuerung - Gunook

Video: Atmega128A Proportionalmotorantrieb - ATMEL ICE AVR Timer UART PWM Steuerung - Gunook

Video: Atmega128A Proportionalmotorantrieb - ATMEL ICE AVR Timer UART PWM Steuerung - Gunook
Video: Getting started with AVR and Atmel Studio 7 2024, November
Anonim
Atmega128A Proportionaler Motorantrieb - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportionaler Motorantrieb - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportionaler Motorantrieb - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportionaler Motorantrieb - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportionaler Motorantrieb - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportionaler Motorantrieb - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportionaler Motorantrieb - ATMEL ICE AVR Timer UART PWM Control
Atmega128A Proportionaler Motorantrieb - ATMEL ICE AVR Timer UART PWM Control

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

Tiefes Eintauchen in Datenblatt und Quellcode - Taktgeschwindigkeit
Tiefes Eintauchen in Datenblatt und Quellcode - Taktgeschwindigkeit
Tiefer Einblick in Datenblatt und Quellcode - Taktgeschwindigkeit
Tiefer Einblick in Datenblatt und Quellcode - Taktgeschwindigkeit
Tiefer Einblick in Datenblatt und Quellcode - Taktgeschwindigkeit
Tiefer Einblick 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

Einstellen von UART-Registern
Einstellen von UART-Registern
Einstellen von UART-Registern
Einstellen von UART-Registern
Einstellen von UART-Registern
Einstellen von UART-Registern
Einstellen von UART-Registern
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

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

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

Empfohlen: