Chciał bym przedstawić projekt sterowania oświetlaniem bazujący na arduino.
Projekt składa się z trzech części :
1. Modułowych płytek PCB
Płytki zaprojektowane za pomocą webowego narzędzia easyeda. Płytki składaną się z dwóch modułów logicznego i wykonawczego. Płytki logiczne komunikują się arduino za pomocą i2c.
Do każda z nich można podłączać zamiennie moduły wykonywalne. Sterowanie napięciem stałym zamontować można zarówno do modułu PWM dzięki czemu uzyskamy ściemniacz jak i ekspandera realizującego zwykłą funkcję włącz wyłącz.
Płytki które puki co zaprojektowałem to :
Sterownik PWM
https://easyeda.com/piroaa/pinexpander-header-pwmJest to płytka logiczna głównym elementem wykonywalnym jest PCA9635 jej zadaniem jest wystawienie 16 kanałów pwm. Wyjścia podzielone są na dwa segmenty więc można podłączyć dwa rożne moduły wykonawcze. Obecnie z tą płytką można podłączyć ze sterownikiem DC.
Sterownik PortExpander
https://easyeda.com/piroaa/portexpander-headerKolejna płytka z logiką tym razem na module MCP23017 płytka umożliwia sterowanie 16 portami mogą one być ustawione zarówno jako wejścia i wyjścia. Tu podobnie jak powyżej wyjścia są podzielone na dwie sekcie każda z nich może pełnić różną funkcję. Obecnie do płytki można podłączyć sterownik DC sterownik AC oraz płytkę wejść.
Płytki wykonywalne :
simple input
https://easyeda.com/piroaa/simple-inputProsta płytka realizuje zabezpieczenie wejść/wyjść 5v dla układu PortExpander.
PortExpander-60
https://easyeda.com/piroaa/portexpander-60Płytka umożliwia sterowanie prądem stałym do wartości 60V można ją podłączać zarówno z sterownikiem PWM oraz PortExpander.
2. Biblioteki PinControl
Biblioteka składa się z dwóch części PinExpander oraz ButtonControl. Pierwsza z nich realizuję komunikacie z modułami MCP23017 oraz PCA9635 poprzez i2c. Została tak pomyślana by można z niej było korzystać z s portów układów tak jak ze standardowych wyjść arduino. Wystarczy tylko zadeklarować obecność modułu i do dyspozycji mamy wyprowadzenia. Przykład poniżej :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oczywiście użycie biblioteki niesie za sobą obostrzenie każdy z układów musi być adresowany kolejno 0,1,2 ...
Żeby jeszcze uprościć zapis w samym arduino dodałem bibliotekę ButtonControl. Korzysta ona z PinExpander i dodając kolejną warstwę abstrakcji upraszczając kod w samym arduino. Biblioteka umożliwia dodanie kilku rodzajów przycisków dla przykładu :
SimpleButton - to zwykły przycisk z dodaną obsługą debouncera zwraca wartość 1 nie zależnie od tego jak długo przycisk jest wciśniemy
ButtonLoop - przycisk zwraca 1 co określony czas tak długo jak przycisk jest wciśnięty
ButtonCounter - najbardziej zaawansowany przycisk zlicza ilość szybkich przyciśnięć przy długim przyciśnięciu zwraca wartość 200
PwmGoTo - ustawia PWM na podaną wartość dodatkowo zmiana nie jest realizowana od razu a w formie płynnego przejścia.
Biblioteki oraz projekt arduino który obecnie wykorzystuje u siebie dostępny pod adresem :
https://github.com/PawelZawodzinski/PinControl3. Arduino stanowiącego główny moduł wykonywalny.
Co du dużo pisać po prostu albo aż arduino z wgranym powyżej kodem odpowiada za sterowanie całości oraz dostarcza zasilania do zainstalowanych modułów. Samo arduino zasilone jest z zasilacza buforowego LRS-150-12 który jednocześnie stanowi źródło prądu dla oświetlenia. Obecnie w mojej przełącznicy znajduje się :
pinexpander-header-pwm z wpiętym jednym modułem PortExpander-60. Oraz sterownik PortExpander z dwoma modułami simple input. Jedna sekcja skonfigurowana jest jako wejście dla przycisków dzwonkowych sterujących oświetleniem, czujnika ruchu PIR HC-SR501 oraz kontaktronów. Niestety okazało że napięcie na wyjściu czujnika jest zbyt niskie by mogło być wykryte poprawnie przez PortExpander dla tego musiałem wyposażyć go w tranzystor PNP na wyjściu tak by czujka sterowała tranzystorem PortExpander dostawał napięcie +5V z samego tranzystora. Podobnie kontaktron który steruje oświetleniem w szafie musiałem na szybko zlutować prostą bramkę NOT na jednym tranzystorze tak by sterowanie odbywało się we właściwy sposób.
Poniżej zamieszczam zdjęcia rozdzielnicy oraz samych modułów sterujących od strony tylnej:
Jak widać przy modułach dolutowane są dodatkowe kondensatory. Miałem problemy z zawieszaniem się całości układu przy uruchomieniu wiertarki czy lampy jarzeniowej w pokoju obok. Po dodaniu kondensatorów problem zdarza się rzadziej choć nadal potrafi występować.
Również płytki dla modułów simple input wykonałem na płytce uniwersalnej. Na wierzchu widać diody zenera pod spodem są wlutowane tranzystory SMD.
Ok.
Z grubsza to chyba tyle. Nie wiem czy projekt spełnia założenia działu bo jak widać nie jest w pełni zamknięty a raczej w fazie testów rozwoju i ciągłych poprawek.
Pozdrawiam.