logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATTINY2313 - Dodatkowy LED sygnalizujący stan wejścia

JarekPrzybyl 25 Maj 2013 00:43 2787 18
  • #1 12342698
    JarekPrzybyl
    Poziom 15  
    Taki mam problem: jest sobie wejście procesora, podciągnięte wewnętrznie do zasilania. Owo wejście jest zwierane do masy transoptorem. Do tego momentu jest wszystko perfekt, działa jak powinno. Potrzebna mi jednak była dodatkowa wizualizacja stanu tego wejścia LEDem. I tu zaczynają się schody...

    Ponieważ wolnych portów (żeby sygnalizację zrobić z poziomu proca) trochę mi brakuje, wymyśliłem rzecz wydawało się oczywistą: równolegle do wejścia procesora dorzuciłem LEDa z opornikiem podwieszonego do zasilania, tak, żeby transoptor zwierał do masy i tego LEDa i wejście procesora. Wystarczy mam nadzieję taki opis? Czy schemat dać?
    Niestety, w praktyce okazało się, że rzecz działa przedziwnie. Bez LEDa napięcie na wejściu portu wynosi 5V w stanie spoczynku (bo podciąga wewnętrzny opornik), po puszczeniu nawet 1mA przez transoptor ładnie spada poniżej 1V, procesor reaguje. Z dołączonym LEDem, napięcie na wejściu jest albo 5V w stanie spoczynku, albo przy "włączonym" transoptorze cały czas na poziomie 5V-spadek na LED, czyli nie ma mowy o poprawnym działaniu. Dlaczego? Czemu transoptor tego wszystkiego ładnie nie dowiera do masy? Czy "wzmocnienie" transoptora (SFH610A) jest aż tak małe, że on mimo dużego prądu puszczonego przez jego LEDa (20mA) ma rezystancję C-E większą niż ten mój opornik przy LEDzie? Czy brużdżą jakieś wewnętrzne zabezpieczenia w procku?

    J.
  • Pomocny post
    #2 12343175
    tmf
    VIP Zasłużony dla elektroda
    To co obserwujesz jest zupełnie normalne. Wewnętrzne podciąganie następuje przez opornik rzędu 40 kom, policz sobie jaki byłby na nim spadek napięcia, nawet gdybyc pociągnął tylko 0,1mA. Taki układ nie ma prawa działać. Transoptor też ma pewne CTR i ograniczony prąd kolektora, w związku z tym jego wydajność prądowa też jest niewielka. Żeby to zadziałało musisz dać dodatkowy bufor przed LED, lub wzmocnić sygnał tranzystorem. W praktyce najprostszym rozwiązaniem jest wykorzystanie jakiegoś scalonego bufora w obudowie SOT (pojedynczej bramki logicznej).
  • Pomocny post
    #3 12343247
    excray
    Poziom 41  
    W takim razie leda należy dać wcześniej - przed transoptorem. Szeregowo podłączyć diodę led z diodą transoptora.
  • #4 12343408
    JarekPrzybyl
    Poziom 15  
    Dzieki za odpowiedzi. LED przed transoptorem odpada, za dużo musiałbym w układzie przerabiać. Trochę sobie przeorganizowałem całość i jednak zrobię tą sygnalizację na osobnych portach "odzyskanych" po rezygnacji z zewnętrznego kwarca, przed chwilą w datasheecie doczytałem też, że wyprowadzenie RESET jest też normalnym portem PA.0 (zaskoczony jestem o tyle, że używany przeze mnie Eagle nie pokazuje takiej możliwości, wg niego reset to reset i nic więcej).

    J.
  • #5 12343539
    tmf
    VIP Zasłużony dla elektroda
    Eagle pokazuje to co zdefiniowano w bibliotece. Wykorzystanie reset jako pinu IO jest o tyle niefajne, że potem trzeba programować procesor programatorem wysokonapięciowym, co też musi wytrzymać ukłąd podłączony pod taki odzyskany pin.
  • #6 12343723
    JarekPrzybyl
    Poziom 15  
    Nie no, zgadza się, ale do tej pory takie elementy zdefiniowane w bibliotekach miały opisy nóżek dość wiarygodne. Ale nieważne, masz oczywiście rację, biblioteka eagle nie jest tu żadnym wyznacznikiem, po prostu sugerowałem się nią z rozpędu.

    Reset jako port - możesz coś więcej? Czy jeśli układ podłączony do tego pinu nie będzie w żaden sposób zakłócał pracy programatora (w moim przypadku przeniósłbym na niego ten transoptor, w trakcie programowania on byłby "zamknięty"), to będzie ok? Czy sam fakt wykorzystania pinu reset już powoduje, że programowanie musi być przeprowadzone inaczej? Mój programator to popularny USBAsp.

    J.
  • Pomocny post
    #7 12343771
    tmf
    VIP Zasłużony dla elektroda
    Jeśli masz usbasp to pinu reset nie możesz wykorzystać jako pinu IO - to znaczy możesz, tylko, że po takiej operacji nie będziesz mógł już więcej zaprogramować ten procesor. Aby wykorzystać reset jako zwykły pin IO musisz mieć programator wysokonapięciowy.
    Druga sprawa - ponieważ programator taki w trakcie programowania podaje na pin reset 12V, układy, które do tego pinu są podłączone muszą takie wysokie napięcie tolerować.
  • #8 12343802
    JarekPrzybyl
    Poziom 15  
    ...aha.... Nic, dzięki. Dobrze w takim razie, że poczekałem z programowaniem, bo już miałem napisany soft "zastępczy", wykorzystujący m.in. reset.

    J.
  • #9 12344113
    BlueDraco
    Specjalista - Mikrokontrolery
    Ta dioda LED za transoptorem MUSI zadziałać poprawnie, o ile tylko będzie poprawnie dołączona, czyli pomiędzy wejście uC i plus zasilania, z rezystorem szeregowym ograniczającym prąd do pojedynczych mA. Oczywiście transoptor też trzeba dobrze wysterować, nie na granicy załączenia, czyli dać jakieś min. 5 mA na diodę wejściową.

    Pokaż schemat i sprawdź połączenia, bo wygląda na to, że zrobiłeś jakiś prosty i głupiutki błąd przy dołączaniu tej diody.
  • #10 12344636
    JarekPrzybyl
    Poziom 15  
    Dobra, może jednak dodam schemat:

    ATTINY2313 - Dodatkowy LED sygnalizujący stan wejścia

    I szczerze mówiąc, też dla mnie nie jest do końca jasne, dlaczego to nie działa. Lewy rezystor jest tym wewnętrznym z procesora, ma on 40kohm, tak?
    Prawa gałąź zawiera niebieskiego LEDa i opornik 1kohm (LED jest jasny, a mi zależało na tym, żeby świecił nie za mocno). Zasilanie: 5V. U dołu transoptor.

    Zbudowałem na próbę identyczny układ bez procesora, po prostu ta gałąź led z opornikiem, do tego równolegle rezystor 47k, od spodu transoptor i to działa bezproblemowo, zasilenie LEDa transoptora prądem 5mA otwiera tranzystor na tyle, że w punkcie A napięcie spada do 0,9V. To samo, ale z procesorem - w punkcie A przy 5mA mam 2,6V, dopiero kiedy prąd wejściowy transoptora zwiększam do 25mA, napięcie spada do około 2,4V i to zdaje się jest dla procesora próg przy którym on załapuje zero logiczne. Wartość tego napięcia jest ewidentnie stabilizowana przez LEDa, bo po jego zamianie na czerwony, napięcie w punkcie A podniosło się do wartości 3,4V - akurat: 5V-Uled

    J.
  • #11 12344699
    BlueDraco
    Specjalista - Mikrokontrolery
    No to masz "niedosterowany" transoptor, być może przegrzany egzemplarz. Typowo 5..10 mA wystarcza do skutecznego nasycenia wyjścia przy prądzie kilku mA, czyli takim, jaki masz. A może przez pomyłkę zaprogramowałeś linię jako wyjście i ustawiłeś w stan 1? Sprawdż.
  • #12 12347069
    JarekPrzybyl
    Poziom 15  
    Posiedziałem nad tym trochę i faktycznie winien był transoptor. Wcześniej to wykluczałem, bo mam w układzie trzy takie sekcje i wszystkie trzy się zachowywały tak samo.

    Ciekawa sprawa jednak: po wymianie tych transoptorów na nowe (innego typu nawiasem mówiąc, tamtych już nie miałem, teraz dałem K817P, teoretycznie równoważny) układ zaczął działać bez problemów.
    Zastanawiam się jednak nad samym faktem: transoptory były nowe, nie były to żadne demontaże, myślę o tym, czy sam ich nie zabiłem zbyt prostym ich wyzwalaniem wprost z 230V. Z braku miejsca zrobiłem to tak prosto, jak tylko się dało: led transoptora jest antyrównolegle z diodą 1N4148 i to wszystko w szereg z kondensatorem 100nF i opornikiem 9k (3 x 3k/0,25W). Całość dawała mi około 6mA prądu pobieranego, oporniki się grzały do mniej więcej 50 stopni, wydawało się ok. Nie wiem jednak, może ten rezystor jednak za mały i w momencie załączania, szpilki napięcia jakoś przeciążały tego LEDa?

    J.
  • #13 12347171
    tmf
    VIP Zasłużony dla elektroda
    Niekoniecznie były uszkodzone. CTR dla tych transoptorów waha się w granicach 50-600%. Dla 600% układ działa ok, dla 50% prąd kolektora może być zbyt mały. Dlatego nie do końca zgadzam się z tezą kolegi BlueDraco, że takie połączenie LEDa i transoptora jest ok. Z pewnością zmniejsza ono margines poprawnej pracy transoptora, bo wymaga znacznie większego prądu kolektora. To też z pewnością odbija się na czasach przełączania. Tego typu układ bez problemów możnaby zastosować dla transoptora z wyjściem logicznym, dla zwykłego, gdzie masz tranzystor jak widzisz są problemy. BTW, dlaczego nie wykorzystasz transoptora z wbudowanymi antyrównoległymi diodami? Biorąc też pod uwagę nikły prąd diody (jeśli nie obciążasz zbytnio wyjścia transoptora) wymagany do jego włączenia wydaje się, że układ RC jest na wyrost - dla 230V zwykle stosuję 2*100kom.
  • #14 12347669
    JarekPrzybyl
    Poziom 15  
    Takie transoptory po prostu miałem w "szufladzie", stąd taki wybór.
    2x100k i jak rozumiem, bez pojemności? To da prąd rzędu 1mA, nie za mało?

    Przed chwilą poczytałem na elektrodzie kilka z licznych tematów poświęconych detekcji 230V i widzę, że często są z tym problemy (różne, takich, jak moje nie spotkałem). Aż dziwne swoją drogą, że nikt nie produkuje specjalizowanych układów do takich zastosowań, czegoś w rodzaju transoptora, do którego się podaje bezpośrednio 230V na wejście.

    J.
  • #15 12347742
    LordBlick
    VIP Zasłużony dla elektroda
    JarekPrzybyl napisał:
    Aż dziwne swoją drogą, że nikt nie produkuje specjalizowanych układów do takich zastosowań, czegoś w rodzaju transoptora, do którego się podaje bezpośrednio 230V na wejście.
    Policz moc do wytracenia przy odpowiednim prądzie diody transoptora na wejściu (5 mA). Poza tym napięcie sieciowe jest różne w różnych krajach.
    Ja stosuję z powodzeniem 5 x 10kΩ w SMD1206 + PC814. W opisywanym przypadku dobrze pasuje zastosowanie układu Dalingtona (dodatkowy tranzystor z dużą β) za wyjściem transoptora.
  • #16 12347885
    tmf
    VIP Zasłużony dla elektroda
    JarekPrzybyl napisał:
    Takie transoptory po prostu miałem w "szufladzie", stąd taki wybór.
    2x100k i jak rozumiem, bez pojemności? To da prąd rzędu 1mA, nie za mało?

    Przed chwilą poczytałem na elektrodzie kilka z licznych tematów poświęconych detekcji 230V i widzę, że często są z tym problemy (różne, takich, jak moje nie spotkałem). Aż dziwne swoją drogą, że nikt nie produkuje specjalizowanych układów do takich zastosowań, czegoś w rodzaju transoptora, do którego się podaje bezpośrednio 230V na wejście.
    J.


    1mA to dla nowoczesnych transoptorów wartość w zupełności wystarczająca. Wszystko zależy od CTR. Ponieważ sieć ma 50Hz (100 Hz dla transoptora z dwiema diodami) szybkość narastania/opadania zboczy po stronie tranzystora nie ma większego znaczenia, w efekcie wszystko działa ok. Nigdy z detekcją nie miałem problemów, ale jak widzisz, żeby dobrać rezystor podciągający na kolektorze trzeba trochę obliczeń wykonać.
  • #17 12347991
    JarekPrzybyl
    Poziom 15  
    LordBlick napisał:
    Policz moc do wytracenia przy odpowiednim prądzie diody transoptora na wejściu (5 mA). Poza tym napięcie sieciowe jest różne w różnych krajach.


    Aaawidzisz, a kto mówi, że to miałby być prosty transoptor? Robiąc scalony detektor możnaby się pokusić o wykrywanie pola (problemem mogłaby się jednak okazać odporność na zakłócenia), bądź zrobić jakiś stopień pośredni (pytanie, jak zasilany). Nie wiem, skoro zrobili scalony żyroskop, to i z tym nie powinno być problemu :)

    BTW - znalazłem tu na elektrodzie fajny pomysł z transoptorem homemade, zrobionym z zamkniętej w termoskurczu małej neonówki wraz fototranzystorem. Mało eleganckie i właściwie tylko do rękodzielniczych konstrukcji, ale za to proste i niezawodne.

    Co do meritum - jako rezystor podciągający mam po prostu wewnętrzny rezystor procesora. wystarczy? Czy coś dodać?

    J.
  • #18 12349042
    excray
    Poziom 41  
    JarekPrzybyl napisał:
    BTW - znalazłem tu na elektrodzie fajny pomysł z transoptorem homemade, zrobionym z zamkniętej w termoskurczu małej neonówki wraz fototranzystorem.
    Tylko taki układ nie nadaje się do detekcji punktu "przejścia przez zero". Zbyt wysokie napięcia zapłonu neonówki.
  • #19 12773527
    JarekPrzybyl
    Poziom 15  
    Problem rozwiązałem przez użycie transoptorów "darlingtona", temat zamykam.

    J.
REKLAMA