NeoPixel (WS2812) LED strip

Als je een RGB LED-strip zoekt, kom je waarschijnlijk de WS2812 of de WS2801 tegen. Deze twee LED-strips zijn weliswaar verschillend, maar beide kunnen gebruik maken van deze beschrijving. De WS2801 heeft wat voordelen. Hier kom ik later op terug. Dit project gaat met name over de WS2812B LED-strip en de aansturing ervoor.

De IP-beoordeling
Als de LED-strip in projecten wordt toegepast die binnenshuis opgesteld worden, dan voldoet de IP30 (zonder siliconen laag) uitvoering. Wordt de strip in een dampende omgeving opgesteld, dan zal je de IP65 uitvoering moeten nemen. Is de kans groot dat de strip nat wordt (druppels), dan moet je de waterbestendige versie IP67 (siliconen coating) nemen.

De voeding
Als jouw LED-strip zo’n 20-30 LED’s heeft, is er geen externe voeding vereist. Als de strip meer LED’s heeft, is het vermogen van de Raspberry Pi niet voldoende en heb je een externe voeding nodig.
Voor de wat ervaren hobbyist adviseer ik voor LED verlichting altijd een ‘stevige’ geschakelde voeding te nemen, in dit geval van 5V. Afhankelijk van het aantal LED’s zal de voeding een minimaal vermogen moeten leveren. Dit is bij een striplengte van 50 cm anders als voor 5 meter. Hieronder leg ik dit uit.

Bepalen van het benodigde vermogen van de voeding
Het benodigde vermogen van de voeding is afhankelijk van het aantal gebruikte LED’s. Volgens het gegevensblad van de LED strip heeft één LED onder volledige belasting (= maximale helderheid) ongeveer 60 mA (R=20mA, G=20mA, B=20mA) nodig. Bij 30 LED’s/meter is dit: 30 x 60mA (0,06 A) =1,8 A/meter.

Deze waarde is natuurlijk hetzelfde bij 50cm en 30 LED’s. Het gaat dus niet om de lengte van de strip, maar om het aantal LED’s dat je wilt besturen. Om de LED’s allemaal te kunnen aansturing zal je in de meeste scripts het aantal LED’s moeten aangeven.

De LED-strip is in verschillende versies te krijgen. Het verschil zit o.a. in de LED dichtheid. Te weten 30, 60, 70, 96, 100 of 144 LED’s per meter.

Prijzen per 29-9-2019

Theorie vs. praktijk
Bovenstaande is de theorie. In praktijk blijkt dat de maximale stroomwaarde echter een stuk lager ligt. Als voorbeeld hebben we een LED-strip met 10 LEDs – type B die bij maximale oplichting 526 mA consumeren. Dit is zo’n 52,6 mA per LED. LED – type A blijkt slechts 33,5 mA te verbruiken, bijna de helft van de theoretische waarde. Het heeft dus zin om te kijken naar LED’s die minder verbruiken.

Beide typen – Ongeveer 1 mA wanneer LED “Uit” is
Een ding dat bijna identiek is aan beide typen LED’s is de stroom die wordt gebruikt door de controllerchip wanneer de LED “uit” is, te weten 1 mA.

Verschil NeoPixel WS2812B / WS2811 vs. WS2801
De WS2801 is uitgerust met twee datalijnen. Met slechts één datalijn moet de frequentie hoger zijn om dezelfde hoeveelheid data te dragen.

WS2801
WS2812
WS2811

Het voordeel van de WS2801 t.o.v. de WS2812B en WS2811
• Twee datalijnen vereist minder berekeningen van de Raspberry.
• Hierdoor kan een hogere frequentie worden bereikt.
• De helderheid van de WS2801 is hoger.
• Het is ook mogelijk om de WS2801 te besturen EN muziek af te spelen, wat niet mogelijk is met de WS2812 (meer hierover hieronder).

