كيف يمكنني استخدام Raspberry Pi 4B لإرسال إشارات PWM إلى ESC للتحكم في أجهزة الدفع تحت الماء؟

Posted by Fengyukun on

استخدم ESC: APISQUEEN 24V 100A ESC

دليل تعليمات 100A ESC: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535

1: فتح ESC

إشارة التوقف المحايدة هي إشارة فتح القفل
عند استخدام إشارة 50 هرتز، تكون فترة الإشارة 20 مللي ثانية.
تشير النسبة المئوية في التعليمات إلى النسبة المئوية لعرض نبضة التحكم PWM، وليس دورة التشغيل الفعلية لإشارة PWM (من السهل إساءة فهمها هنا).
ثم إشارة التوقف المحايدة هي:
75% دورة عمل، 7.5% دورة عمل فعلية: 1.5 مللي ثانية (1.475 مللي ثانية ~ 1.525 مللي ثانية)؛

استيراد الخنزير
وقت الاستيراد

PI = Pigpio.PI() # إنشاء كائن Pigpio
LED_PIN = 18 # حدد منفذ GPIO الذي يتصل به مؤشر LED
PWM_FREQUENCY = 50 # تحديد تردد PWM (هرتز)
نطاق PWM = 1000
تحديد دورة عمل PWM، نطاق القيمة هو 0 (2) 55،
π. set_mode(LED_PIN, pigpio.OUTPUT) # اضبط منفذ GPIO على وضع الإخراج
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #ضبط تردد PWM
π. set_PWM_range(LED_PIN, PWM_range) #تعيين النطاق 1000

π. set_pwm_duty دورة (LED_PIN, 75) #Set دورة عمل PWM 75/1000= 7.5%
Time.sleep(3) #تأخير 3 ثوان لفتح القفل بنجاح

2. التحكم في ESC

دورة العمل 75%: تتوقف عندما تكون دورة العمل الفعلية 7.5% ~ 1.5 مللي ثانية (بين 1.475 مللي ثانية ~ 1.525 مللي ثانية)؛
دورة العمل 50%-75%: دورة العمل الفعلية 5%-7.5%، 1 مللي ثانية-1.5 مللي ثانية للخلف؛
دورة العمل 100%: دورة العمل الفعلية 7.5%-10% 1.5 مللي ثانية -2 مللي ثانية للأمام

π. set_PWM_dutycycle (LED_PIN، 100)
#للأمام: 7.5% ~ 10% كلما زادت دورة العمل، زادت السرعة الأمامية.
وقت النوم (15)

π. set_PWM_dutycycle (LED_PIN 60)
#العكس: كلما اقتربت دورة العمل من 5%، كلما كانت السرعة العكسية أسرع.
وقت النوم(5)

π. set_PWM_dutycycle (LED_PIN، 75)
#دورة العمل
وقت النوم(5)

3. التصحيح


أثناء تصحيح الأخطاء، يمكنك استخدام راسم الذبذبات لمعرفة ما إذا كان شكل الموجة صحيحًا:
على سبيل المثال، الصورة أدناه هي إشارة إيقاف PWM التي بدأت بإرسالها.
سعة الجهد 3.3 فولت، والفترة 20 مللي ثانية، ودورة العمل الفعلية 7.5%، كل ذلك صحيح.
لكن ما زلت لا أستطيع فتح ESC نظرًا لوجود الكثير من الضوضاء والفوضى في الشكل الموجي.

في البداية استخدمت RPi. مكتبة GPIO، ثم استخدمت مكتبة Pigpio بدلاً من ذلك لإرسال إشارة pwm للأجهزة لحل المشكلة.

4. رمز العينة:


استيراد الخنزير
وقت الاستيراد

PI = Pigpio.PI() # إنشاء كائن Pigpio
LED_PIN = 18 # حدد منفذ GPIO الذي يتصل به مؤشر LED.
PWM_FREQUENCY = 50 # تحديد تردد PWM (هرتز)
نطاق PWM = 1000
تحديد دورة عمل PWM، نطاق القيمة هو 0 (2) 55،
π. set_mode(LED_PIN, pigpio.OUTPUT) # اضبط منفذ GPIO على وضع الإخراج
π. set_PWM_frequency(LED_PIN, PWM_FREQUENCY) #ضبط تردد PWM
π. set_PWM_range(LED_PIN, PWM_range) #تعيين النطاق 1000

π. set_pwm_duty دورة (LED_PIN, 75) #Set دورة عمل PWM 75/1000= 7.5%
Time.sleep(3) #تأخير 3 ثوان لفتح القفل بنجاح

π. set_PWM_dutycycle (LED_PIN، 100)
#دورة عمل للأمام بنسبة 7.5%-10%، كلما كانت دورة العمل أكبر، زادت السرعة الأمامية
وقت النوم(15)

π. set_PWM_dutycycle (LED_PIN 60)
كلما اقتربت دورة العمل من 5%، زادت سرعة الانعكاس
وقت النوم(5)

π. set_PWM_dutycycle (LED_PIN، 75)
#دورة العمل
وقت النوم(5)

Share this post



← Older Post Newer Post →


0 comments

Leave a comment