ฉันจะควบคุมไฟ LED หลายร้อยตัวด้วย Arduino ได้อย่างไร


10

ฉันกำลังทำงานในโครงการอิเล็กทรอนิกส์ที่มีไฟ LED หลายร้อยดวง (พูดถึงหลอดไฟ LED หกถึงเจ็ดร้อย ... รู้มั้ย) มีวิธีควบคุมไฟ LED หลายอันนี้กับ Arduinos หนึ่งหรือสองคู่บ้างไหม? ฉันต้องการที่จะสามารถเข้าถึง / ควบคุมแต่ละ LED เป็นรายบุคคลตามที่ฉันต้องการจะทำคือพล็อตไฟ LED ลงบนแผนที่ผนังของโลก จากนั้นฉันจะติดต่อ Arduino กับ Google Analytics และเมื่อมีคนนำทางไปยังไซต์ของฉันจากสถานที่หนึ่งในโลก LED ที่อยู่ใกล้ที่สุดในภูมิภาคของพวกเขาจะสว่างขึ้นในแบบเรียลไทม์

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม ขอบคุณ! ฉันพยายามค้นคว้าและอ่านเกี่ยวกับมัลติเพล็กซิ่งและชาร์ลีเพล็กซิ่ง แต่สิ่งเหล่านั้นดูเหมือนจะสูงสุดที่ 100 หรือมากกว่านั้นใช่ไหม ฉันสมมติว่าฉันต้องการฮาร์ดแวร์ / ส่วนประกอบภายนอกเพื่อให้สามารถควบคุมไฟ LED จำนวนมากนี้ได้ แต่สิ่งที่ฉันจะต้องทำให้เกิดขึ้นคืออะไร มีใครอีกไหมที่เคยสร้างเมทริกซ์ LED ขนาดใหญ่นี้?

คำตอบ:


9

เมื่อคุณมัลติเพล็กซ์จำนวนมากของ LED แต่ละวิธีที่พบบ่อยคือการใช้เมทริกซ์ N x M เวลาถูกแบ่งเป็น N ขั้นตอนในแต่ละขั้นตอนคุณเปิดใช้งานหนึ่งในแถว N บรรทัดและบรรทัดคอลัมน์ที่สอดคล้องกับ LEDs ที่คุณต้องการเปิดใช้งาน โปรดทราบว่าเส้นแถวแต่ละเส้นสามารถนำ M ไปคูณกับกระแสไฟ LED ซึ่งจะขอบัฟเฟอร์บางอย่าง LED แต่ละตัวใช้เวลาเพียง 1 / N เท่านั้นดังนั้นเพื่อรักษาความสว่างตามปกติคุณจะต้องเพิ่ม N-fold ปัจจุบัน LEDS ส่วนใหญ่ไม่ชอบสิ่งนี้ Charlieplexing ไม่สามารถใช้งานได้ในสถานการณ์ที่เกิดขึ้นเนื่องจากมีกระแสขนาดใหญ่เข้ามาเกี่ยวข้อง

จากคำถามของคุณฉันเข้าใจว่าคุณต้องการเปิดใช้งานเพียง 1 LED ในเวลาเดียว? ในกรณีนั้นไม่มีอะไรผิดปกติกับ Charlieplexing uC ที่มีหมุด I / O 31 ตัวสามารถขับ LED ได้ 900 ดวง เสียงเหมือนการสร้างจะเป็นฝันร้าย ...


อัปเดต 5 ปีต่อมา: มัลติเพล็กซิ่งหรือ Charlieplexing นั้นดีเมื่อคุณมีเวลามากเกินไป แต่เมื่อฉันต้องควบคุมไฟ LED 100 ดวงตอนนี้ฉันจะซื้อ LED WS2801 ที่มีแถบยาว


ฉันคิดว่าฉันมีสิ่งที่จะเพิ่ม ถ้ากระแสสูงเป็นปัญหาจงใช้แรงดันสูง เช่น 9v แต่ใช้เวลาสั้น ๆ 10mS และคำนวณรอบการทำงานได้อย่างถูกต้อง ตามที่มันยังใช้เพิ่มอายุการใช้งานของหลอดไฟ LED
มาตรฐาน Sandun

