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

[ATMEGA][BASCOM] Wielokanałowy ściemniacz oświetlenia-wyłącz

06 Lut 2010 17:01 5234 16
  • Poziom 24  
    Witam
    Przymierzam się do kolejnego etapu(Funkcji) w moim systemie. Otóż mam zamiar zrobić ściemniacz oświetlenia sterowany z potu Atmegi. Nie ma być to jakiś zwykły ściemniacz lecz wielokanałowy (4 lub 8 ) , i to sterowany przez RS485. Może przedstawię to dokładniej.
    Otóż w kilku pokojach zamiast standardowych włączników do włączania światła będą "nowe" włączniki zrealizowane jako wyświetlacz z panelem dotykowym (pewnie 128*64 - bo nie widziałem 64*64) . Będzie można płynnie zmieniać natężenie oświetlenia w pokoju. Ale aby taki włącznik miał sens musi być kilku-kanałowy (4). Dodatkowo każdy taki włącznik komunikował by się z centralką która jest połączona z komputerem. Chodzi w tym o to że z poziomu PC będę miał dostęp do każdego włącznika poprzez RS485 i będę mógł ustawiać "progi" jasności oświetlenia minimalne i maksymalne (chodzi tu głównie o moje dzieci i ich manię bawienia się ściemniaczem oświetlenia i zabawę często w półmroku itp.
    Widziałem na forum całą masę różnej maści regulatorów i włączników oświetlenia ale jak zrealizować to przy użyciu jak najmniejszej ilości elementów. Czytałem o detekcji zera itp.
    Czy aby sterować jasnością (oczywiście bawiłem się dawno temu tyrystorami i triakami i często miałem efekty kiepskiej regulacji bądź migotania żarówki. Chciałbym moc całkowicie płynnie regulować jasność programowo) , mogę poprzez port procesora (zapewne tylko piny obsługujące PWM) sterować transoptorem i potem triakiem czy lepiej zastosować jakiś bardziej wyrafinowany sposób i wyposażyć taki układ w jakiś dodatkowy dedykowany tym celom układ.

    Proszę o jakieś sugestie.
  • OptexOptex
  • Pomocny post
    Poziom 42  
    Wykorzystanie detekcji ZERA sieci oraz sterowanie triakiem za pomocą czy to PWM'a czy krótkich impulsów załączających triaka w odpowiednim kącie sinusoidy w celu płynnej regulacji mocy świecenia żarówki to już jest najbardziej wyrafinowany sposób ;) I tak to się po prostu robi.
  • Poziom 14  
    8 kanałów sterowanych przez ATMEGA ? chyba do zrobienia, choć wszystko zależy, z jakim skokiem chcesz sterować mocą.
  • OptexOptex
  • Poziom 24  
    Przykład mirekk36 co do sterowania triaka impulsami to ciekawy pomysł. Ciekawe jak wypadnie to w testach przy kilku kanałach.
    Apropo . . jaki triak byście zaproponowali (moc żarówki max 100W) , sprawdzony ?
    Orientujesz się mirekk36 jaką częstotliwością musiałbym w przybliżeniu sterować takim triakiem? I jak wygląda sprawa od strony elektrycznej. Czy wyjście z transoptora do triaka będzie musiało zawierać kondensator który wyeliminuje migotanie żarówki? Czy takiego efektu nie będzie. Pytam gdyż nigdy nie sterowałem tym sposobem triaka.

    Co do skoku sterowania jasnością to ma to być płynne. Skok najlepiej tak jak steruje się PWM-em czyli 255 pozycji. Na LCD będę miał (a właściwie już mam w innym urządzeniu) taki pasek coś na styl I-PHONE-a którym to mogę przesuwając palcem ustawiać jasność. W taki sposób zmieniam sobie jasność podświetlenia LCD i działa świetnie.
  • Pomocny post
    Poziom 43  
    Tosz to zwykłe sterowanie fazowe. Czyli 100Hz.
    Pomiędzy transoptorem a tniakiem ma nic nie być. Zresztą nic by to nie dało (ten kondensator). Migotania żarówki nie będzie.
    Ale tu uwaga: zdziała to tylko z klasycznymi żarówkami. Żarówki świetlówkowe nie będą zachwycone takim sterowaniem.
    Triak: BT136.

    PS. Współczuję Twoim dzieciom ;)
  • Poziom 24  
    :) Co do dzieci to ma być pełna kontrola. Prawie dyktatura.
    Świetlówek nie używam i jestem ich wielkim przeciwnikiem. Co to za światło z takich świetlówek. Nie dość że męczy oczy, świeci do d... to jeszcze nie są takie tanie. Co prawda są "oszczędne" ale nowe "zwykłe" żarówki ale z żarnikiem halogenowym pobierają z 20-30% mniej energii od zwykłej żarówki a świecą rewelacyjnie i pozwalają ładnie sterować sobą ściemniaczem.
  • Pomocny post
    Poziom 21  
    Halogeny też będą zabronione ??

    a co do projektu, właśnie zakończyłem projekt na uczelnie gdzie wykorzystuję sterowanie halogenem.

    jest to zrealizowane w ten sposób, że mam 100 poziomów jasności (0-100%). Sterowanie fazowe oczywiście i triak załączany impulsem.

    Logicznie, program działa tak:
    1) system detekcji zera (transoptor) wykrywa moment w którym sinusoida przekroczyła 0, -> podawany jest sygnał niski na INT0
    2) procedura obsługi przerwania uruchamia obsługę timer'a (wpisując wartość MAX jako stan, następne zliczenie wygeneruje przerwanie od przepełnienia)
    3) w przerwaniu sprawdzam, na ile % chce zapalić żarówkę (im więcej % tym wcześniej muszę uruchomić triaka), inkrementuję jakąś zmienna która oznacza ten delay, jeżeli jest równy zadanemu to wysyłam impuls
    4) wyłączam timer, niepotrzebny do następnego przejścia przez zero

    timer jest tak ustawiony,
    aby przerwanie było generowane co 100us, w ten sposób mam możliwość ustawienia 100 poziomów, bo poł okres sinusoidy trwa 10ms, wiec 10ms / 100 = 100us.
    W przerwaniu mam formułkę podobną do tej (teoretycznej):
    if( temp_delay++ >= (100 - x%)) triac_pulse();

    to były założenia, a w praktyce, jasność żarówki przy 20% jest na tyle mała (tej mojej testowej na 12V), że tj dla mnie nowy poziom 1%, podobnie na górze skali, powyżej 90% zapalam żarówkę na stałe.

    po prostu zrobiłem sobie skalowanie z zakresu 1-90% na 20%-90%, 0% nie podaje sygnału, a powyżej 90% triak podaje stały sygnał a nie impuls
  • Poziom 24  
    A program pisałeś w Bascomie? Jeśli tak to może udostępnił byś fragment .
    Generalnie rozumiem jak logicznie powinien działać ten program ale zanim zacznę go na poważnie pisać będę musiał sobie zmontować taki prowizoryczny układ aby na nim poćwiczyć a dopiero potem wezmę się za projektowanie PCB.
    Właśnie bardzo wkurzające jest to że jak już zaprojektuję płytkę to znowu muszę czekać aż mi firma (Satland Prototype) wykona ją , a to trwa od 10-14 dni! ://
    Teraz za płytkę do czujników ruchu i dymu o wielkości 110*126mm z metalizacją ,Hal i maską wycenili na 120PLN!!!
    A nie znam żadnej innej (TANIEJ) firmy jaka zrobi mi PCB z metalizacją otworów w normalnym czasie.
  • Pomocny post
    Użytkownik usunął konto  
  • Pomocny post
    Poziom 21  
    płynny efekt też mam, może to nie jest najlepiej wykonane, ale żarówka ładnie się rozjaśnia i ściemnia i oto chodziło (a prosto wykonane), mnie nie interesował pobór mocy czy jakaś dokładna regulacja obrotów silnika, ale efekt wizualny, a wiemy, że ludzie oko postrzega światło silnie nieliniowo. Ten motyw który zastosowałem w zupełności wystarcza na moje potrzeby, aczkolwiek cenna uwaga z Twojej strony, będę pamiętał przy następnych projektach :)

    a program pisałem w C, też proponuję Ci się przesiąść bo w miare jak będziesz dodawać nowe funkcje, możliwości programu, możesz sie lekko pogubić jak za pół roku otworzysz kod, BASCOM znany jest z tego, że wykorzystuje więcej pamięci i niema dobrej kontroli na czasem wykonania instrukcji (pomijam wstawki assemblera), zwłaszcza przy dużych, zawiłych programach, bo przy prostych to sie nadaje, na jakieś testy (jak kto woli)
  • Pomocny post
    Poziom 42  
    atom1477 napisał:
    Akurat w BASCOMie jest większa kontrola nad czasem wykonywania się instrukcji niż w C.


    hyhyhy a to miał być żart ? ;) czy na poważnie ?

    bo jeśli na poważnie to:

    Jak można w ogóle porównywać instrukcje Bascoma i C ???

    czy np można w Bascomie zapisać coś takiego:

    Code:
    a = ((a+b)/c)+mul(e,d) 


    natomiast czy np w C można napisać coś takiego:

    Code:
    Getrc5(Address, Command)


    no przecież nie ;)

    Pozad tym czy można w Bascomie w tak ładny sposób podglądać wygenerowany kod w asm żeby sobie właśnie porównywać fragmenty kodu i kontrolować czas wykonywania ???

    Czy kolega wie ile zajmuje "gołe" przerwanie Bascoma (jego prolog i epilog) w porównaniu do C ???? ...... a właśnie dzięki temu napisać w C wielokanałowy ściemniacz na 230V to mega pikuś natomiast w Bascomie dzięki tym i wielu innym ograniczeniom to już trzeba się ostro nagimnastykować i mnóstwo pamięci programu stracić żeby zrobić choć kilka kanałów i to nie zawsze wyjdzie tzn może nie każdemu.

    Oczywiście moja wypowiedź nie ma dowodzić, że Bascom jest gorszy czy lepszy od C - tylko tego, że praktycznie nie można tych języków porównywać a każdy ma swoje wady i zalety - dlatego trzeba wiedzieć do czego i kiedy można używać Bascoma a kiedy ew warto siegnąć po C
  • Pomocny post
    Poziom 43  
    Ja na poważnie. Ale miałem na myśli coś innego. Nie kontrolę czasu ale stałość czasu.
    C nie gwarantuje wygenerowania konkretnego kodu a jedynie kodu o konkretnej funkcjonalności. Co z miejsca zaprzecza temu że czas wykonywania będzie stały.
    BASCOM gwarantuje wygenerowanie konkretnego kodu. Co oczywiście jest nieoptymalne, ale gwarantuje określony czas wykonywania danego fragmentu kodu.
    W C zmienisz optymalizację - zmieni sie cza. Zmienisz zmienną na volatile – zmieni się czas. Dodasz trochę procedur - i kto wie czy czas wykonywania się innych procedur nie ulegnie zmianie bo kompilator coś tam zauważy że można zoptymalizować wspólnie. Trudno to nazwać kontrolą czasu.
    BASCOM tak nie robi. Wszystko zawsze będzie kompilowane w taki sam sposób.
    Co do oceny czasu wykonywania. W C musowo obejrzeć program w assemblerze i policzyć cykle. W BASCOMie nie musowo bo od razu widać ile coś zajmuje czasu (w symulacji programowej).
    Oczywiście nie mówię że BASCOM jest najwspanialszy na świecie. Chodzi mi tylko o tą stałość czasu, która to może być zaletą. Tak jak zaletą malucha jest to że zajmuje mało miejsca. A Mercedes nie. Rozumiemy się?
  • Poziom 24  
    Mam teraz już teoretyczne pojęcie jak ma to działać w Bascomie :) .
    Jutro postaram się zakupić potrzebne podzespoły i zmontuję 3-4 konałowy prototyp i zacznę się tym bawić. Bardzo nie lubię grzebać przy napięciu sieci i muszę jeszcze większą uwagę przyłożyć do tego aby dzieci mi się czasem nie wpakowały w taki układ. Ale w ciągu 2-3 dni powinienem napisać to co zamierzam. Kod wkleję w tym temacie i powiecie mi co o tym Myślicie.
    Reasumując jeśli zamierzam sterować triakiem impulsami to mogę użyć do tego celu w sumie każdego pinu procka i zarazem mogę zrobić tyle kanałów ile jest wolnych pinów. Wiem ,wiem że to już przesada i pewnie technicznie bardzo utrudnione ale na 4 kanały powinno ładnie działać.
  • Poziom 18  
    adambehnke napisał:
    A program pisałeś w Bascomie? Jeśli tak to może udostępnił byś fragment .
    Generalnie rozumiem jak logicznie powinien działać ten program ale zanim zacznę go na poważnie pisać będę musiał sobie zmontować taki prowizoryczny układ aby na nim poćwiczyć a dopiero potem wezmę się za projektowanie PCB.
    Właśnie bardzo wkurzające jest to że jak już zaprojektuję płytkę to znowu muszę czekać aż mi firma (Satland Prototype) wykona ją , a to trwa od 10-14 dni! ://
    Teraz za płytkę do czujników ruchu i dymu o wielkości 110*126mm z metalizacją ,Hal i maską wycenili na 120PLN!!!
    A nie znam żadnej innej (TANIEJ) firmy jaka zrobi mi PCB z metalizacją otworów w normalnym czasie.


    Merkar. Wykonanie 5 szt. płytek 9x15 cm wycenili na 35,90 zł za sztukę plus 58 zł za uruchomienie produkcji.