Cuprins:

Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM: 4 pași
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM: 4 pași

Video: Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM: 4 pași

Video: Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM: 4 pași
Video: Din ce este alcătuit un MOTOR? 2024, Noiembrie
Anonim
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM
Conducere proporțională a motorului Atmega128A - Timer ATMEL ICE AVR Control UART PWM

În acest instructiv, vă voi explica cum să faceți acest lucru

  • controlați un motor DC cu PWM
  • comunica prin UART
  • întrerupe temporizatorul de mâner

În primul rând, vom folosi o placă de dezvoltare a sistemului AVR Core pe care o puteți găsi pe Aliexpress în jur de 4 USD. Link-ul pentru placa de dezvoltare este aici. De asemenea, vom folosi Atmel ICE Debugger și Atmel Studio pentru a programa și depana software-ul nostru.

Pasul 1: Scufundare profundă în foaia de date și codul sursă - Viteza ceasului

Scufundări profunde în foaia de date și codul sursă - Viteza ceasului
Scufundări profunde în foaia de date și codul sursă - Viteza ceasului
Scufundări profunde în foaia de date și codul sursă - Viteza ceasului
Scufundări profunde în foaia de date și codul sursă - Viteza ceasului
Scufundări profunde în foaia de date și codul sursă - Viteza ceasului
Scufundări profunde în foaia de date și codul sursă - Viteza ceasului

În 1. glonțul ne definim frecvența cristalului unde putem vedea pe placa de dezvoltare

Pasul 2: Setarea registrelor UART

Setarea registrelor UART
Setarea registrelor UART
Setarea registrelor UART
Setarea registrelor UART
Setarea registrelor UART
Setarea registrelor UART
Setarea registrelor UART
Setarea registrelor UART

Pentru a comunica cu UART trebuie să setați USART Baud Rate Registers - UBRRnL și UBRRnH corect, îl puteți calcula singur sau puteți utiliza calculatorul online pentru a obține cu ușurință valorile corecte

Calculator online

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

Deci valoarea MYUBBR este calculată atunci, în registrul UCSR0B activăm RXEN0 (activare recv) TXEN0 (activare transmisie) și RXCIE0 (RX pentru întrerupere). În registrul UCSR0C selectăm dimensiunea caracterelor de 8 biți.

După ce setăm bitul de întrerupere RX, ar trebui să adăugăm funcția ISR pentru USART0_RX_vect

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

Nu ar trebui să faceți nicio logică de afaceri în rutina de servicii de întrerupere. Trebuie să faceți funcția să revină cât mai curând posibil.

Pasul 3: Setări PWM

Setări PWM
Setări PWM

În funcția initPWM setăm scalerul de ceas al procesorului, modul Timer / Counter ca PWM rapid și setăm comportamentul său cu biți COM

De asemenea, ar trebui să conectăm motorul de curent continuu la pinul OC2 care este specificat în tabelul 66. Comparați modul de ieșire, modul PWM rapid în foaia noastră de date, veți vedea, de asemenea, că pinul OC2 este (OC2 / OC1C) PB7

Pasul 4: Rezultat

Rezultat
Rezultat
Rezultat
Rezultat

Când încărcați codul sursă în atașament.

Puteți introduce o nouă valoare PWM (0-255) din UART (puteți utiliza terminalul de port serial arduino) pentru a seta viteza motorului de curent continuu.

Recomandat: