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

74hc595 - Dyskoteka przekaźników - zakłócenia.

06 Wrz 2015 00:19 3606 33
  • Poziom 17  
    Witam,

    Do sterowania pompami itp. w kotłowni użyłem Atmegi328 i z powodu braku tylu wyjść postanowiłem zastosować 74hc595 -> uln2803 -> przekaźnik 24vDC.

    Mój problem polega na tym że jeżeli któraś z pomp się wyłączy reszta przekaźników załącza się losowo. Równolegle z przewodami zasilającymi pompy biegną przewody czujników Ds18B20 i rozumiem że również mogą być błędy odczytów i z tym związana logika programu załączająca inne pompy(np.awaryjnie).
    Płytka na której znajdują się 74hc595 -> uln2803 jest połączona z główną płytką za pomocą taśmy.

    Fragment kodu Odpowiadający za rejestr przesuwny(pewnie da się go skrócić ale pisałem sam i to w pośpiechu i tak zostało).

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Tak wygląda płytka. Tylko w międzyczasie okazało się że był błąd i pin 13 74hc595 musiałem starować z Atmegi i podawać na niego stan niski po uruchomieniu programu. Problem był podczas programowania UC. Dyskoteka przekaźników. Nie ma tego wrysowanego.

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    Przepraszam że schemat w dwóch częściach.

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    Tak to wygląda w roździelnicy.

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    Nie wiem dlaczego nie mogę wgrać filmiku więc zrobię zrzuty z filmu żeby zobrazować problem.
    Szkoda bo na zdjęciach nie uchwycę jednego: Gdy żadne wyjście nie jest uruchomione z programu przekaźnik o nazwie P.SOL-CO pulsuje(jeszcze w programie wogóle nie ujęty - nie uruchamiany). Nie klika a jednak dioda pod przekaźnikiem wyraźnie pulsuje w częstotliwość wysyłania danych do 74hc595. Zdarza się tak że jak któraś z pomp pracuje to również inne przekaźniki pulsują.

    74hc595 - Dyskoteka przekaźników - zakłócenia.
    74hc595 - Dyskoteka przekaźników - zakłócenia.
    74hc595 - Dyskoteka przekaźników - zakłócenia.
    74hc595 - Dyskoteka przekaźników - zakłócenia.
    74hc595 - Dyskoteka przekaźników - zakłócenia.

    Udało mi się dodać film w ząłączniku.
    Może uda się Wam coś doradzić w tym temacie.

    Pozdrawiam.
  • Relpol przekaźniki
  • VIP Zasłużony dla elektroda
    Spróbuj podłączyć równolegle do cewek przekaźników diody. Tak, jak to się robi celem zabezpieczenia przed szpilami samoindukcji.
  • Poziom 17  
    Diody zamontowane na wszystkich przekaźnikach
  • Poziom 17  
    Programowo nie patrzyłem ale dodaj więcej pojemności - przynajmniej jeden 100nF na układ oraz podciągi na wejściach sterujących '595 bo strasznie to teraz wygląda.
    Transile na zasilaniu też nie przeszkodzą.
  • Moderator Mikrokontrolery Projektowanie
    Przede wszystkim kondensatory 100nF przy każdym scalaku, kolejna sprawa to prowadzenie masy i zasilania - z PCB wynika, że zasilanie idzie od scalaka do scalaka - w efekcie impulsy prądowe przenoszą się na wszystkie. Kolejna sprawa to połączenie przez SPI - nie wiem jak długi jest kabel łączący, ale generalnie wyprowadzanie SPI poza główną płytkę to bardzo kiepski pomysł. Na magistrali mogą ci się indukować przepięcia, które będą losowo ustawiać zatrzaski. Wystarczy krótka szpilka na SCK i już wszystko się przesuwa. Nie ominie cię zrobienie nowego PCB, tym razem poprawnie.
  • Specjalista - Mikrokontrolery
    A ja stawiam na błąd w programie. Kiedy kod, który powinien mieć 10 linijek ma ich 80, to zwykle jest w nim sporo błędów.
  • Poziom 17  
    Witam kolegę tmf,

    Miło mi że zerknąłeś na mój temat.
    Chętnie naniosę na nową PCB Twoje rady w celu poprawy i stabilności układu tylko prosiłbym o pomoc. Nie jestem jakimś wykształconym elektronikiem, jest to mój jeden z pierwszych projektów i rozumiem że mogą wystąpić błędy. Jednak bardzo prosiłbym o porady prowadzące do jej wykonania.
    1.
    Cytat:
    Przede wszystkim kondensatory 100nF przy każdym scalaku


    Rozumiem że chodzi o kondensatory na zasilaniu scalaków?

    a. 47hc595 - pomiędzy pinami 8 i 16 wystarczy?
    74hc595 - Dyskoteka przekaźników - zakłócenia.

    b. ULN2803 - pomiędzy pinami 9 i 10 ?

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    2.
    Cytat:
    z PCB wynika, że zasilanie idzie od scalaka do scalaka - w efekcie impulsy prądowe przenoszą się na wszystkie.


    Jak to poprawnie ma wyglądać bo nie rozumiem?

    74hc595 - Dyskoteka przekaźników - zakłócenia.


    3.
    Cytat:
    Kolejna sprawa to połączenie przez SPI - nie wiem jak długi jest kabel łączący, ale generalnie wyprowadzanie SPI poza główną płytkę to bardzo kiepski pomysł.


    Taśma ma ok. 30cm. Mogę ją skrócić, ewentualnie zamienić PCB miejscami to wyniesie ok 10cm. Mogę założyć ekran na taśmę.
  • Relpol przekaźniki
  • Moderator Mikrokontrolery Projektowanie
    Tak, kondensatory przy każdym wejściu zasilania, każdego scalaka. Co do prowadzenia zasilania - w Eagle masz polygon, narysuj na jednej stronie masę, po drugiej stronie płytki Vcc, po skończeniu pracy przez autorouter sprawdź jak wygląda rozlana masa i Vcc. Rozdziel zasilanie ULN (który pobiera znaczny prąd) i '595, połącz je w jednym punkcie przy wejściu zasilania na płytkę. Prawdę mówiąc zastanowiłbym się nad zmianą procka na taki, który ma wystarczającą ilość pinów IO. Zawsze to upraszcza sprawę. '595 dałby też na płycie z prockiem i taśmami połączyłbym wyjścia z '595 z wejściami do ULN. Ew. zakłócenie nie wysteruje ULN, więc to co taśma złapie nie będzie miało aż takiego znaczenia.
    Jeśli zostawisz tak jak jest to zastanów się czy każdy przewód sygnałowy SPI nie przepleść masą, czyli MOSI,GND,MISO,GND,SCK,GND,Enable,GND. Można też dać na linie sygnałowe małe kondensatorki, rzędu 47-100pF dla ograniczenia stromości zboczy.
  • Poziom 17  
    Dzięki za rady. W tygodniu będę coś walczył z tym tematem.

    Pozdrawiam,
  • Poziom 17  
    Zamiast przenoszenia '595 na plytke procesora mozna dodac bufory schmita na wejsciu albo po prostu zwolnić transfer przy prostym filtrowaniu rc na wejsciu jak wyzej pisał "tmf". 74hc595 - Dyskoteka przekaźników - zakłócenia.
    ps 10k1 to po prostu miało byc 10k
  • Użytkownik usunął konto  
  • Poziom 23  
    Akurat uln2803 przy sterowaniu przekaznikami powinien miec podlaczony CD+ (pin10) pod napiecie zasialajace cewki (24V).

    Jesli obawiasz sie błędów w transmisji danych, to na płytce wysyłającej i na odbierajacej obowiazkowo daj bufory, dziala to na SPI nawet kilka metrów na zwyklej skretce sieciowej.
    Daj chociaz rezystory podciagajace do +5V dla SERIN,CLK i zatrzasku.

    Mysle ze Twoj problem polega na braku zasilania 24V na tych uln-ach - ta wersje najszybciej sprawdzisz - jak zalozysz brakujace zworki.

    Ponadto w programie nie widze nigdzie konfiguracji SPI, ...

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Moderator Mikrokontrolery Projektowanie
    uzi18 napisał:

    Jesli obawiasz sie błędów w transmisji danych, to na płytce wysyłającej i na odbierajacej obowiazkowo daj bufory, dziala to na SPI nawet kilka metrów na zwyklej skretce sieciowej.
    Daj chociaz rezystory podciagajace do +5V dla SERIN,CLK i zatrzasku.


    O ile dodanie buforów, lub lepiej nadajników/odbiorników linii poprawi sytuację (ale jaką to będzie miało zaletę w stosunku do umieszczenia '595 obok MCU?), o tyle podciąganie na liniach MOSI,CLK i EN nie za bardzo coś zmieni. To nie są linie trójstanowe, czy OD, lecz sterowane push-pull.
  • Poziom 43  
    Filtry RC na wejściach trzeba dać, ale stała czasowa musi być dłuższa. Np. 10k i 1n co da 10us. Potem oczywiście jakieś bramki z histerezą żeby wyostrzyć zbocza.
    A na samych przekaźnikach możesz też dać gasiki (na stykach). Przykładowo 39R/1W i 10nF/1kV połączone szeregowo.
  • Użytkownik usunął konto  
  • Poziom 17  
    Dzięki koledzy za zinteresowanie. Nie będę wiedział od czego zacząć.
    Chwilowo musiałem wyjechać z domu ale jak wrócę będę się starał coś zadziałać (najpierw bez przerabiania starej pcb)

    uzi18 napisał:
    Mi to wyglada aktualnie na jakis blad programowy, SPI nie przesyla poprawnie tego co ma wyslac, bo najwyrazniej nie jest poprawnie skonfigurowany.


    Sorry pominąłem wklejenie Wam części kodu. Mam tak:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
  • Poziom 17  
    Gafa z filtrem.
    Na poczatek mozesz zobaczyc czy proste podciaganie wejść niezałatwi sprawy. Najlepiej byłoby całosc zrobic na jednej plytce w smd bo nawet prościej jest bo otworów nie trzeba tyle wiercic. Podział przy spi jest dobry ze wzgledu na mała ilość linii zlacza.
  • Poziom 38  
    Całkowite odkłócenie 595 jest praktycznie niemożliwe - przy zakłóceniach EMC zawsze będziesz miał "dyskotekę". Nie analizowałem kodu, ale pierwsza rzecz - stan wyjść musi być cały czas uaktualniany. Jeśli przyjdzie zakłócenie, to jest duża szansa, że procesor zdąży nadpisać stan wyjść prawidłową wartością zanim przekaźnik zareaguje. Jeśli to nie zadziała, to dwójniki RC na CLK - szeregowo rezystor kilkaset omów i kondensator do masy - rzędu 100pF - na każdy 595. Jak to też też nie pomoże - przeprojektowanie PCB.
  • Poziom 23  
    Czyli program jest ok.

    Jest jeszcze jedna rzecz, której nie zauwazyłem ... taśma SPI idzie obok przewodów z obciazeniami przekazników. Linie zasilajace cewki mijaja sie z przewodami obciazen ...

    Zastanow sie nad innym ukladem na tablicy:

    Plytka procesora
    ||
    Plytka 595/ULN
    ||
    Przekazniki
    ||
    Obciazenia, bezpieczniki, zasilacz
    ||
    Gniazda na dole szafy

    Przekaźniki (podstawki) odwróć tak aby ich cewki były na górze blisko uln-ów. Zaloz te zworki podajace napiecie na pin 10.

    Mysle ze to wlasnie prowadzenie przewodów do przekazników nie jest zbyt trafne,najprawdopodobniej to one zaklucaja Ci linie SPI, a tasma moglaby miec gniazdo na górze i być puszczona góra.
  • Poziom 17  
    Loker napisał:
    Cytat:

    Całkowite odkłócenie 595 jest praktycznie niemożliwe - przy zakłóceniach EMC zawsze będziesz miał "dyskotekę".

    Z ciekawości jakich typów układów '595 dotyczy uogólnienie kolegi ?
  • Poziom 17  
    tmf napisał:
    Tak, kondensatory przy każdym wejściu zasilania, każdego scalaka.


    Kondensatory 100nF dołożone, jednak wielkiej poprawy nie zauważyłem

    Jednak duża poprawa nastąpiła po zwiększeniu częstotliwości wysyłania do '595. Są błędy ale przekaźniki nie zdążą zareagować. Ledy pod przekaźnikami tylko mrugną.

    Najbardziej jestem zadowolony z pomocy kolegi uzi18
    uzi18 napisał:

    Kod: vbnet [rozwiń] [zaznacz wszystko]

    Dim A(10) As Byte
    Config Spi = Soft , Din =Pinb.0 , Dout =Portb.1 , Ss =Portb.2 , Clock =Portb.3
    Spiinit
    Spiout A(1), 4 'write 4 bytes a(1), a(2) , a(3) and a(4)
    End


    Dziwnie "żarzyły mi przekaźniki" losowo w zależności od ilości załączonych jak widać na początku filmu.
    Zmieniłem w kodzie i teraz wysyłam 3 bajty naraz i "żarzenie" ustąpiło.

    Może ktoś ma pomysł jak przenieść tablicę Wyjscie(24) do 3 bajtów w krótszy sposób. Ja to mam na chwilę obecną w łopatologiczny sposób(poprostu tak umiałem).

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Niemniej jednak wszystkim dziękuję za cenne rady. Napewno się te lekcje kiedyś przydadzą.W tym momencie jestem zadowolony z pracy tego układu i nie będę robił nowej PCB.
  • Poziom 17  
    Możesz zwinąć to do jednej petli z trzema warunkami wewnątrz , zrobic jedna maske do sumy logicznej przesuwaną o 1 bit w takcie petli . W bascomie nie pomoge ale uproszczony zarys byłby taki:
    Code:
     
    
     i = 0;
    maska = 0x01;
    74hc595_z(1) = 0;
    74hc595_z(2) = 0;
    74hc595_z(3) = 0;
    while( i< 8)
    {
     if (wejscie(i)) 74hc595_z(1) |= maska;   // 74hc595_z(1) = 74hc595_z(1) + maska
     if (wejscie(i+8)) 74hc595_z(2) |= maska;
     if (wejscie(i+16)) 74hc595_z(3) |= maska;
     maska *= 2;  // maska = maska * 2
     i++;
    }


  • Poziom 23  
    Tak jak zagwizdow napisal:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Czyli teraz juz jest lepiej, czy nadal cos sie kaszani?

    Moglbys sprobowac dac jakis rezystor 10-20k ohm, miedzy zatrzask przy pierwszym 595 a mase 595, najlepiej jednak dac bufor ... dla wszystkich 3 sygnalow.
  • Poziom 17  
    Oki tak zmienię kod. Szczerze myślałem że są jakieś inne sposoby ale ok.

    Odnośnie układu jak pisałem wyżej jest oki. Co prawda czasem jak któraś pompa się wyłączy to mrugną ledy pod przekaźnikami ale to już nie problem. Może jak będę kiedyś coś takiego projektował dostosuję się do Waszych wszystkich sugestii a teraz jest zadowalająco.
    Spróbuję dodać ten rezystor to nie problem.

    Pozdrawiam,
  • Poziom 23  
    Mozesz cos wiecej powiedziec o swoim projekcie?
    Jestem na etapie budowy i pisania oprogramowania do kotłowni.
    Czesc rzeczy juz dziala. Jako ze mam piec na ekogroszek chcialbym
    zaimplementowac kilka algorytmów spalania i czegos sie z tego nauczyc.
  • Poziom 17  
    Kotłownia jest oparta na Atmedze32.
    Obsługuje Kominek,zbiornik Cwu, pompy Co, podłogówki, cyrkulacji, solary, itp.

    Kolejne 2 atmegi są postawione aby sterować otwarciem siłowników na rozdzielaczach CO. Jedna na Parter druga na piętro.

    Planowane też było postawienie Atmegi do sterowania oświetleniem ale jeszcze na to nie było czasu.

    Wszystko jest odpytywane i zwizualizowane po Rs485 przez tablet w salonie z programem Vbasic. Z poziomu tabletu można zmieniać nastawy i kontrolować wszystkie parametry instalacji.
    Również jest tworzona historia danych zapisywana na dysku.

    I to chyba tyle. Cały czas coś próbuję usprawniać i dodawać nowe elementy całości. Jak widać w tytule postu problemów nie brakuje.

    Pozdrawiam,

    Dodano po 21 [minuty]:

    Opowiedz jak to u Ciebie wygląda?
  • Pomocny post
    Użytkownik usunął konto  
  • Poziom 23  
    Na razie wyglada to mniej wiecej tak (juz nie aktualny screen):
    74hc595 - Dyskoteka przekaźników - zakłócenia.

    Sterownik ma wlasna strone www (na karcie SD), dostepna z kazdego urzadzenia w sieci domowej.
    Aktualnie steruje wentylatorem, silownikiem zaworu 4D (grzejniki), 2 oddzielnymi zasobnikami CWU. Juz nie dlugo dojdzie podajnik i pompa CO.
    Jest polaczony ze sterownikiem bruli i z niego pobiera jeszcze temperatury.
    Stopniowo dopisuje oprogramowanie i przelaczam do niego urzadzenia ze sterownika bruli.
    Powstal i jest rozwijany ze wzgledu na ograniczenia bruli i brak aktualizacji softu przez producenta od ok. 2 lat.
  • Poziom 17  
    niveasoft napisał:
    Cześć.
    Nie miałem czasu wcześniej tego zamieścić. Nawet teraz go nie mam
    Zerknij.
    W tych trzech przykładach pokazuję jak można ustawiać zmienną która ma cztery bajty. W Bascom bez problemu możesz nadać Aliasy każdemu bitowi. Wprawdzie zmienna ma cztery bajty, ale to chyba nie problem. Poprzez Shiftout możesz wysunąć tylko 24bity, albo wszystkie, zależy jak sobie to ustawisz.

    Programowe SPI potrzebuje pinu na odbiór a Ty przecież nie czytasz niczego z tych rejestrów. Shiftout to też programowe SPI, ale bez potrzeby deklarowania pinu odbioru danych.

    Shiftout jest bardzo elastyczne i konfigurowalne. W sumie rób jak chcesz.


    Dzięki kolego. Własnie czegoś takiego potrzebowałem. Naprawdę pomocny post.
    Pozdrawiam.

    uzi18 napisał:
    Na razie wyglada to mniej wiecej tak (juz nie aktualny screen):


    No kolego pełen szacun. Ładnie to wygląda. Własna strona ehhh...

    U mnie to wygląda tak...

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    74hc595 - Dyskoteka przekaźników - zakłócenia.

    Ale to pewnie nie miejsce na rozwijanie tematu, szkoda żeby nas ktoś pogonił. Może jest gdzieś podobny temat?

    Dodano po 1 [godziny] 22 [minuty]:

    niveasoft napisał:
    W sumie rób jak chcesz.


    Dzięki 1 przykładowi zyskałem 26 bajtów pamięci SRAM :)

    Dodano po 15 [minuty]:

    sorry więcej bo miałem zdeklarowane tylko wyjscie(24) a teraz mam wyjscie as dword...

    Ja mam jakąś starą wersję spolszczonego helpa do bascoma. nawet nie pisze nic o zmiennej dword,
    Macie może coś nowszego? Ja mam z wersji BASCOM AVR 1.11.7.4