ฉันถูกมองที่ Arduino Uno ของฉันและฉันสังเกตเห็นสัญลักษณ์ว่าด้วยหมุดดิจิตอล11
, 10
, 9
, 6
, และ5
3
สิ่งเหล่านี้หมายความว่าอย่างไร สิ่งนี้ส่งผลกระทบต่อวิธีการทำงานหรือไม่? ฉันไม่สามารถใช้พินเหล่านี้ในบางสถานการณ์ได้หรือไม่?
ฉันถูกมองที่ Arduino Uno ของฉันและฉันสังเกตเห็นสัญลักษณ์ว่าด้วยหมุดดิจิตอล11
, 10
, 9
, 6
, และ5
3
สิ่งเหล่านี้หมายความว่าอย่างไร สิ่งนี้ส่งผลกระทบต่อวิธีการทำงานหรือไม่? ฉันไม่สามารถใช้พินเหล่านี้ในบางสถานการณ์ได้หรือไม่?
คำตอบ:
ผ่อนคลาย. ไม่ต้องกังวล พินเหล่านี้เรียกว่าPWM
และเหมือนกันกับพินอื่น ๆ ยกเว้นจะมี "โบนัสเพิ่ม"
การใช้งานบางอย่างจากเว็บไซต์ของ Arduino :
- การหรี่ไฟ LED
- จำลองเอาต์พุตแบบอะนาล็อก เอาต์พุตยังคงสลับแบบดิจิทัลจาก 0V ถึง 5V อย่างไรก็ตามตัวกรองความถี่ต่ำ (ตัวเก็บประจุและตัวต้านทาน) เพื่อจำลองแรงดันไฟฟ้าแบบอะนาล็อก
- กำลังสร้างสัญญาณเสียง
- ให้การควบคุมความเร็วตัวแปรสำหรับมอเตอร์
- การสร้างสัญญาณที่ปรับตัวอย่างเช่นขับ LED อินฟราเรดสำหรับการควบคุมระยะไกล
มันทำงานอย่างไร:
หมุด PWM ถูกควบคุมโดยตัวจับเวลาบนชิปซึ่งจะสลับพินโดยอัตโนมัติในอัตราประมาณ 490Hz "การปรับความกว้างพัลส์" (PWM) คือระยะเวลาที่ขาเปิดหรือปิดของรอบความถี่เดียว สิ่งนี้สามารถหรี่แสง LED ด้วยการให้ภาพลวงตาที่ความสว่างครึ่งหนึ่งเหมือนเมื่อก่อนซึ่งมันกะพริบเร็วมาก ๆ
เมื่อมีรอบการปฏิบัติหน้าที่ 25% จะเป็นหนึ่งในเวลา ถ้าคุณใช้หลอด LED มันจะปรากฏขึ้นประมาณ 1 ใน 4 ของความสว่าง [ให้หรือรับ] (หมายเหตุ: ในขณะที่บางคนชี้ให้เห็นว่าสิ่งนี้ไม่ได้เป็นสัดส่วนอย่างแท้จริงแต่ให้ปล่อยให้เป็นแบบนี้เพื่อความเรียบง่าย EX: 25% ไม่ใช่ความสว่าง 1 / 4th เสมอ)
(ถ้าคุณเข้าใจไฟฟ้าจริง ๆ คุณอาจเพิ่มตัวเก็บประจุเพื่อทำให้มันเป็นเอาท์พุทแบบอะนาล็อก)
วิธีใช้พินเหล่านี้เพื่อเอาท์พุท:
ก่อนอื่นคุณต้องกำหนดพินเป็นเอาท์พุท จากนั้นคุณใช้
analogWrite(ledPin, 128);
เพื่อเริ่มต้น นี่ledPin
เป็นพิน PWM ที่คุณต้องการเริ่ม PWM และ128
ควรแทนที่ด้วยตัวเลขระหว่าง0
และ255
; 0
: 0% duty cycle
(หันขาสมบูรณ์ออก) และ:255
100% duty cycle
(เปิดพินโดยสมบูรณ์)
ที่มา: http://www.arduino-tutorials.com/arduino-pwm/
ทำไมฉันไม่สามารถเปิดและปิดไฟได้อย่างรวดเร็วในรหัสของฉัน:
อย่างไรก็ตามในทางเทคนิคคุณสามารถมีปัญหาบางอย่างได้:
มันจะไม่สร้างความแตกต่างอย่างมากถ้าจุดประสงค์เดียวของ Arduino คือการสร้างสัญญาณ PWM อย่างไรก็ตามหากคุณตั้งเวลาการหน่วงเวลานานกว่า 50 มิลลิวินาทีในการวนรอบหลักจะทำให้การจับเวลาล่าช้า ด้วยวิธีการซอฟต์แวร์ที่คุณต้องการกำจัดฟังก์ชั่น "การหน่วงเวลา" เนื่องจาก Arduino จะทำงานบนเธรดเดียวเท่านั้น (สามารถทำได้เพียงครั้งเดียวในคราวเดียว) หากคุณรู้ว่าคุณกำลังทำอะไรอยู่มันจะไม่สร้างความแตกต่างที่ทำให้แสงสว่างลดลง แต่ถ้าคุณมีพินเสริมด้วย PWM คุณจะเสียเวลากับการใช้ซอฟต์แวร์
ตามที่คนอื่น ๆ ชี้:
คุณยังต้องการตัวต้านทานสำหรับวงจรของคุณเพื่อ จำกัด กระแสและแรงดันไฟฟ้า คุณไม่สามารถข้ามสิ่งนี้ได้
ความเข้าใจผิดที่พบบ่อยเกี่ยวกับหมุด PWM คือเมื่อใช้ PWM คุณไม่จำเป็นต้องใช้ตัวต้านทาน จำกัด กระแสไฟ (เช่น LED เป็นต้น)
นี่ไม่เป็นความจริง. หมุด PWM ควรถือเป็นพินดิจิตอลซึ่งจะเปิดและปิดโดยอัตโนมัติ ซึ่งหมายความว่าพวกเขาไปที่แรงดันไฟฟ้าสูงเช่นเดียวกับหมุดอื่น ๆ
เมื่อใช้ LED กับ PWM คุณจะต้องใช้ตัวต้านทาน จำกัด ปัจจุบัน เมื่อใช้มอเตอร์ที่มี PWM คุณควรใช้ทรานซิสเตอร์เกือบทุกครั้ง