- 8-bitowa regulacja poziomu intensywności świecenia,
- maksymalny prąd wyjściowy ok. 4 A,
- częstotliwość PWM: 3,9 kHz, rozdzielczość PWM: 12 bitów,
- zasilany napięciem 12 V, pobór prądu bez obciążenia ok. 10 mA.
W urządzeniu zastosowano ciekawe rozwiązanie programowe. Generator PWM pracuje z 12-bitową rozdzielczością, ale wprowadzono korektę, podobną do korekty gamma, która ogranicza liczbę poziomów świecenia do wartości 8-bitowej. Dzięki temu regulacja i intensywność świecenia dołączonego źródła LED działają w sposób liniowy.
Budowa i działanie
Schemat układu nie jest skomplikowany, został pokazany na rysunku 1. Napięcie zasilające taśmę LED służy także do zasilania mikrokontrolera. Ze względu na mały pobór prądu przez mikrokontroler (około 10 mA) zdecydowano się na zastosowanie stabilizatora liniowego U1. Dioda D1 zabezpiecza stabilizator przed skutkami odwrotnego podłączenia zasilania. Dioda LED D2 sygnalizuje obecność napięcia zasilającego. Układ U2 konwertuje różnicowy sygnał DMX na poziomy wymagane przez mikrokontroler. Zworka JP1 pozwala włączyć terminator na linii DMX w sytuacji, gdy interfejs jest ostatnim urządzeniem na magistrali DMX.
Dioda LED D3 sygnalizuje obecność sygnału DMX. Wyjście PWM zasila diodę LED D4 oraz przez bramkę T1. Prąd maksymalny tranzystora T1 wynosi 10 A, ale ze względu na warunki pracy nie należy przekraczać wartości 4 A. Przycisk S1 pozwala ustawić adres interfejsu.
Montaż i uruchomienie
Schemat płytki PCB został pokazany na rysunku 2. Montaż jest tradycyjny i nie wymaga szczegółowego opisu. Po podłączeniu zasilania należy zaprogramować mikrokontroler. Do tego celu wystarczy najtańszy programator ST-LINK, który można kupić za kilkadziesiąt złotych. Jest także dostępny na wszystkich płytkach NUCLEO i DISCOVERY produkowanych przez STMicoelectronics.
Domyślnym adresem interfejsu jest 0. Należy zauważyć, że numeracja kanałów w programach konsol DMX może zaczynać się od zera lub jedynki. Jeśli zaczyna się od jeden, należy ten fakt uwzględnić przy ustawianiu adresu interfejsu. Adres można zmienić za pomocą przycisku S1. Aby to uczynić, na kanale 0 konsoli DMX czy w panelu programu komputerowego należy ustawić pożądany adres podzielony przez 2, po czym nacisnąć przycisk. Adres zostanie zapamiętany w pamięci FLASH. W ten sposób możliwe jest ustawienie tylko adresów parzystych. Jeśli zaistnieje konieczność ustawienia adresu nieparzystego, należy posłużyć się programatorem ST-LINK. Za jego pomocą odczytujemy pamięć mikrokontrolera.
Długie słowo o adresie 0x7800 zawiera adres DMX, na który reaguje interfejs. Na rysunku 3 jest to zaznaczone czerwoną elipsą (adres 0xA = 10). Po zaznaczeniu słowa, zmodyfikowaniu go i potwierdzeniu lawiszem ENTER nastąpi zapis pamięci. Wartość słowa pod adresem 0x7808 (niebieskie tło na rysunku 3) decyduje o zachowaniu interfejsu przy braku sygnału DMX. Domyślnie (wartość różna od 0 i 1) diody LED będą płynnie pulsować. Wartość zero spowoduje, że przy braku sygnału diody zostaną wyłączone, wartość jeden zapamięta ostatnią przesłaną wartość.
Podsumowanie
Na zakończenie warto obalić mit, że STM32 są trudne do programowania. Na przykład – ustawienie bloku PLL generatora kwarcowego wydaje się bardzo trudne, ale w wielu aplikacjach, jak choćby w tym projekcie, PLL nie trzeba ustawiać, bo układ pracuje na domyślnym taktowaniu 16 MHz. Natomiast jeśli zajdzie potrzeba ustawienia PLL, to CubeMX/CubeIDE sprowadza tę czynność do kilku kliknięć myszką. Drugim częstym zarzutem jest brak pamieci EEPROM. Przeważnie w roli nieulotnej pamięci danych można wykorzystać, tak jak w tym projekcie, pamięć FLASH. Czas zapisu/kasowania jest dziesiątki czy setki razy krótszy niż EEPROM, a do pełnej emulacji EEPROM, STMicroelectronics dostarcza stosowne biblioteki.
Sławek Skrzyński
sas@elportal.pl
- R2, R3, R6: 120 Ω SMD 1206
- R1, R4, R5: 470 Ω SMD 1206
- C1, C2: 10 μF SMD 1206
- C3, C4: 100 nF SMD 1206
- D1: SM4007
- D2: dioda LED zielona SMD1206
- D3: dioda LED żółta SMD1206
- D4: dioda LED niebieska SMD1206
- T1: AO4466
- U1: SPX1117 SMD
- U2: ST3485EBD SMD
- U3: STM32G030J6M6 SMD
- J1, J3: szpilki typu TB-5.0-PP-2P + TB-5.0-PIN2
- J2: złącze typu T821-1-06-S1
- J4: złącze typu NS25-W3P
- S1: mikroswitch
- JP1, goldpin kątowy 1×2 + jumper