ควบคุม 500 LED ด้วย PWM


26

ฉันกำลังพิจารณาที่จะทำโครงการที่เกี่ยวข้องกับการระบุที่อยู่ 500 LED แต่ละอันอย่างเหมาะสมที่สุดด้วยการรองรับ PWM สำหรับแต่ละคน

ฉันวางแผนที่จะใช้ Arduino เนื่องจากฉันมีอยู่แล้ว แต่ฉันเปิดให้คำแนะนำหากใครคิดว่าแพลตฟอร์มที่แตกต่างกันจะเป็นการแข่งขันที่ดีกว่า

จะต้องมีการลงทะเบียน Shift การลงทะเบียนกะที่ดีที่จะใช้ในสถานการณ์นี้คืออะไร? ถ้า PWM ทำให้โครงการนี้มีราคาแพงกว่ามากฉันไม่เป็นไรถ้าไม่มีมัน ฉันต้องการใช้จ่ายน้อยกว่า $ 100 ฉันต้องการซื้อ LED จำนวน 500 ดวงบนอีเบย์

คุณมีความคิดเห็นอย่างไรกับวิธีที่ดีที่สุดในการควบคุมไฟ LED จำนวนมาก? นอกจากนี้ฉันจะไปเกี่ยวกับการให้พลังงานได้อย่างไร ฉันขอขอบคุณความช่วยเหลือใด ๆ ฉันมีประสบการณ์เกี่ยวกับอุปกรณ์อิเล็กทรอนิคส์ฉันไม่เคยทำสิ่งใดในขนาดใหญ่เช่นนี้

คำตอบ:


14

ฉันเป็นผู้เขียนของห้องสมุด ShiftPWM และฉันเพิ่งปรับปรุงเอกสารเพื่อรวมแผนงานและข้อมูลทั่วไปอื่น ๆ อีกมากมายสำหรับ LED ปกติแถบ LED และ LED พลังงานสูง

คุณอาจเริ่มต้นโครงการของคุณแล้ว แต่เนื่องจากหน้านี้มีผู้เข้าชมจำนวนมากฉันยังคงต้องการให้คำตอบโดยละเอียด

หากคุณต้องการควบคุม 500 LED ด้วย ShiftPWM คุณสามารถรับระดับความสว่างได้ 64 ระดับต่อ LED ที่ 60 Hz คุณจะใช้การลงทะเบียน 64 กะ ไดรเวอร์ฮาร์ดแวร์ PWM โดยเฉพาะจะให้ระดับความสว่างมากขึ้น แต่จะมีราคาแพงกว่าเล็กน้อย ฉันคิดว่าประโยชน์หลักของห้องสมุดของฉันคือใช้งานง่ายเพราะมันมีฟังก์ชั่น RGB และ HSV และตัวอย่างมากมาย

โดยส่วนตัวแล้วฉันจะใช้ TLC5916 ของ TLC5917 แทนการลงทะเบียนกะปกติเพราะพวกมันมีไดรเวอร์ LED คงที่ในปัจจุบัน สิ่งนี้จะช่วยให้คุณประหยัดการบัดกรีได้มากเพราะคุณไม่ต้องการตัวต้านทาน

บนเว็บไซต์ของฉัน ( http://www.elcojacobs.com/shiftpwm ) ฉันมีข้อมูลเพิ่มเติมเกี่ยวกับวิธีเชื่อมต่อ LED และวิธีจัดการกับการขับสายสัญญาณยาวกับ Arduino ด้วยความเร็วสูง

หากคุณมีคำถามเพิ่มเติมโปรดถาม


คุณดูคำตอบของฉันด้านล่างหรือไม่ แม้ว่าเทคนิคที่ฉันใช้จะอธิบายถึงการใช้ฮาร์ดแวร์เพิ่มเติม แต่วิธีการเดียวกันอาจใช้เพื่อปรับปรุงความเร็วของห้องสมุดของคุณได้อย่างมากมาย ฉันไม่ได้ตั้งโปรแกรม Arduino ดังนั้นฉันจึงไม่คุ้นเคยกับการกำหนดเวลาการสอน แต่ในรูปแบบที่ง่ายที่สุดคุณสามารถลดการโหลดซีพียูของคุณลงในทุกอย่างที่จำเป็นในการระเบิดบิต SPI (ถ้าคุณอยู่ที่ 5 รอบ) ต่อบิตและ SPI ของคุณใช้เวลา 16 รอบต่อไบต์นั่นคือการเพิ่มความเร็ว 2.5x) คุณอาจจะสามารถทำสิ่งที่ซับซ้อนมากขึ้นในขณะที่ยังทำงานด้วยความเร็วนั้น
supercat