แรงดันไฟฟ้าตกโดย LED ได้รับการแก้ไขและเป็นแรงดันเอาท์พุทของ Arduino (มีแนวโน้มว่า 5V สำหรับบางประเภท 3.3V) การใช้กระแสไฟที่สูงขึ้นด้วยวัฏจักรหน้าที่เล็กลงโดยทั่วไปจะลดอายุการใช้งาน LED
Wouter van Ooijen

9

คุณสามารถใช้การลงทะเบียน shift ที่ราคาถูกและพบได้ง่าย 74HC595 (หรือคล้ายกัน) เพื่อควบคุม LED หลายร้อยดวงได้อย่างง่ายดายโดยใช้เพียงไม่กี่พินจาก arduino

มีแม้กระทั่งการสอนเกี่ยวกับเรื่องนี้ในเว็บไซต์ Arduino!

อนุกรมเป็น Parallel Shifting-Out พร้อม 74HC595

เลื่อนออกและชิป 595

ในบางครั้งคุณอาจจะไม่มีหมุดบนบอร์ด Arduino ของคุณและจำเป็นต้องขยายออกด้วยการลงทะเบียนกะ ตัวอย่างนี้ใช้ 74HC595 แผ่นข้อมูลอ้างอิงถึง 74HC595 ว่าเป็น "การลงทะเบียนการเปลี่ยนอนุกรมแบบอนุกรม 8 บิตอนุกรมหรือขนาน 8 บิตพร้อมสลักเอาท์พุท 3 สถานะ" กล่าวอีกนัยหนึ่งคุณสามารถใช้มันเพื่อควบคุมเอาต์พุต 8 ครั้งในขณะที่ใช้พินเพียงไม่กี่พินบนไมโครคอนโทรลเลอร์ของคุณ คุณสามารถเชื่อมโยงรีจิสเตอร์หลายตัวเข้าด้วยกันเพื่อขยายเอาต์พุตของคุณมากยิ่งขึ้น


นั่นจะเป็นการลงทะเบียนกะมาก แต่มันจะทำงาน :) คุณจะต้องลงทะเบียนกะประมาณ 88 (700 leds / 8 leds ต่อชิป) และมีเพียง 1 mcu
Johan

1
อย่าลืมไดร์เวอร์ลอจิกเพิ่มเติมเนื่องจาก 88 อินพุตค่อนข้างมากในการจัดการ
Ignacio Vazquez-Abrams

2

ฉันจะสร้างสิ่งนี้ในลักษณะโมดูลาร์ 6960 ของ Maxim จะขับ LED 64 ดวงมาให้คุณถึงแม้ว่ามันจะค่อนข้างแพง พวกมันขับเคลื่อนด้วยอินเตอร์เฟสแบบอนุกรมและคุณสามารถเชื่อมต่อได้ถึง 256 ตัวด้วยกัน

7218/7221 ก็สามารถใช้งานได้เช่นกัน


2

คำตอบที่ช้าสำหรับคำถามนี้ แต่ที่นี่เป็นไฟ LED 528 Charlieplexed PICAXE 40X2 อันเดียว มันจะสูงถึง 930 LED หากพินทั้งหมดถูกอุทิศให้กับงาน

สิ่งก่อสร้าง: http://www.picaxeforum.co.uk/entry.php?25-The-PICaxe-orrery

วิดีโอ: http://www.youtube.com/watch?v=82LvqiaH-iA

สถาปัตยกรรม PICAXE ค่อนข้างช้าดังนั้นจำนวน LED สูงสุดที่สามารถส่องสว่างพร้อมกันนั้นถูก จำกัด ไว้ที่ประมาณ 15 ก่อนที่แสงจะสั่นไหว โปรเซสเซอร์ที่เร็วขึ้นและการเขียนโปรแกรมที่ชาญฉลาดจะเพิ่มจำนวนนี้อย่างมาก


