lamp.housecope.com
Geri

Adreslenebilir LED şerit WS2812B Arduino'ya nasıl bağlanır

Yayınlanma: 02.08.2021
0
2578

LED'lere dayalı aydınlatma teknolojisinin gelişimi hızla devam ediyor. Daha dün, uzaktan kumanda ile parlaklığı ve rengi ayarlanabilen, kontrolör kontrollü RGB şeritler bir mucize gibi görünüyordu. Bugün daha da fazla özelliğe sahip lambalar piyasaya çıktı.

WS2812B'ye dayalı LED şerit

Adreslenebilir LED şerit ile standart olan arasındaki fark RGB şey her elemanın parlaklık ve renk oranı ayrı ayrı ayarlanır. Bu, diğer aydınlatma cihazlarının temel olarak erişemeyeceği aydınlatma efektleri elde etmenizi sağlar. Adreslenebilir LED şeridinin parlaması bilinen bir şekilde kontrol edilir - darbe genişlik modülasyonu kullanılarak. Sistemin bir özelliği, her bir LED'i kendi PWM denetleyicisi ile donatmaktır. WS2812B çipi, tek bir pakette birleştirilmiş üç renkli bir ışık yayan diyot ve bir kontrol devresidir.

Adreslenebilir LED şerit WS2812B Arduino'ya nasıl bağlanır
Sürücü ile LED'in görünümü.

Elemanlar paralel olarak bir güç bandında birleştirilir ve bir seri veri yolu üzerinden kontrol edilir - birinci elemanın çıkışı, ikinci elemanın kontrol girişine bağlanır, vb. Çoğu durumda, seri veri yolları, biri flaş (saat darbeleri) ve diğeri - veri ileten iki hat üzerine kuruludur.

Adres şeridinin görünümü.
Adres şeridinin görünümü.

WS2812B yongasının kontrol veriyolu bir hattan oluşur - veriler bunun üzerinden iletilir. Veriler, sabit frekanslı darbeler olarak kodlanmıştır, ancak farklı görev döngüleri vardır. Bir darbe - bir bit. Her bitin süresi 1,25 µs'dir, sıfır bit, 0,4 µs süreli yüksek seviyeden ve 0,85 µs'lik düşük seviyeden oluşur. Birim, 0,8 µs için yüksek bir seviye ve 0,45 µs için düşük bir seviye gibi görünüyor. Her LED'e 24 bitlik (3 bayt) bir patlama gönderilir, ardından 50 µs için düşük seviyeli bir duraklama yapılır. Bu, verilerin bir sonraki LED için ve zincirin tüm öğeleri için iletileceği anlamına gelir. Veri aktarımı 100 µs'lik bir duraklama ile sona erer. Bu, bant programlama döngüsünün tamamlandığını ve sonraki veri paketi setinin gönderilebileceğini gösterir.

Adres bandını yönetmek için veriler.
Adres bandını yönetmek için veriler.

Böyle bir protokol, veri iletimi için tek bir hat ile geçmeyi mümkün kılar, ancak zaman aralıklarının korunmasında doğruluk gerektirir. Tutarsızlığa 150 ns'den fazla izin verilmez. Ek olarak, böyle bir otobüsün gürültü bağışıklığı çok düşüktür. Yeterli genliğe sahip herhangi bir girişim, kontrolör tarafından veri olarak algılanabilir. Bu, kontrol devresinden gelen iletkenlerin uzunluğuna kısıtlamalar getirir. Öte yandan, bu mümkün kılar şerit sağlık kontrolü ek cihazlar olmadan.Lambaya güç uygularsanız ve parmağınızla kontrol veriyolunun temas pedine dokunursanız, bazı LED'ler rastgele yanabilir ve sönebilir.

WS2812B elemanlarının özellikleri

Bir adres bandına dayalı aydınlatma sistemleri oluşturmak için, ışık yayan elemanların önemli parametrelerini bilmeniz gerekir.

LED boyutları5x5mm
PWM modülasyon frekansı400 Hz
Maksimum parlaklıkta akım tüketimihücre başına 60 mA
Besleme gerilimi5 volt

Arduino ve WS2812B

Dünyada popüler olan Arduino platformu, adres bantlarını yönetmek için eskizler (programlar) oluşturmanıza olanak tanır. Sistemin yetenekleri yeterince geniştir, ancak bir düzeyde artık yeterli değilse, edinilen beceriler acısız bir şekilde C ++ veya hatta montajcıya geçmek için yeterli olacaktır. Her ne kadar ilk bilgiyi Arduino'ya almak daha kolay olsa da.

WS2812B Şeridini Arduino Uno'ya (Nano) Bağlama

İlk aşamada basit Arduino Uno veya Arduino Nano panoları yeterlidir. Gelecekte, daha karmaşık sistemler oluşturmak için daha karmaşık panolar kullanılabilir. Adreslenebilir LED şeridi Arduino kartına fiziksel olarak bağlarken, birkaç koşula uyulmalıdır:

  • düşük gürültü bağışıklığı nedeniyle, veri hattının bağlantı iletkenleri mümkün olduğunca kısa olmalıdır (onları 10 cm içinde yapmaya çalışmalısınız);
  • veri iletkenini Arduino kartının serbest dijital çıkışına bağlamanız gerekir - daha sonra programlı olarak belirtilecektir;
  • yüksek güç tüketimi nedeniyle, bandı panodan çalıştırmak gerekli değildir - bu amaç için ayrı güç kaynakları sağlanır.