ตัวอย่างเช่นสมมติว่าคุณต้องการให้มีแปดระดับความสว่างที่แสดงถึงแบบเต็ม, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64 และ 1/128 หาก Arduino สามารถทำงานแบบ "AND" หรือ "OR" บนค่าที่ดึงมาจากตัวชี้และเพิ่มตัวชี้นั้นในเวลาน้อยกว่าสี่รอบคุณอาจใช้สามบิตต่อพิกเซลเพื่อเก็บข้อมูลความสว่างของคุณและยังคงความเร็วการถ่ายโอน 16 รอบต่อ 8 LED
supercat

การคำนวณค่า PWM ทับซ้อนเอาต์พุต SPI ในไลบรารีของฉัน ฉันรัน SPI ที่ 4MHz และการคำนวณนั้นใช้เวลานานกว่าการส่งออก SPI เพียงเล็กน้อย ใช้เวลา 43 รอบนาฬิกาต่อไบต์ดังนั้นต่อ 8 เอาต์พุต นี่เร็วพอสำหรับการตั้งค่าส่วนใหญ่ คุณสามารถรับความเร็วได้มากขึ้นโดยใช้การมอดูเลตโค้ดบิตที่คุณมีช่วงเวลาอัพเดต 8 ช่วงแต่ละช่วงเวลาถัดไปจะครึ่งหนึ่งของช่วงเวลาก่อนหน้า ฉันเขียนเวอร์ชัน BCM แล้ว แต่จะมีความไวต่อช่วงเวลาเมื่อคุณอัปเดตการตั้งค่าความสว่าง มันอาจทำให้เกิดการริบหรี่เมื่อมันไม่ตรงแนว ฉันอาจจะใช้มันในเวอร์ชันเมทริกซ์
ElcoJacobs

BCM มีข้อดีของวิธีการของคุณที่คุณสามารถใช้เวลา 1 / 2,1 / 4 ... แต่ยังคงใช้เพียงหนึ่งพินต่อ LED หากคุณมีพื้นฐานด้านวิทยาการคอมพิวเตอร์คุณอาจพบว่าน่าสนใจว่าจะคำนวณไบต์ SPI ได้อย่างไร ฉันได้รับรอบการทำงานจากหน่วยความจำ (2 นาฬิกา) และทำการเปรียบเทียบ (1 นาฬิกา) ผลการเปรียบเทียบถูกเก็บไว้ในกระเป๋าพกพาดังนั้นฉันสามารถเลื่อนมันลงในไบต์ด้วยการหมุนที่วางไว้ (1 นาฬิกา) การทำเช่นนี้ 8 ครั้งทำให้ผลลัพธ์การเปรียบเทียบทั้งหมดเป็นหนึ่งไบต์ซึ่งพร้อมที่จะส่งไปยัง SPI
ElcoJacobs

13

เพียงคัดลอก :-)

http://www.evilmadscientist.com/article.php/peggy2

วันนี้เรากำลังเปิดตัวการอัปเดตของโครงการ Pegboard LED แบบเพ็กกี้โอเพนซอร์ส Peggy version 2 ได้รับการออกแบบใหม่ตั้งแต่ต้นจนจบ และมันก็ดูเหมือน ... เกือบจะเหมือนกันทุกประการ แม้ว่าการเปลี่ยนแปลงภายใต้ประทุนนั้นมีความสำคัญมากและเราคิดว่ามันเป็นการปรับปรุงครั้งใหญ่ในหลาย ๆ ด้าน

