Spisu treści:

Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM: 4 stopnie
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM: 4 stopnie

Wideo: Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM: 4 stopnie

Wideo: Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM: 4 stopnie
Wideo: Podobno prawdziwy Mercedes zaczyna się od Klasy C, przekonajmy się 2024, Listopad
Anonim
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM
Atmega128A Proporcjonalna jazda silnika - ATMEL ICE AVR Timer UART Sterowanie PWM

W tej instrukcji wyjaśnię ci, jak

  • sterować silnikiem prądu stałego za pomocą PWM
  • komunikować się przez UART
  • obsługuj przerwania timera

Przede wszystkim użyjemy płytki rozwojowej systemu AVR Core, którą można znaleźć na Aliexpressie za około 4 USD. Link do płytki rozwojowej znajduje się tutaj. Wykorzystamy również Atmel ICE Debugger i Atmel Studio do programowania i debugowania naszego oprogramowania.

Krok 1: Głębokie zanurzenie się w arkuszu danych i kodzie źródłowym - prędkość zegara

Głębokie zanurzenie się w arkuszu danych i kodzie źródłowym - prędkość zegara
Głębokie zanurzenie się w arkuszu danych i kodzie źródłowym - prędkość zegara
Głębokie zanurzenie się w arkuszu danych i kodzie źródłowym - prędkość zegara
Głębokie zanurzenie się w arkuszu danych i kodzie źródłowym - prędkość zegara
Głębokie zanurzenie się w arkuszu danych i kodzie źródłowym - prędkość zegara
Głębokie zanurzenie się w arkuszu danych i kodzie źródłowym - prędkość zegara

W 1. pocisku definiujemy naszą częstotliwość kryształów, którą możemy zobaczyć na tablicy rozwojowej

Krok 2: Konfiguracja rejestrów UART

Ustawianie rejestrów UART
Ustawianie rejestrów UART
Ustawianie rejestrów UART
Ustawianie rejestrów UART
Ustawianie rejestrów UART
Ustawianie rejestrów UART
Ustawianie rejestrów UART
Ustawianie rejestrów UART

Aby komunikować się z UART należy poprawnie ustawić rejestry szybkości transmisji USART – UBRRnL i UBRRnH można je samemu obliczyć lub skorzystać z kalkulatora internetowego, aby łatwo uzyskać prawidłowe wartości

Kalkulator online

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

Tak więc obliczana jest wartość MYUBBR. W rejestrze UCSR0B włączamy RXEN0 (włączanie recv) TXEN0 (włączanie transmisji) i RXCIE0 (RX dla przerwań). W rejestrze UCSR0C wybieramy 8 bitowy rozmiar znaku.

Po ustawieniu bitu przerwania RX, powinniśmy dodać funkcję ISR dla USART0_RX_vect

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

Nie powinieneś wykonywać żadnej logiki biznesowej w swojej procedurze obsługi przerwań. Musisz sprawić, by funkcja wróciła jak najszybciej.

Krok 3: Ustawienia PWM

Ustawienia PWM
Ustawienia PWM

W funkcji initPWM ustawiamy nasz skaler zegara procesora, tryb Timer/Counter jako Fast PWM i ustawiamy jego zachowanie z bitami COM

Powinniśmy również podłączyć silnik prądu stałego do pinu OC2, który jest określony w tabeli 66. Porównaj tryb wyjścia, tryb Fast PWM w naszym arkuszu danych, zobaczysz również, że pin OC2 to (OC2/OC1C) PB7

Krok 4: Wynik

Wynik
Wynik
Wynik
Wynik

Po przesłaniu kodu źródłowego w załączniku.

Możesz wprowadzić nową wartość PWM (0-255) z UART (możesz użyć terminala portu szeregowego arduino), aby ustawić prędkość silnika prądu stałego.

Zalecana: