Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
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
W 1. pocisku definiujemy naszą częstotliwość kryształów, którą możemy zobaczyć na tablicy rozwojowej
Krok 2: Konfiguracja 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
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
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.