- PWM (modulacja szerokości impulsu):
- Silnik serwo i PWM:
- Wymagane składniki:
- Schemat obwodu:
- Objaśnienie działania i programowania:
Raspberry Pi to płyta oparta na architekturze ARM przeznaczona dla elektroników i hobbystów. PI jest obecnie jedną z najbardziej zaufanych platform do tworzenia projektów. Dzięki większej szybkości procesora i 1 GB pamięci RAM PI może być używany w wielu ważnych projektach, takich jak przetwarzanie obrazu i Internet rzeczy.
Aby wykonać którykolwiek z ważnych projektów, należy zrozumieć podstawowe funkcje PI. W tych samouczkach omówimy wszystkie podstawowe funkcje Raspberry Pi. W każdym samouczku omówimy jedną z funkcji PI. Pod koniec tej serii samouczków Raspberry Pi będziesz mógł samodzielnie wykonywać ważne projekty. Przejdź przez poniższe samouczki:
- Pierwsze kroki z Raspberry Pi
- Konfiguracja Raspberry Pi
- Miga dioda LED
- Interfejs przycisków Raspberry Pi
- Generacja Raspberry Pi PWM
- Sterowanie silnikiem prądu stałego za pomocą Raspberry Pi
- Sterowanie silnikiem krokowym z Raspberry Pi
- Połączenie rejestru Shift z Raspberry Pi
- Samouczek Raspberry Pi ADC
W tym samouczku będziemy sterować serwomotorem za pomocą Raspberry Pi. Zanim przejdziemy do serwa, porozmawiajmy o PWM, ponieważ pochodzi z niego koncepcja sterowania serwomotorem.
PWM (modulacja szerokości impulsu):
Wcześniej wielokrotnie rozmawialiśmy o PWM w: Modulacji szerokości impulsu z ATmega32, PWM z Arduino Uno, PWM z układem czasowym 555 i PWM z Arduino Due. PWM oznacza „modulację szerokości impulsu”. PWM to metoda używana do uzyskiwania zmiennego napięcia ze stabilnego źródła zasilania. Aby lepiej zrozumieć PWM, rozważ poniższy obwód,
Na powyższym rysunku, jeśli przełącznik jest stale zamknięty przez pewien czas, dioda LED będzie w tym czasie stale włączona. Jeśli przełącznik jest zamknięty na pół sekundy i otwarty na następne pół sekundy, dioda LED będzie świecić tylko w pierwszej połowie sekundy. Teraz proporcja, dla której dioda LED świeci przez cały czas, nazywa się cyklem pracy i można ją obliczyć w następujący sposób:
Cykl pracy = czas włączenia / (czas włączenia + czas wyłączenia)
Cykl pracy = (0,5 / (0,5 + 0,5)) = 50%
Zatem średnie napięcie wyjściowe będzie wynosić 50% napięcia akumulatora.
Gdy zwiększamy prędkość włączania i wyłączania do poziomu, zobaczymy, że dioda LED jest ściemniana zamiast włączania i wyłączania. Dzieje się tak, ponieważ nasze oczy nie mogą wyraźnie wychwycić częstotliwości wyższych niż 25 Hz. Rozważ cykl 100 ms, dioda LED jest wyłączona na 30 ms i włączona przez 70 ms. Na wyjściu będziemy mieli 70% stabilnego napięcia, więc dioda LED będzie świecić nieprzerwanie z 70% intensywnością.
Współczynnik wypełnienia wynosi od 0 do 100. „0” oznacza całkowite WYŁĄCZENIE, a „100” oznacza całkowite włączenie. Ten współczynnik obciążenia jest bardzo ważny dla silnika serwo. Pozycja serwomotoru jest określana na podstawie tego współczynnika obciążenia. Sprawdź to dla demonstracji PWM z LED i Raspberry Pi.
Silnik serwo i PWM:
Silnik serwo to połączenie silnika prądu stałego, systemu kontroli położenia i przekładni. Serwa mają wiele zastosowań we współczesnym świecie i dzięki temu są dostępne w różnych kształtach i rozmiarach. W tym samouczku będziemy używać serwomotoru SG90, jest to jeden z najpopularniejszych i najtańszych. SG90 to serwomechanizm 180 stopni. Więc za pomocą tego serwa możemy ustawić oś w zakresie 0-180 stopni.
Silnik serwo ma głównie trzy przewody, jeden służy do napięcia dodatniego, drugi do masy, a ostatni do ustawiania położenia. Czerwony przewód jest podłączony do zasilania, przewód Brown jest podłączony do ziemi i żółty przewód (lub białe) jest podłączony do sygnału.
W serwo mamy układ sterowania, który pobiera sygnał PWM z pinu Signal. Dekoduje sygnał i pobiera z niego współczynnik wypełnienia. Następnie porównuje stosunek z predefiniowanymi wartościami pozycji. Jeśli występuje różnica w wartościach, odpowiednio dostosowuje pozycję serwomechanizmu. Zatem pozycja osi serwomotoru jest oparta na współczynniku wypełnienia sygnału PWM na pinie Signal.
Częstotliwość sygnału PWM (modulowana szerokością impulsu) może się różnić w zależności od typu serwomotoru. Dla SG90 częstotliwość sygnału PWM wynosi 50 Hz. Aby poznać częstotliwość działania twojego serwomechanizmu, zapoznaj się z arkuszem danych dla tego konkretnego modelu. Po wybraniu częstotliwości kolejną ważną rzeczą jest DUTY RATIO sygnału PWM.
Poniższa tabela przedstawia położenie serwa dla tego konkretnego współczynnika obciążenia. Możesz uzyskać dowolny kąt pomiędzy, wybierając odpowiednią wartość. Tak więc dla 45º serwomechanizmu współczynnik obciążenia powinien wynosić „5” lub 5%.
POZYCJA |
CŁA |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Przed podłączeniem serwomotoru do Raspberry Pi, możesz przetestować swoje serwo za pomocą tego obwodu testera serwomotoru. Sprawdź również nasze poniższe projekty Servo:
- Sterowanie serwomotorem za pomocą Arduino
- Sterowanie serwomotorem z Arduino Due
- Połączenie serwomotoru z mikrokontrolerem 8051
- Sterowanie serwomotorem za pomocą MATLAB
- Sterowanie serwomotorem za pomocą czujnika Flex
- Kontrola pozycji serwa z wagą (czujnik siły)
Wymagane składniki:
Tutaj używamy Raspberry Pi 2 Model B z Raspbian Jessie OS. Wszystkie podstawowe wymagania sprzętowe i programowe zostały wcześniej omówione, możesz je sprawdzić we wprowadzeniu do Raspberry Pi, poza tym, czego potrzebujemy:
- Kołki łączące
- Kondensator 1000uF
- Silnik serwo SG90
- Płytka prototypowa
Schemat obwodu:
A1000 µF musi być podłączone do szyny zasilającej + 5V, w przeciwnym razie PI może się losowo wyłączyć podczas sterowania serwomechanizmem.
Objaśnienie działania i programowania:
Po podłączeniu wszystkiego zgodnie ze schematem obwodu, możemy włączyć PI, aby napisać program w PYHTON.
Porozmawiamy o kilku komendach, których będziemy używać w programie PYHTON, Zamierzamy zaimportować plik GPIO z biblioteki, poniższa funkcja umożliwia zaprogramowanie pinów GPIO PI. Zmieniamy również nazwę „GPIO” na „IO”, więc w programie zawsze, gdy będziemy chcieli odwołać się do pinów GPIO, użyjemy słowa „IO”.
importuj RPi.GPIO jako IO
Czasami, gdy piny GPIO, których próbujemy użyć, mogą wykonywać inne funkcje. W takim przypadku podczas wykonywania programu będziemy otrzymywać ostrzeżenia. Poniższe polecenie mówi PI, aby zignorował ostrzeżenia i kontynuował program.
IO.setwarnings (fałszywe)
Możemy odnosić się do pinów GPIO PI, albo przez numer pinu na płycie, albo przez numer ich funkcji. Tak jak „PIN 29” na płycie to „GPIO5”. Więc mówimy tutaj albo będziemy reprezentować pinezkę jako „29” lub „5”.
IO.setmode (IO.BCM)
Ustawiamy PIN39 lub GPIO19 jako pin wyjściowy. Otrzymamy wyjście PWM z tego pinu.
IO.setup (19, IO.OUT)
Po ustawieniu pinu wyjściowego musimy ustawić pin jako pin wyjściowy PWM, p = IO.PWM (kanał wyjściowy, częstotliwość sygnału PWM)
Powyższe polecenie służy do ustawiania kanału, a także ustawiania częstotliwości kanału ”. „p” jest tutaj zmienną, może to być wszystko. Używamy GPIO19 jako kanału wyjściowego PWM. „Częstotliwość sygnału PWM” wybierzemy 50, ponieważ częstotliwość robocza SG90 to 50Hz.
Poniższe polecenie służy do rozpoczęcia generowania sygnału PWM. „ DUTYCYCLE ” służy do ustawiania współczynnika „Włącz”, jak wyjaśniono wcześniej, p.start (DUTYCYCLE)
Poniższe polecenie jest używane jako pętla wieczna, z tym poleceniem instrukcje wewnątrz tej pętli będą wykonywane w sposób ciągły.
Podczas gdy 1:
Tutaj program do sterowania serwomechanizmem za pomocą Raspberry Pi zapewnia sygnał PWM na GPIO19. Współczynnik wypełnienia sygnału PWM jest zmieniany między trzema wartościami na trzy sekundy. Tak więc co sekundę serwo obraca się do pozycji określonej przez współczynnik obciążenia. Serwo obraca się w sposób ciągły do 0º, 90º i 180º w ciągu trzech sekund.