![การสร้างสัญญาณ PWM ความละเอียดสูงสำหรับ RC Servos ด้วยอุปกรณ์ STM32: 3 ขั้นตอน การสร้างสัญญาณ PWM ความละเอียดสูงสำหรับ RC Servos ด้วยอุปกรณ์ STM32: 3 ขั้นตอน](https://i.howwhatproduce.com/images/010/image-27969-j.webp)
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
![การสร้างสัญญาณ PWM ความละเอียดสูงสำหรับ RC Servos ด้วยอุปกรณ์ STM32 การสร้างสัญญาณ PWM ความละเอียดสูงสำหรับ RC Servos ด้วยอุปกรณ์ STM32](https://i.howwhatproduce.com/images/010/image-27969-1-j.webp)
![การสร้างสัญญาณ PWM ความละเอียดสูงสำหรับ RC Servos ด้วยอุปกรณ์ STM32 การสร้างสัญญาณ PWM ความละเอียดสูงสำหรับ RC Servos ด้วยอุปกรณ์ STM32](https://i.howwhatproduce.com/images/010/image-27969-2-j.webp)
![การสร้างสัญญาณ PWM ความละเอียดสูงสำหรับ RC Servos ด้วยอุปกรณ์ STM32 การสร้างสัญญาณ PWM ความละเอียดสูงสำหรับ RC Servos ด้วยอุปกรณ์ STM32](https://i.howwhatproduce.com/images/010/image-27969-3-j.webp)
ขณะนี้ ฉันกำลังสร้างเครื่องส่ง/เครื่องรับ RC โดยใช้ชิป SX1280 RF เป้าหมายหนึ่งของโครงการคือฉันต้องการความละเอียดเซอร์โว 12 บิตจากแท่งทั้งหมดไปจนถึงเซอร์โว ส่วนหนึ่งเนื่องจากเซอร์โวดิจิตอลสมัยใหม่มีความละเอียด 12 บิต อย่างที่สอง เครื่องส่งสัญญาณระดับไฮเอนด์ก็ใช้ 12 บิตอยู่ดี ฉันกำลังตรวจสอบว่าฉันสามารถสร้างสัญญาณ PWM ความละเอียดสูงบนอุปกรณ์ STM32 ได้อย่างไร ตอนนี้ฉันกำลังใช้ยาสีดำ (STM32F103C8T8) สำหรับต้นแบบ
ขั้นตอนที่ 1: รายการชิ้นส่วน
ฮาร์ดแวร์
- บอร์ดพัฒนา STM32F103 ใดๆ (เม็ดสีน้ำเงิน เม็ดสีดำ ฯลฯ)
- ธนาคารพลังงาน USB เป็นแหล่งจ่ายไฟ
- โปรแกรมเมอร์ STM32 (Segger j-links, ST-LINK/V2 หรือเพียงแค่โคลน st-link)
ซอฟต์แวร์
- STM32CubeMX
- Atolic TrueSTUDIO สำหรับ STM32
- แหล่งที่มาของโครงการจาก github
ขั้นตอนที่ 2: ทางออกที่ชัดเจน
![ทางออกที่ชัดเจน ทางออกที่ชัดเจน](https://i.howwhatproduce.com/images/010/image-27969-4-j.webp)
![ทางออกที่ชัดเจน ทางออกที่ชัดเจน](https://i.howwhatproduce.com/images/010/image-27969-5-j.webp)
![ทางออกที่ชัดเจน ทางออกที่ชัดเจน](https://i.howwhatproduce.com/images/010/image-27969-6-j.webp)
น่าจะเป็นทางออกที่ง่ายที่สุดคือการใช้ตัวจับเวลาตัวใดตัวหนึ่งที่สามารถสร้างสัญญาณ PWM เช่น TIM1-3 บน STM32F103 สำหรับเซอร์โวดิจิตอลสมัยใหม่ อัตราเฟรมสามารถลดลงเหลือ 5 มิลลิวินาทีหรือมากกว่านั้น แต่สำหรับเซอร์โวอนาล็อกแบบเก่า ควรเป็น 20 มิลลิวินาทีหรือ 50 เฮิรตซ์ ดังนั้น ในสถานการณ์กรณีที่เลวร้ายที่สุด เรามาสร้างเรื่องนั้นกัน ด้วยนาฬิกา 72 MHz และความละเอียดตัวนับตัวจับเวลา 16 บิต เราจำเป็นต้องตั้งค่าตัวจับเวลาล่วงหน้าของตัวจับเวลาเป็น 23 ขั้นต่ำเพื่อให้ครอบคลุมอัตราเฟรม 20 ms ฉันเลือก 24 เพราะจากนั้นเป็นเวลา 20 มิลลิวินาที ฉันต้องตั้งค่าตัวนับเป็น 60000 อย่างแน่นอน คุณสามารถดูการตั้งค่า CubeMX และสัญญาณ PWM 1 และ 1.5 ms ที่สร้างขึ้นในภาพหน้าจอ ขออภัย สำหรับ 1ms ตัวนับของตัวจับเวลาควรตั้งไว้ที่ 3000 ซึ่งจะทำให้เรามีความละเอียดเพียง 11 บิตเท่านั้น ไม่เลว แต่เป้าหมายคือ 12 บิต ดังนั้นลองอย่างอื่น
แน่นอน ถ้าฉันจะเลือกไมโครคอนโทรลเลอร์ที่มีตัวจับเวลาแบบ 32 บิต เช่น STM32L476 ความละเอียดนี้จะสูงขึ้นมากและปัญหาก็จะได้รับการแก้ไข
แต่ในที่นี้ ฉันอยากจะเสนอทางเลือกอื่นที่จะเพิ่มความละเอียดให้มากขึ้น แม้กระทั่งใน STM32F103
ขั้นตอนที่ 3: Cascading Timers สำหรับความละเอียดสูงขึ้น
![ตัวจับเวลาแบบเรียงซ้อนสำหรับความละเอียดสูงขึ้น ตัวจับเวลาแบบเรียงซ้อนสำหรับความละเอียดสูงขึ้น](https://i.howwhatproduce.com/images/010/image-27969-7-j.webp)
![ตัวจับเวลาแบบเรียงซ้อนสำหรับความละเอียดสูงขึ้น ตัวจับเวลาแบบเรียงซ้อนสำหรับความละเอียดสูงขึ้น](https://i.howwhatproduce.com/images/010/image-27969-8-j.webp)
![ตัวจับเวลาแบบเรียงซ้อนสำหรับความละเอียดสูงขึ้น ตัวจับเวลาแบบเรียงซ้อนสำหรับความละเอียดสูงขึ้น](https://i.howwhatproduce.com/images/010/image-27969-9-j.webp)
ปัญหาหลักของวิธีแก้ไขก่อนหน้านี้คืออัตราเฟรม (20 ms) ค่อนข้างสูงเมื่อเทียบกับสัญญาณ PWM ที่สร้างขึ้นจริง (ระหว่าง 1 ถึง 2 ms) ดังนั้นเราจึงสูญเสียบิตที่มีค่าสำหรับ 18 ms ที่เหลือเมื่อเรารอ เฟรมถัดไป ซึ่งสามารถแก้ไขได้ด้วยตัวจับเวลาแบบเรียงซ้อนโดยใช้คุณสมบัติลิงก์ตัวจับเวลาสำหรับการซิงโครไนซ์
แนวคิดคือฉันจะใช้ TIM1 เป็นต้นแบบเพื่อสร้างอัตราเฟรม (20 ms) และ TIM2, TIM3 เพื่อรับมือกับสัญญาณ PWM เป็นทาส เมื่อมาสเตอร์ทริกเกอร์ทาส พวกมันจะสร้างสัญญาณ PWM ในโหมดพัลส์เดียวเท่านั้น ดังนั้นฉันต้องครอบคลุม 2 ms ในตัวจับเวลาเหล่านั้นเท่านั้น โชคดีที่คุณสามารถเรียงตัวจับเวลาเหล่านั้นในฮาร์ดแวร์ได้ ดังนั้นการซิงโครไนซ์นี้จึงไม่ต้องการการแทรกแซงจากโปรเซสเซอร์ และมันแม่นยำมากเช่นกัน ความกระวนกระวายใจอยู่ในขอบเขต ps คุณสามารถดูการตั้งค่า CubeMX ได้จากภาพหน้าจอ
อย่างที่คุณเห็น ฉันเลือก 3 เป็นพรีสเกลาร์ ดังนั้นสำหรับ 2 มิลลิวินาที ฉันต้องตั้งค่า 48000 ในตัวนับของตัวจับเวลา สิ่งนี้ทำให้เรา 24000 สำหรับ 1 ms ซึ่งจริง ๆ แล้วเราต้องการมากกว่าสำหรับความละเอียด 14 บิต ตาด้า…
โปรดดูภาพหน้าจอของออสซิลโลสโคปในบทนำเพื่อผลลัพธ์สุดท้าย แชนเนล 3 (สีม่วง) เป็นการขัดจังหวะของตัวจับเวลาหลักซึ่งจะกระตุ้นการบรรเทาเพื่อสร้างหนึ่งพัลส์ ช่องสัญญาณ 1 และ 4 (ลำแสงสีเหลืองและสีเขียว) เป็นสัญญาณ PWM จริงที่สร้างโดยตัวจับเวลาที่แตกต่างกัน โปรดทราบว่ามันซิงค์กันแต่จะซิงค์ที่ขอบต่อท้าย นั่นเป็นเพราะโหมด PWM 2 นี่ไม่ใช่ปัญหาเพราะอัตรา PWM สำหรับเซอร์โวนั้นยังคงถูกต้อง
ประโยชน์อื่นๆ ของโซลูชันนี้คือการเปลี่ยนอัตราเฟรมหมายถึงการเปลี่ยนช่วงเวลาใน TIM1 เท่านั้น สำหรับเซอร์โวดิจิตอลสมัยใหม่ คุณสามารถเพิ่มได้ถึง 200-300 เฮิรตซ์ แต่โปรดอ่านคู่มือของเซอร์โวหากคุณต้องการปรับแต่ง
แนะนำ:
Gimbal อย่างง่ายด้วย Micro:bit และ 2 Servos: 4 ขั้นตอน
![Gimbal อย่างง่ายด้วย Micro:bit และ 2 Servos: 4 ขั้นตอน Gimbal อย่างง่ายด้วย Micro:bit และ 2 Servos: 4 ขั้นตอน](https://i.howwhatproduce.com/images/007/image-20706-j.webp)
Gimbal อย่างง่ายด้วย Micro:bit และ 2 Servos: สวัสดี! วันนี้ผมจะแสดงให้คุณเห็นถึงวิธีการสร้าง gimbal stabilizer แบบง่ายๆ คุณสามารถดูวิดีโอ YouTube ได้ที่นี่ โดยจะมีกล้องติดตัวไว้ แต่ถ้าคุณใส่เซอร์โวและโครงสร้างที่ทรงพลังกว่า ก็สามารถถือสมาร์ทโฟนของคุณหรือแม้แต่กล้องที่เหมาะสมได้ ในขั้นตอนต่อไป
วิธีอัปโหลดบน Soundcloud ด้วยอุปกรณ์ Android: 9 ขั้นตอน
![วิธีอัปโหลดบน Soundcloud ด้วยอุปกรณ์ Android: 9 ขั้นตอน วิธีอัปโหลดบน Soundcloud ด้วยอุปกรณ์ Android: 9 ขั้นตอน](https://i.howwhatproduce.com/images/010/image-28213-j.webp)
วิธีอัปโหลดบน Soundcloud ด้วยอุปกรณ์ Android: อัปโหลดไปยัง soundcloud โดยใช้อุปกรณ์ Android มือถือของคุณ
PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน
![PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน](https://i.howwhatproduce.com/images/001/image-1144-103-j.webp)
PWM พร้อม ESP32 | Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: ในคำแนะนำนี้เราจะดูวิธีสร้างสัญญาณ PWM ด้วย ESP32 โดยใช้ Arduino IDE & โดยทั่วไปแล้ว PWM จะใช้เพื่อสร้างเอาต์พุตแอนะล็อกจาก MCU ใดๆ และเอาต์พุตแอนะล็อกนั้นอาจเป็นอะไรก็ได้ระหว่าง 0V ถึง 3.3V (ในกรณีของ esp32) & จาก
การควบคุม RC Servos แบบไร้สายผ่าน UDP: 3 ขั้นตอน
![การควบคุม RC Servos แบบไร้สายผ่าน UDP: 3 ขั้นตอน การควบคุม RC Servos แบบไร้สายผ่าน UDP: 3 ขั้นตอน](https://i.howwhatproduce.com/images/001/image-1484-99-j.webp)
การควบคุม RC Servos แบบไร้สายผ่าน UDP: ในโครงการนี้ ฉันต้องการใช้ iPhone เพื่อควบคุมเซอร์โว RC ฉันจะใช้มาตรความเร่งเพื่อควบคุมเซอร์โวสองตัวผ่านการเชื่อมต่อ UDP นี่เป็นโครงการ Proof Of Concept เพื่อตรวจสอบว่าการเชื่อมต่อระหว่าง iPhone และอุปกรณ์ต่อพ่วงสามารถบรรลุ
RC Simple 3 Servos Hexapod Walker: 8 ขั้นตอน (พร้อมรูปภาพ)
![RC Simple 3 Servos Hexapod Walker: 8 ขั้นตอน (พร้อมรูปภาพ) RC Simple 3 Servos Hexapod Walker: 8 ขั้นตอน (พร้อมรูปภาพ)](https://i.howwhatproduce.com/images/001/image-1268-54-j.webp)
RC Simple 3 Servos Hexapod Walker: โปรเจ็กต์นี้ได้รับแรงบันดาลใจจาก Pololu Simple Hexapod Walkerhttps://www.pololu.com/docs/0J42/1โปรดเยี่ยมชมเว็บไซต์ของพวกเขา พวกเขามีสินค้าลดราคามากมาย หากคุณหลงใหลเกี่ยวกับหุ่นยนต์ .แทนการสร้างหุ่นยนต์ (โดยใช้ Micro Maestro Co