ก่อนอื่น Arduino ไม่สามารถขับ 100 LED ได้โดยตรงเนื่องจากกระแสรวมที่อุปกรณ์ต้องมาหรือจมจะเกินไมโครคอนโทรลเลอร์และตัวควบคุมแรงดันไฟฟ้าบนบอร์ด Arduino Arduino Shield ที่กำหนดเองพร้อมแหล่งพลังงานและกฎข้อบังคับของตัวเองอาจเหมาะสมกับค่าใช้จ่าย
มีวิธีง่าย ๆ หลายวิธีที่ง่ายที่สุดมีรายละเอียดด้านล่าง:
TLC5940ไดรเวอร์ LED คงที่ในการกำหนดค่าแบบเรียงซ้อน:
TLC5940 ขับ 16 LEDs ต่อ IC ควบคุมโดยอินพุตแบบอนุกรมผ่านอินเตอร์เฟส SPI เล็กน้อย สามารถเชื่อมต่ออุปกรณ์ TLC5940 ได้สูงสุด 40 เครื่อง แต่อุปกรณ์ 7 ตัวนั้นเพียงพอสำหรับการขับเคลื่อน LED 100 ดวงในคำถาม
มีอย่างน้อยสองไลบรารี Arduino ( 1 , 2 )สำหรับ TLC5940
อัตรานาฬิกาที่แนะนำให้ส่งจาก Arduino และอัตราการรีเฟรชที่สอดคล้องกัน:
- 1 MHz GSClk โดยใช้รหัสในหัวข้อนี้
- 330 KHz SCLK (นาฬิกาข้อมูลอนุกรม)
- ดังนั้นอัตราการรีเฟรชข้อมูล LED 244 Hz
สิ่งนี้ขึ้นอยู่กับสูตรจากแผ่นข้อมูล:
f (GSCLK) = 4096 * f (อัปเดต)
f (SCLK) = 193 * f (อัปเดต) * n
โดยที่:
f (GSCLK): ความถี่ขั้นต่ำที่จำเป็นสำหรับ GSCLK
f (SCLK): ความถี่ขั้นต่ำที่จำเป็นสำหรับ SCLK และ SIN
f ( อัปเดต): อัตราการอัปเดตของระบบเรียงซ้อนทั้งหมด
n: หมายเลขเรียงซ้อนของอุปกรณ์ TLC5940
TLC5940 เป็นsinkกระแสคงที่ดังนั้น anodes ของไฟ LED จะถูกผูกไว้กับแรงดันไฟฟ้าสองโวลต์ที่สูงกว่า LED Vf หรือประมาณ 7 โวลต์แล้วแต่จำนวนใดจะต่ำกว่าขับเคลื่อนด้วยหมุดพลังงานของ Arduino แหล่งจ่ายแรงดันนี้ต้องสามารถจ่ายได้ 100 * (ไม่ว่าคุณจะเรียกใช้ LED ที่กระแสใดก็ตาม) แต่สามารถเป็นแหล่งที่ไม่มีการควบคุม
แคโทด LED ไปที่เส้นทางขับของไอซี TLC5940 ที่เกี่ยวข้อง
TLC5940 กินไฟสูงสุดถึง Icc = 60 mA ต่ออุปกรณ์ในระหว่างการเขียนข้อมูลดังนั้นการเปิดใช้งาน 7 ตัวจาก Arduino ไม่ทำงานนั้นจะต้องใช้ Vcc แบบควบคุม 3.3 ถึง 5 โวลท์ซึ่งเป็นค่าเดียวกับ การใช้ Vcc ของ Arduino และร่องรอยภาคพื้นดินจำเป็นต้องเชื่อมต่อกลับไปที่พื้นดินของ Arduino แน่นอน การใช้งานชิ้นส่วน TLC ที่แรงดันไฟฟ้าที่แตกต่างจาก Arduino จะทำให้ความต้องการการแปลงระดับของสัญญาณอนุกรมจึงหลีกเลี่ยงได้ดีที่สุด
วิดีโอ YouTubeจำนวนมากแสดงให้เห็นถึงการใช้ Arduino ด้วยไอซี TLC5940 แบบเรียงซ้อน
แม้ว่า IC เหล่านี้ได้รับการออกแบบมาสำหรับการขับเคลื่อนจอแสดงผล LED ตัวเลข 7 เซ็กเมนต์ แต่ก็มีการควบคุม LED แต่ละตัวดังนั้นจึงสามารถใช้งานได้ถึง 64 LED ต่อ IC สามารถต่อกันสองหลอดเพื่อขับเคลื่อน LED ที่ต้องการ 100 ดวง หน้า 13 ของแผ่นข้อมูลแสดงการกำหนดค่าแบบเรียงซ้อน
ไฟ LED จะต้องมีการเชื่อมต่อทางไฟฟ้าเป็นกลุ่มสูงถึง 8 LEDs แต่ละการแบ่งปันหนึ่งบรรทัดแคโทด (แคโทดทั่วไป) สำหรับการออกแบบนี้
MAX7219 / 7221 เป็นไดรเวอร์ LED แบบมัลติเพล็กซิ่งดังนั้นความสว่างสูงสุดของ LED จะต่ำกว่าไดรเวอร์ LED แบบคงที่เช่นส่วนก่อนหน้า
นี่คือไลบรารีเมทริกซ์ LED ที่มีประโยชน์และคำแนะนำการใช้ MAX7219
วิดีโอ YouTube ที่เกี่ยวข้องบางรายการ ( 1 , 2 ) อาจเป็นที่สนใจ
อีกครั้งที่ไอซีเหล่านี้ถูกออกแบบมาเพื่อขับเคลื่อนจอแสดงผล LED ตัวเลข 7 เซกเมนต์พวกเขาให้การควบคุม LED แต่ละตัวดังนั้นจึงสามารถใช้งานได้ถึง 40/64 ไฟ LED ต่อ IC สองในสามของพวกเขาสามารถเชื่อมต่อกับ Arduino SPI บัสเพื่อขับเคลื่อน 100 LED ที่จำเป็น
บันทึกการออกแบบยังคงเหมือนเดิมในส่วนก่อนหน้า นอกจากนี้ความสว่างสูงสุดของ LED แต่ละตัวจะต่ำกว่าสำหรับการออกแบบมัลติเพล็กซ์แบบตรงของ MAX7219
มีวิดีโอ YouTubeบางรายการที่อาจเป็นที่สนใจ
การออกแบบส่วนประกอบแบบแยก, รีจิสเตอร์ shift, ตัวขยาย IO, แถบ LED แบบ cuttable พร้อมคอนโทรลเลอร์แต่ละตัวและอีกมากมาย ...
นี่คือวิธีการทั้งหมดที่ใช้กับระดับความเรียบง่ายและความสำเร็จที่แตกต่างกัน มันมีการใช้งานที่ซับซ้อนกว่า 3 แนวทางข้างต้นดังนั้นจึงไม่มีรายละเอียดเพิ่มเติม การค้นหาเว็บจะให้คำแนะนำที่เป็นประโยชน์สำหรับแนวทางเหล่านี้หากจำเป็น
สิ่งสำคัญอย่างหนึ่งที่ทำให้เกิดการระคายเคืองกับการออกแบบดังกล่าวคือความต้องการตัวต้านทานควบคุมในปัจจุบันบนสตริง LED หรือ LED ทุกตัว อุปกรณ์ที่ออกแบบมาโดยเฉพาะสำหรับการขับขี่ LED โดยทั่วไปไม่จำเป็นต้องใช้สิ่งนี้
ฉันไม่ได้มีประสบการณ์ส่วนตัวกับตัวเลือกชุดล่าสุดดังนั้นจึงไม่สามารถช่วยอะไรได้มาก
เชิงอรรถ:หลังจากตอบคำถามนี้ฉันพบคำถามที่เก่ากว่าซึ่งมีคำตอบโดยละเอียดและอภิปรายหลายแนวทางในหัวข้อสุดท้ายของฉัน หัวข้อนั้นทำให้ "การอ่านเพิ่มเติมเป็นการบ้าน" ที่น่าสนใจ