สิ่งแรกและสำคัญที่สุดคือ Peggy 2.0 ยังคงทำสิ่งเดียวกันนั่นคือให้พลังงานที่มีประสิทธิภาพไปยังตำแหน่ง LED ขนาด 25 x 25 เพ็กกี้ได้รับการออกแบบมาเพื่อรับความซับซ้อนความยุ่งเหยิงและความยุ่งเหยิงจากไฟ LED มันเป็น pegboard ที่ใช้งานได้หลากหลายและทรงพลังที่ช่วยให้คุณขับ LED หลายร้อยดวงได้อย่างมีประสิทธิภาพในทุก ๆ การตั้งค่าที่คุณต้องการโดยไม่ต้องคำนวณโหลดตัวต้านทานเพียงตัวเดียว คุณสามารถติดตั้งได้ทุกที่ตั้งแต่ LED หนึ่งดวงถึง 625 ดวงและ Peggy จะส่องแสงให้คุณ


Peggy 2.0 ตอนนี้ยังรองรับ Arduino: รองรับการเขียนโปรแกรมผ่านสาย USB-TTL โดยใช้สภาพแวดล้อมซอฟต์แวร์ Arduino ที่เป็นที่นิยม


ลิงค์ที่ยอดเยี่ยม! บุ๊คมาร์ค ฉันไม่ได้วางแผนที่จะทำงานในโครงการเช่นนี้ แต่ฉันต้องทำตอนนี้ฉันเห็นวิดีโอเล็ก ๆ นั่น :-)
Wouter Simons

@NicolaeSurdu ไม่แตก ฉันเปิดมันตอนนี้
Axeman

3
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง

6

คุณต้องการไฟ LED รูปแบบใด คุณสามารถประหยัดงานได้มากถ้าคุณซื้อเมทริกซ์ LED บางตัวคุณสามารถรับเมทริกซ์ 8x8 สีเดียว (64 LEDs) สำหรับเจ้าชู้หรือสองตัว

คุณจะไม่ได้รับ PWM จริงด้วย AVR และลงทะเบียนกับ LED หลายดวง แต่คุณสามารถบีบความสว่างได้ 2-4 ระดับ คุณจะต้องเรียกใช้ตัวเลขและดูสิ่งที่เป็นไปได้

Allegro ทำให้การลงทะเบียน sink shift ปัจจุบันคงที่มีประโยชน์บางอย่างออกแบบมาโดยเฉพาะสำหรับการควบคุมอาร์เรย์ของ LED เพื่อให้คุณไม่จำเป็นต้องมีตัวต้านทานพิเศษที่จะทำให้สิ่งต่าง ๆ ง่ายขึ้นเช่นกัน คุณอาจไม่สามารถขับ LED ได้โดยตรงจากเอาท์พุท AVR ถ้ามันไม่สามารถให้พลังงานได้เพียงพอดังนั้นคุณต้องใช้ทรานซิสเตอร์ คุณสามารถรับพวกมันในอาร์เรย์ใน IC เดียวที่ช่วยงานบางอย่างเช่นกัน


ทุกจุดที่ดีมาก!
เจสัน S

5

ฉันไม่ทราบช่วงของ PWM ที่คุณต้องการสำหรับ LED แต่ฉันทำงานกับคอนโทรลเลอร์ PWM 64 ช่องสำหรับแอปพลิเคชันควบคุมเซอร์โวที่สามารถให้พัลส์ระหว่าง 600us ถึง 2.4ms สิ่งนี้ใช้ CD74HCT238E (3-8 line demultiplexors) เพื่อสร้าง 64 ช่องสัญญาณจาก 8 I / O พินบน ATMega168 และสามารถควบคุมได้ผ่านคำสั่งอนุกรมที่เรียบง่าย ฉันเดาว่าคุณสามารถเชื่อมโยงหลาย ๆ เวอร์ชั่นของเวอร์ชั่นที่ถูกปรับเปลี่ยนคอนโทรลเลอร์นี้เข้าด้วยกันในสายอนุกรมและที่อยู่ทั้งหมด 500 LED ... คุณอาจใช้คอนโทรลเลอร์ ATTiny2313 เวอร์ชั่นได้

บล็อกของฉันมีแหล่งประกอบและแผนงานและรายละเอียดของกระบวนการออกแบบ


5

