Zmiana mocy elektrycznej przez Raspberry
streszczenie
Zasada działania
Modulacja szerokości impulsu jest techniką powszechnie stosowaną do syntezy ciągłych sygnałów przy użyciu obwodów włączania / wyłączania. Ogólna zasada jest taka, że poprzez zastosowanie kolejnych impulsów (zmiana stanu od 0 do 1) dla dobrze dobranych czasów trwania, każdą wartość pośrednią można uzyskać średnio przez pewien okres.
Zasada ta opiera się na dwóch parametrach:
-
Częstotliwość (okres)
-
Cykl pracy
Częstotliwość (lub okres) to liczba razy na sekundę generowanych impulsów. Jest to liczone od momentu rozpoczęcia jednego impulsu do początku następnego. Jednostką częstotliwości jest herc (Hz). Hertz to jedno uderzenie serca na sekundę. Na przykład 50 Hz odpowiada 50 impulsom na sekundę, co daje impuls co 0.02 sekundy.
Cykl pracy to procent czasu, przez jaki sygnał jest na pozycji 1 podczas cyklu.
Na przykład częstotliwość 50 Hz i współczynnik wypełnienia 50% oznacza, że co 0.02 sekundy sygnał będzie miał 1 (wysoki) przez połowę czasu i 0 (NISKI) przez drugą połowę.
50 Hz i 50% cyklu
Dla częstotliwości 50 Hz i wypełnienia 80% sygnał będzie miał wartość 1 (HIGH) przez 80% czasu cyklu wynoszącego 0.02 sekundy.
50 Hz i 80% cyklu
Przetestuj za pomocą diody LED
Cóż, teoria jest fajna, ale największą frajdę sprawia praktyka! Do pierwszego testu będziesz potrzebować diody LED i rezystora 10 Ohm, aby chronić ten drugi. Maksymalny prąd pinu GPIO Raspberry nie przekracza 16 mA. Na zdecydowanej większości diod LED obsługiwany prąd wynosi 20 mA. Dlatego opór nie powinien być konieczny, ale mimo to chroni. Zależy od Ciebie. Wzór obliczeniowy jest następujący (jeśli masz dokumentację dla swojej diody LED).
Rezystancja = (Napięcie zasilania - napięcie LED) / Maksymalny prąd LED
Obwód wygląda następująco:
Co do reszty, przypuszczam, że zainstalowałeś bibliotekę Pythona pozwalającą na sterowanie portami GPIO. Jeśli tak nie jest, odsyłam do tego artykułu.
Miganie diody LED
Zaczniemy od prostego błysku diody LED. Poniższy kod umożliwia miganie diody LED przez 50% czasu każdego okresu. Okresy trwają 0.5 Hz, tj. jeden okres co 2 sekundy. Komentarze powinny wystarczyć do zrozumienia kodu.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/usr/bin/env python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
#0.5 Hz = 1 fois toutes les deux secondes
p = GPIO.PWM(4, 0.5)
# cycle = 50%
p.start(50)
# une touche pour quitter le programme.
input(‘Appuyez sur une touche pour stopper’)
# La fonction input est bloquante. Si on arrive ici alors on peut fermer le programme
p.stop()
GPIO.cleanup()
|
Miganie diody LED ze zmianą intensywności
W poniższym przykładzie zamierzamy sprawić, że dioda LED zacznie migać, ale tym razem kontrolując jej poziom intensywności dzięki raportowi z cyklu.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
# creation d’un objet PWM. canal=4 frequence=50Hz
LED = GPIO.PWM(4, 50)
# demarrage du PWM avec un cycle a 0 (LED off)
LED.start(0)
# On fait varier le rapport cyclique de 0 a 100 puis de 100 a 0
try:
while 1:
for dc in range(0, 101, 1):
LED.ChangeDutyCycle(dc)
time.sleep(0.01)
for dc in range(100, –1, –1):
LED.ChangeDutyCycle(dc)
time.sleep(0.01)
except KeyboardInterrupt:
pass
p.stop()
GPIO.cleanup()
|
Zmiana prędkości silnika przez Raspberry
Porty GPIO Rapsberry wysyłają tylko sygnał 3,3 V. Jak więc zmienić moc obciążenia wymagającego znacznie więcej niż 3,3 V, takiego jak silnik? W tym celu użyjemy komponentu, który działa jak interuptor, który nazywa się MOSFET. MOSFET to element elektroniczny służący do sterowania mocą. Zasada działania tego typu tranzystora polega na tym, że gdy napięcie Bramki osiągnie wystarczającą wartość, prąd przepływa pomiędzy Drenem a Źródłem. Niektóre tranzystory są sterowane prądem, Mosfet jest sterowany napięciem.
-
1 = G = GATE: pin kontrolny. Poleceniem tutaj będzie port GPIO.
-
2 = D = DRAIN: pin, który odprowadza prąd (obciążenie co... tu podłączymy nasz silnik)
-
3 = S = SOURCE: pin źródła prądu (gdzie pobierany jest prąd, który ma być przesłany do obciążenia ... w naszym przypadku jest to masa)
Tak więc MOSFET umożliwia oddzielenie obwodu, w którym znajduje się nasze obciążenie, od obwodu sterującego, w tym przypadku Rpi.
Oto schemat z silnikiem eklektycznym i zasilaniem akumulatorowym 12V.
Kod, którego należy użyć, jest dokładnie taki sam, jak w przypadku migania diody LED ze zmienną intensywnością.
Nie masz pod ręką silnika lub zasilacza? Możesz wypróbować obwód z Rpi. Do tego potrzebujesz diody LED i rezystora, tym razem 100 Ohm, ponieważ do obwodu testowego użyjemy źródła Vcc 5v hard Rpi.
Materiały potrzebne do badania:
- DOPROWADZIŁO
- Rezystancja 100 Ohm
- MOSFET
W poniższym obwodzie źródło Vcc 5 V Rpi przechodzi przez rezystor 100 Ohm, aby ograniczyć prąd, a następnie do diody LED i ostatecznie łączy się z drenem MOSFET. Port GPIO 4 umożliwia, podobnie jak w poprzednim układzie, sterowanie tranzystorem MOSFET na bramce.
Tutaj znowu kod, którego należy użyć, jest dokładnie taki sam, jak w przypadku migania diody LED ze zmianą intensywności.