Elektroda.pl
Elektroda.pl
X
PCBwayPCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie Oświetleniem - system z logiką rozproszoną

michcior 24 Wrz 2012 11:04 13731 17
  • Witam.

    System sterowania oświetleniem z logiką rozproszoną to układ, w którym nie ma jednostki centralnej kontrolującej to, co się w systemie dzieje. W moim rozwiązaniu postanowiłem stworzyć system, w którym każdy włącznik ("kontakt") będzie bezpośrednio "rozmawiał" ze źródłem światła. Jeżeli kontakt i źródło światła wyposażymy w odpowiednio rozbudowane moduły sieciowe, to można zrealizować wszystkie funkcje potrzebne do kontroli oświetlenia bez dodatkowych logicznych sterowników.

    Podejście takie, moim zdaniem, znacznie podnosi niezawodność systemu w porównaniu ze sterowaniem jakimś centralnym mikrokontrolerem, którego awaria może spowodować długi czas nie działania systemu. A przecież światło musi działać w domu niezawodnie, nawet jeśli jakiś kawałek ulegnie uszkodzeniu, to reszta działa.

    Jako moduł elementu sieci, stworzony został prosty układ z mikrokontrolerem PIC18F14K22 (tani i o dużych możliwościach). Moduł mieści się w puszce elektrycznej.

    Sterowanie Oświetleniem - system z logiką rozproszoną

    Niektóre cechy modułu:
    - 6 konfigurowalnych wejść (pojemnościowy czujnik dotykowy lub styk);
    - 4 wyjścia logiczne, statyczne i PWM;
    - sterowanie wyjściami w różnych konfiguracjach, zmiany czasowe;
    - pomiar wielkości analogowej.
    Układy wykonawcze to klasyczne połączanie opto-triak + triak lub transoptor+mosfet (do LEDów 12V).

    Sieć to topologia "star-burst" to skrętka, pociągnięta do każdego kontaktu i żarówki, w domu mam ok. 35 nitek. Sieć jest 4-przewodowa, na zasadzie "wszyscy się słyszą". Elektrycznie to symetryczna linia. Protokół jest oparty o asynchroniczną transmisję (UART) o bardzo niskiej prędkości (4800bps). Pakiet to 10 bajtów.

    System nie posiada jednostki centralnej logicznej, jednak brak punktu centralnego byłby dużym brakiem. W mojej implementacji nitki pogrupowane są w 6 podsieci, które spięte są w tzw switchu.

    Switch:
    - przerzuca pakiety z jednej sieci do drugiej, jeśli adresowanie tego wymaga
    - umożliwia dostęp "z zewnątrz" do sieci, a więc wszelkie WWW lub inne urządzenia domowe "wchodzą" do systemu przez switch;
    - loguje wszystkie pakiety;
    - generuje poziomy logiczne i zasila podsieci.

    Mój switch wygląda tak (jeszcze nie wszystko wpięte :)):

    Sterowanie Oświetleniem - system z logiką rozproszoną

    U góry znajduje się switch i "karty" podsieci, u dołu "patch-pannel".

    Cały projekt udostępniony jest na SourceForge: SourceForge - BIOT Light System. Jest tam znacznie więcej technicznych informacji. Proponuję przejrzeć projekt na SF, być może odpowiedź na pytania już tam jest. Projekt jest częściowo otwarty, z pewnością nie wszystko jest jasne, jednak jeśli będzie zainteresowanie, postaram się pomóc w realizacji.

    Dziękuję.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    michcior
    Poziom 30  
    Offline 
    Sterownik Pompy Ciepła DIY: http://www.quotek.pl
    Sterownik Temperaturowy http://code.google.com/p/aions/
    Sterownia Oświetleniem: http://code.google.com/p/biot-light-control/

    Polecam "tmux": http://tmux.sourceforge.net/
    Total Commander 4 Linux: http://doublecmd.sourceforge.net/
    Specjalizuje się w: programowanie klasyczne, arm
    michcior napisał 1129 postów o ocenie 397, pomógł 158 razy. Mieszka w mieście Wroclaw. Jest z nami od 2006 roku.
  • PCBwayPCBway
  • #2
    snnaap
    Poziom 25  
    Witam, fajny projekt podziw dla włożonej pracy ale mam kilka pytań:
    1. Moduł włącznika znajduje się w puszce od włącznika?
    2. Gdzie znajduje się moduł wykonawczy?
    3. W jakim celu na płytkę modułu podawane jest napięcie -5V
    4. Skrętkę do modułu podłącza się za pomocą wtyczki do gniazda IDE - jak to wygląda możesz udostępnić jakieś zdjęcie?
    5. Czy robisz jakieś logi z pracy takiej sieci - interesowałoby mnie jak często pojawiają się błędy w transmisji przy danej liczbie modułów.
    6. Jak zasilana jest cała sieć - jest jeden zasilacz centralny czy kila zasilaczy połączonych masa? Jaka jest moc zasilacza? Jaki jest pobór mocy całej sieci?

    PS . Więcej zdjęć:)
  • #3
    McMonster
    Poziom 32  
    Znakomite, coś podobnego planuję zrobić u siebie przy okazji remontu.

    Mógłbyś napisać coś więcej na temat protokołu? Szczególnie kwestia rozwiązywania kolizji mnie interesuje. Po drugie, sterujesz za pomocą triaków, jak wygląda ręczne sterowanie światłami? Czy zupełnie zrezygnowałeś z mechanicznych przełączników?

    W mojej implementacji planuję oprzeć się o sterowanie przy przełącznikach, ale z centralnym systemem (sterownik własnej budowy jako główny element z kontrolą przez domowy serwer) i priorytetem istniejących mechanicznych przełączników, tzn. pełne sterowanie elektroniczne, ale zmiana pozycji przełącznika będzie miała priorytet, podobnie awaria centralnego systemu ma powodować powrót do stanu, w jakim są mechaniczne przełączniki.

    Kolejne pytanie, do czego wykorzystujesz lub planujesz wykorzystać pozostałe funkcje modułów (wejścia, ADC itp.)?
  • PCBwayPCBway
  • #4
    michcior
    Poziom 30  
    Witam

    @snnaap
    1) Wszystkie moduły są montowane w puszkach, nie mam tam normalnych kabli tylko skrętki
    2) Przy żarówce, tam też jest skrętka
    3) Nie wykorzystane, pozostało z wczesnego projektu.
    4) Jak zrobię zdjęcie to wrzucę na WiKi, trochę trudno zacisnąć skrętkę drut na tym złączu ale jakoś daje radę, myślę że należy zastosować złącze telefoniczne, takie jak te białe w patch-panelu. Tu chodziło o cenę, modułów jest dość dużo i cena jednostkowa ma znaczenie.
    5) Logi mam wyłączone bo zabierają miejsce. Błędy korygowane zdarzają się bardzo rzadko, dwa trzy na miesiąc. Nie pamiętam by mi coś nie zadziałało co by znaczyło że pakiet nie doszedł.
    6) Na płytce switch'a są separatory od UART'a procesora i przetwornice DC/DC 12V->5V, są widoczne na schemacie. Jeden moduł to ok 10mA. Ten zasilacz na zdjęciu to 5V/4A i 12V2A

    @McMonster

    Nie ma ręcznego sterowania, jak pisałem, układ w podstawowej funkcji nie wymaga jednostki centralnej, i przez to jest na tyle niezawodny, że mogłem sobie pozwolić na brak "ręcznego" trybu. Kolizje to klasyczne podejście, moduł słucha swojej transmisji, jak to co wysyła zostanie zakłócone to retransmituje w losowym czasie.
    Protokół jest do "rozkodowania" w źródłach narzędzia "biotool" i trochę podstawowych informacji na WiKi SF (link w poście).
    Przetwarzanie ADC to np. czujnik otwarcia okna, styk od uchylenia i styk od otwarcia całkowitego zwierają drabinkę rezystorów, mierząc napięcie wiem czy okno jest uchylone czy otwarte albo które skrzydło.
  • #5
    sambo123
    Poziom 13  
    Bardzo ciekawy projekt. Czy można przypisać kilka funkcji do jednego przycisku np zapalenie światła w dwóch różnych pokojach ?
  • #6
    michcior
    Poziom 30  
    @sambo123

    Tak, oczywiście, jedno z założeń było "wszystko możliwe". System działa na zasadzie kodów, naciśniecie kontaktu powoduje wysłanie kodu, do wszystkich w podsieci, lub w inną podsieć. Można wysłać kilka kodów na raz. Każdy moduł który odbiera kod, sprawdza czy ma jakąś akcję przypisaną do tego kodu i ją wykonuje.
  • #7
    tehaceole

    Poziom 28  
    Projekt bardzo bardzo fajny. Jednak przydałaby się lepsza dokumentacja opisowa.
    Interesuje mnie warstwa fizyczna łącza. Wg schematów jest to typowa linia z transmisją różnicową. Zdradź co spowodowało, że nie zastosowałeś tutaj popularnych MAX 485 itp. (oczywiście pomijam kwestię sterowania kierunkiem transmisji maxa).
    Co w przypadku kolizji na magistrali? Poza zgubieniem pakietów oczywiście. Znane są opisy sytuacji w których jednoczesne ustawienie 2 maxów w nadawanie może doprowadzić do uszkodzenia ich modułów wykonawczych. Sam co prawda jeszcze tego nie doświadczyłem. Jednak ciekawi mnie czemu właśnie poszedłeś w kierunku wykorzystania "samozdziałanego" modułu wykonawczego zamiast kostki MAXA.

    Czy mógłbyś także choćby naszkicować algorytm komunikacji? Wg Twojego opisu jest to sieć multimaster, co za tym idzie sterowniki muszą wiedzieć kiedy mogą nadawać. Jak to realizujesz?
  • #8
    michcior
    Poziom 30  
    Było kilka powodów nie stosowania 485, np. planowałem więcej urządzeń na jednej nitce jak 32 i topologia musiała by być mocno uporządkowana. Przy mojej prędkości (4800bps) proste rozwiązanie też działa. Kostka TI którą znam, dość mocno robi się ciepła, przy dużej liczbie modułów mogło by to mieć znaczenie. I jeszcze parę innych.

    Moduł nie wie kiedy nadawać, po prostu śle, jak nie wyszło to retransmituje. 10 bajtów @ 4800bps to jakieś 18ms. Retransmisja w następnych 100ms. Prawdopodobieństwo, że dwa kontakty zostaną naciśnięte w tym samym czasie jest i tak bardzo małe, a jeszcze że retransmisja w losowym czasie też ulegnie kolizji to już prawie zero. retransmituje też kilka razy.
  • #9
    sambo123
    Poziom 13  
    Jaka jest maksymalna odległość między modułami ?
  • #10
    tehaceole

    Poziom 28  
    michcior napisał:
    Moduł nie wie kiedy nadawać, po prostu śle, jak nie wyszło to retransmituje. 10 bajtów @ 4800bps to jakieś 18ms. Retransmisja w następnych 100ms. Prawdopodobieństwo, że dwa kontakty zostaną naciśnięte w tym samym czasie jest i tak bardzo małe, a jeszcze że retransmisja w losowym czasie też ulegnie kolizji to już prawie zero. retransmituje też kilka razy.
    Czyli wszystkie moduły "siedzą" sobie cały czas cicho na nasłuchu i dopiero ten, który ma do powiedzenia "Asia włącza światło" rozsyła tę informację czymś co można by nazwać broadcastem do pozostałych. Tak? Czy informacja jest bezpośrednio przez moduł adresowana do innych konkretnych modułów (wspominałeś coś o adresacji poszczególnych podsieci)?
    Przymierzam się do zdziergania czegoś a'la ModbusRTU/Profibus DP z założeniem jak przy CAN, że w sieci może być wiele masterów. Ostatnio w katalogu Beckhoffa widziałem bardzo ciekawe rozpiski różnego podejścia do rozsyłania informacji w tego typu sieciach.
  • #11
    sambo123
    Poziom 13  
    @tehaceole
    Mógłbyś podzielić się informacjami ?
  • #12
    tehaceole

    Poziom 28  
    sambo123 napisał:
    @tehaceole
    Mógłbyś podzielić się informacjami ?
    Chodzi Ci o ten katalog Beckhoffa? Jeżeli tak to zmartwię Cię - mam to w robocie w wersji papierowej: cegła jakieś 2 tysiące stron A4...
    O ile się nie mylę to jest to ten katalog, ale pdf waży 107MB:(
  • #13
    _sebs_
    Poziom 11  
    @michcior

    Bardzo fajny projekt, a w szczególności jej rozproszony sposób zarządzania. I tu pojawiły mi się 3 pytania:

    1. czy liczyłeś/mierzyłeś pobieraną średnią moc systemu w czasie pracy jałowej (tzn. pracy bez obciążenia)?
    2. czy zwykła suma kontrolna (zakładam, ze taką stosujesz) jest wystarczająca w takiej sieci do zapewnienia poprawności odbioru danych? (tak, widziałem Twój post o retransmisjach :wink: ).
    3. No i ostatnie pytanie - zakładam, ze moduły zasilasz korzystając z żył w skrętkach UTP - przy długich odcinkach nie miałeś problemów ze spadkiem napięcia na ich końcach i w związku z tym stabilnej pracy tych kontrolerów?
  • #14
    michcior
    Poziom 30  
    @ _sebs_
    ad 1,3. Jeden moduł to ok 10mA. Nie ma (jak na razie) żadnego wchodzenia w tryb Low-Power modułów. Na jednej nitce nie wisi więcej jak 10 modułów, (w końcu mam 34 nitki). Tak więc, przy 0.18Ohm/m pętli kabla UTP, spadki są na prawdę niewielkie. Poza tym, każda skrętka to 8 żył z których korzystam tylko z czterech, jest więc rezerwa.
    ad 2. Suma sprawdza poprawność, jak na razie, w zupełności wystarcza, myślałem też by wprowadzić kod Hamminga ale nie trzeba było. Retransmisje dają rade.
  • #15
    Szymon Tarnowski
    Poziom 27  
    Całość wygląda rewelacyjnie, ale mam kilka uwag:
    1. złącza RJ45 w "switchu" są dość kosztowne, chyba bym poszukał czegoś tańszego w tej ilości, może jakieś łączówki telekomunikacyjne, albo tanie gotowe rozgałęźniki. Podobnie patchpanel, czemu nie używasz typowych gniazdek sieciowych RJ45 i patchpaneli 19"?

    2. złącze 2.54mm w module wygląda całkiem niepropocjonalnie, zastosowanie złącz 1.27, by pozwoliło mniejszyć moduł, chociażbym zmniejszyć "wysokość" modułu.

    3. Jak rozumiem jest tam retransmisja powiązana z jakimś licznikiem transmisji (lub cookie) żeby ponowione pakiety zostały zignorowane. Interesuje mnie następujący problem, co jeśli mamy 2 urządzenia odbiorcze (np lampy w 2 różnych pokojach) i z powodu błędu transmisji lub nałożenia się pakietów, jeden z odbiorników nie otrzyma informacji. Spowoduje to taki stan że w jednym pokoju światło się zapala, a w drugim nie. Kolejne naciśniecie spowoduje że światło zapalone gaśnie a zgaszone się zapala, itd. Jak wybrnąć z takiej sytuacji jeśli nie ma przycisków indywidualnych w tych pokojach?

    4. czy oprócz transmisji "sterującej" między urządzeniami przewidujesz komunikację do diagnostyki i konfiguracji modułów, albo zdalnej aktualizacja oprogramowania?

    PS w czym robione są schematy i płytki?
  • #16
    michcior
    Poziom 30  
    Gniazd 8p8c miałem cały worek, to są pionowe, mniej popularne. Ktoś kupił tego sporo i nie wykorzystał. Żal było nie użyć ale zgadzam się, że trochę kosztują. Te białe telefoniczne są tanie.

    Ponieważ sieć jest wspólna, jeśli jeden moduł nie odbierze to i wszyscy też nie. Raczej się nie zdarzy że taki sam pakiet pójdzie dwa razy. To wszystko opiera się na statystyce, gwarantuje niezawodność na określonym poziomie, który jest w zupełności wystarczający do sterowania światłem. W przeciwnym razie, koszty byłyby bolesne. Wszystko się tak robi, kwestia kompromisu. Jak na razie, działa mi to bez zarzutów.

    Moduły posiadają bardzo rozbudowaną konfigurację. Wszystko odbywa się przez sieć, czyli mogę prze-konfigurować każdy działający moduł. Można skompilować "biotool" i wywołać --help, jak ktoś kiedyś to ruszy to chętnie wyjaśnię jak tego użyć.
    Jedyne czego nie mogę to upgrade firmware, trochę zabrakło już "zasobów" i czasu.

    ad. PS: Był kiedyś taki program P-Cad (Accel EDA) ale już go nie ma.
  • #17
    janusz2k
    Poziom 14  
    Nie przeczytałem dokładnie o systemie, ale ogólna filozofia przypomina mi system KNX. To fajny system (KNX), choć dość drogi. A tu prezentujesz coś o rząd tańszego. Ale o nim warto poczytać np po to, by zapoznać się o bezkolizyjnym wysyłaniu telegramów (sygnałów), o podsieciach, sprzęgłach itp
  • #18
    jedzej
    Poziom 9  
    Przypomina KNX, ale do systemu KNX można podłączyć również inne urządzenia wykonawcze. Czy kolega planuje rozwinąć system tak by było to możliwe?
    Zakładam, że światło włączane jest włącznikiem monostabilnym normalnie otwartym czyli takim jak na klatkach schodowych. Czy możliwe jest zrealizowanie wyzwalania z podwójnego kliknięcia?