Gelijktijdig geluid en de LED strip aansturen
Helaas is het niet mogelijk om gelijktijdig muziek te spelen via de ingebouwde Raspberry Pi-geluidskaart en de strip te bedienen. Dit komt omdat de Raspberry Pi geen realtime-systeem is zoals de Arduino of ESP8266. Voor de geluidsweergave wordt PWM (= GPIO18) gebruikt, wat ook nodig is om de WS2812 op de Raspberry Pi te besturen. Beide tegelijkertijd gebruiken is niet mogelijk, daarom kan iemand die op de geluidsweergave vertrouwt het beste de WS2801 nemen.

Verschillen tussen LED-chips (SMD’s)
LED-strips kunnen worden vervaardigd met behulp van verschillende soorten LED-chips. Hieronder leg ik de belangrijkste verschillen uit tussen de meest gebruikte chiptypen op de markt voor LED-tapes te vergelijken: de 3528 en de 5050.

LED-chips (ook wel opbouwdiodes of SMD’s genoemd) worden allemaal geïdentificeerd door een viercijferig nummer. Deze code is minder gecompliceerd dan hij lijkt – hij geeft simpelweg de grootte van de LED-chip aan. De afmetingen van SMD’s op 5050 LED-striplampen zijn bijvoorbeeld 5,0 mm x 5,0 mm.

LED’s zoals 3528s, 5050s, 2835s en 5630s zijn helemaal niet echt verschillende soorten chips – het zijn gewoon verschillende formaten. Elk heeft zijn eigen specificaties zoals de verschillende stroomvereisten en helderheid. Bij een project is het dus goed om hiernaar te kijken. Niet alleen de prijs, maar ook de inrichting van je project kan door het gebruik van verschillende diodes behoorlijk verschillen.

Met afmetingen van 3,5 mm x 2,8 mm is de 3528 SMD een kleinere chip dan de 5050 LED-strip SMD. Meestal vind je 3528 chips op 12 volt ledstrips die 4,8 watt trekken (ook wel 4,8W p/m of 5W p/m led-tape genoemd) met 60 SMD’s per meter.
Als striplampen produceren ze ongeveer 330-360 lumen per meter, afhankelijk van de kleur (equivalent aan een halogeenlamp van 40 W) – genoeg om een ​​egaal, helder effect te produceren wanneer ze op elk oppervlak schijnen.

Double-power 3528 SMD uitgelegd
3528 SMD’s met dubbel vermogen hebben dezelfde afmetingen als standaardvermogen-LED’s. Ze zijn verkrijgbaar in dezelfde kleuren, maar verbruiken twee keer zoveel stroom en hebben twee keer zoveel output.

LED-striplampen die zijn vervaardigd met behulp van dubbele SMD’s hebben 120 LED’s per meter en trekken 19,2 watt per meter (ook bekend als 19,2W p/m of 20W p/m).
Double-power 3528 LED-strips gebruiken een 2-ounce 10 mm brede PCB om de warmte effectief af te voeren, zodat er na installatie geen extra koellichaam nodig is. Deze LED-strips zijn alleen verkrijgbaar voor 24 volt systemen, omdat deze de stroom beter geleidt. De lichtopbrengst is ongeveer 1320-1440 lumen per meter (afhankelijk van de kleur). Vanwege de hoge helderheid wordt deze LED tape aangeraden als algemene verlichting, of ter vervanging van TL-buizen en halogenen.

Per 2m een voeding aanbieden
Omdat de LED’s via de strip serieel gevoed worden zal, indien de voeding alleen aan het begin aangesloten wordt, hier de grootste stroom door de stripbedrading stromen. Je snapt dat deze geprinte koperbanen een maximale stroom kunnen doorgeven voordat ze heet worden en verbranden. Daarom adviseert de leverancier per 2 meter de voedingsspanning aan te bieden.

Omdat de strip eenvoudig door te knippen is, kun je op het snijvlak de voeding eenvoudig de voeding monteren door deze op de contact te solderen. Je kunt meerdere voedingen nemen, maar ook een grote hoofdvoeding die je naar de snijpunten brengt. De datalijn wordt eenvoudig doorgelust.

