Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

LampSTER - sterownik lampy dwupunktowej

Duch__ 04 May 2012 17:13 8350 19
Relpol
  • LampSTER - sterownik lampy dwupunktowej

    Witam.

    Dzisiaj chciałbym zaprezentować sterownik do lampy dwupunktowej.

    Sterownik powstał z potrzeby sterowania lampą dwupunktową (męczyło mnie włączanie lampy z pilota radiowego, a wybieranie świecenia sekcji z przełącznika na kablu stąd też zawsze miałem ustawioną włączoną jedną lampę).

    Sercem układu jest procesor Attiny13. Funkcję ON/OFF realizuję za pomocą gniazdka sterowanego drogą radiową. Zadaniem procesor jest określenie czy układ jest zasilony czy też nie, oraz sterowanie dwoma przekaźnikami i w zależności od potrzeby wybieranie zaświecenia określonego punktu świetlnego.
    Do wyboru mamy opcje:

    - Świeci Lampa 1
    - Świeci Lampa 2
    - Świeci Lampa 1 i 2

    Opcje zmienia się poprzez wyłączenie zasilania układu. Procesor za pomocą układu CNY17 bada czy zostało odcięte zasilanie. Po wyłączeniu procesor podtrzymywany jest z kondensatora 2200uF. Jeśli czas od wyłączenia do ponownego włączenia jest krótszy od 5 sekund wtedy uruchamiana jest następna sekcja, natomiast jeśli czas jest dłuższy od 5 sekund wtedy do pamięci EEPROM zapisywana jest ostatni tryb świecenia i program "umiera" w wyniku rozładowania kondensatora.

    Żeby zabezpieczyć EEPROM przed zajechaniem (ograniczona ilość zapisów) zastosowałem prosty myk. Przed samym zapisaniem sprawdzane jest czy wcześniej był ustawiony ten sam tryb świecenia. Jeśli tak, to nie zapisujemy, jeśli nie, to zapisujemy - proste.

    Cały układ składający się z dwóch płytek (moduł zasilacza i sterownika, oraz moduł wykonawczy) połączonych ze sobą kawałkiem taśmy komputerowej z zalutowanymi gniazdami goldpinowymi został zamknięty w obudowie po zasilaczu sieciowym.

    Zdjęcia:

    LampSTER - sterownik lampy dwupunktowej LampSTER - sterownik lampy dwupunktowej LampSTER - sterownik lampy dwupunktowej LampSTER - sterownik lampy dwupunktowej LampSTER - sterownik lampy dwupunktowej LampSTER - sterownik lampy dwupunktowej LampSTER - sterownik lampy dwupunktowej LampSTER - sterownik lampy dwupunktowej LampSTER - sterownik lampy dwupunktowej

    Filmik z działania (na filmie widać pilota z tematu Emulator PT2260 na Attiny13 - pilot radiowy 433MHz):




    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    Duch__
    Level 31  
    Offline 
    Has specialization in: bascom, avr, alarmy, telewizja, monitoring, kontrola dostępu
    Duch__ wrote 2300 posts with rating 1551, helped 33 times. Live in city Opole. Been with us since 2004 year.
  • Relpol
  • #2
    netotron
    Level 26  
    Witam
    Bardzo fajny pomysł, dodaj tylko dla młodszych kolegów, że nie zalecany do świetlówek kompaktowych. Ciągłe "cykanie" skróci wydatnie ich żywotność.

    pozdrawiam
  • #3
    Mad Bekon
    Level 23  
    Fajne fajne, dobrze fajnie rozwiązane to przełączanie.

    Nie wiem czy kolega się spotkał z tą notą:
    http://www.atmel.com/Images/doc2566.pdf

    Można by spróbować rozwiązać zasilanie tak jak tutaj bez transformatora.
    W żadnym wypadku nie neguję tutaj rozwiązania kolegi, ale może warto by było przetestować taki układ.

    Pozdrawiam.
  • #4
    Demmo
    Level 16  
    Bardzo ładne, estetyczne wykonanie :) I nawet własne naklejki.. fajowe :)
    Bardzo podoba mi się pomysł z detekcją zaniku zasilania i potrzymaniem układu na kondensatorze - sprytne :)

    Kilka pomysłów, może się spodobają..

    Jeżeli kogoś irytuje cykanie i układ ma być tylko do takiej lampki, to można pomyśleć o triakach w miejsce przekaźników - przy takich mocach nie powinny się zbytnio grzać, więc albo niewielki radiatorek, albo triak SMD i miedziany pad pod nim. A i miejsca chyba ciut mniej zajmą.. choć jeszcze kwestia optotriaka, to może wyjdzie podobnie. Ale nie cyka ;)

    Układ sam z siebie pobiera raczej małą moc, więc zasilanie można wykombinować albo jak w podanej już nocie, albo wkomponować tam bebechy z jakiejś starej ładowarki telefonu ;)

    Co do programu, opisałeś sprawdzanie stanu zapisanego w EEPROMie przed zapisem. Jeśli używasz bibliotek z WinAVR, to jest do tego gotowa funkcja "update", która dokładnie tak działa.

    Ode mnie zdecydowanie plusik ;)
  • #5
    Duch__
    Level 31  
    netotron wrote:
    Ciągłe "cykanie" skróci wydatnie ich żywotność.


    "Cykanie" zostało zaprezentowane tylko na filmie ;) Ale uwaga słuszna.

    Mad Bekon wrote:
    Nie wiem czy kolega się spotkał z tą notą:
    http://www.atmel.com/Images/doc2566.pdf

    Można by spróbować rozwiązać zasilanie tak jak tutaj bez transformatora


    Zastanawiałem się już czy nie zastosować zasilacza bez udziału transformatora, jednak powiem szczerze że nie dojrzałem jeszcze psychicznie do tego typu rozwiązania, może pomyślę nad tym jak mi zabraknie transformatorków ;)

    Demmo wrote:


    Jeżeli kogoś irytuje cykanie i układ ma być tylko do takiej lampki, to można pomyśleć o triakach w miejsce przekaźników...



    Tutaj mała uwaga. Zaprezentowana lampa posiada jedną żarówkę kompaktową i jedną żarówkę LED. Nie testowałem osobiście czy owe żarówki mogą być sterowane z triaka. Stwierdziłem że po co mam później się denerwować że trzeba dłubać jeszcze raz w płytce. Może kiedyś jak mi się zachce to dorobię moduł z trakami i sprawdzę poprawność działania owych żarówek - przy wolframowych zadziała na 100%, przy kompaktach stawia się zawsze duży znak zapytania.


    Demmo wrote:
    Co do programu, opisałeś sprawdzanie stanu zapisanego w EEPROMie przed zapisem. Jeśli używasz bibliotek z WinAVR, to jest do tego gotowa funkcja "update", która dokładnie tak działa.


    Program został napisany w języku BASCOM, a tam mi zajeło to dokładnie trzy linijki kodu:

    Code: basic4gl
    Log in, to see the code


    Gdzie Tryb_eeprom jest zmienną Byte zapisywaną w ERAM.
  • #6
    Demmo
    Level 16  
    Duch__ wrote:
    Tutaj mała uwaga. Zaprezentowana lampa posiada jedną żarówkę kompaktową i jedną żarówkę LED. Nie testowałem osobiście czy owe żarówki mogą być sterowane z triaka. Stwierdziłem że po co mam później się denerwować że trzeba dłubać jeszcze raz w płytce. Może kiedyś jak mi się zachce to dorobię moduł z trakami i sprawdzę poprawność działania owych żarówek - przy wolframowych zadziała na 100%, przy kompaktach stawia się zawsze duży znak zapytania.

    Problem pojawia się, gdy stosujesz regulację fazową (tniesz sinusoidę), bo różne układy stabilizacji w żarówkach energooszczędnych itp. i tak na wyjściu próbują wydusić tyle ile im kazano, a tu nagle jakieś dziwne napięcie wejściowe dostają ;)
    Jeśli wrzucisz transoptor załączany w zerze (z wbudowanym układem ZCD), to triak działa na zasadzie załącz/wyłącz i nie powinien stwarzać problemów :)

    Duch__ wrote:
    Program został napisany w języku BASCOM, a tam mi zajeło to dokładnie trzy linijki kodu:

    No tak, bascom :) Myślałem, że C..
  • #7
    markovip
    Level 34  
    Jeżeli lampa LED jest dobrej jakości, to ma prawie nieograniczoną ilość załączania.
    CLF niestety mają ograniczoną liczbę załączania, większości jedną część z tego co podaje producent, a ponowne włączenie musi nastąpić po ostygnięciu lampy - czyli 15, horror.

    Triakowi nie potrzebny jest układ ZCD, żeby działał jak "pstryczek".

    Pozdrawiam
  • #8
    mateusz77892
    Level 17  
    Dlaczego na filmie na pilocie są 3 przyciski a Ty sterujesz wszystkim tylko jednym??
    Czy pozostałe przyciski nr. 1 i 2 do czegoś służą? (bo nie zaprezentowałeś ich działania na filmie) czy są to po prostu przyciski do innych lamp w mieszkaniu co by było bardzo fajną zaletą.
    Bardzo fajne wykonanie. :D
  • #9
    Demmo
    Level 16  
    markovip wrote:
    Triakowi nie potrzebny jest układ ZCD, żeby działał jak "pstryczek".

    No w sumie nie jest potrzebny. Jak załączasz światło zwykłym pstryczkiem, to przecież nie celujesz w zero napięcia ;)
    Choć oczywiście ZCD w optotriaku w takim przypadku nie zaszkodzi.

    mateusz77892 wrote:
    Dlaczego na filmie na pilocie są 3 przyciski a Ty sterujesz wszystkim tylko jednym??
    Czy pozostałe przyciski nr. 1 i 2 do czegoś służą? (bo nie zaprezentowałeś ich działania na filmie) czy są to po prostu przyciski do innych lamp w mieszkaniu co by było bardzo fajną zaletą.

    Z tego co kojarzę takie gotowe zestawy składały się z 3 gniazdek sterowanych i jednego pilota. Pozostałe przyciski będą więc do innych gniazdek (takich jak widoczne białe gniazdo pod LampSTERem).

    Swoją drogą w gniazdku robi się niezłe odstające "combo" - dobrze mieć jakiś fotel, żeby to zasłonić :spoko:
  • #10
    Duch__
    Level 31  
    mateusz77892 wrote:
    Dlaczego na filmie na pilocie są 3 przyciski a Ty sterujesz wszystkim tylko jednym??
    Czy pozostałe przyciski nr. 1 i 2 do czegoś służą? (bo nie zaprezentowałeś ich działania na filmie) czy są to po prostu przyciski do innych lamp w mieszkaniu co by było bardzo fajną zaletą.


    Demmo wrote:
    Z tego co kojarzę takie gotowe zestawy składały się z 3 gniazdek sterowanych i jednego pilota. Pozostałe przyciski będą więc do innych gniazdek (takich jak widoczne białe gniazdo pod LampSTERem).

    Swoją drogą w gniazdku robi się niezłe odstające "combo" - dobrze mieć jakiś fotel, żeby to zasłonić :spoko:


    Tak jak napisał kolega Demmo posiadam zestaw gniazdek na 433MHz (w moim wypadku trzy sztuki + pilot). Na filmie pokazałem dorobionego pilota który wykonuje te same zadania co oryginalny z tym że w tym dorobionym jednym przyciskiem się zapala i gasi dane gniazdko, a w oryginalnym mam osobno przyciski do zapalania i gaszenia danego modułu. Pozostałe 2 przyciski (numer 1 i numer 3) sterują innymi gniazdkami. Temat nie dotyczy pilota ani gniazdek, tylko modułu sterowania światłem.
    Dodam tylko że omawiany w temacie sterownik po niewielkich przeróbkach (miniaturyzacja) można by zastosować do sterowania np. lampą sufitową gdzie posiadamy instalację 2 żyłową, a chcemy osobno zapalać 2 punkty świetlne :)

    Co do "combo" to nie mnie to osobiście nie przeszkadza.
  • #11
    siejacy_zamet
    Level 12  
    Przydatna rzecz, samemu często mi się nie chce drałować, żeby wyłączyć światło, gdy leżę już w łóżku.

    Co do zasilania - rzeczywiście transformator jest duży. Można by go zastąpić prostym układem do obniżania napięcia sieciowego na zasadzie dzielnika napięć (z kondensatorem), bądź jakąś przetwornicą (np. LNK306 od Power Integrations). Izolacja od napięcia sieciowego nie jest konieczna, gdyż użytkownik (nie mylić z konstruktorem) nigdy nie majstruje przy tej elektronice.

    Co do triaków - sugerowałbym ich użycie zamiast przekaźników. Na pewno są bardziej żywotne, mniejsze i niehałaśliwe. Używanie w tym miejscu optotriaków z ZCD sterujących właściwymi triakami uważam za przerost formy nad treścią.

    Co do EEPROMU - czy zapisujesz konfigurację zawsze pod tym samym adresem? Jeśli tak, to pewnie po baaaardzo długim czasie go zajeździsz. Często stosowanym rozwiązaniem jest podział EEPROMu na banki i zapisywanie za każdym razem w innym z nich. Wtedy obciążenie rozkłada się bardziej równomiernie po całym obszarze pamięci.

    Warto się też zainteresować tematem tzw. home automation. Bardzo tani układzik pewien konstruktor prezentuje tutaj:
    Link
  • #12
    Duch__
    Level 31  
    siejacy_zamet wrote:
    Co do EEPROMU - czy zapisujesz konfigurację zawsze pod tym samym adresem? Jeśli tak, to pewnie po baaaardzo długim czasie go zajeździsz. Często stosowanym rozwiązaniem jest podział EEPROMu na banki i zapisywanie za każdym razem w innym z nich. Wtedy obciążenie rozkłada się bardziej równomiernie po całym obszarze pamięci.


    Przyznaje, myślałem nad tym, ale ostatecznie zrezygnowałem, po zadaniu se pytania -> "po co?". Z reguły używam tylko dolnej lampy w czasie czytania prasy. Górnego już rzadziej. W związku z tym że mam tylko trzy tryby świecenia, mam 33% szans na to że wyłączając lampkę po kilkukrotnym przełączeniu trafię ponownie na poprzedni tryb świecenia i tym samym nie nadpiszę pamięci EEPROM. Gorzej by było jakbym miał powiedzmy 10 trybów (10% szans na trafienie) czy też 100 (1%) to wtedy warto by myśleć o wspomnianych przez kolegę bankach pamięci.

    Ale jeśli już o tym mowa. Myślałem żeby to zrobić w następujący sposób:

    Mam przykładowo 10 komórek pamięci.
    Procesor po starcie "skanuje" komórki pamięci od 1 do 10 i szuka komórki która ma wartość inną od 1,2,3 (zapisane tryby). Zapamiętuje adres pierwszej wolnej komórki i odczytuje ostatni tryb z komórki poprzedniej. Jeśli wolna jest E7 to odczytuje E6, jeśli wolna jest E10 to odczytuje E9. W momęcie kiedy E10 jest zapisane (ostatnia komórka) to odczytuje E10 jako ostatni tryb, a następnie zapisuje wartość dowolną (coś w rodzaju zerowania), ale inną od 1,2,3 we wszystkich komórkach i ustala adres kolejnego zapisu jako E1.

    Ja tak to widzę. Jest prostszy sposób? A co zrobić (pytam na przyszłość) jeśli w każdą z komórek pamięci musimy zapisać wartość od 0 do 255? Jak określić która komórka jest następna do zapisu? Stworzyć kolejny bank w którym będę przechowywał informacje o wolnych komórkach?
  • #13
    siejacy_zamet
    Level 12  
    Rozwiązałem to kiedyś w ten sposób:
    musiałem zapisywać w EEPROMie 9-bajtową konfigurację po każdej jej zmianie, na wypadek gdyby urządzenie zostało wyłączne / zresetowane. Podzieliłem więc cały obszar pamięci na 11-bajtowe banki, które zawierały 1 bajt nagłówka, 9 bajtów danych i 1 bajt sumy kontrolnej. Przy zapisie kolejnego banku nagłówek (jakieś A5 albo inna bzdura) był kasowany. Przy zapisie procesor szukał kolejnego wolnego banku, zapamiętywał konfigurację i kasował poprzedni nagłówek. Dzięki temu istniał zawsze dokładnie jeden zestaw danych. Suma kontrolna zabezpieczała przed błędami - gdyby któraś komórka danego banku uległa uszkodzeniu, to konfiguracja była zachowywana w następnym banku.

    W wymagających aplikacjach składowane dane często się dubluje dla bezpieczeństwa.

    Oczywiście - w Twoim urządzeniu byłby to przerost formy nad treścią. Ale wspomniałem o takim rozwiązaniu, gdybyś kiedyś musiał się zmierzyć z podobnym problemem.
  • #14
    Demmo
    Level 16  
    siejacy_zamet wrote:
    Używanie w tym miejscu optotriaków z ZCD sterujących właściwymi triakami uważam za przerost formy nad treścią.

    siejacy_zamet wrote:
    Oczywiście - w Twoim urządzeniu byłby to przerost formy nad treścią. Ale wspomniałem o takim rozwiązaniu, gdybyś kiedyś musiał się zmierzyć z podobnym problemem.

    Hehe, uczepiliście się tego ZCD. Ustaliliśmy już, że nie jest wymagane, ale i nic nie zaszkodzi jego obecność. Nie ma praktycznie różnicy w cenie zależnej od tego czy optotriak ma ZCD czy nie, więc nie wiem o co halo i czemu każdy robi 'echo' tego zagadnienia :P
    A układ jest na ten moment separowany od 230V, więc optotriak musi być.. a już niech sobie kolega kupi jaki mu się podoba, bo nie ma to tutaj znaczenia.. co jak przypomnę, już ustaliliśmy, napisaliśmy i.. kropka. :P

    Swoją drogą negujesz jeden przerost formy nad treścią, a jednocześnie proponujesz drugi, chyba nawet większego kalibru ;) Ale to może sprawa nick'a... ;)
  • #15
    gomera
    Level 12  
    Można zastosować pamięci FRAM zamiast EEPROM
    i problem z cykli zapisu znika.
    Minus to ze całe urządzenie trzeba przeprojektować i koszt jest większy.
  • #16
    Demmo
    Level 16  
    Problem w tym, że EEPROM masz w już procku, a FRAM trzeba stosować jako komponent zewnętrzny. No i niestety jest stosunkowo drogi.. więc nie wiem czy nie lepiej w razie czego wrzucić nieulotny SRAM (w Polsce dziwnie to brzmi :D)
  • #17
    Duch__
    Level 31  
    Jejku po co? Powiedzcie mi po co dodatkowe pamięci? Przecież po to zostawiłem sobie gniazdo programowania że jak mi szlak trafi komórkę eeprom to zmienię tylko adres komórki do zapisu na inny. A pozatym jeśli komórka nie będzie trzymać to jakie znaczenie ma po 2 dniach nieużywania lampy czy 2 dni temu ostatni tryb był ustawiony na 1 czy na 3? Włączam i wyłączam i ustalam sobie tryb na taki który chce. Równie dobrze mogło by to działać bez EEPROM i po każdym załączeniu wybierać tryb świecenia od nowa z ustawieniem jako pierwszym tego z którego najczęściej korzystamy.

    Ehhh jest zapis do eeprom to beee, nie było by zapisu do eeprom to też beee :|
  • #18
    Demmo
    Level 16  
    Nikt nie mówi, że beee.. ;) Po prostu kolega pewnie myślał, że masz zewnętrzny EEPROM i proponował podmianę na FRAM. A dalej już wiadomo..

    BTW nie ma się co oburzać, po pewnym czasie zwykle proponowane są już cuda na kiju, elektrownia atomowa z bezprzewodowym przesyłem zasilania dla LEDa w breloczku z kluczami :D
    Po prostu jak jest coś ciekawego, to korzystać, a jak nie, to się ładnie uśmiechać.. i olać :D
  • #19
    Duch__
    Level 31  
    Demmo wrote:
    Po prostu kolega pewnie myślał, że masz zewnętrzny EEPROM i proponował podmianę na FRAM.


    Tak to jest jak nikt nie poprosi o schemat...
  • #20
    Matejkos
    Level 20  
    Jeżeli kolega zapisuje tylko jedną komórkę w pamięci to mogę podsunąć jeszcze jeden sposób, który kiedyś się komuś może przydać a mianowicie wykorzystane jest pewnie tylko kilka wartości z przedziału 0-255 więc można ustawić jakąś wartość komórki pustej a następnie odczytywać ostatnią zapisaną lub zapisywać pierwszą nie zapisaną komórkę kiedy się skończą kasujemy do ustawionej wartości całą przestrzeń i możemy zacząć wszystko od nowa. W ten oto prosty lecz nie optymalny czasowo sposób może taki eeprom zapisać na prawdę dużo razy.

    Autorowi gratuluje wykonania.

    Pozdrawiam Matejkos