ลองดู "วงจรไฟ LED ไดรเวอร์" บน mouser / digikey ตัวอย่างเช่น TI สร้างกลุ่มไดรเวอร์ที่มีอินเทอร์เฟซหลากหลาย (I2C, SPI) ที่จะตอบสนองความต้องการของคุณอย่างแน่นอน ไดรเวอร์เหล่านี้ส่วนใหญ่ได้รับการออกแบบให้เชื่อมต่อกับเดซี่เพื่อให้อนุกรมจากตัวหนึ่งถูกป้อนเข้าสู่ซีเรียลของอีกตัวหนึ่ง

ตัวอย่างเช่น TLC5940 มีการควบคุม PWM 16 ช่อง ดังนั้นโดยพื้นฐานแล้วมันคือการลงทะเบียน shift 16 บิตปัจจุบันที่คงที่พร้อมการควบคุม PWM ระดับสีเทา 12 บิต ฉันสามารถแนะนำ IC เฉพาะนั้นได้เนื่องจากฉันช่วยออกแบบหน้าจอ 80x16 ด้วย


4

Mondomatrix ทำให้บอร์ดควบคุม LED แบบแอดเดรส (RS-485) สามารถระบุตำแหน่งได้และขึ้นอยู่กับแพลตฟอร์ม Arduino: http://www.displayduino.com/คุณอาจรวบรวมระบบโดยใช้ฮาร์ดแวร์นั้นได้อย่างง่ายดาย


4

หากคุณไม่ต้องการบิตการควบคุม PWM มากเกินไปสำหรับ LED แต่ละตัวและคุณต้องการหลีกเลี่ยงที่จะต้องมีหน่วยประมวลผลคลำกับ 500 LED ของทุก ๆ รอบ PWM คุณสามารถควบคุม 8 LEDs ด้วย N บิตความสว่างโดยใช้ N 74HC595 หรือชิปที่เทียบเท่า . เดินสายเอาท์พุทของชิป N ทั้งหมดเข้าด้วยกันและต่อสายให้กับวงจรบางอันซึ่งจะเปิดใช้งานทีละครั้งด้วยเวลาที่เหมาะสมเท่านั้น จัดเรียงเพื่อให้ชิปแรกจะเปิดใช้งานครึ่งเวลาที่สองจะเปิดใช้งานสำหรับครึ่งที่เหลือ ฯลฯ

การรีโหลดรีจิสเตอร์การเปลี่ยนแปลงใด ๆ ควรทำข้อมูลให้ตรงกันกับอัตรา PWM เพื่อลดเอฟเฟ็กต์ aliasing (เช่นหากระดับความสว่างเปลี่ยนอย่างรวดเร็วระหว่าง 0111 ถึง 1,000 จุดในวัฏจักร PWM เมื่อสวิตช์เกิดขึ้น )

ในขณะที่ต้องใช้เอาต์พุต 74HC595 หลายรายการสำหรับ LED แต่ละตัวอาจน่ารำคาญวิธีนี้อาจเป็นวิธีที่ง่ายที่สุดที่สามารถรักษาระดับความสว่างที่แตกต่างกันโดยไม่ต้องมีการแทรกแซงของ CPU อย่างต่อเนื่อง


3

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

ฉันประสบปัญหานี้เมื่อฉันได้รับ LED สีแดง 200 มม. 1 ชุดสำหรับจอแสดงผลขนาดใหญ่ 7 เซ็กเมนต์ที่ฉันกำลังสร้าง โซลูชันราคาถูกของฉันในการแก้ปัญหาดังต่อไปนี้:

  1. ฉันสร้างเครื่องทดสอบ LED ในเขียงหั่นขนมเพื่อจัดหมวดหมู่ชุดไฟ LED ในหมวดหมู่ความสว่างต่างๆ
  2. ฉันติดตั้งแต่ละเซ็กเมนต์โดยใช้ไฟ LED ในหมวดหมู่เดียวกัน (ในการออกแบบของฉันแต่ละเซกเมนต์ประกอบด้วยไฟ LED 5 ดวงที่ติดตั้งเป็นชุด)
  3. ฉันชดเชยความแตกต่างในความสว่างแต่ละเซ็กเมนต์โดยใช้ตัวต้านทาน จำกัด ปัจจุบันที่แตกต่างกัน ตัวอย่างเช่นสำหรับเซ็กเมนต์ที่มีไฟ LED สว่างกว่าฉันจะใช้ตัวต้านทาน 100 โอห์มในขณะที่สำหรับเซกเมนต์อื่นที่มีไฟหรี่ LED ฉันจะใช้ตัวต้านทาน 120 โอห์ม

