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
Manuale di istruzioni ESC 100A: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535
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.
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/5_0147a315-bab3-433b-8dde-186472c0ee31_1024x1024.png?v=1700411310)
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
- 0 commenti
- Tags: ESC
← Articolo più vecchio Articolo più recente →