İlk önce, bir Arduino doğrudan 100 LED'i çalıştıramaz, çünkü cihazın kaynaklanması veya batması gereken kombine akım hem mikro denetleyiciyi hem de Arduino kartındaki voltaj regülatörünü aşacaktır. Yine de, kendi güç kaynağı ve düzenlemesi olan özel bir Arduino Shield , faturaya uyabilir.
Birkaç kolay yaklaşım vardır, en basit yaklaşım aşağıda detaylandırılmıştır:
Kademeli konfigürasyonda TLC5940 sabit akım LED sürücüsü:
TLC5940, bir SPI arabiriminin hafif bir varyantı aracılığıyla seri giriş tarafından kontrol edilen IC başına 16 LED kullanır. En fazla 40 TLC5940 cihazı basamaklandırılabilir, ancak bunlardan 7'si söz konusu 100 LED'i çalıştırmak için yeterli olacaktır.
TLC5940 için en az birkaç Arduino kütüphanesi ( 1 , 2 ) vardır .
Arduino'dan göndermek için önerilen saat hızları ve karşılık gelen yenileme hızı:
- Bu iş parçacığında kod kullanarak 1 MHz GSClk .
- 330 KHz SCLK (seri veri saati)
- Böylece, LED veri yenileme hızı 244 Hz
Bu, veri sayfasındaki formüllere dayanmaktadır:
f (GSCLK) = 4096 * f (güncelleme)
f (SCLK) = 193 * f (güncelleme) * n
burada:
f (GSCLK): GSCLK için gereken minimum frekans
f (SCLK): SCLK ve SIN
f için gereken minimum frekans ( güncelleme): tüm basamaklı sistemin güncelleme oranı
n: TLC5940 cihazlarının basamaklı sayısı
TLC5940 sabit bir akım lavabosudur , bu nedenle LED'lerin anotları, Arduino'nun güç pimlerinden bağımsız olarak çalıştırılan LED Vf'den birkaç volt daha büyük veya yaklaşık 7 voltluk bir voltaja bağlanacaktır. Bu voltaj kaynağının 100 * (LED'leri çalıştırdığınız akım ne olursa olsun) sağlayabilmesi gerekir, ancak düzensiz bir kaynak olabilir.
LED katotları ilgili TLC5940 IC'lerin tahrik hatlarına gider.
TLC5940'ın kendisi veri yazma sırasında cihaz başına Icc = 60 mA tüketir, bu yüzden 7'sini Arduino'dan çalıştırmak işe yaramaz, bağımsız olarak 3,3 ila 5 voltluk düzenlenmiş Vcc sağlanmasını gerektirir, ideal olarak aynı değer Arduino'nun Vcc'si kullanılıyor ve zemin izlerinin elbette Arduino'nun zeminine geri bağlanması gerekiyor. TLC parçalarının Arduino'dan farklı bir voltajda çalıştırılması, seri sinyalin seviye dönüşümü ihtiyacını getirecektir, bu nedenle en iyi şekilde kaçınılmalıdır.
Bazı YouTube videoları Arduino'nun basamaklı TLC5940 IC'lerle kullanıldığını gösteriyor.
Bu IC'ler 7 segmentli sayısal LED ekranları çalıştırmak için tasarlanmış olsa da, bireysel LED kontrolü sağlarlar, bu nedenle IC başına 64 LED'e kadar kullanılabilir. Bunlardan ikisi gerekli 100 LED'i çalıştırmak için basamaklandırılabilir. Veri sayfasının Sayfa 13'ünde basamaklı bir yapılandırma gösterilmektedir.
Bu tasarım için LED'lerin her biri bir katot hattını (ortak katot) paylaşan 8 LED'e kadar gruplar halinde elektriksel olarak bağlanmalıdır.
MAX7219 / 7221 çoklayıcı LED sürücüleridir, bu nedenle LED'lerin maksimum parlaklığı, önceki bölümdeki gibi statik bir LED sürücüsünden daha düşük olacaktır.
İşte MAX7219'u kullanan kullanışlı bir LED matris kütüphanesi ve kılavuzu.
Bazı alakalı YouTube videoları ( 1 , 2 ) ilgi çekici olabilir.
Yine, bu IC'ler 7 segmentli sayısal LED ekranları sürmek için tasarlanmıştır, bireysel LED kontrolü sağlarlar, bu nedenle IC başına 40/64 LED'e kadar kullanılabilir. Bunlardan ikisi / üçü, gerekli 100 LED'i çalıştırmak için bir Arduino SPI veriyoluna bağlanabilir.
Tasarım notları önceki bölümle aynı kalır. Ayrıca, bireysel LED maksimum parlaklığı MAX7219'un düz multipleks tasarımından daha düşük olacaktır.
İlginizi çekebilecek bazı YouTube videoları var.
Ayrık bileşen tasarımları, vardiya kayıtları, IO genişleticiler, ayrı kontrolörlere sahip kesilebilir LED şeritler ve daha fazlası ...
Bunların hepsi, değişen basitlik ve başarı düzeylerinde kullanılan yaklaşımlardır. Bunlar, yukarıdaki 3 yaklaşımdan daha karmaşık uygulamalardır, dolayısıyla daha ayrıntılı değildir. Web'de arama yapılması, gerekirse bu yaklaşımlar için yararlı kılavuzlar sağlayacaktır.
Bu tür tasarımlarda önemli bir tahriş edici, her LED veya LED dizgideki akım kontrol dirençlerine duyulan ihtiyaçtır. LED sürüşü için özel olarak tasarlanmış cihazlar genellikle buna ihtiyaç duymaz.
Bu son seçeneklerle kişisel deneyimim yok, bu yüzden fazla yardımcı olamaz.
Dipnot: Bu soruya cevap verdikten sonra , son bölümümdeki bazı yaklaşımları detaylandıran ve tartışan cevapları olan daha eski bir soru buldum . Bu konu ilginç "ödev olarak daha fazla okuma" yapar.