1
จุดที่ถูกต้อง แต่ไม่ตอบคำถาม
Matt Young

1
@MattYoung ตกลง คำถามส่วนใหญ่จะตอบโดยคำตอบอื่น ๆ ทั้งหมด ฉันแค่ต้องการเติมเต็มคำตอบเหล่านั้นโดยจัดการกับปัญหาด้านที่อาจส่งผลต่อการออกแบบของ OP
Ricardo

2

ฉันขอแนะนำให้ใช้เทคนิคการปรับมุมไบที่อธิบายไว้ในบทความนี้http://www.artisticlicence.com/WebSiteMaster/App%20Notes/appnote011.pdf

หรือตรวจสอบห้องสมุด ShiftPWM http://www.elcojacobs.com/shiftpwm/


1
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง

1

XMOS ใช้ Macroblock MBI5026 กับชุดไพ่ LED ฉันคิดว่ามันถูกใช้ในระบบมืออาชีพอื่น ๆ ส่วนใหญ่

ลีออง


1

ชิปไดรเวอร์เฉพาะที่มีอินเตอร์เฟสแบบอนุกรมอาจเป็นเส้นทางที่ดีที่สุด การจัดการกับการลงทะเบียนกะแบบบุคคลอาจหมายถึงวงจรที่ซับซ้อนมาก อย่างน้อย Maxim และ TI ทำบางอย่าง ฉันจำไม่ได้ว่ามีทั้งนางแบบที่เหมาะกับเรื่องนั้นมาก

มันจะยังคงใช้ฮาร์ดแวร์จำนวนมาก

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


1

ภายในขอบเขตของซอฟต์แวร์หากจำนวนการตั้งค่าความสว่างที่แตกต่างกันที่ความต้องการไม่มากเกินไปอาจเป็นประโยชน์ในการจัดเก็บข้อมูลในรูปแบบ "bit-planar" (ตามที่อธิบายไว้ในคำตอบจากฮาร์ดแวร์อื่น ๆ ของฉัน) จากนั้น รูทีนเอาต์พุตใช้ตัวดำเนินการบูลีนเพื่อดำเนินการกับ 8 พิกเซลพร้อมกัน เพื่อประสิทธิภาพสูงสุดสิ่งนี้จะต้องมีการส่งเอาต์พุตแยกกันหลายครั้งซึ่งใช้สำหรับส่วนต่าง ๆ ของวงจร PWM ตัวอย่างเช่นหากต้องการใช้ค่าความสว่าง 4 บิตหนึ่งจะใช้แปดกิจวัตรของรูปแบบ:

  movf บิต 0Comp, w; ควรเป็น 00 หรือ FF ขึ้นอยู่กับบิต 0 ของ comparand (FF ถ้าชัดเจน)
  iorwf POSTINCF, w; บิต 0 ของข้อมูล ใช้ IORWF เสมอ
  andwf POSTINCF, w; บิตที่ 1 ของข้อมูล ใช้ IORWF หากตั้งค่าการเปรียบเทียบบิต 1 ANDWF ถ้าชัดเจน
  andwf POSTINCF, w; ข้อมูล 2 บิต; ใช้ IORWF หากตั้งค่าการเปรียบเทียบบิต 1 ANDWF ถ้าชัดเจน
  andwf POSTINCF, w; ข้อมูล 2 บิต; ใช้ IORWF หากตั้งค่าการเปรียบเทียบบิต 1 ANDWF ถ้าชัดเจน
  movwf SPIREG; จัดเก็บไบต์ผลลัพธ์ (บิตตั้งถ้า> = comparand)

