ทำไมหมุดบางอันถึงมีเครื่องหมาย '~' อยู่ข้างตัวเลข


32

ฉันถูกมองที่ Arduino Uno ของฉันและฉันสังเกตเห็นสัญลักษณ์ว่าด้วยหมุดดิจิตอล11, 10, 9, 6, และ5 3สิ่งเหล่านี้หมายความว่าอย่างไร สิ่งนี้ส่งผลกระทบต่อวิธีการทำงานหรือไม่? ฉันไม่สามารถใช้พินเหล่านี้ในบางสถานการณ์ได้หรือไม่?


19
สัญลักษณ์ตัวหนอนหมายถึง "โดยประมาณ" เช่นเดียวกับ "นี่คือประมาณ 11 pin" ในระหว่างกระบวนการ mfg หมุดสามารถเลื่อนไปรอบ ๆ ได้เล็กน้อย ไม่ค่อยจะพิน 11 เท่ากับ 11 โดยปกติแล้วมันจะมากกว่าหรือน้อยกว่า 11 พินเล็กน้อยที่มีแนวโน้มเพิ่มขึ้นในการเลื่อนไปรอบ ๆ จะถูกแสดงด้วยสัญลักษณ์ ~ :)

6
@AnnonomusPerson David เป็นคนขี้กลัวซึ่งไม่ชัดเจนในทันทีหากคุณไม่คุ้นเคยกับการปักหมุดและชอบ
Shamtam

7
@Shamtam: หรือถ้าคุณไม่คุ้นเคยกับเดวิด :)
คริส Laplante

คำตอบ:


31

ผ่อนคลาย. ไม่ต้องกังวล พินเหล่านี้เรียกว่า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
  • ง่ายกว่าเพียงพิมพ์คำสั่งแทนที่จะมีคำสั่ง "if" จำนวนมาก

มันจะไม่สร้างความแตกต่างอย่างมากถ้าจุดประสงค์เดียวของ Arduino คือการสร้างสัญญาณ PWM อย่างไรก็ตามหากคุณตั้งเวลาการหน่วงเวลานานกว่า 50 มิลลิวินาทีในการวนรอบหลักจะทำให้การจับเวลาล่าช้า ด้วยวิธีการซอฟต์แวร์ที่คุณต้องการกำจัดฟังก์ชั่น "การหน่วงเวลา" เนื่องจาก Arduino จะทำงานบนเธรดเดียวเท่านั้น (สามารถทำได้เพียงครั้งเดียวในคราวเดียว) หากคุณรู้ว่าคุณกำลังทำอะไรอยู่มันจะไม่สร้างความแตกต่างที่ทำให้แสงสว่างลดลง แต่ถ้าคุณมีพินเสริมด้วย PWM คุณจะเสียเวลากับการใช้ซอฟต์แวร์


ตามที่คนอื่น ๆ ชี้:

คุณยังต้องการตัวต้านทานสำหรับวงจรของคุณเพื่อ จำกัด กระแสและแรงดันไฟฟ้า คุณไม่สามารถข้ามสิ่งนี้ได้


1
ฉันไม่รู้ว่าคุณหมายถึงอะไรโดย "พลังการประมวลผล" (หรือวลีใดก็ตามที่ควรจะหมายถึง) PWM ทำงานได้เพราะมันถูกทริกเกอร์โดยตัวจับเวลาที่กำลังทำงานเป็นอิสระจากรหัสการทำงาน
baldengineer

@ JamesC4S ฉันหมายความว่ามันจะทำให้รหัสโดยรวมช้าลงหากคุณเพิ่มความล่าช้าและมันจะเป็น "เปิด" และ "ปิด" โปรเซสเซอร์สามารถทำสิ่งต่าง ๆ ได้หลายอย่างต่อวินาทีก่อนที่มันจะร้อนมากเกินไปดังนั้นจึงสามารถควบคุมความเร็วในการทำงาน
Penguin Penguin ไม่ระบุชื่อ