1

ฉันไม่แน่ใจว่าคำตอบของฉันเป็นสิ่งที่ดีหรือไม่ ... แต่ทำไมไม่พูดเกี่ยวกับ WS2811 ไฟ led ที่อยู่แถบ?

เราต้องการทำเมทริกซ์ LED เพื่อแสดงข้อความ มีโครงการที่นี่ ( https://www.pjrc.com/teensy/td_libs_OctoWS2811.html ) สร้างขึ้นบน Teensy ซึ่งอยู่ใกล้สิ่งเดียวกันกับ Arduino

ฉันคิดว่ามันใช้แนวคิดของ PWM (Pulse Width Modulation) และอนุญาตให้ส่งข้อมูลที่ซับซ้อนไปยังแถบไฟ led ด้วยสายเส้นเดียว

แต่อีกครั้งฉันไม่แน่ใจว่าคำตอบของฉันดีหรือไม่


ปัญหาคือเวลาที่ต้องการ จำกัด จำนวนไฟ LED ที่คุณสามารถเชื่อมโยงเข้าด้วยกันและกระจายไปทั่วหลายเชนเพิ่มเวลาการประมวลผลโดยรวม
Ignacio Vazquez-Abrams

0

เราได้พูดคุยกันเล็กน้อยเกี่ยวกับการขับ LED จำนวนมากในคำถามล่าสุดที่นี่ คำตอบของฉันดูเหมือนจะใช้ได้กับปัญหาของคุณโดยตรงที่นี่ ดูคำตอบได้ที่นี่:

ขับ LED ที่ระยะไกล


4
คุณสามารถนำข้อมูลที่เกี่ยวข้องมาใช้และปรับให้เข้ากับคำถามนี้ได้หรือไม่หากคำตอบของคุณทำงานได้อย่างสมบูรณ์สำหรับทั้งคู่มันเป็นสัญญาณของการซ้ำซ้อนที่แน่นอน
Kortuk

0

จากข้อมูลที่ http://bildr.org/?s=shift+register จากการลงทะเบียน 74H595 กับ Arduino Uno ที่กล่าวว่า 'หากคุณมีการผูกมัด 1,000 รายการด้วยกัน' โครงการเริ่มต้นด้วยจอแสดงผล LED พร้อม 320 LEDS เมื่อฉันได้รับ LED มากกว่า 100 ดวงก็มีการสั่นไหวที่ไม่ดีและในที่สุดก็ทอด Arduino

ดังนั้นฉันจึงได้คุยกับฝ่ายสนับสนุนด้านเทคนิคที่ Sparkfun ที่ขายกระดาน breakout สำหรับ 74H595 ให้ฉัน เขาบอกว่าคุณสามารถเปิดไฟ LED ได้ครั้งละห้าหรือหกตัวเท่านั้น ดังนั้นฉันจึงกลับไปอ่านบทความที่ BLDR อีกครั้งและตระหนักว่าคุณสามารถควบคุมไฟ LED หลายพันดวงโดยใช้ 74H595 / Arduino แต่คุณสามารถมีโหลหรือมากกว่านั้นได้ในคราวเดียว (เรื่องนี้สมเหตุสมผลเพราะ Arduino จะอนุญาตให้ 200mA ถึง 5 โวลต์ใส่และแต่ละ LED วาด 20mA ดังนั้นประมาณสิบเป็นสิ่งที่มันจะปลอดภัยพลังงาน)

เห็นว่าทรานซิสเตอร์สามารถเปิดได้ด้วยกระแส 1mA ถ้ามันเป็นความจริงถ้าเราสามารถออกแบบวงจรที่ควบคุมทรานซิสเตอร์ที่มีตัวสะสมแรงดัน / กระแสสูงกว่ามากให้ไหลของตัวส่ง จากนั้นเราสามารถใช้การรวมกันของ Arduino / 74H595 เพื่อควบคุมทรานซิสเตอร์ที่อยู่ในวงจรที่มีกระแสสูงกว่า

อัลเลนในดัลลัส

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.