Come posso utilizzare Raspberry Pi 4B per inviare segnali PWM all'ESC per controllare i propulsori subacquei?

Pubblicato da Fengyukun il

Utilizzare ESC: APISQUEEN 24V 100A ESC


1: sblocca l'ESC

Il segnale di arresto in folle è il segnale di sbloccaggio
Quando si utilizza un segnale a 50 Hz, il periodo del segnale è di 20 ms.
La percentuale nell'istruzione si riferisce alla percentuale dell'ampiezza dell'impulso di controllo PWM, non al ciclo di lavoro effettivo del segnale PWM (è facile fraintendere qui).
Quindi il segnale di arresto neutro è:
Ciclo di lavoro 75%, ciclo di lavoro effettivo 7,5%: 1,5 ms (1,475 ms ~ 1,525 ms);

importare pigpio
Ora di importazione

PI = pigpio.PI() #Crea oggetto pigpio
LED_PIN = 18 #Definisce la porta GPIO a cui è collegato il LED
PWM_FREQUENCY = 50 #Definisci la frequenza PWM (Hz)
Intervallo_PWM = 1000
Definire il ciclo di lavoro PWM, l'intervallo di valori è 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Imposta la porta GPIO sulla modalità di output
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #Imposta la frequenza PWM
π. set_PWM_range(LED_PIN, PWM_range) #Imposta l'intervallo 1000

π. set_pwm_duty cycle (LED_PIN, 75) #Imposta ciclo di lavoro PWM 75/1000= 7,5%
Time.sleep(3) #Ritarda 3 secondi per sbloccare correttamente

2. Controllo ESC

Ciclo di lavoro 75%: arresto quando il ciclo di lavoro effettivo è 7,5% ~ 1,5 ms (tra 1,475 ms ~ 1,525 ms);
Ciclo di lavoro 50%-75%: ciclo di lavoro effettivo 5%-7,5%, 1 ms-1,5 ms inverso;
Ciclo di lavoro 100%: ciclo di lavoro effettivo 7,5%-10% 1,5 ms -2 ms in avanti

π. set_PWM_dutycycle (LED_PIN, 100)
#Avanti: 7,5% ~ 10% Maggiore è il ciclo di lavoro, maggiore è la velocità di avanzamento.
tempo.sonno(15)

π. set_PWM_dutycycle (LED_PIN 60)
#Retromarcia: quanto più il ciclo di lavoro è vicino al 5%, tanto più veloce è la velocità della retromarcia.
tempo.sonno(5)

π. set_PWM_dutycycle (LED_PIN, 75)
#ciclo di lavoro
tempo.sonno(5)

3. Debug


Durante il debug, puoi utilizzare un oscilloscopio per vedere se la forma d'onda è corretta:
Ad esempio, l'immagine qui sotto è il segnale di arresto PWM che ho iniziato a inviare.
L'ampiezza della tensione è 3,3 V, il periodo è 20 ms e il ciclo di lavoro effettivo è 7,5%, tutto corretto.
Ma non riesco ancora a sbloccare l'ESC perché c'è troppo rumore e confusione nella forma d'onda.

All'inizio usavo RPi. Libreria GPIO, quindi ho utilizzato invece la libreria pigpio per inviare il segnale pwm hardware per risolvere il problema.

4. Codice di esempio:


importare pigpio
Ora di importazione

PI = pigpio.PI() #Crea oggetto pigpio
LED_PIN = 18 #Definisce la porta GPIO a cui è collegato il LED.
PWM_FREQUENCY = 50 #Definisci la frequenza PWM (Hz)
Intervallo_PWM = 1000
Definire il ciclo di lavoro PWM, l'intervallo di valori è 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Imposta la porta GPIO sulla modalità di output
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #Imposta la frequenza PWM
π. set_PWM_range(LED_PIN, PWM_range) #Imposta l'intervallo 1000

π. set_pwm_duty cycle (LED_PIN, 75) #Imposta ciclo di lavoro PWM 75/1000= 7,5%
Time.sleep(3) #Ritarda 3 secondi per sbloccare correttamente

π. set_PWM_dutycycle (LED_PIN, 100)
#Rotazione in avanti Ciclo di lavoro 7,5%-10%, maggiore è il ciclo di lavoro, maggiore è la velocità di avanzamento
tempo.sonno(15)

π. set_PWM_dutycycle (LED_PIN 60)
Quanto più il ciclo di lavoro si avvicina al 5%, tanto più veloce è la velocità di inversione
tempo.sonno(5)

π. set_PWM_dutycycle (LED_PIN, 75)
#ciclo di lavoro
tempo.sonno(5)


Condividi questo post



← Articolo più vecchio Articolo più recente →


Lascia un commento