@AnnonomusPerson คุณจะต้องชัดเจนมากขึ้นในคำตอบที่คุณให้ ฉันยังไม่เห็นคำอธิบายของคุณเกี่ยวกับ "พลังการประมวลผล" ตัวอย่างเช่นคุณสามารถเขียนกิจวัตร PWM ที่ไม่ได้ใช้ความล่าช้า () โดยใช้มิลลิวินาที () เช่นซึ่งจะมีผลกระทบน้อยที่สุดต่อความเร็วการดำเนินการสำหรับส่วนที่เหลือของรหัส
baldengineer

1
@ AnnonomusPerson: ฉันจะบอกว่ามีสองวิธีในการใช้ PWM ในรหัส: ทั้งสองสามารถให้หน่วยประมวลผลดำเนินการ PWM ในวงซึ่งไม่ทำอะไรเลยยกเว้นอาจตัดสินใจเมื่อจะออกหรืออื่น ๆ ที่สามารถมีการขัดจังหวะจับเวลา ดำเนินการ PWM ในสถานการณ์เดิมโปรเซสเซอร์จะไม่สามารถทำอะไรได้อีกในขณะที่ PWM กำลังเกิดขึ้น ในระยะหลังจะมีข้อ จำกัด เกี่ยวกับความแม่นยำและความแม่นยำของการกำหนดเวลา PWM วงจรฮาร์ดแวร์ PWM ช่วยให้ชิปสร้างรูปคลื่น PWM ที่สะอาดและแม่นยำซึ่งอยู่ภายในกลุ่มไมโครวินาทีในขณะที่ทำสิ่งอื่น ๆ
supercat

โปรดทราบว่าด้วยการทำงานของการมองเห็น LED ที่มี 1/4 DC (หรืออัตราส่วนอื่น ๆ ) จะไม่จำเป็นต้องปรากฏในส่วนที่เกี่ยวข้องของความสว่างเต็ม
Ignacio Vazquez-Abrams

7

ความเข้าใจผิดที่พบบ่อยเกี่ยวกับหมุด PWM คือเมื่อใช้ PWM คุณไม่จำเป็นต้องใช้ตัวต้านทาน จำกัด กระแสไฟ (เช่น LED เป็นต้น)

นี่ไม่เป็นความจริง. หมุด PWM ควรถือเป็นพินดิจิตอลซึ่งจะเปิดและปิดโดยอัตโนมัติ ซึ่งหมายความว่าพวกเขาไปที่แรงดันไฟฟ้าสูงเช่นเดียวกับหมุดอื่น ๆ

เมื่อใช้ LED กับ PWM คุณจะต้องใช้ตัวต้านทาน จำกัด ปัจจุบัน เมื่อใช้มอเตอร์ที่มี PWM คุณควรใช้ทรานซิสเตอร์เกือบทุกครั้ง


2
@AnnonomusPerson ไม่ไม่ถูกต้อง คุณยังคงต้องการตัว จำกัด กระแสไฟสำหรับ LED แม้ว่าคุณจะมีเอาท์พุทแบบอะนาล็อกที่แท้จริง ไฟ LED ต้องการแหล่งจ่ายกระแสคงที่ไม่ใช่แหล่งจ่ายแรงดันคงที่
baldengineer

3
คุณจะได้รับไฟ LED ที่มีความต้านทานปัจจุบัน จำกัด สร้างขึ้นใน. ฉันถูกดังนั้นผิดหวังเมื่อฉันถามสำหรับ LED ที่ Maplin และตัวต้านทานที่เหมาะสมที่จะเรียกมันออก 12V เมื่อพวกเขาบอกผมว่าพวกเขามีคนที่วิ่งได้โดยตรงจาก 12V เฮ้รอจนกว่าพวกเขาจะลองบรรจุโหลดของทรานซิสเตอร์ลงในแพ็คเกจเดียวเพื่อสร้างเกทและหรืออะไรซักอย่าง
Andrew Morton
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.