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

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

adambehnke 06 Feb 2010 17:01 5399 16
Altium Designer Computer Controls
  • #1
    adambehnke
    Level 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.
  • Altium Designer Computer Controls
  • Helpful post
    #2
    mirekk36
    Level 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.
  • #3
    leon1313
    Level 14  
    8 kanałów sterowanych przez ATMEGA ? chyba do zrobienia, choć wszystko zależy, z jakim skokiem chcesz sterować mocą.
  • #4
    adambehnke
    Level 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.
  • Altium Designer Computer Controls
  • Helpful post
    #5
    atom1477
    Level 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 ;)
  • #6
    adambehnke
    Level 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.
  • Helpful post
    #7
    atom1477
    Level 43  
    Może i nie chcesz ale będziesz musiał bo Związek Europejski Cię zmusi.
    Chyba że już robisz zapasy żarówek.
  • Helpful post
    #8
    acid12
    Level 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
  • #9
    adambehnke
    Level 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.
  • Helpful post
    #10
    User removed account
    User removed account  
  • Helpful post
    #11
    acid12
    Level 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)
  • Helpful post
    #12
    atom1477
    Level 43  
    Akurat w BASCOMie jest większa kontrola nad czasem wykonywania się instrukcji niż w C.
  • Helpful post
    #13
    mirekk36
    Level 42  
    atom1477 wrote:
    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
  • Helpful post
    #14
    atom1477
    Level 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ę?
  • #15
    adambehnke
    Level 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ć.
  • #16
    atom1477
    Level 43  
    Mi się wydaje że nawet 20 kanałów spokojnie pójdzie. Ale raczej przerwanie to w assemblerze by musiało być.
  • #17
    krzemowy
    Level 19  
    adambehnke wrote:
    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.