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

ATMEGA8 - "dyskoteka" przekaźników na starcie i dziwne zachowanie przy

flyoe 11 Lis 2012 10:44 2181 12
  • #1 11514784
    flyoe
    Poziom 10  
    Napisałem program testowy jak poniżej i mam dwa dziwne dla mnie przypadki.
    Nie wiem czy to wina sprzętu czy softu.

    1. Po włączeniu do zasilania 230V przez sekundę mam "dyskotekę" z przekaźników.
    Po włączeniu do USB (5V) jest tylko jedno "klupnięcie".
    Po resecie z przycisku "reset" nic nie klupie.
    Jak się pozbyć tej dyskoteki?
    Podejrzewam, że coś niedobrego będzie się działo na 4094.

    2. Bardzo dziwnie zachowuje się 74165
    Po uruchomieniu układu (po włączeniu zasilania) kompletny brak reakcji na przyciski.
    Po około 60 sekundach jest reakcja na 1 (zawsze ten sam!) przycisk, po następnych 60 sekundach wszystkie zaczynają działać normalnie. I tak już zostaje.
    ??
    Teraz po resecie z przycisku "reset", program wstaje od nowa, przyciski działają od razu.
    Po wyłączeniu zasilania i włączeniu znowu muszę czekać 2 minuty.

    Ktoś wie co jest nie tak?
    Załączam schemat i program testowy.

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #2 11514924
    Mol
    Poziom 30  
    Jak trzymasz wciśnięty reset i włączysz zasilanie też się tak dzieje ?
  • #3 11514971
    flyoe
    Poziom 10  
    Przy wciśniętym resecie i włączeniu zasilania też.
  • #4 11515028
    Piotrek_P
    Poziom 18  
    Daj przed pętlą główną jakieś opóźnienie żeby się napięcie w układzie ustabilizowało. Nie wiem czy to pomoże, ale napewno nie zaszkodzi.

    PP
  • #5 11515057
    flyoe
    Poziom 10  
    Przed pętlą główną wywołuję sub Getds()
    Tam jest sporo opóźnień. Do pętli głównej wchodzi po kilku sekundach.
    Myślisz żeby dodać wait na samym początku jeszcze przed wywołaniem Send94 lub zaraz po ?

    Dodano po 23 [minuty]:

    Nic to nie dało.
    Mnie się wydaje, że to raczej kwestia stanów pinów od strobe i clock na 4094 tuż po starcie albo to kwestia dołożenia jakiegoś kondensatora w układzie przekaźnika?
    Pytam was, bo macie na pewno większe doświadczenie ode mnie w tej dziedzinie.
  • #6 11515285
    Mol
    Poziom 30  
    Napisz sobie kawałek programu np jakiś napis na lcd i sterowanie jednego przekaźnika i zobacz czy to poprawnie działa.
  • #7 11515445
    pepson
    Poziom 18  
    Po załączeniu zasilania na wyjściach 4094 jest przypadkowa kombinacja stanów.
    Gdybyś dał opóźnienie na wejście OE to może przed zainicjowaniem rejestrów
    wyjścia pozostałyby w stanie wysokiej impedancji.

    Można to wejście podłączyć do procesora i programowo uaktywnić układ
    po zakończeniu inicjalizacji.
    Da sie wygospodarować linię po połączeniu STR z 4094 i SH/LD z 74165

    A może zastosować PCF8574 skoro magistrala I2C i tak już jest.
  • #8 11515464
    flyoe
    Poziom 10  
    Rozdzieliłbym te clk ale jak sam widzisz nie mam już jak. I tak ledwo upchałem to co chciałem. Chyba, ze masz jakiś pomysł.

    Dodano po 2 [godziny]:

    Na klupanie przekaźników przy starcie trochę pomogło przeniesienie obsługi 4094 na samą górę

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Za to klupanie przeniosło się na "reset" ... i w pierwszym segmencie LCD pojawiają się jakieś śmieci.
  • #9 11516090
    pepson
    Poziom 18  
    To może najprościej dać zwłokę po włączeniu zasilania.
    Podobnie jak w obwodzie resetu.
    ATMEGA8 - "dyskoteka" przekaźników na starcie i dziwne zachowanie przy
  • #10 11516363
    Mol
    Poziom 30  
    W helpie do Bascoma chyba gdzieś jest opisana struktura programu . Najpierw
    Config-i
    Dim-y
    Declaresub
    i takie tam , a u ciebie to jest pomieszane.
  • #11 11521830
    flyoe
    Poziom 10  
    pepson - zrobiłem taki układ jak namalowałeś
    (co prawda bez diody - co ona ma tam robić - ?)

    Dało to tyle, że teraz mam jedno "klup", przekaźniki się załączają i zaraz wyłączają, bo na początku programu ustawiam stan domyślny 4094

    Coś może źle robię w programie?
  • Pomocny post
    #12 11527113
    pepson
    Poziom 18  
    Ta dioda ma za zadanie szybko rozładować kondensator
    po wyłączeniu zasilania układu.
    Bez tej diody kondensator może nie zdążyć się rozładować
    przy krótko trwających zanikach zasilania.
    Jeżeli nie będzie rozładowany, to nie będzie opóźnienia czasowego
    koniecznego do bezbolesnego przeprowadzenia inicjalizacji stanu
    przerzutników układu 4094.

    W programie też bym coś zmienił
    Dokładniej w miejscu, gdzie są przesyłane dane do 4094.
    STROBE utrzymuj stale w stanie niskim.
    Wtedy wpisywane dane będą przesuwane tylko w rejestrach wewnętrznych
    a nie jak do tej pory wszystko co się przesuwało było odwzorowane na wyjściach.
    dopiero po wysłaniu danych daj na chwilę na STROBE stan wysoki.
    To spowoduje przepisanie stanu rejestrów przesuwających do zatrasków wyjściowych.
    I ponownie na STROBE daj stan niski i tak trzymaj do czasu
    zakończenia wprowadzania nowych danych do 4094.
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #13 11531141
    flyoe
    Poziom 10  
    pepson,
    Dzięki za podpowiedzi. Już wszystko działa.
    Teraz zauważyłem ten rezystor miał być 100k i Kondensator 10uF a ja miałem 10k i 1uF...
    74165 też działa. Brakowało masy na nóżce 15.
    Temat zamykam
    Pzdr.
REKLAMA