[การควบคุม Thruster ใต้น้ำ] จะใช้ STM32 ควบคุม ESC ผ่าน PWM ได้อย่างไร?
โพสต์โดย Fengyukun เมื่อ
นักวิจัยจำนวนมากที่ต้องการใช้ไมโครคอนโทรลเลอร์เพื่อควบคุมการทำงานของตัวขับดันได้พบข้อมูลมากมายบนอินเทอร์เน็ตแต่พบว่าข้อมูลจำนวนมากไม่ได้เขียนไว้อย่างชัดเจน APISQUEEN บันทึกวิธีแก้ปัญหาคร่าวๆ
ฉันหวังว่าทุกคนจะสามารถแบ่งปันประสบการณ์ของตนในพื้นที่แสดงความคิดเห็นและช่วยเหลือผู้คนได้มากขึ้น
ESC ที่เราซื้ออาจแตกต่างกัน แต่แนวคิดการควบคุมโดยรวมเหมือนกัน ดังนั้นฉันเชื่อว่าคุณจะสามารถบรรลุเป้าหมายได้หลังจากอ่านบทความนี้
สัญญาณพีเอ็มดับเบิลยู:
(1) การควบคุมคลื่น PWM (โดยทั่วไป esc ใช้การควบคุมคลื่น PWM 50Hz หรือ 20ms);
(2) การหยุดชั่วคราวระดับกลาง (โดยทั่วไปในที่นี้หมายถึงรอบการทำงานระดับสูง) 1.5 มิลลิวินาที อันที่จริงเป็นการหยุดชั่วคราวระหว่าง 1.475 มิลลิวินาทีถึง 1.525 มิลลิวินาที
(3) ช่วงการควบคุมคือ 1ms ~ 2ms;
(4) ไปข้างหน้า 1.5ms ถึง 2ms และย้อนกลับ 1.5ms ถึง 1ms
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/IMG_6938_1024x1024.jpg?v=1680446118)
นี่เป็นข้อมูลอ้างอิงง่ายๆ ตาม Arduino:
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/1_d837e8fc-af7c-4f78-b045-b78eaac26984_1024x1024.png?v=1700404633)
หมายเหตุ: จำเป็นต้องปลดล็อค ESC เพื่อใช้งาน เมื่อคุณเชื่อมต่อ ESC เข้ากับแหล่งจ่ายไฟ มันจะส่งเสียงบี๊บ 3 ครั้ง จากนั้นเมื่อปลดล็อคสำเร็จจะส่งเสียงบี๊บ 2 ครั้ง รวมเป็น 5 ครั้ง หากคุณปลดล็อค ESC ไม่สำเร็จ คุณจะไม่สามารถใช้มันเพื่อควบคุมได้ ดังนั้นจากโค้ดข้างต้น เราสามารถสรุปได้ว่าวิธีการปลดล็อค ESC คือการตั้งค่าให้เป็นสัญญาณที่เป็นกลางหลังจากการกำหนดค่าเริ่มต้น และรอให้ได้รับสัญญาณ (เสียงบี๊บสองครั้ง) ก่อนเริ่มการควบคุมความเร็ว
วิธีการควบคุมและแก้ไขจุดบกพร่อง
เรากำลังใช้บอร์ดพัฒนา STM32F7 และใช้ไลบรารี HAL สำหรับการเขียนโปรแกรมและการดีบัก อันที่จริง ตัวจับเวลาจะส่งสัญญาณคลื่น PWM แต่มีหลายสิ่งที่ต้องใส่ใจและรายละเอียดที่ไม่ชัดเจนทำให้เสียเวลาและพลังงานจริง ๆ ต่อไปนี้เป็นคำสองสามคำเกี่ยวกับประสบการณ์การดีบัก
ก่อนอื่น เมื่อกำหนดค่าคลื่น PWM ในตัวจับเวลา โปรดระวังอย่ากำหนดค่าเริ่มต้นให้เป็นสัญญาณปลดล็อค ให้ค่าสุ่ม หรืออย่ากำหนดค่า เนื่องจาก ESC ถูกปลดล็อคหลังจากตัวจับเวลาและเริ่มต้น PWM เท่านั้น ตามตัวอย่างของฉัน สัญญาณหยุดเฉลี่ยที่ 1.5ms คือสัญญาณปลดล็อค ดังนั้นคุณจะไม่สามารถกำหนดค่า PWM เป็น 1.5ms ได้ตั้งแต่เริ่มต้น มิฉะนั้น ESC จะส่งเสียงบี๊บเพียงครั้งเดียวหลังจากนั้น เสียงบี๊บดังสามครั้ง จากนั้นไม้พายของคุณยังคงไม่หมุน
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/2_999889c3-f8bf-49e2-b259-8b6f28c5f4d4_1024x1024.png?v=1700405813)
ประการที่สอง ใส่ใจกับการใช้ความล่าช้า. ตอนแรกฉันไม่ได้ใช้การหน่วงเวลา และผลลัพธ์คือ ESC จะส่งเสียงบี๊บเท่านั้น แล้วไม่ตอบสนอง จากนั้นเมื่อฉันสังเกตคลื่น PWM ด้วยออสซิลโลสโคป ฉันพบว่า PWM ที่ฉันกำหนดค่าเริ่มต้นนั้นกะพริบโดยตรง และฉันต้อง ให้เวลา ESC เพื่อรับสัญญาณปลดล็อค แต่คุณควรให้ความสนใจในเวลานี้ด้วย ตอนแรกฉันใช้ Delay_us() เพื่อกำหนดค่า แต่ปัญหาไม่สามารถแก้ไขได้ ต่อมาฉันเปลี่ยนเป็น Delay_ms(1000) ซึ่งหมายความว่าเวลาที่กำหนดค่าคือ 1 วินาที นั่น ยังคงเป็นปัญหาอยู่ เลยปรับเวลา หลังจากเสียงบี๊บสุดท้าย 2 ครั้ง มอเตอร์ก็เริ่มหมุน ดังนั้นจึงเป็นเรื่องสำคัญมากที่จะต้องเข้าใจเวลารับสัญญาณของสัญญาณปลดล็อคนี้
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/3_be4764a4-bb57-414f-9f93-924ddd6912ce_1024x1024.png?v=1700405945)
ให้ความสนใจกับการเรียนรู้การใช้ออสซิลโลสโคปเพื่อตรวจสอบว่ามีปัญหาใดๆ กับสัญญาณที่คุณกำหนดค่าระหว่างการใช้งานหรือไม่ ด้านล่างนี้คือคลื่น PWM ที่มีรอบการทำงาน 1.5ms, ระยะเวลา 20ms และแอมพลิจูด 3.3V ที่ฉันเริ่มต้นไว้ตอนเริ่มต้น
![](https://cdn.shopify.com/s/files/1/0621/5493/2452/files/4_b4a49b67-d667-400c-bc59-7a2b80bb3482_1024x1024.png?v=1700406022)
โดยสรุป กระบวนการทั้งหมดควรคำนึงถึง:
(1) โดยทั่วไป ESC จะถูกควบคุมที่ความถี่ 50Hz และช่วงการควบคุมอยู่ที่ประมาณระหว่าง 1ms ถึง 2ms แน่นอนว่าขึ้นอยู่กับสถานการณ์
(2) หลังจากเปิดเครื่องแล้ว ESC จะส่งเสียงบี๊บ 3 ครั้ง หลังจากการปลดล็อคสำเร็จ ESC จะส่งเสียงบี๊บ 2 ครั้ง อย่างไรก็ตาม หาก ESC ส่งเสียงบี๊บเพียงครั้งเดียว อาจหมายความว่า ESC ได้รับสัญญาณที่คุณกำหนดค่าไว้แต่ปลดล็อคอุปกรณ์ไม่สำเร็จ ดังนั้นคุณจึงต้องตรวจสอบรหัสปลดล็อคอีกครั้งเพื่อดูว่ามีข้อผิดพลาดใดๆ หรือไม่ หาก ESC ไม่มีเสียง แสดงว่าไม่ได้รับสัญญาณด้วยซ้ำ ให้ตรวจสอบสายไฟและรหัสของคุณอีกครั้ง
(3) ให้ความสนใจกับการใช้ฟังก์ชันหน่วงเวลาเพื่อให้ ESC เป็นระยะเวลาหนึ่งในการรับสัญญาณปลดล็อค ESC แต่ละตัวแตกต่างกันดังนั้นคุณสามารถปรับเปลี่ยนได้ด้วยตัวเอง
(4) ให้ความสนใจกับการต่อสายดิน เชื่อมต่อสายสัญญาณ ESC เข้ากับพอร์ตเอาต์พุตสัญญาณของบอร์ดควบคุม จากนั้นต่อสายดินสายสัญญาณเข้ากับกราวด์ GND ของบอร์ดควบคุม
(5) เรียนรู้การใช้ออสซิลโลสโคปเพื่อตรวจสอบสัญญาณที่กำหนดค่าไว้
อย่าต่อสายผิด!
แชร์โพสต์นี้
- 0 ความคิดเห็น
- แท็ก: ESC
← โพสต์ที่เก่ากว่า โพสต์ที่ใหม่กว่า →