Su altı iticilerini kontrol etmek amacıyla PWM sinyallerini ESC'ye göndermek için Raspberry Pi 4B'yi nasıl kullanırım?

tarihinde Fengyukun tarafından gönderildi

ESC kullanın: APISQUEEN 24V 100A ESC

100A ESC kullanım kılavuzu: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535

1: ESC'nin kilidini açın

Nötr durma sinyali kilit açma sinyalidir
50Hz'lik bir sinyal kullanıldığında sinyal periyodu 20ms'dir.
Talimattaki yüzde, PWM sinyalinin gerçek görev döngüsünü değil, PWM kontrol darbe genişliğinin yüzdesini ifade eder (burada yanlış anlaşılması kolaydır).
O halde nötr durma sinyali:
%75 görev döngüsü, %7,5 gerçek görev döngüsü: 1,5 ms (1,475 ms ~ 1,525 ms);

domuz ithalatı
İçe aktarma zamanı

PI = pigpio.PI() #Pigpio nesnesi oluştur
LED_PIN = 18 #LED'in bağlı olduğu GPIO portunu tanımlayın
PWM_FREQUENCY = 50 #PWM frekansını tanımla (Hz)
PWM_aralığı = 1000
PWM görev döngüsünü tanımlayın, değer aralığı 0 (2) 55'tir,
π. set_mode(LED_PIN, pigpio.OUTPUT) #GPIO bağlantı noktasını çıkış moduna ayarlayın
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #PWM frekansını ayarla
π. set_PWM_range(LED_PIN, PWM_range) #Aralığı ayarla 1000

π. set_pwm_duty döngüsü (LED_PIN, 75) #PWM görev döngüsünü ayarla 75/1000= %7,5
Time.sleep(3) #Delay 3 saniye kilidi başarıyla açmak için

2.ESC kontrolü

Görev döngüsü %75: Gerçek görev döngüsü %7,5 ~ 1,5 ms (1,475 ms ~ 1,525 ms arasında) olduğunda durur;
Görev döngüsü %50-%75: fiili görev döngüsü %5-%7,5, 1 ms-1,5 ms ters;
Görev döngüsü %100: fiili görev döngüsü %7,5-%10 1,5 ms -2 ms ileri

π. set_PWM_dutycycle (LED_PIN, 100)
#İleri: %7,5 ~ %10 Görev döngüsü ne kadar yüksek olursa ileri hız da o kadar hızlı olur.
zaman.uyku(15)

π. set_PWM_dutycycle (LED_PIN 60)
#Geri: Görev döngüsü %5'e ne kadar yakınsa, geri hız o kadar hızlı olur.
zaman.uyku (5)

π. set_PWM_dutycycle (LED_PIN, 75)
#görev döngüsü
zaman.uyku (5)

3. Hata ayıklama


Hata ayıklama sırasında dalga formunun doğru olup olmadığını görmek için bir osiloskop kullanabilirsiniz:
Örneğin aşağıdaki resim göndermeye başladığım PWM durma sinyalidir.
Gerilim genliği 3,3V, periyot 20ms ve gerçek görev döngüsü %7,5, hepsi doğru.
Ancak dalga biçiminde çok fazla gürültü ve karışıklık olduğundan hala ESC'nin kilidini açamıyorum.

Başlangıçta RPi kullandım. GPIO kütüphanesini kullandıktan sonra sorunu çözmek için donanım pwm sinyali göndermek yerine pigpio kütüphanesini kullandım.

4. Örnek kod:


domuz ithalatı
İçe aktarma zamanı

PI = pigpio.PI() #Pigpio nesnesi oluştur
LED_PIN = 18 #LED'in bağlı olduğu GPIO portunu tanımlayın.
PWM_FREQUENCY = 50 #PWM frekansını tanımla (Hz)
PWM_aralığı = 1000
PWM görev döngüsünü tanımlayın, değer aralığı 0 (2) 55'tir,
π. set_mode(LED_PIN, pigpio.OUTPUT) #GPIO bağlantı noktasını çıkış moduna ayarlayın
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #PWM frekansını ayarla
π. set_PWM_range(LED_PIN, PWM_range) #Aralığı ayarla 1000

π. set_pwm_duty döngüsü (LED_PIN, 75) #PWM görev döngüsünü ayarla 75/1000= %7,5
Time.sleep(3) #Delay 3 saniye kilidi başarıyla açmak için

π. set_PWM_dutycycle (LED_PIN, 100)
#İleri dönüş %7,5-%10 görev döngüsü, görev döngüsü ne kadar büyük olursa ileri hız da o kadar hızlı olur
zaman.uyku(15)

π. set_PWM_dutycycle (LED_PIN 60)
Görev döngüsü %5'e ne kadar yakınsa geri dönüş hızı da o kadar hızlı olur
zaman.uyku (5)

π. set_PWM_dutycycle (LED_PIN, 75)
#görev döngüsü
zaman.uyku (5)

Bu gönderiyi paylaşın



← Daha Eski Gönderi Daha Yeni Gönderi →


Yorum yapın