หนึ่งจะใช้ชุดค่าผสมที่แตกต่างกันของ IORWF และ ANDWF ขึ้นอยู่กับค่าของการเปรียบเทียบ โปรดทราบว่าการใช้วิธีการนี้ตามที่แสดงเป็นภาพหนึ่งอาจอัปเดตค่าความสว่างของพิกเซล ณ จุดใดก็ได้ในวัฏจักร PWM โดยไม่กะพริบหากมีการเขียนสี่บิตทั้งหมดระหว่างการเรียกไปยังรูทีน display-shift หรือโดยการรูทีน การเลื่อนครั้งต่อไปจะให้เอาท์พุต "1" หรือ "0" สำหรับพิกเซลและการตั้งค่าหรือการล้างบิตทั้งหมดของพิกเซล (การดำเนินการใดก็ตามที่จะทำให้มันทำในสิ่งที่มันจะทำต่อไป) จากนั้นเขียนบิตใด ๆ ตรงข้าม โปรดทราบว่าอาจมีการปรับความสว่างที่ไม่ใช่เชิงเส้นตามอำเภอใจโดยปรับเปลี่ยนช่วงเวลาของการปรับปรุงการแสดงผลหรือโดยใช้ค่าเปรียบเทียบและค่ามากกว่าหนึ่งครั้งในวงจร PWM


1

FPGAs หรือ CPLD สามารถทำได้ดีสำหรับงานดังกล่าวเนื่องจากมี I / O พินมากมาย ไปเพื่อสิ่งที่ง่ายและถูกที่สุด หากมีไม่เพียงพอใช้คู่


คุณช่วยให้รายละเอียดเพิ่มเติมเกี่ยวกับสาเหตุที่เป็นตัวเลือกที่ดีได้ไหมตอนนี้ฉันรู้แล้ว แต่ฉันรู้ว่าตัวเลือกคืออะไรและเทคโนโลยีที่คุณแนะนำคืออะไร Origial Poster (OP) อาจไม่มีเช่นนั้น พื้นหลัง
Kortuk

ฉันไม่แน่ใจว่าเป็นตัวเลือกที่ดีที่สุด แต่ต้องการให้มีการกล่าวถึงอย่างครบถ้วน หากควบคุม 500 LED ด้วย PWM ไม่ทางใดก็ทางหนึ่งใน 500 สายจำเป็นต้องควบคุมได้ เป็นการยากที่จะหาไมโครคอนโทรลเลอร์ที่มีพินเอาต์พุตจำนวนมาก ยังมีอีกหลายวิธีที่ยังคงใช้ไมโครคอนโทรลเลอร์อยู่ แต่ CPLD / FPGAs ราคาถูกหนึ่งหรือสองอันสามารถให้ขาออกเหล่านั้นได้ง่าย
คาร์ล

1

เกือบจะแน่นอนคุณสามารถทำได้อย่างง่ายดายโดยใช้PSoC3หรือPSoC5

ชิป PSoC เป็นไมโครคอนโทรลเลอร์ที่มีฮาร์ดแวร์ดิจิทัลที่สามารถกำหนดค่าได้ใหม่เช่น FPGA หรือ CPLD หมายความว่าคุณสามารถสร้างวงจรที่ซับซ้อนสำหรับการทำสิ่งผิดปกติเช่นการขับ LED 500 ดวงด้วย PWM ยิ่งไปกว่านั้นคุณสามารถนำทุกสิ่งมาใช้ได้โดยใช้บล็อกดิจิทัลที่สามารถกำหนดค่าใหม่ได้ซึ่งหมายความว่าส่วน CPU ของชิปจะต้องเขียนความสว่าง LED ที่ต้องการลงในอาร์เรย์เท่านั้น

ไฟ LED 504 ดวงพอดีในสี่เหลี่ยมผืนผ้า 21 x 24 ถ้าคุณมี 24 ช่อง PWM และ 21 GPIO คุณก็สามารถใช้งานได้ คาดเดาอะไร PSoC มีมากกว่านั้น

