8.PWM(Pulse Width Modulation)
Last updated
Last updated
ESP32 ที่ใช้โดย BiBoard นั้นแตกต่างจาก 328P ที่ใช้โดย UNO เนื่องจาก PWM ของ ESP32 ใช้เมทริกซ์บัส จึงสามารถใช้กับพินที่ไม่ได้ระบุได้
PWM ของ ESP32 เรียกว่าตัวควบคุม LED (LEDC) ตัวควบคุม LED PWM ส่วนใหญ่จะใช้เพื่อควบคุม LED และยังสามารถสร้างสัญญาณ PWM สำหรับการควบคุมอุปกรณ์อื่นๆ ตัวควบคุมมีตัวจับเวลา 8 ตัว ซึ่งสอดคล้องกับช่องความเร็วสูง 8 ช่อง และช่องความเร็วต่ำ 8 ช่อง รวมเป็น 16 ช่อง
เมื่อเปรียบเทียบกับ UNO ให้ใช้ "analogWrite()" โดยตรงเพื่อป้อนอัตราส่วนทำงานระหว่าง 0-255 การควบคุม PWM ของ ESP32 บน BiBoard นั้นยุ่งยากกว่า พารามิเตอร์ที่ต้องควบคุมมีดังนี้:
การเลือกช่อง PWM ด้วยตนเอง (0-15) ยังช่วยเพิ่มความยืดหยุ่นในการใช้พิน
จำนวนบิตของรูปคลื่น PWM จะกำหนดความละเอียดของรอบการทำงานของรูปคลื่น PWM จำนวนบิตยิ่งมาก ความแม่นยำยิ่งสูง
ความถี่ของรูปคลื่น PWM จะกำหนดความเร็วของรูปคลื่น PWM ยิ่งความถี่สูง ความเร็วยิ่งเร็วขึ้น
ความถี่ของรูปคลื่น PWM และจำนวนบิตนั้นสัมพันธ์กัน ยิ่งจำนวนบิตมาก ความถี่ยิ่งต่ำ ตัวอย่างต่อไปนี้ยกมาจากคู่มือการเขียนโปรแกรม ESP32:
ตัวอย่างเช่น เมื่อความถี่ PWM คือ 5 kHz ความละเอียดรอบการทำงานสูงสุดจะเป็น 13 บิต ซึ่งหมายความว่ารอบการทำงานสามารถเป็นค่าใดก็ได้ระหว่าง 0 ถึง 100% โดยมีความละเอียด ~0.012% (2 ** 13 = 8192 ระดับความสว่าง LED แบบแยกส่วน)
สามารถใช้ตัวควบคุม LED PWM เพื่อสร้างสัญญาณความถี่สูง ซึ่งเพียงพอที่จะส่งสัญญาณนาฬิกาไปยังอุปกรณ์อื่นๆ เช่น โมดูลกล้องดิจิทัล ที่นี่ความถี่สูงสุดสามารถเป็น 40 MHz และความละเอียดรอบการทำงานคือ 1 บิต กล่าวอีกนัยหนึ่ง รอบการทำงานจะคงที่ที่ 50% และไม่สามารถปรับเปลี่ยนได้
API คอนโทรลเลอร์ LED PWM สามารถรายงานข้อผิดพลาดเมื่อความถี่ที่ตั้งไว้และความละเอียดรอบการทำงานเกินช่วงฮาร์ดแวร์ของคอนโทรลเลอร์ LED PWM ตัวอย่างเช่น หากคุณพยายามตั้งค่าความถี่เป็น 20 MHz และความละเอียดรอบการทำงานเป็น 3 บิต ข้อผิดพลาดจะถูกรายงานบนจอภาพพอร์ตซีเรียล
ดังที่แสดงไว้ด้านบน เราจำเป็นต้องกำหนดค่าช่องสัญญาณ ความถี่ และจำนวนบิต และเลือกพินเอาต์พุต
ขั้นตอนที่ 1: กำหนดค่าตัวควบคุม PWM
ขั้นตอนที่ 2: กำหนดค่าพินเอาต์พุต PWM
ขั้นตอนที่ 3: เอาต์พุตรูปคลื่น PWM
ในการสาธิต เราเลือก IO2 เป็นพินเอาต์พุต เชื่อมต่อ IO2 เข้ากับ LED และคุณสามารถสังเกตเอฟเฟกต์ของไฟ LED กระพริบช้าๆได้