- 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.
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.
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.
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.
#!/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:
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).
#!/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”
#!/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
- R1, R2, R3: 4,7 kΩ (SMD0603)
- R4, R5, R6, R7, R8: 22 kΩ (SMD0603)
- R9, R10, R11, R12, R13: 10 Ω (SMD0603)
- 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)
- Q1, Q2, Q3, Q4, Q5: tranzystor MOSFET AOD4184A (TO-252)
- U1: PCA9634PW (SSOP20)
- U2, U3, U4: TC4426COA (SO8)
- 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