Lambanın ve Arduino'nun ortak güç kablosu bağlanmalıdır.

Bağlantı şeması WS2812B.
WS2812B bant bağlantı şeması.

Ayrıca okuyun

Arduino kartına LED nasıl bağlanır

 

WS2812B Program Kontrolü Temelleri

WS2812B mikro devrelerini kontrol etmek için, yüksek doğruluğu koruyarak belirli bir uzunlukta darbeler üretmenin gerekli olduğu daha önce belirtilmişti. Arduino dilinde kısa darbelerin oluşumu için komutlar vardır. gecikmeMikrosaniye ve mikrolar. Sorun, bu komutların çözünürlüğünün 4 mikrosaniye olmasıdır. Yani, belirli bir doğrulukla zaman gecikmeleri oluşturmak işe yaramayacaktır. C++ veya Assembler araçlarına geçiş yapılması gerekmektedir. Ve bunun için özel olarak oluşturulmuş kütüphaneleri kullanarak adreslenebilir LED şeridin kontrolünü Arduino üzerinden organize edebilirsiniz. Işık yayan öğelerin yanıp sönmesini sağlayan Blink programı ile tanışmaya başlayabilirsiniz.

hızlı led

Bu kütüphane evrenseldir. Adres bandına ek olarak, SPI arabirimi tarafından kontrol edilen bantlar da dahil olmak üzere çeşitli cihazları destekler. Geniş imkanlara sahiptir.

İlk olarak, kütüphane dahil edilmelidir. Bu, kurulum bloğundan önce yapılır ve satır şöyle görünür:

#include <FastLED.h>

Sonraki adım, her ışık yayan diyotun renklerini depolamak için bir dizi oluşturmaktır. Öğe sayısına göre isim şeridi ve 15 boyutuna sahip olacaktır (bu parametreye bir sabit atamak daha iyidir).

CRGB şeridi[15]

Kurulum bloğunda, çizimin hangi bantla çalışacağını belirtmeniz gerekir:

geçersiz kurulum() {

FastLED.addLeds< WS2812B, 7, RGB>(şerit, 15);

intg;

}

RGB parametresi renk sırası sırasını ayarlar, 15 LED sayısı anlamına gelir, 7 kontrol için atanan çıkış sayısıdır (son parametreye bir sabit atamak da daha iyidir).

Döngü bloğu, Kırmızı (kırmızı parıltı) dizisinin her bölümüne sırayla yazan bir döngü ile başlar:

(g=0; g< 15; g++) için

{şerit[g]=CRGB::Kırmızı;}

Ardından, oluşan dizi lambaya gönderilir:

FastLED.show();

1000 milisaniye (saniye) gecikme:

gecikme(1000);

Daha sonra içine siyah yazarak tüm elemanları aynı şekilde kapatabilirsiniz.

için (int g=0; g< 15; g++)

{şerit[g]=CRGB::Siyah;}

FastLED.show();

gecikme(1000);

FastLed'e dayalı bir yanıp sönen bant için bir çizim.
FastLed'e dayalı bir yanıp sönen bant için bir çizim.

Çizimi derleyip yükledikten sonra, bant 2 saniyelik bir süre ile yanıp sönecektir. Her bir renk bileşenini ayrı ayrı yönetmeniz gerekiyorsa, çizgi yerine {şerit[g]=CRGB::Kırmızı;} birkaç satır kullanılır:

{

şerit[g].r=100;// kırmızı elemanın parlama seviyesini ayarla

şerit[g].g=11;// yeşil için aynı

şerit[g].b=250;// mavi için aynı

}

NeoPiksel

Bu kitaplık yalnızca NeoPixel Ring LED halkalarıyla çalışır, ancak daha az kaynak gerektirir ve yalnızca temel öğeleri içerir. Arduino dilinde program şöyle görünür:

#include <Adafruit_NeoPixel.h>

Önceki durumda olduğu gibi, kitaplık bağlanır ve lenta nesnesi bildirilir:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// 15, eleman sayısı ve 6 atanan çıktıdır

Kurulum bloğunda bant başlatılır:

geçersiz kurulum() {

lenta.begin()

}

Döngü bloğunda tüm öğeler kırmızıyla vurgulanır, değişken beslemeye iletilir ve 1 saniyelik bir gecikme oluşturulur:

for (int y=0; y<15; y++)// 15 - lambadaki eleman sayısı

{lenta.setPixelColor(y, lenta.Color(255,0,0))};

bant.göster();

gecikme(1000);

Işıma siyah bir kayıtla durur:

için (int y=0; y< 15; y++)

{ lenta.setPixelColor(y, lenta.Color(0,0,0))};

bant.göster();

gecikme(1000);

NeoPixel'e dayalı Blink programı için çizim yapın.
NeoPixel'e dayalı Blink programı için çizim yapın.

Eğitim videosu: Adres bantlarını kullanan görsel efekt örnekleri.

LED'leri nasıl yakacağınızı öğrendikten sonra, popüler Rainbow ve Aurora Borealis gibi yumuşak geçişli renk efektlerini nasıl oluşturacağınızı öğrenmeye devam edebilirsiniz. Adreslenebilir LED'ler WS2812B ve Arduino bunun için neredeyse sınırsız olanaklar sunar.

Yorumlar:
Henüz yorum yok. Birinci ol!

okumanızı tavsiye ederiz

LED lambayı kendiniz nasıl onarırsınız