Sterownik taśm LED RGBCCT 12 V dla RPi Zero

Sterownik taśm LED RGBCCT 12 V dla RPi Zero

Zaprezentowany moduł to sterownik taśm LED RGB+CCT w formie nakładki dla Raspberry Pi Zero. Umożliwia płynną zmianę koloru i jasności świecenia taśmy, poprzez polecenia przesyłane interfejsem I²C.

Podstawowe parametry:
  • sterowanie taśmami LED 12V RGB z dodatkowymi diodami CCT (W/WW) w kolorze białym z odcieniem ciepłym i zimnym,
  • sterowanie poprzez interfejs I²C,
  • sumaryczne obciążenie wyjść może wynosić maksymalnie 10 A,
  • wyposażony jest w przetwornice PSU obniżającą napięcie zasilania taśm 12 V do 5 V wymaganego przez Pi Zero.

Przedstawiony moduł umożliwia rozszerzenie funkcjonalności Pi Zero o sterowanie taśmami LED 12 V RGB z dodatkowymi diodami CCT (W/WW) w kolorze białym z odcieniem ciepłym i zimnym. Dodatkowe diody umożliwiają uzyskanie nie tylko palety kolorów, ale też światła białego o zmienianej płynnie temperaturze barwowej - co daje dodatkowe możliwości w aranżacji oświetlenia.

Budowa i działanie

Moduł jest aplikacją układu PCA9634 (U1), którego strukturę wewnętrzną pokazano na rysunku 1. PCA9634 wchodzi w skład rodziny kontrolerów LED I²C firmy NXP. Jest to konfigurowany ośmiokanałowy generator PWM z możliwością indywidualnej i grupowej regulacji PWM.

Rysunek 1. Struktura wewnętrzna układu PCA9634 (za notą NXP)

Schemat kompletnego modułu został pokazany na rysunku 2. Sterowanie odbywa się poprzez magistralę I²C, sumaryczne obciążenie wyjść może wynosić maksymalnie 10 A, co pozwala zasilać, w zależności od mocy, nawet do kilkunastu metrów taśmy LED. Każdy kolor ma możliwość indywidualnej regulacji 8-bitowym sygnałem PWM, a dodatkowo cała taśma może być sterowana globalnie, co pozwala na dosyć swobodne regulowanie barwą i jasnością świecenia.

Rysunek 2. Schemat ideowy modułu

Sygnały wyjściowe LR/LG/LB/LW/LWW są buforowane układami sterowników bramek tranzystorów MOSFET U2...4 typu TC4426. Tranzystory wykonawcze Q1...5 sterują poszczególnymi łańcuchami kolorów taśmy. Moduł wyposażony jest w złącze I²C zgodne ze standardem Grove. Sygnał OEL pozwala na sprzętowe globalne załączenie/wyłączenie taśmy bez modyfikacji rejestrów sterujących U1.

Moduł ma zwory konfiguracyjne A0, A1 umożliwiające wybór jednego z czterech adresów bazowych (0x1C...0x1F). Umożliwia to niezależne sterowanie czterema taśmami LED RGBCCT z jednego RPi poprzez wspólną magistralę I²C, z jednym globalnym sygnałem OEL.

Moduł wyposażony jest w przetwornice PSU obniżającą napięcie zasilania taśm 12 V do 5 V wymaganego przez Pi Zero, co upraszcza aplikację do jednego zasilacza 12 V podłączonego do złącza PWR. W przypadku współpracy z kilkoma nakładkami przetwornice montujemy tylko w jednej z nich.

Taśmę łączymy z modułami poprzez złącze śrubowe RGBCCT. Niestety taśmy RGBCCT nie mają określonego standardu złącza (są różne w zależności od szerokości taśmy) oraz różnią się przypisaniem wyprowadzeń LED. Przed podłączeniem taśmy należy zweryfikować kolejności LED i w razie potrzeby zastosować odpowiednią przejściówkę.

Montaż i uruchomienie

Montaż modułu nie wymaga szczegółowego opisu, schemat dwustronnej płytki został pokazany na rysunku 3.

Rysunek 3. Schemat płytki PCB

Poprawnie zmontowany moduł nie wymaga uruchamiania, lecz konieczne jest skonfigurowanie układu PCA9634. Przykładowy skrypt testowy rgbcct.sh dla Raspberry Pi pokazano na listingu 1.

Listing 1. Przykładowy skrypt testowy rgbcct.sh

#!/bin/bash
echo “RGBCCT LED PCA9634 Driver ADR:0x1C”

i2ctransfer -y 1 w17@0x1C 0x80
0x80 0x05 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x80 0x00
0xff 0xe2 0xe4 0xe8

i2cset -y 1 0x1C 0x0c 0xFF
i2cset -y 1 0x1C 0x0d 0xFF

echo “Led OFF”
i2cset -y 1 0x1C 0x02 0x00
i2cset -y 1 0x1C 0x03 0x00
i2cset -y 1 0x1C 0x04 0x00
i2cset -y 1 0x1C 0x05 0x00
i2cset -y 1 0x1C 0x06 0x00
sleep 2

echo “Led Green 50%”
i2cset -y 1 0x1C 0x02 0x7F
sleep 2
i2cset -y 1 0x1C 0x02 0x00

