Wie verwende ich den Raspberry Pi 4B, um PWM-Signale an den Regler zu senden, um Unterwassertriebwerke zu steuern?
Geposted von Fengyukun am
Verwenden Sie den Regler: APISQUEEN 24V 100A ESC
100A ESC-Bedienungsanleitung: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535
1: ESC entsperren
Das Neutralstoppsignal ist sein Entriegelungssignal
Bei Verwendung eines 50-Hz-Signals beträgt die Signalperiode 20 ms.
Der Prozentsatz in der Anweisung bezieht sich auf den Prozentsatz der Breite des PWM-Steuerimpulses und nicht auf den tatsächlichen Arbeitszyklus des PWM-Signals (hier kann es leicht zu Missverständnissen kommen).
Dann lautet das neutrale Stoppsignal:
75 % Arbeitszyklus, 7,5 % tatsächlicher Arbeitszyklus: 1,5 ms (1,475 ms ~ 1,525 ms);
Pigpio importieren
Zeit importieren
PI = pigpio.PI() #Pigpio-Objekt erstellen
LED_PIN = 18 #Definieren Sie den GPIO-Port, an den die LED angeschlossen ist
PWM_FREQUENCY = 50 #PWM-Frequenz (Hz) definieren
PWM_range = 1000
Definieren Sie den PWM-Arbeitszyklus, der Wertebereich ist 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Setzen Sie den GPIO-Port in den Ausgabemodus
π. set_PWM_frequenz(LED_PIN, PWM_FREQUENCY) #PWM-Frequenz einstellen
π. set_PWM_range(LED_PIN, PWM_range) #Bereich 1000 einstellen
π. set_pwm_duty Cycle (LED_PIN, 75) #PWM-Tastverhältnis einstellen 75/1000 = 7,5 %
Time.sleep(3) #3 Sekunden verzögern, bis die Entsperrung erfolgreich ist
2. ESC-Steuerung
Arbeitszyklus 75 %: Stoppen, wenn der tatsächliche Arbeitszyklus 7,5 % ~ 1,5 ms beträgt (zwischen 1,475 ms ~ 1,525 ms);
Arbeitszyklus 50 %–75 %: tatsächlicher Arbeitszyklus 5 %–7,5 %, 1 ms–1,5 ms umgekehrt;
Arbeitszyklus 100 %: tatsächlicher Arbeitszyklus 7,5 %–10 % 1,5 ms–2 ms vorwärts
π. set_PWM_dutycycle (LED_PIN, 100)
#Vorwärts: 7,5 % ~ 10 % Je höher der Arbeitszyklus, desto höher die Vorwärtsgeschwindigkeit.
time.sleep(15)
π. set_PWM_dutycycle (LED_PIN 60)
#Reverse: Je näher das Tastverhältnis bei 5 % liegt, desto schneller ist die Rückwärtsgeschwindigkeit.
Zeit.Schlaf (5)
π. set_PWM_dutycycle (LED_PIN, 75)
#Auslastungsgrad
Zeit.Schlaf (5)
3. Debuggen
Während des Debuggens können Sie mit einem Oszilloskop prüfen, ob die Wellenform korrekt ist:
Das Bild unten zeigt beispielsweise das PWM-Stoppsignal, das ich zu senden begonnen habe.
Die Spannungsamplitude beträgt 3,3 V, die Periode beträgt 20 ms und das tatsächliche Tastverhältnis beträgt 7,5 %, alles korrekt.
Aber ich kann ESC immer noch nicht entsperren, weil die Wellenform zu viel Rauschen und Unordnung enthält.
Am Anfang habe ich RPi verwendet. GPIO-Bibliothek, dann habe ich stattdessen die Pigpio-Bibliothek verwendet, um Hardware-PWM-Signale zu senden, um das Problem zu lösen.
4. Beispielcode:
Pigpio importieren
Zeit importieren
PI = pigpio.PI() #Pigpio-Objekt erstellen
LED_PIN = 18 #Definieren Sie den GPIO-Port, an den die LED angeschlossen ist.
PWM_FREQUENCY = 50 #PWM-Frequenz (Hz) definieren
PWM_range = 1000
Definieren Sie den PWM-Arbeitszyklus, der Wertebereich ist 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Setzen Sie den GPIO-Port in den Ausgabemodus
π. set_PWM_frequenz(LED_PIN, PWM_FREQUENCY) #PWM-Frequenz einstellen
π. set_PWM_range(LED_PIN, PWM_range) #Bereich 1000 einstellen
π. set_pwm_duty Cycle (LED_PIN, 75) #PWM-Tastverhältnis einstellen 75/1000 = 7,5 %
Time.sleep(3) #3 Sekunden verzögern, um erfolgreich zu entsperren
π. set_PWM_dutycycle (LED_PIN, 100)
#Vorwärtsdrehung 7,5 %–10 % Einschaltdauer, je größer die Einschaltdauer, desto schneller die Vorwärtsgeschwindigkeit
time.sleep(15)
π. set_PWM_dutycycle (LED_PIN 60)
Je näher das Tastverhältnis bei 5 % liegt, desto schneller ist die Umkehrgeschwindigkeit
Zeit.Schlaf (5)
π. set_PWM_dutycycle (LED_PIN, 75)
#Auslastungsgrad
Zeit.Schlaf (5)
100A ESC-Bedienungsanleitung: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535
1: ESC entsperren
Das Neutralstoppsignal ist sein Entriegelungssignal
Bei Verwendung eines 50-Hz-Signals beträgt die Signalperiode 20 ms.
Der Prozentsatz in der Anweisung bezieht sich auf den Prozentsatz der Breite des PWM-Steuerimpulses und nicht auf den tatsächlichen Arbeitszyklus des PWM-Signals (hier kann es leicht zu Missverständnissen kommen).
Dann lautet das neutrale Stoppsignal:
75 % Arbeitszyklus, 7,5 % tatsächlicher Arbeitszyklus: 1,5 ms (1,475 ms ~ 1,525 ms);
Pigpio importieren
Zeit importieren
PI = pigpio.PI() #Pigpio-Objekt erstellen
LED_PIN = 18 #Definieren Sie den GPIO-Port, an den die LED angeschlossen ist
PWM_FREQUENCY = 50 #PWM-Frequenz (Hz) definieren
PWM_range = 1000
Definieren Sie den PWM-Arbeitszyklus, der Wertebereich ist 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Setzen Sie den GPIO-Port in den Ausgabemodus
π. set_PWM_frequenz(LED_PIN, PWM_FREQUENCY) #PWM-Frequenz einstellen
π. set_PWM_range(LED_PIN, PWM_range) #Bereich 1000 einstellen
π. set_pwm_duty Cycle (LED_PIN, 75) #PWM-Tastverhältnis einstellen 75/1000 = 7,5 %
Time.sleep(3) #3 Sekunden verzögern, bis die Entsperrung erfolgreich ist
2. ESC-Steuerung
Arbeitszyklus 75 %: Stoppen, wenn der tatsächliche Arbeitszyklus 7,5 % ~ 1,5 ms beträgt (zwischen 1,475 ms ~ 1,525 ms);
Arbeitszyklus 50 %–75 %: tatsächlicher Arbeitszyklus 5 %–7,5 %, 1 ms–1,5 ms umgekehrt;
Arbeitszyklus 100 %: tatsächlicher Arbeitszyklus 7,5 %–10 % 1,5 ms–2 ms vorwärts
π. set_PWM_dutycycle (LED_PIN, 100)
#Vorwärts: 7,5 % ~ 10 % Je höher der Arbeitszyklus, desto höher die Vorwärtsgeschwindigkeit.
time.sleep(15)
π. set_PWM_dutycycle (LED_PIN 60)
#Reverse: Je näher das Tastverhältnis bei 5 % liegt, desto schneller ist die Rückwärtsgeschwindigkeit.
Zeit.Schlaf (5)
π. set_PWM_dutycycle (LED_PIN, 75)
#Auslastungsgrad
Zeit.Schlaf (5)
3. Debuggen
Während des Debuggens können Sie mit einem Oszilloskop prüfen, ob die Wellenform korrekt ist:
Das Bild unten zeigt beispielsweise das PWM-Stoppsignal, das ich zu senden begonnen habe.
Die Spannungsamplitude beträgt 3,3 V, die Periode beträgt 20 ms und das tatsächliche Tastverhältnis beträgt 7,5 %, alles korrekt.
Aber ich kann ESC immer noch nicht entsperren, weil die Wellenform zu viel Rauschen und Unordnung enthält.
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/5_0147a315-bab3-433b-8dde-186472c0ee31_1024x1024.png?v=1700411310)
Am Anfang habe ich RPi verwendet. GPIO-Bibliothek, dann habe ich stattdessen die Pigpio-Bibliothek verwendet, um Hardware-PWM-Signale zu senden, um das Problem zu lösen.
4. Beispielcode:
Pigpio importieren
Zeit importieren
PI = pigpio.PI() #Pigpio-Objekt erstellen
LED_PIN = 18 #Definieren Sie den GPIO-Port, an den die LED angeschlossen ist.
PWM_FREQUENCY = 50 #PWM-Frequenz (Hz) definieren
PWM_range = 1000
Definieren Sie den PWM-Arbeitszyklus, der Wertebereich ist 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Setzen Sie den GPIO-Port in den Ausgabemodus
π. set_PWM_frequenz(LED_PIN, PWM_FREQUENCY) #PWM-Frequenz einstellen
π. set_PWM_range(LED_PIN, PWM_range) #Bereich 1000 einstellen
π. set_pwm_duty Cycle (LED_PIN, 75) #PWM-Tastverhältnis einstellen 75/1000 = 7,5 %
Time.sleep(3) #3 Sekunden verzögern, um erfolgreich zu entsperren
π. set_PWM_dutycycle (LED_PIN, 100)
#Vorwärtsdrehung 7,5 %–10 % Einschaltdauer, je größer die Einschaltdauer, desto schneller die Vorwärtsgeschwindigkeit
time.sleep(15)
π. set_PWM_dutycycle (LED_PIN 60)
Je näher das Tastverhältnis bei 5 % liegt, desto schneller ist die Umkehrgeschwindigkeit
Zeit.Schlaf (5)
π. set_PWM_dutycycle (LED_PIN, 75)
#Auslastungsgrad
Zeit.Schlaf (5)
Diesen Post teilen
- 0 Kommentare
- Tags: ESC