คุณสามารถตั้งค่า 24 PWM channel ได้อย่างง่ายดายบน PSoC และกำหนดค่าหมุดอื่น ๆ 21 อันเพื่อเป็นส่วนหนึ่งของ shift register ถัดไปกำหนดค่าแชนเนล DMA บางส่วนเพื่อปั๊มไบต์จากหน่วยความจำไปยังเอาต์พุต PWM และคุณหัวเราะ CPU ทั้งหมดที่จำเป็นต้องทำตอนนี้คือสร้างกราฟิก PSoC3 มีคอร์ 8051 8 บิตในขณะที่ PSoC5 มี ARM 32 บิต เลือกของคุณ เฉพาะไอซีภายนอกที่คุณต้องใช้คือ ULN2803 บางตัวเพื่อให้กระแสไดรฟ์สูงสำหรับแถว เอาต์พุต PWM ควรมีไดรฟ์ปัจจุบันเพียงพอสำหรับ LED เดียว


นี่คือการใช้จ่ายมากเกินไปโดยรวมสำหรับการขับขี่ LED มีเฉพาะไดรเวอร์ LED ราคาประหยัดที่ออกแบบไว้ล่วงหน้าสำหรับการผูกมัดจำนวนมากเช่นนี้ที่ใช้สำหรับการแสดงผลขนาดใหญ่ตลอดเวลา ไม่จำเป็นต้องคิดค้นสิ่งเหล่านั้นทั้งหมดใหม่อีกครั้งและเสียค่าใช้จ่ายมากขึ้น
nemik

@nemik - ที่จริงแล้วต้นทุนรวมของชิป (จาก Farnell แพง) เพียง 6.80 ปอนด์
Rocketmagnet

0

ใช้ประโยชน์จากการประหยัดจากขนาด เว็บไซต์จีนเช่น Aliexpress ขายเส้น LED ที่อิงกับ WS2811 ในราคา $ 15 ต่อ 50 LED พวกมันสามารถระบุตำแหน่งได้สว่างสดใสกันน้ำได้ปกติและมี PWM สำหรับความสว่าง ไม่มีการบัดกรีหรือเลื่อนการลงทะเบียนเพื่อยุ่งกับอย่างใดอย่างหนึ่ง การทำทั้งหมดนี้ด้วยตัวเองฉันเดิมพันจะทำให้คุณเสียค่าใช้จ่ายมากขึ้นใช้เวลามากขึ้นและทำให้หงุดหงิดมาก รวมทั้งคุณอยู่ใน Oz ดังนั้นการจัดส่งจากจีนจะไม่แพงเกินไป

สิ่งเหล่านี้ถูกสร้างขึ้นมาเพื่อการแสดงผล LED ขนาดใหญ่ดังนั้นพวกเขาจึงมีแนวโน้มที่จะถูก เพียงตรวจสอบให้แน่ใจว่าได้ฉีดพลังงานประมาณ 50 LED ทุกดวงเพื่อประสิทธิภาพที่ดีที่สุด

นอกจากนี้ยังมีห้องสมุด Arduino เพื่อให้ใช้งานง่าย


1
$ 15 ต่อ 50 LEDs? ดังนั้นสำหรับ LED 500 อันมาถึง $ 150 และคุณมีประสาทที่จะบอกวิธีการแก้ปัญหาของฉันมีราคาแพง? -1
Rocketmagnet

นอกจากนี้คุณสามารถให้ลิงค์ไปยังสิ่งนี้ WS801 ไม่ค่อยดีเท่า Google และไม่เปิดการค้นหาAliexpress
Rocketmagnet

ขออภัยฉันหมายถึง WS2811 เช่นaliexpress.com/store/product/?hl=thหรือหากไม่มีการลดแสง PWM aliexpress.com/store/product/?hl=th
nemik

สัญญาณอนุกรมหนึ่งชุดเพื่อขับ LED 50 ดวงพร้อมหรี่ PWM ขอบคุณนี่คือสิ่งที่ฉันต้องการ แต่การลงทะเบียนกะมาตรฐานให้พิน "สลัก" เพื่อคัดลอกข้อมูลบัฟเฟอร์ไปยังเอาต์พุตหลังจากส่งเฟรมแบบเต็ม ไม่มีสลักที่นี่ดังนั้นฉันคาดหวังว่าจะได้ยินเสียงรบกวนในอัตราการรีเฟรชที่สูง ชิปรองรับข้อมูล 400 Kbps ที่มี 15 บิตต่อพิกเซลดังนั้นหน้าจอจะแสดงไร้สาระเป็น 1.9 มิลลิวินาทีในขณะที่เฟรมอัปเดต
nialsh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.