Jak używać Raspberry Pi 4B do wysyłania sygnałów PWM do ESC w celu sterowania podwodnymi sterami strumieniowymi?
Wysłane przez Fengyukun dnia
Użyj ESC: APISQUEEN 24V 100A ESC
Instrukcja obsługi 100A ESC: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535
1: Odblokuj ESC
Neutralny sygnał stopu jest sygnałem jego odblokowania
W przypadku sygnału o częstotliwości 50 Hz okres sygnału wynosi 20 ms.
Wartość procentowa w instrukcji odnosi się do procentu szerokości impulsu sterującego PWM, a nie do rzeczywistego wypełnienia sygnału PWM (łatwo to źle zrozumieć).
Następnie neutralny sygnał stopu to:
Cykl pracy 75%, rzeczywisty cykl pracy 7,5%: 1,5 ms (1,475 ms ~ 1,525 ms);
importuj pigpio
Czas importu
PI = pigpio.PI() #Utwórz obiekt pigpio
LED_PIN = 18 #Określ port GPIO, do którego podłączona jest dioda LED
PWM_FREQUENCY = 50 #Zdefiniuj częstotliwość PWM (Hz)
PWM_zakres = 1000
Zdefiniuj cykl pracy PWM, zakres wartości wynosi 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Ustaw port GPIO w tryb wyjściowy
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #Ustaw częstotliwość PWM
π. set_PWM_range(LED_PIN, PWM_range) #Ustaw zakres 1000
π. set_pwm_dutycycle (LED_PIN, 75) #Set PWM cykl pracy 75/1000= 7,5%
Time.sleep(3) #Opóźnij 3 sekundy, aby odblokować pomyślnie
2. Sterowanie ESC
Cykl pracy 75%: Zatrzymaj, gdy rzeczywisty cykl pracy wynosi 7,5% ~ 1,5 ms (pomiędzy 1,475 ms ~ 1,525 ms);
Cykl pracy 50%-75%: rzeczywisty cykl pracy 5%-7,5%, 1ms-1,5ms w tył;
Cykl pracy 100%: rzeczywisty cykl pracy 7,5%-10% 1,5 ms -2 ms do przodu
π. set_PWM_dutycycle (LED_PIN, 100)
#Forward: 7,5% ~ 10% Im wyższy cykl pracy, tym większa prędkość do przodu.
czas.snu(15)
π. set_PWM_dutycycle (LED_PIN 60)
#Rewers: Im cykl pracy jest bliższy 5%, tym większa jest prędkość wsteczna.
czas.snu(5)
π. set_PWM_dutycycle (LED_PIN, 75)
#cykl pracy
czas.snu(5)
3. Debugowanie
Podczas debugowania możesz użyć oscyloskopu, aby sprawdzić, czy przebieg jest prawidłowy:
Na przykład poniższy obrazek przedstawia sygnał stopu PWM, który zacząłem wysyłać.
Amplituda napięcia wynosi 3,3 V, okres wynosi 20 ms, a rzeczywisty cykl pracy wynosi 7,5%, wszystko jest prawidłowe.
Ale nadal nie mogę odblokować ESC, ponieważ w przebiegu jest zbyt dużo szumu i bałaganu.
Na początku używałem RPi. GPIO, następnie zamiast tego użyłem biblioteki pigpio do wysłania sprzętowego sygnału pwm w celu rozwiązania problemu.
4. Przykładowy kod:
importuj pigpio
Czas importu
PI = pigpio.PI() #Utwórz obiekt pigpio
LED_PIN = 18 #Określ port GPIO, do którego podłączona jest dioda LED.
PWM_FREQUENCY = 50 #Zdefiniuj częstotliwość PWM (Hz)
PWM_zakres = 1000
Zdefiniuj cykl pracy PWM, zakres wartości wynosi 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Ustaw port GPIO w tryb wyjściowy
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #Ustaw częstotliwość PWM
π. set_PWM_range(LED_PIN, PWM_range) #Ustaw zakres 1000
π. set_pwm_dutycycle (LED_PIN, 75) #Set PWM cykl pracy 75/1000= 7,5%
Time.sleep(3) #Opóźnij 3 sekundy, aby odblokować pomyślnie
π. set_PWM_dutycycle (LED_PIN, 100)
# Obrót do przodu Cykl pracy 7,5%-10%, im większy cykl pracy, tym większa prędkość do przodu
czas.snu(15)
π. set_PWM_dutycycle (LED_PIN 60)
Im cykl pracy jest bliższy 5%, tym większa jest prędkość cofania
czas.snu(5)
π. set_PWM_dutycycle (LED_PIN, 75)
#cykl pracy
czas.snu(5)
Udostępnij ten post
- 0 komentarze(-y)
- Tagi: ESC