สารบัญ:

วิธีขับ LED จำนวนมากจากพินไมโครคอนโทรลเลอร์ไม่กี่ตัว: 6 ขั้นตอน (พร้อมรูปภาพ)
วิธีขับ LED จำนวนมากจากพินไมโครคอนโทรลเลอร์ไม่กี่ตัว: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีขับ LED จำนวนมากจากพินไมโครคอนโทรลเลอร์ไม่กี่ตัว: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: วิธีขับ LED จำนวนมากจากพินไมโครคอนโทรลเลอร์ไม่กี่ตัว: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: EP1/1 บทที่1 เริ่มต้นใช้งานไมโครคอนโทรลเลอร์ Arduino 2024, พฤศจิกายน
Anonim
วิธีขับ LED จำนวนมากจากพินไมโครคอนโทรลเลอร์เพียงไม่กี่ตัว
วิธีขับ LED จำนวนมากจากพินไมโครคอนโทรลเลอร์เพียงไม่กี่ตัว

ด้วยความจริงที่ว่าหมุดไมโครคอนโทรลเลอร์จำนวนมากมีสามสถานะ (+V, GND หรือ "อิมพีแดนซ์สูง" คุณสามารถขับไฟ LED N*(N-1) จากพิน N ได้ ดังนั้นไมโครคอนโทรลเลอร์ 8 พินตัวเล็ก ๆ เช่น PIC12Fxxx หรือ ATtiny11 สามารถขับได้ ไฟ LED 20 ดวงบนพินเอาต์พุตที่มีอยู่ 5 พิน และยังคงมีพินเหลือหนึ่งพินสำหรับอินพุตบางประเภทดูเพิ่มเติมที่

ขั้นตอนที่ 1: 20 LEDs บน 5 Pins

20 LEDs บน 5 Pins
20 LEDs บน 5 Pins

การครอบตัดปัจจุบันของไมโครคอนโทรลเลอร์ที่มีจำนวนพินต่ำ (6 พินถึง 20 พินบน

แพ็คเกจทั้งหมด) มีราคาที่น่าดึงดูดใจและ 'น่ารัก' แต่คำถามก็คือว่าคุณจะใช้งานพินเหล่านั้นให้ดีที่สุดได้อย่างไรสำหรับการใช้งานทั่วไป เช่น ไฟ LED สำหรับขับขี่ วิธีการเชื่อมต่อโดยตรงเพื่อขับ LED จะกินหนึ่งพินสำหรับ LED แต่ละตัว รูปแบบมัลติเพล็กซิ่งแบบดั้งเดิมที่แถวของแอโนด LED ถูกขับเคลื่อนด้วยพิน N หนึ่งชุด และแคโทดทั่วไปแต่ละแถวถูกขับเคลื่อนด้วยพิน M อีกชุดหนึ่งเพื่อจัดการแสง LED N*M ด้วยพิน N+M อย่างไรก็ตาม สำหรับโปรเซสเซอร์ที่มีเอาต์พุตเพียง 5 ตัวหรือน้อยกว่า (เช่นเดียวกับไมโครคอนโทรลเลอร์ 8 พินส่วนใหญ่) สิ่งนี้ทำให้คุณได้รับเอาต์พุตมากกว่าไดรฟ์โดยตรง

ขั้นตอนที่ 2: Charlieplexing

Charlieplexing
Charlieplexing

สมมติว่าพินเอาต์พุตเป็นจริงสามสถานะ (แอ็คทีฟสูง แอ็คทีฟต่ำ และอิมพีแดนซ์สูง (อินพุต)) นอกจากนี้ยังสามารถแชร์ไดรเวอร์แถวและคอลัมน์และควบคุมไฟ LED N*(N-1) ด้วยพิน N เท่านั้น หนึ่งพินเชื่อมต่อกับแคโทดทั่วไปของแถว LEDs และ drivenlow และพิน N-1 ที่เหลืออยู่เชื่อมต่อกับ anodes และขับเคลื่อนด้วยแสงสูงเพื่อให้คอลัมน์นั้นสว่างหรือทิ้งไว้เป็นอินพุตเพื่อออกจาก LEDoff Maxim เรียกเทคนิคนี้ว่า "Charlieplexing" และอธิบายใน (1); ไมโครชิปยังกล่าวถึงสิ่งนี้ในเอกสารของพวกเขา (2) (และนำไปใช้ในบอร์ด PICKit 1 ด้วยเช่นกัน) (1) "Charlieplexing - การลดการแสดงผล LED Multiplexing Pin-Count Pin-Count"https://www.maxim-ic.com/appnotes cfm/appnote_number/1880(2) "เคล็ดลับและเคล็ดลับ 8-pin FLASH PIC Microcontrollers"https://ww1.microchip.com/downloads/en/DeviceDoc/40040b.pdf(3) Charlieplexing LEDs- ทฤษฎีที่สอนได้โดย rgbphil

ขั้นตอนที่ 3: นำไปใช้งาน

นำไปใช้งานได้จริง
นำไปใช้งานได้จริง
นำไปใช้งานได้จริง
นำไปใช้งานได้จริง

ขับ LED 20 ดวงจาก ATtiny11 เวอร์ชันก่อนหน้าของบอร์ดนี้คือ

สร้างขึ้นจริงและปรากฏเป็นรูปหน้าหลัก ฉันเกรงว่าภาพแผนผังจะค่อนข้างสิ้นหวัง คุณต้องใช้ Eagle เพื่อบอกคุณว่าสัญญาณใดเชื่อมต่ออยู่ที่ใด

ขั้นตอนที่ 4: เล็กลงและอเนกประสงค์มากขึ้น…

เล็กลงและอเนกประสงค์มากขึ้น…
เล็กลงและอเนกประสงค์มากขึ้น…

เนื่องจากบอร์ดส่วนใหญ่ใช้อาร์เรย์ LED เราจึงสามารถสร้างที่ว่างได้

สำหรับชิป Attiny หรือชิปไมโครชิป PIC12F ลดขนาด LED ลงเหลือ 3 มม. แล้วไปที่กระดานสองด้าน และเราได้บางอย่างเกี่ยวกับ 27x44 มม. อนิจจา บอร์ดนี้ยังไม่ได้รับการทดสอบ…

ขั้นตอนที่ 5: Itty Bitty

Itty Bitty
Itty Bitty

แน่นอนว่าไมโครชิปมีชิป PIC10F แบบ 6 พิน ซึ่งสามารถขับเคลื่อน a

เพียง 6 LEDs จาก 3 พินเอาต์พุต เส้นผ่านศูนย์กลางประมาณ 16 มม. การใช้ไฟ LED 603 ดวงช่วยให้คุณมีขนาดเล็กลงเล็กน้อย แต่ฉันไม่แน่ใจว่าประเด็นคืออะไร

ขั้นตอนที่ 6: ซอฟต์แวร์

ซอฟต์แวร์ค่อนข้างยุ่งด้วยเหตุผลด้านเซิร์ฟเวอร์:

1) สำหรับ PCB ที่แสดงไว้ ไฟ LED จะถูกจัดวางในลักษณะที่สะดวกสำหรับเลย์เอาต์ PCB แทนที่จะเรียงลำดับบิต "ถูกต้อง" IMO นี่เป็นวิธีการทำสิ่งต่างๆ แต่หมายความว่าแถวที่ 1 ไม่จำเป็นต้องหมายถึงบิต 1 หรือคอลัมน์ 3 ไม่ได้หมายถึงบิต 3 ซึ่งต้องใช้ระดับการแมประหว่างการกำหนดที่อยู่แถว/คอลัมน์ปกติและ บิตที่ต้องการการตั้งค่า 2) เนื่องจากบิตเดียวกันถูกใช้สำหรับแอโนดและแคโทด การเชื่อมต่อทั่วไป (แถว) สำหรับบางบิตสามารถอยู่ตรงกลางของบิตที่ขับเคลื่อนด้วย (คอลัมน์) นั่นหมายความว่าคุณต้องเลื่อนบิตของคอลัมน์ไปรอบๆ ขึ้นอยู่กับว่าอยู่ก่อนหรือหลังบิตของแถวสำหรับชุดของคอลัมน์นั้น 3) คุณต้องได้รับคำเอาต์พุตสำหรับทั้ง ioport และการลงทะเบียนทิศทางพอร์ต รหัส ASM ที่แนบมาสำหรับ ATtiny11 เป็น "การพิสูจน์แนวคิด" มันไม่ได้รับการปรับให้เหมาะสมอย่างน่าอับอายและแสดงความคิดเห็นได้ไม่ดี แต่ทั้งหมดที่ฉันเขียนมาจนถึงตอนนี้

แนะนำ: