- Modulacja szerokości impulsu (PWM)
- Programowanie ATtiny13 za pomocą Arduino
- Wymagane składniki
- Schemat obwodu i działanie
Silnik serwo działa na zasadzie modulacji szerokości impulsu (PWM), a jego kąt obrotu jest kontrolowany przez czas trwania impulsu przyłożonego do jego kołka sterującego. W tym samouczku będziemy sterować serwomotorem z mikrokontrolerem ATtiny13 przy użyciu techniki PWM. Więc zanim przejdziemy dalej, najpierw dowiemy się o PWM, silniku serwo i jak zaprogramować ATtiny13 z płytką Arduino.
Modulacja szerokości impulsu (PWM)
Modulacja szerokości impulsu (PWM) jest zdefiniowana jako metoda generowania sygnału analogowego przy użyciu źródła cyfrowego. Sygnał PWM składa się z dwóch głównych elementów - współczynnika wypełnienia i częstotliwości. Te komponenty definiują jego zachowanie. Cykl pracy określa czas, przez jaki sygnał jest w stanie wysokim. Jest oznaczany jako procent całkowitego czasu potrzebnego do zakończenia jednego cyklu.
Cykl pracy = czas włączenia / (czas włączenia + czas wyłączenia)
Częstotliwość określa, jak szybko PWM kończy cykl i jak szybko sygnał przełącza się między stanem wysokim i niskim. Częstotliwość 100 Hz oznacza 100 cykli na sekundę. Poprzez włączanie i wyłączanie sygnału cyfrowego z dużą szybkością i przy określonym cyklu pracy, wyjście będzie wyglądać jak stały sygnał analogowy. Jedną z potężnych zalet PWM jest to, że utrata mocy jest bardzo minimalna.
Wszystkie serwomotory pracują bezpośrednio przy zasilaniu + 5V, ale musimy uważać na ilość prądu, który silnik pobierałby. Jeśli używamy więcej niż dwóch serwomotorów, należy zaprojektować odpowiednią osłonę serwomechanizmu.
Przed podłączeniem serwa do Attiny13, możesz przetestować swoje serwo za pomocą tego obwodu testera serwomotoru. Tutaj połączyliśmy serwomotor z wieloma mikrokontrolerami:
- Łączenie serwomotoru z ARM7-LPC2148
- Połączenie silnika serwo z MSP430G2
- Sterowanie wieloma serwomotorami za pomocą Arduino
- Łączenie serwomotoru z mikrokontrolerem PIC za pomocą MPLAB i XC8
- Sterowanie serwomotorem z Raspberry Pi
- Sterowanie serwomotorem z Arduino Due
- Połączenie silnika serwo z mikrokontrolerem AVR Atmega16
Programowanie ATtiny13 za pomocą Arduino
Attiny13 można zaprogramować za pomocą Arduino Uno lub dowolnej innej płytki Arduino. Podłącz Attiny13 do Arduino Uno, jak pokazano na poniższym rysunku.
- Arduino 5V - ATtiny13 pin 8
- Arduino GND - ATtiny13 pin 4
- Arduino pin 13 - ATtiny13 pin 7
- Arduino pin 12 - ATtiny13 pin 6
- Arduino pin 11 - ATtiny13 pin 5
- Arduino pin 10 - ATtiny13 pin 1
Arduino jest ustawiony jako programator do programowania ATtiny13. Odbywa się to poprzez przesłanie szkicu ArduinoISP do Arduino. Ten szkic Arduino jest dostępny w przykładach w Arduino IDE. Otwórz Arduino IDE i przejdź do Pliki> Przykłady> ArduinoISP .
Teraz pojawi się program dla ArduinoISP. Prześlij program do Arduino Uno.
Arduino Uno jest teraz gotowe do programowania Attiny13. Ale musimy skonfigurować Attiny, instalując jego podstawowe pliki. Aby to zrobić, przejdź do Plik >> Preferencje w Arduino IDE
Następnie pojawi się nowe okno. W polu „ Dodatkowe adresy URL menedżera tablicy ” dodaj poniższe łącze i kliknij „OK”.
„Https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json”
Teraz w swoim Arduino IDE przejdź do Narzędzia >> Tablica >> Menedżer tablic
Następnie pojawi się kolejne okno, w którym w polu wyszukiwania wpisz „Attiny”, a otrzymasz „DIY ATtiny”, a następnie kliknij przycisk „zainstaluj” (już go zainstalowałem, dlatego przycisk instalacji jest szary)
Aby rozpocząć programowanie ATtiny 13, musimy wypalić na nim Bootloader . W tym celu przejdź do Narzędzia> Tablica> ATtiny13.
Teraz przejdź do Narzędzia> Wersja procesora i sprawdź, czy wybrana jest właściwa wersja ATtiny. Wybierz ATtiny13 lub ATtiny13a w zależności od układu.
Następnie kliknij przycisk Burn bootloader u dołu menu Narzędzia.
Po wypaleniu bootloadera ATtiny jest teraz gotowy do zaprogramowania. Teraz możesz przesłać swój program.
Wymagane składniki
- Mikrokontroler ATtiny13
- Siłownik
- Potencjometr
- Akumulator + 5V
- Arduino IDE
- Przewody łączące
Schemat obwodu i działanie
Schemat obwodu do sterowania serwomotorem za pomocą potencjometru z ATtiny13 przedstawiono poniżej.
Poniżej znajdują się połączenia
- Podłącz pin sterujący serwomotorem do styku 5 ATtiny13
- Podłącz masę serwomotoru do styku 4 ATtiny13
- Podłącz VCC serwomotoru do pinu 8 ATtiny13
- Podłącz środkowy pin potencjometru do pinu 7 ATtiny13
- Podłącz pierwszy i trzeci pin potencjometru do VCC i GND.
- Podłącz dodatni akumulator + 5V do styku 8 ATtiny13
- Podłącz ujemny akumulator + 5V do styku 4 ATtiny13
Potencjometr jest podłączony do pinu 7 (PB2) ATtiny13, a przewód sterujący serwomotoru jest podłączony do pinu 5 (PB0).
Tutaj odczytywana jest wartość potencjometru i przekształcana na wartość z zakresu od 0 do 180. Następnie ta wartość kąta jest konwertowana na mikrosekundy i impuls jest podawany na pin sterujący serwomotoru z obliczonym mikrosekundowym opóźnieniem. Teraz serwomotor będzie się obracał zgodnie z wartością potencjometru, jak pokazano na poniższym filmie.