De aansluiting van de LED-strip
De connectoren die aan beide zijden van een LED-strip verbonden is kent de volgende aansluitingen:
Wit = Ground
Groen = Data – GPIO 18 (pin 12)
Rood = 5V

In- of extern voeden
Hieronder zie je hoe de LED-strip met de Raspberry Pi verbonden wordt bij meer en minder dan 30 LED’s. Wil je helemaal geen risico lopen dat de Raspberry Pi beschadigd raakt, kun je een externe voeding voor de LED-strip gebruiken zoals hieronder aangegeven is.

LED-strip gevoed door Raspberry Pi (max 30 LEDs)
LED-strip gevoed door externe voeding (meer dan 30 LEDs per stripdeel)

Voorbereiding en installatie
Voordat we de Raspberry Pi-bibliotheek voor de WS2812-LED’s installeren, moeten enkele voorbereidingen worden getroffen:

  1. De Raspberry Pi bijwerken:
    sudo apt-get update
  2. We installeren de vereiste pakketten:
    sudo apt-get install gcc make build-essential python-dev git scons swig
  3. De audio-uitgang moet worden gedeactiveerd. Hiervoor bewerken we het bestand:
    sudo nano /etc/modprobe.d/snd-blacklist.conf
    Hier voegen we de volgende regel toe:
    blacklist snd_bcm2835
    Vervolgens wordt het bestand opgeslagen door op CTRL + O te drukken en CTRL + X sluit de editor.
  4. We moeten ook het configuratiebestand bewerken:
    sudo nano /boot/config.txt
    Hierin staat de volgende inhoud (met Ctrl + W kun je zoeken):
    #Enable audio (loads snd_bcm2835)
    dtparam=audio=on

    Markeer de onderste regel met een hashtag # aan het begin van de regel: #dtparam=audio=on
  5. We herstarten het systeem
    sudo reboot

Bibliotheek downloaden en installeren.
Jeremy Garff heeft de handige bibliotheek “rpi_ws281x” geschreven. Hier maken we gebruik van. Geef de volgende downloadopdracht:
git clone https://github.com/jgarff/rpi_ws281x

In deze map zijn enkele C-bestanden opgenomen, die eenvoudig kunnen worden gecompileerd. De voorbeeldcode hiervoor is makkelijk te begrijpen. Om ze in Python te gebruiken, moeten we ze compileren:
cd rpi_ws281x
sudo scons

In dit project zijn we vooral geïnteresseerd in de Python-variant en schakelen we daarom over naar de Python-map:
cd python
Hier voeren we de installatie uit:
sudo python setup.py build
sudo python setup.py install

Hiermee kunnen we in de volgende stap een eerste test uitvoeren.

Test de Raspberry Pi WS2812 RGB LED-strip
In de voorbeeldmap staan enkele voorbeeldbestanden, waarmee de LED-strips kunnen worden getest. Bovendien kunnen zelfs twee WS2801 LED-strips onafhankelijk worden bestuurd door Raspberry Pi (multistrandtest.py).

We zijn in eerste instantie geïnteresseerd in de eenvoudige versie. Hiervoor moeten we enkele details invullen vóór de test en daarom bewerken we het voorbeeldbestand.
sudo nano examples/strandtest.py

De meeste scripts vragen om te vermelden wat de LED_COUNT (aantal te adresseren LED’s) en de LED_PIN (18 us) is. Zodra deze waarden goed staan kan het bestand worden uitgevoerd (het is belangrijk om het pad naar de gecompileerde bestanden door te geven):
sudo python3 strandtest.py
Als dat niet werkt, gebruik dan: sudo python strandtest.py

De LED’s van de WS2812-strip moeten oplichten. In de bovenste code zijn slechts enkele effecten (regenboog, enz.) gedefinieerd, maar het is ook mogelijk om op analoge wijze verdere effecten te creëren.

Gebruik het “-c” argument om de LED’s te schonen bij exit. Het commando wordt dan:
sudo python strandtest.py -c

Gebruik vervolgens Ctrl-c om het programma te stoppen.
In de map Examples staan meer voorbeelden.

Veel succes!

Geef als eerste een reactie

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd.


*