मैं अंडरवाटर थ्रस्टर को नियंत्रित करने के लिए ईएससी को पीडब्लूएम सिग्नल भेजने के लिए रास्पबेरी पाई 4बी का उपयोग कैसे कर सकता हूं?

Fengyukun द्वारा को पोस्ट किया गया

ESC का उपयोग: APISQUEEN 24V 100A ESC

100ए ईएससी निर्देश मैनुअल: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535

1:ईएससी अनलॉक करें

न्यूट्रल स्टॉप सिग्नल इसका अनलॉकिंग सिग्नल है
50Hz सिग्नल का उपयोग करते हुए, सिग्नल अवधि 20ms है।
निर्देशों में प्रतिशत पीडब्लूएम नियंत्रण पल्स चौड़ाई के प्रतिशत को संदर्भित करता है, न कि पीडब्लूएम सिग्नल के वास्तविक कर्तव्य चक्र को (यहां इसे गलत समझना आसान है)।
तब तटस्थ स्टॉप सिग्नल है:
75% कर्तव्य चक्र, 7.5% वास्तविक कर्तव्य चक्र: 1.5 एमएस (1.475 एमएस और 1.525 एमएस के बीच);

पिगपियो आयात करें
आयात समय

pi = pigpio.pi() # pigpio ऑब्जेक्ट बनाएं
एलईडी_पिन = 18 #जीपीआईओ पोर्ट को परिभाषित करें जिससे एलईडी जुड़ा हुआ है
PWM_FREQUENCY = 50 #हर्ट्ज में PWM आवृत्ति को परिभाषित करें
PWM_रेंज = 1000
PWM_DUTYCYCLE = 0 # PWM कर्तव्य चक्र को परिभाषित करें, मान सीमा 0 (2) 55,
pi.set_mode(LED_PIN, pigpio.OUTPUT) #GPIO पोर्ट को आउटपुट मोड पर सेट करें
pi.set_PWM_फ़्रीक्वेंसी(LED_PIN, PWM_FREQUENCY) #PWM फ़्रीक्वेंसी सेट करें
pi.set_PWM_range(LED_PIN, PWM_range) # सेट रेंज 1000

pi.set_PWM_dutycycle(LED_PIN, 75) # PWM ड्यूटी चक्र 75/1000=7.5 प्रतिशत सेट करें
time.sleep(3) # विलंब 3एस अनलॉक सफल

2. नियंत्रण ईएससी

कर्तव्य चक्र 75%: वास्तविक कर्तव्य चक्र 7.5%-1.5 एमएस (1.475 एमएस और 1.525 एमएस के बीच) रोकना;
कर्तव्य चक्र 50%-75%: वास्तविक कर्तव्य चक्र 5%-7.5%, 1ms-1.5ms रिवर्स;
कर्तव्य चक्र 100%: वास्तविक कर्तव्य चक्र 7.5%-10% 1.5 एमएस -2 एमएस आगे

pi.set_PWM_dutycycle(LED_PIN, 100)
# आगे:7.5%-10% कर्तव्य चक्र जितना अधिक होगा, आगे की गति उतनी ही तेज होगी।
समय.नींद(15)

pi.set_PWM_dutycycle(LED_PIN, 60)
# रिवर्स: कर्तव्य चक्र 5% के जितना करीब होगा, रिवर्स गति उतनी ही तेज होगी
समय.नींद(5)

pi.set_PWM_dutycycle(LED_PIN, 75)
# साइकिल शुल्क
समय.नींद(5)

3. डिबगिंग


डिबगिंग प्रक्रिया के दौरान आप यह देखने के लिए ऑसिलोस्कोप का उपयोग कर सकते हैं कि तरंगरूप सही है या नहीं:
उदाहरण के लिए, निम्नलिखित चित्र पीडब्लूएम स्टॉप सिग्नल है जिसे मैंने भेजना शुरू किया था।
वोल्टेज आयाम 3.3V है, अवधि 20ms है, और वास्तविक कर्तव्य चक्र 7.5% है, जो सभी सही हैं।
लेकिन मैं अभी भी ईएससी को अनलॉक नहीं कर सकता क्योंकि तरंग रूप में बहुत अधिक शोर और अव्यवस्था है।

सबसे पहले मैंने RPi.GPIO लाइब्रेरी का उपयोग किया, फिर मैंने समस्या को हल करने के लिए हार्डवेयर pwm सिग्नल भेजने के लिए इसे pigpio लाइब्रेरी से बदल दिया।

4. उदाहरण कोड:


पिगपियो आयात करें
आयात समय

pi = pigpio.pi() # pigpio ऑब्जेक्ट बनाएं
LED_PIN = 18 # उस GPIO पोर्ट को परिभाषित करें जिससे LED कनेक्ट है।
PWM_FREQUENCY = 50 #हर्ट्ज में PWM आवृत्ति को परिभाषित करें
PWM_रेंज = 1000
PWM_DUTYCYCLE = 0 # PWM कर्तव्य चक्र को परिभाषित करें, मान सीमा 0 (2) 55,
pi.set_mode(LED_PIN, pigpio.OUTPUT) #GPIO पोर्ट को आउटपुट मोड पर सेट करें
pi.set_PWM_फ़्रीक्वेंसी(LED_PIN, PWM_FREQUENCY) #PWM फ़्रीक्वेंसी सेट करें
pi.set_PWM_range(LED_PIN, PWM_range) # सेट रेंज 1000

pi.set_PWM_dutycycle(LED_PIN, 75) # PWM ड्यूटी चक्र 75/1000=7.5 प्रतिशत सेट करें
time.sleep(3) # विलंब 3एस अनलॉक सफल

pi.set_PWM_dutycycle(LED_PIN, 100)
# सकारात्मक घूर्णन 7.5%-10% कर्तव्य चक्र, कर्तव्य चक्र जितना बड़ा होगा, सकारात्मक घूर्णन गति उतनी ही तेज होगी
समय.नींद(15)

pi.set_PWM_dutycycle(LED_PIN, 60)
# रिवर्स कर्तव्य चक्र 5% के जितना करीब होगा, रिवर्सल की गति उतनी ही तेज होगी
समय.नींद(5)

pi.set_PWM_dutycycle(LED_PIN, 75)
# साइकिल शुल्क
समय.नींद(5)


इस पोस्ट को शेयर करें



← पुरानी पोस्ट नई पोस्ट →


0 टिप्पणियां

टिप्पणी छोड़ें