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

Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

pawelec5 06 Wrz 2015 00:19 4320 33
  • #1 14974330
    pawelec5
    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: VB.net
    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.

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

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

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    Tak to wygląda w roździelnicy.

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    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ą.

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni
    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni
    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni
    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni
    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

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

    Pozdrawiam.
  • #2 14974349
    Błażej
    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.
  • #3 14974353
    pawelec5
    Poziom 17  
    Diody zamontowane na wszystkich przekaźnikach
  • #4 14974397
    zagwizdow
    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ą.
  • #5 14974806
    tmf
    VIP Zasłużony dla elektroda
    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.
  • #6 14975460
    BlueDraco
    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.
  • #7 14975461
    pawelec5
    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?
    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

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

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    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?

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni


    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ę.
  • #8 14975585
    tmf
    VIP Zasłużony dla elektroda
    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.
  • #9 14976670
    pawelec5
    Poziom 17  
    Dzięki za rady. W tygodniu będę coś walczył z tym tematem.

    Pozdrawiam,
  • #10 14979320
    zagwizdow
    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". Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni
    ps 10k1 to po prostu miało byc 10k
  • #11 14979560
    Konto nie istnieje
    Konto nie istnieje  
  • #12 14982372
    uzi18
    Poziom 24  
    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: VB.net
    Zaloguj się, aby zobaczyć kod
  • #13 14982824
    tmf
    VIP Zasłużony dla elektroda
    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.
  • #14 14982914
    Konto nie istnieje
    Poziom 1  
  • #15 14983205
    Konto nie istnieje
    Konto nie istnieje  
  • #17 14984572
    pawelec5
    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: VB.net
    Zaloguj się, aby zobaczyć kod
  • #18 14984850
    zagwizdow
    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.
  • #19 14984928
    Loker
    Poziom 39  
    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.
  • #20 14985025
    uzi18
    Poziom 24  
    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.
  • #21 14986209
    zagwizdow
    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 ?
  • #22 14988075
    pawelec5
    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: VB.net
    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.
  • #23 14989149
    zagwizdow
    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:
     
     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++;
    }
    
    
    
  • #24 14989240
    uzi18
    Poziom 24  
    Tak jak zagwizdow napisal:
    Kod: VB.net
    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.
  • #25 14989373
    pawelec5
    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,
  • #26 14991523
    uzi18
    Poziom 24  
    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.
  • #27 14995244
    pawelec5
    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
    #28 14995436
    Konto nie istnieje
    Konto nie istnieje  
  • #29 14995603
    uzi18
    Poziom 24  
    Na razie wyglada to mniej wiecej tak (juz nie aktualny screen):
    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    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.
  • #30 14995941
    pawelec5
    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...

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    Zakłócenia przekaźników 24VDC sterowanych przez 74hc595 i uln2803 w kotłowni

    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
REKLAMA