ฮาร์ดแวร์ (timer) นับขึ้นด้วยนาฬิกา f_clk ครบ N ครั้งก็เริ่มใหม่
f_PWM = f_clk / N D = compare / N ความละเอียด = 1/N
ตัวอย่าง: f_clk=1MHz, N=1000 → PWM 1kHz, ความละเอียด duty 0.1%
ซอฟต์แวร์ โปรแกรมเขียนขา 1 หน่วง เขียน 0 หน่วง วนไป — ใช้ขาไหนก็ได้ แต่เวลาของคำสั่งอื่นปนเข้าไปในจังหวะ คาบเวลาจึงยาวกว่าที่ตั้งเล็กน้อยและแกว่งได้ (jitter)
คู่สัญญาณกลับเฟส (H-bridge) ห้ามเป็น 1 พร้อมกัน ไม่งั้นลัดวงจรแหล่งจ่าย (shoot-through) — ระบบจริงต้องเว้น dead time
| สาเหตุ | อาการ |
|---|---|
| ความละเอียดของตัวนับ | duty ถูกปัดเป็นขั้น (N=100 สั่ง 33.3% ได้จริง 33%) |
| PWM จากซอฟต์แวร์ | คาบเวลายาวกว่าที่ตั้ง และแกว่ง |
| ขั้วกลับ | duty ที่วัดได้เป็น 100% ลบค่าที่สั่ง |
| ตัวเลขในโปรแกรมไม่ใช่การวัด | โปรแกรมรายงานค่าที่สั่งครั้งล่าสุด (duty()) |
| ขาไม่ได้ต่อกับ PWM ของฮาร์ดแวร์ | ได้พัลส์สั้นแล้วหยุด |
วิธีวัดให้แม่น วัดที่ระดับ 50% ของแรงดัน, เฉลี่ยหลายคาบเวลา, ความละเอียดเวลาต้องละเอียดกว่าขั้นของ duty ที่อยากตรวจ
1. ค่าที่สั่ง t_high=20ms, T=40ms, f=25Hz, D=50%
2. ต่อ CH1→P13.3, CH2→P13.4, 10ms/div, 1V/div, trigger ขาขึ้น CH1@1.65V
3. วัด CH1 (เฉลี่ย 10 คาบเวลา) T=40.10ms, t_high=20.05ms
f = 1/40.10ms = 24.94 Hz
D = 20.05/40.10 = 50.0%
คาบเวลายาวกว่าที่สั่ง 0.25%
4. อธิบาย ลักษณะของ PWM จากซอฟต์แวร์ (เวลาคำสั่งปนทุกครึ่งคาบเวลา)
5. ตรวจคู่กลับเฟส ซูมที่ขอบ ดูว่ามีช่วงที่ทั้งสองเส้นเป็น 1 พร้อมกันไหม
6. นับรอบ ต้องได้ 50 พัลส์บน CH1
ฝึกเติม
แล็บ ส่วน A PWM Out บน P13.3/P13.4 — ทำตามตัวอย่างสมบูรณ์ด้วยข้อมูลจริง
แล็บ ส่วน B PWM3 Out บน P15.2/P15.3 — วัดแบบเดียวกัน เทียบกับส่วน A
แล็บ ส่วน C มัลติมิเตอร์กับ PWM — วัด P13.3 ด้วยโหมดแรงดันไฟตรงระหว่างที่วิ่ง อธิบายว่าทำไมมันแกว่งรอบราว 1.65 V
PWM มีคาบเวลา 2 ms และความกว้างพัลส์ 0.5 ms ความถี่และ duty cycle เป็นเท่าไร
ขา 3.3 V ขับ PWM duty 40% ความถี่สูง ต่อวงจรกรองที่เฉลี่ยสัญญาณ จะได้แรงดันเฉลี่ยเท่าไร
โปรแกรมสั่ง duty 30% แต่วัดที่ขาได้ 70% ทุกค่าที่ลองสั่ง ผลรวมของค่าที่สั่งกับค่าที่วัดได้เป็น 100% เสมอ สาเหตุที่น่าจะเป็นที่สุดคืออะไร
โมดูลถัดไปเริ่มที่ ต่อวงจรบนเบรดบอร์ด — ต่อวงจรที่ใหญ่ขึ้นให้ถูกตั้งแต่ครั้งแรก และตรวจด้วยเครื่องมือทั้งหมดที่ใช้เป็นแล้วก่อนเสียบไฟ
"อิเล็กทรอนิกส์และเครื่องมือวัดสำหรับนักพัฒนาระบบฝังตัว" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย
(Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program
สัญญาอนุญาต CC BY-NC 4.0
แผนภาพในบทเรียนนี้เป็นงานวาดของหลักสูตรนี้เอง (CC BY-NC 4.0)
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0