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


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



← Starszy post Nowszy post →


0 komentarze(-y)

Zostaw komentarz