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

Sterowanie triakiem BT138 z Moc3023 z atmegi

14 Mar 2016 17:24 2748 10
  • Poziom 25  
    Witam, zrobiłem sobie pewne urządzenie i tam z atmegi chcę sterować jasnością żarówki 100W. Traka wsadziłem Bt138 sterowanego z moc3023, a ten z atmegi.
    Działa to, ale niestabilnie. Powyżej poboru 80w mocy przez żarówkę, po kilku minutach słychać jakieś trzaski jakby iskrzenie styków i w końcu żarówka gaśnie. Po chwili jak znów ją włączę to to samo. Gdy w programie wyjście uC które jest połączone z moc po prostu włączę na stałe, to żarówka świeci pełną jasnością, ale po kilku minutach sytuacja się powtarza. Gdy podam na moc 5V zworką z L7805 to też podobnie, jednak świeciła żarówka 10 min i tylko trzeszczało trochę, ale nie zgasła.
    Poniżej schemat, bo mam wrażenie to to tu coś kuleje, a nie w programie.
    Sterowanie triakiem BT138 z Moc3023 z atmegi
    Przedwczoraj zmieniłem rezystory, bo ten na wejściu moc był 1k, a ten przed triakiem 470k. Teraz jest jakby lepiej, ale wciąż nie tak jak powinno.
    Co jest w schemacie źle? Obciążenie rezystancyjne w postaci żarówki, więc taka prosta aplikacja myślałem, że będzie działać.
  • Poziom 35  
    Witam
    noel200 napisał:
    po kilku minutach słychać jakieś trzaski jakby iskrzenie styków i w końcu żarówka gaśnie.

    Sprawdź połączenia, bo pewnie gdzieś nie łączy dobrze. Może w oprawce żarówki? Nie wiem jak to masz połączone. Lutowane czy skręcane?
    Pozdrawiam
  • Poziom 29  
    Skoro jest już detekcja zera podawana na mikrokontroler to
    druga detekcja na MOC3023 jest już zbędna ,a nawet szkodliwa.
    Wymień tego optotriaka na model bez detekcji
  • Poziom 25  
    anders11 napisał:
    Skoro jest już detekcja zera podawana na mikrokontroler to
    druga detekcja na MOC3023 jest już zbędna ,a nawet szkodliwa.
    Wymień tego optotriaka na model bez detekcji

    Znaczy... bo nie kumam. Tlp504 "mówi" dla uC kiedy sinus przechodzi przez zero, później w programie jest odmierzony odpowiedni odcinek czasu i podaję sygnał na MOC. Po odmierzeniu 20us przestaję wysyłać sygnał na moc, a ten przy przechodzeniu prze zero wyłącza triaka. Czy nie tak to działa? Jeżeli nie będę miał sygnału z Tlp to skąd wiedzieć kiedy załączyć Moc?
    Nie chodzi tylko o włącz/wyłącz, ale także o sterowanie jasnością.

    Dodano po 11 [minuty]:

    mariann napisał:
    Sprawdź połączenia, bo pewnie gdzieś nie łączy dobrze. Może w oprawce żarówki? Nie wiem jak to masz połączone. Lutowane czy skręcane?

    Triak i moc na płytce lutowane, a reszta połączeń przewodami z tulejkami i zaciśnięta porządnie. Jestem prawie pewien, że ten dźwięk jest z triaka.
    W trakcie gdy to się zaczyna dziać triak i moc są praktycznie zupełnie zimne.
  • Pomocny post
    Poziom 29  
    noel200 napisał:
    Jeżeli nie będę miał sygnału z Tlp to skąd wiedzieć kiedy załączyć Moc?


    TLP504 zostaw , wymień tego MOC-a na takiego bez detekcji
    To detekcja z TLP 504,podana na mikrokontroler określa moment włączania a wyłączanie
    na triaku przebiega automatycznie w zerze , tzn gdy zabraknie sygnału sterującego
    to triak i tak będzie przewodził aż do zaniku napięcia na elektrodach czyli przechodzenia przez zero
    Natomiast załączanie sterowane dwoma detektorami ,które mogą mieć przesunięcia fazowe
    będzie powodowało błędne działanie układu
  • Poziom 25  
    Aha, czyli to triak się automatycznie wyłącza w zerze. A ja myślałem, że to moc tak działa.
    A na jaki np. moc zmienić? Mam jeszcze MOC3041. Pasowałby?
  • Poziom 29  
    Np MOC3020 nie posiada sensora przejścia przez zero
    Podany przez Ciebie MOC3041 posiada sensor więc się nie nadaje
  • Poziom 25  
    W ds moc3020 jedyna różnica jaką znalazłem pomiędzy obecnym moc3023 to prąd diody. W ds moc3041 jest napisane "zero cross". Przy 3023 tego nie ma. Co to więc oznacza?
  • Pomocny post
    Poziom 38  
    "Zero cross" - detekcja przejścia przez zero - optotriak włączy się przy przejściu przez zero.
    Tak na marginesie - jeśli sterujesz fazowo obciążenie rezystancyjne to dołóż dławik w szereg, bo upalisz triaka (di/dt).
  • Poziom 19  
    Coś Panowie wpuszczacie kol.noel200 w maliny. MOC3023 podobnie jak 3020,3021 i 3022 nie ma detekcji przejścia przez zero. Tak więc jak najbardziej do sterowania fazowego się nada. Przy obciążeniu rezystancyjnym żadne gasiki raczej nie są potrzebne. I pytanie do kol.Loker. Gdzie znajdę informację o konieczności zastosowania dławika przy obciążeniu rezystancyjnym? Która strona DS'a i jak powinien być dobierany?
  • Poziom 25  
    perlon napisał:
    MOC3023 podobnie jak 3020,3021 i 3022 nie ma detekcji przejścia przez zero.

    No właśnie też mi się tak wydawało. Czytałem notę trzy razy, ale nic nie znalazłem.
    perlon napisał:
    Przy obciążeniu rezystancyjnym żadne gasiki raczej nie są potrzebne.

    Tu też tak myślałem. Aplikację zrobiłem na podstawie ds na obciążenie rezystancyjne, a triaka dobrałem tak by wytrzymał prąd zimnej 200W żarówki.
    Kto wie, może jednak są jakieś nieznane mi zasady, które warto stosować, a które nie ją jasno opisane. W każdym razie dalej testuję.
    Wczoraj podłączyłem z zewnętrznego zasilacza 5V na bramkę triaka. Tak samo po około 20minutach żarówka zaczęła mrugać, aż zgasła. Włączanie i wyłączanie 5V nie dawało rezultatu, ale jak ruszyłem oprawką żarówki to się zapaliła. Zmieniłem więc na inną i było dobrze. Dziś tamtą oprawkę połączyłem na krótko, wymieniłem przewody i testuję, ale pod wyzwalaniem z uC, tylko kod zmieniłem, tak by świeciła cały czas na 100%.

    Dodano po 2 [godziny] 13 [minuty]:

    Testuję dalej. Jakiś kwiatek mi wyszedł. Teraz już żarówka świeci stabilnie. Chyba ten adapter na żarówkę nie łączył.
    W każdym razie dobrze się składa, że moderator przeniósł temat do programowania. Mam taką część kodu:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Przerwanie INT0 to z układu detekcji zera sieci. Pojawia się ono minimalnie przed zerem, więc na początek wyłączam triaka, zwiększam pewien licznik (czyli 100 razy na sekundę), dziele na 1200 i wynika z tego, że zmienna "jasność1" osiągnie wartość 100 po 1200sekund czyli 20 minutach. Owa zmienna "jasnosć1" decyduje która wartość tablicy zostanie pobrana i wstawiona do Timera1. Ten odmierzy wartość czasu za załącza triaka.
    Kwiatek polega na tym, że jeżeli podstawię ręcznie wartość 49 do zmiennej "jasnosć1" z tablicy powinna zostać pobrana wartość 15562 a jest pobrana wartość 2338 czyli ostatnia. Co jest nie tak, bo nie rozumiem nic z tego.
    Gdy zmienię program, tak, że linijka:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    ma postać taką:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    To układ działa jak należy. Zmienna "jasność1" oczywiście osiąga max wartość 49, ale żarówka osiąga pełną jasność, więc zostaje z tablicy pobrany element nr.99. Pytanie dlaczego?

    Dodano po 2 [godziny] 51 [minuty]:

    Znalazłem problem. Wcześniej zmienna "licznik_jasnosć" pełniła trochę inną funkcję i była zadeklarowana jako long czyli 4-ro bajtowa. Funkcja "Load Timer1 , licznik_jasnosc" ładowała więc do timera jakąś kosmiczną 10 cyfrową liczbę. Zmiana na odpowiadający tablicy i timerowi 1 typ zmiennej (word) załatwiło sprawę.
    Wcześniej jednk mostek robiłem pomiędzy +5V a wejście moc3023 i też nie świeciło dłużej niż 20 minut, więc problem miał najwyraźniej i podłoże sprzętowe (nie montaż, bo to nawalała chińska przejściówka na gwint E27) i programowe.
    Temat więc rozwiązany.
    Pozdrawiam i dziękuję wszystkim za pomoc.