echo “Led Red 50%”
i2cset -y 1 0x1C 0x03 0x7F
sleep 2
i2cset -y 1 0x1C 0x03 0x00

echo “Led Blue 50%”
i2cset -y 1 0x1C 0x04 0x7F
sleep 2
i2cset -y 1 0x1C 0x04 0x00

echo “Led White 50%”
i2cset -y 1 0x1C 0x05 0x7F
sleep 2
i2cset -y 1 0x1C 0x05 0x00

echo “Led White Warm 50%”
i2cset -y 1 0x1C 0x06 0x7F
sleep 2
i2cset -y 1 0x1C 0x06 0x00
sleep 2

echo “Global PWM”
i2cset -y 1 0x1C 0x02 0x7F
i2cset -y 1 0x1C 0x03 0x7F
i2cset -y 1 0x1C 0x04 0x7F
i2cset -y 1 0x1C 0x05 0x7F
i2cset -y 1 0x1C 0x06 0x7F

echo “Global PWM Min”
i2cset -y 1 0x1C 0x0A 0x01
sleep 2

echo “Global PWM Med”
i2cset -y 1 0x1C 0x0A 0x7F
sleep 2

echo “Global PWM Max”
i2cset -y 1 0x1C 0x0A 0xFF
sleep 2

echo “All Off”
i2cset -y 1 0x1C 0x0A 0x00
i2cset -y 1 0x1C 0x02 0x00
i2cset -y 1 0x1C 0x03 0x00
i2cset -y 1 0x1C 0x04 0x00
i2cset -y 1 0x1C 0x05 0x00
i2cset -y 1 0x1C 0x06 0x00

Dokładny opis rejestrów układu opisany jest w nocie katalogowej. Wyjścia układu skonfigurowane są jako totem-pole ze względu na współpracę z układami buforującymi. Przed uruchomieniem skryptu należy ustawić sygnał OEL (GPIO4) w stan niski, co aktywuje bufory PCA9634 i umożliwi sterowanie LED:

ls /sys/class/gpio/
echo 4 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio4/direction
echo 0 > /sys/class/gpio/gpio4/value

Polecenia można wykonać w formie skryptu oel_ON.sh (listing 2) i oel_OFF.sh (listing 3).

Listing 2. Skrypt załączajacy wyjście OEL - oel_ON.sh

#!/bin/bash
cd /home/pi
BASE_GPIO_PATH=/sys/class/gpio
PIN1=4

if [ ! -e $BASE_GPIO_PATH/gpio$PIN1 ]; then
echo $PIN1 > $BASE_GPIO_PATH/export
fi

echo “out” > $BASE_GPIO_PATH/gpio$PIN1/direction
echo “0” > $BASE_GPIO_PATH/gpio$PIN1/value
echo “OEL włączony OEL=0”
Listing 3. Skrypt wyłączający wyjście OEL - oel_OFF.sh

#!/bin/bash
cd /home/pi
BASE_GPIO_PATH=/sys/class/gpio
PIN1=4

if [ ! -e $BASE_GPIO_PATH/gpio$PIN1 ]; then
echo $PIN1 > $BASE_GPIO_PATH/export
fi

echo “out” > $BASE_GPIO_PATH/gpio$PIN1/direction
echo “1” > $BASE_GPIO_PATH/gpio$PIN1/value
echo “OEL wyłączony OEL=1”

Po podłączeniu modułu do Raspberry Pi i uruchomieniu skryptu, kolejno zgodnie z opisem zaświecone zostaną na taśmie kolory G, R, B, W, WW z lokalnym i globalnym sterowaniem PWM. Jasność LED można ustawić, zmieniając wartość 0x7F na mniejszą lub większą niezależnie dla każdego koloru. Wartość 0x00 wygasza LED. Globalna jasność ustawiana jest wartością zapisaną do rejestru 0x0A, dokładność jej działania zależy od typu zastosowanych LED. Należy zwrócić uwagę, że nie we wszystkich taśmach przy niskich wypełnieniach możliwe jest utrzymanie barwy przy zmianie jasności.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2, R3: 4,7 kΩ (SMD0603)
  • R4, R5, R6, R7, R8: 22 kΩ (SMD0603)
  • R9, R10, R11, R12, R13: 10 Ω (SMD0603)
Kondensatory:
  • C1: 0,1 μF 10 V (SMD0603)
  • CE1, CE2: 47 μF/25 V elektrolityczny
  • C2: 4,7 μF 10 V (SMD0603)
  • C3, C4, C5: 0,1 μF/25 V (SMD0603)
  • C6, C7, C8: 1 μF/25 V (SMD0805)
  • C9: 22 μF/25 V (SMD1206)
  • C10: 47 μF/10 V (SMD1206)
Półprzewodniki:
  • Q1, Q2, Q3, Q4, Q5: tranzystor MOSFET AOD4184A (TO-252)
  • U1: PCA9634PW (SSOP20)
  • U2, U3, U4: TC4426COA (SO8)
Pozostałe:
  • A0, A1: zwora PCB (SMD0603)
  • GPIO: złącze żeńskie IDC40
  • PSU: przetwornica 12/5 V AMSRB-7805Z
  • PWR: złącze DG 2 piny 3,5 mm
  • RGBCCT: złącze DG 6 pinów 3,5 mm
Artykuł ukazał się w
Elektronika Praktyczna
marzec 2023
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna marzec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów