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

Sterownik webasto BW50 z testem pieca i sterowaniem gsm

noel200 11 Sty 2019 16:01 3246 19
  • Sterownik webasto BW50 z testem pieca i sterowaniem gsm

    Witam,
    prezentuję teraz sterownik pieca ogrzewania postojowego webasto model bw50.
    Kupiłem sobie używany piec na allegro w 2009 roku. Miał działać. No właśnie, miał.
    Piec sobie leżał długo, aż w październiku zeszłego roku urodził mi się syn. Pierwsze dziecko. Ja już bogatszy w wiedzę elektroniczną postanowiłem zrobić sterownik do tego pieca, bo kupno to duży wydatek, a chciałoby się mieć ciepło w aucie.
    Znalazłem instrukcję serwisową, a w niej był opisany kompletny algorytm sterowania piecem. Zanim go znalazłem, zrobiłem kilka prób i ani razu nie udało mi się odpalić paliwa. Z algorytmem poszło za pierwszym razem. W serwisówce jest napisane, że w trakcie rozpalania pieca sztyft żarowy jest zasilany przez PWM, nie było napisane jakim. Prawdopodobnie zależnym od temperatury zewnętrznej. Robiłem próby na stole. Wlałem w naczynie trochę benzyny, sztyft podłączyłem do zasilacza 12 V/20 A i zadawałem pwm. Sprawdzałem termoparą temperaturę sztyftu i sprawdzałem, czy się benzyna zapala. Okazało się, że benzyna zapala się dopiero, jak kołek żarowy ma ponad 960*C, a pwm wypełnienie na poziomie 94%. Mając już tę wiedzę i sprawny mechanicznie piec zaprojektowałem schemat:

    Sterownik webasto BW50 z testem pieca i sterowaniem gsm
    Pierwsze projekty były na atmedze8, później na 32, a finalnie wstawiłem arduino z m328p, bo sam schemat powstawał kilka miesięcy z braku czasu.
    Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm




    Są na płytce dwa bezpieczniki. Jeden płytkowy 20A do odbiorników pieca, drugi szklany 5x20mm 2A do zasilania arduino i modułu GSM. Założyłem też układ acs712-20, przez który przepływa cały prąd pieca. Dzięki temu wiem, czy piec jest sprawny, czy nie. Jest też mosfet P, który doprowadza zasilanie do odbiorników, a steruję nimi na masie mosfetami N. Wszystko z resztą jest na schemacie. Czujniki temperatury to mcp9701, a drivery mosfetów to tc4427. Aha, jest jeszcze bezpiecznik termiczny na 94*C. W moim samochodzie termostat jest na 74*C. Ot taki inny niż wszystkie.
    Dobrałem jakąś obudowę, zaprojektowałem płytę (nie najlepszą niestety) i pisałem program, bazując na oryginalnym algorytmie z instrukcji serwisowej. Na początku uruchamiania okazało się, że zapomniałem o czymś na schemacie i na płytce i musiałem później mosfet przylutować na pająka i zalałem go klejem, stąd jest on na płytce w takiej ilości.

    Program w arduino na początku ma change log. Jak poczytacie, to zobaczycie, że spędziłem nad nim wieeeele godzin. Uważam, że działa już dobrze, choć już tamtą zimę całą pieca używałem i nigdy nic złego się nie stało.
    Algorytm jest taki:
    -na początku załączam po kolei każdy odbiornik i sprawdzam acs-em, czy pobór prądu jest odpowiedni.
    -następnie załączam wentylator do przedmuchania komory spalania.
    -później załączam wentylator na 6 v, otwieram paliwo i załączam sztyft żarowy na chyba 50% (wszystkiego już nie pamiętam)
    -po pewnym czasie załączam sztyft prawie na max. I czekam na uznanie za pomocą czujnika ognia, że jest zapłon.
    -zmniejszam moc grzania sztyftu i sprawdzam, czy ogień nie zgasł.
    -wyłączam grzanie sztyftu i wciąż sprawdzam, czy jest ogień.
    -zwiększam powoli obroty wentylatora aż osiągną max.
    -później piec pracuje na zasadzie stabilizacji temperatury.
    Do pieca podłączyłem moduł GSM sim 800c (na początku był neoway m590) i całe sterowanie mam przez SMS-y. SMS-ami steruję jak, długo ma pracować, jaką temperaturę ma utrzymywać, za ile minut ma się włączyć, czy na początku ma robić test elementów. Piec prawie w każdym SMS-ie wysyła mi aktualną temperaturę płynu i inne informacje. W przypadku jakiegokolwiek błędu (niskie napięcie aku, zgasł płomień, brak zapłony, niesprawny piec i w teście i później w trakcie normalnej pracy sprawdzam acs-em, zbyt wysoka temperatura) piec się wygasza i wyłącza, a mi wysyła informacje o błędzie SMS-em.
    Ogólnie rzecz biorąc, piec już mechanicznie został świetnie zaprojektowany i wykonany. Sterownie nim jest wręcz banalne. Na stole zapłon i grzanie można uzyskać w kilkanaście sekund, używając tylko przełączników, a w razie zaniku prądu czy innych złych okoliczności sam się grzecznie wygasza i nic złego się nie dzieje. Grunt to oczywiście sprawna mechanika i szczelne uszczelki. Znam przypadki jak w trakcie pracy po piecu i dalej po wydechu pieca lała się benzyna i dochodziło do pożarów.
    Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm Sterownik webasto BW50 z testem pieca i sterowaniem gsm
    Sam program udostępniam na licencji GPL, a płytkę to właściwie wypadałoby zrobić nową, bo ta się nawet mi za bardzo nie podoba. Dużo mostków, obudowa słabo dopasowana do pieca (z resztą pękła pokrywa chyba od temperatury). Teraz sterownik zrobiłbym na płytce, jaka by mi pasowała w trakcie projektowania, obudowę później bym zaprojektował i wydrukował, a sam sterownik może nawet nie byłby zamocowany do pieca. Takie osobne urządzenie. Czujniki i odbiorniki przewodami bym połączył.
    Pozdrawiam.

    Edit 15-01-2019
    Dołączam kilka bibliotek, które są użyte w programie, a których nie ma standardowo zainstalowanych


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • Mitronik
  • #2 11 Sty 2019 19:42
    error105
    Poziom 7  

    Zastosowałeś jakieś zabezpieczenie na wypadek gdyby uC sie zawiesił ? Jakiś WDT ?

  • #3 11 Sty 2019 19:53
    noel200
    Poziom 24  

    error105 napisał:
    Zastosowałeś jakieś zabezpieczenie na wypadek gdyby uC sie zawiesił ? Jakiś WDT ?

    Wdt próbowałem dwa razy zaimplementować na dwa różne sposoby i nic mi z tego nie wyszło. Jest bezpiecznik termiczny jakby piec pracował cały czas bez kontroli.

  • #4 11 Sty 2019 22:07
    mariomario
    Poziom 18  

    Czy przychodzące SMS do SIM800C i następnie uC są w jakiś sposób walidowane (np. z jakiego numeru przyszedł SMS) tak aby w momencie wysłania np. zbyt długiego SMS nie zawiesić uC ?

  • Mitronik
  • #5 11 Sty 2019 22:08
    electro
    Poziom 17  

    Mozna tez użyć zewnetrznego sprzętowego watchdoga, odcinającego zasilanie całego układu wykonawczego w przypadku gdy nie otrzyma impulsu co określony czas, nawet jak sie procek „usmaży” to i tak odetnie wszystkie pompy, grzałki itp. Takim układem jest np. stwd100

  • #6 11 Sty 2019 22:12
    noel200
    Poziom 24  

    Smsy tylko z podanych numerów "działają".

    Dodano po 2 [minuty]:

    Dziś znów usiadłem do tego watchdoga i się udało. Jutro wrzucę do programu arduino pieca i sprawdzę czy działa. Ten układ scalony jako zewnętrzny wdt to świetna opcja. Dzięki za podpowiedź.

  • #7 12 Sty 2019 09:48
    noel200
    Poziom 24  

    noel200 napisał:
    Dziś znów usiadłem do tego watchdoga i się udało. Jutro wrzucę do programu arduino pieca i sprawdzę czy działa. Ten układ scalony jako zewnętrzny wdt to świetna opcja. Dzięki za podpowiedź.

    Udało mi się wgrać odpowiedni bootloader do klona arduino nano na 328p i watchdog działa. Nawet znalazłem taki do 328pb.
    Działa też na pro mini, ale trzeba wgrać inny bootloader.
    Najpierw trzeba w arduino do preferences dodać:
    "https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json"
    później wejść w menedżer płytek dodać minicore, wybrać odpowiednią płytkę i wgrać bootloader.

  • #8 12 Sty 2019 11:14
    LChucki
    Poziom 21  

    Zerknąłem na kod i widzę poważny jego mankament. Zrób prosta próbę, odłącz na chwilę (czy wyłącz wejściem KEY) modem. Jak zachowa się program? Podobnie, co się stanie gdy modem w czasie pracy zostanie zresetowany? Nie widzę komunikatów o tym, że np modem nie zalogował się, jest słaby sygnał, nie ma sprawdzania czy PIN jest wymagany albo że wpisano zły PIN ile prób pozostało.

    Można by rzec, dobrze jak jest dobrze, jakikolwiek problem i nikt nic nie wie a program nie podejmie próby obudzenia modemu i jego ponownej inicjalizacji.

  • #9 12 Sty 2019 13:05
    noel200
    Poziom 24  

    LChucki napisał:
    . Zrób prostą próbę, odłącz na chwilę (czy wyłącz wejściem KEY) modem

    A co to wejście robi?
    LChucki napisał:
    Podobnie, co się stanie, gdy modem w czasie pracy zostanie zresetowany? Nie widzę komunikatów o tym, że np. modem nie zalogował się, jest słaby sygnał, nie ma sprawdzania, czy PIN jest wymagany albo że wpisano zły PIN, ile prób pozostało.

    Pin z karty został zdjęty. Ale w programie jest funkcja wysyłająca pin po podaniu zasilania. Pin wpisuje się w programie przed jego wgraniem. Nie wiem jak, arduino mogłoby podać go źle. Jak modem nie zaloguje się do sieci, to arduino nie dostanie SMS-a. Proste. Jedyny mankament jest taki, że sms który wysłaliśmy nie dojdzie i zastaniemy zimny samochód. Włączy się natomiast piec, gdy ten SMS w końcu dojdzie. Jak samochód już jedzie albo stoi gdzieś indziej. Mieszkam w Białymstoku i jeszcze mi się jednak to nie zdarzyło. Miałem w planach pobieranie z sieci aktualnej daty i czasu i przy odbieraniu SMS-a sprawdzać, kiedy został wysłany, żeby takim sytuacjom zapobiegać. Ale nie miałem czasu jeszcze (choć w planach to jest).
    A jak mógłby się sam modem zresetować? W tamtą zimę miałem inny modem i zdechł z jakiegoś powodu. Po prostu się piec nie włączał.

    Dodano po 3 [minuty]:

    LChucki napisał:
    Można by rzec, dobrze jak jest dobrze, jakikolwiek problem i nikt nic nie wie

    Być może jak modem jest wadliwy albo jak zasilanie będzie nieodpowiednie, jak to większość początkujących robi. Piec pracuje kilka razy w tygodniu drugą zimę i ani razu nic niespodziewanego nie zrobił. A program cały czas modyfikuję.

  • #10 12 Sty 2019 14:24
    LChucki
    Poziom 21  

    noel200 napisał:
    A co to wejście robi?

    Włącza i wyłącza modem.

    noel200 napisał:
    in wpisuje się w programie przed jego wgraniem. Nie wiem jak arduino mogłoby podać go źle.

    Chody wtedy, gdy zmienisz kartę SIM. Zapomnisz o PIN i karta zostanie zablokowana. Poprawnie napisany program, powinien po stwierdzeniu złego PIN, poinformować o tym użytkownika i nie uruchamiać modemu dopóki użytkowniki nie zareaguje na stan alarmowy.

    noel200 napisał:
    Jak modem nie zaloguje się do sieci to arduino nie dostanie smsa.

    Ale o tym nie wiesz będą w samochodzie. Dowiesz się następnego dnia gdy zastaniesz zimny samochód. Czy nie lepiej aby była informacja o tym, ze modem nie jest zalogowany, sygnał za słaby itp?

    noel200 napisał:
    A jak mógłby się sam modem zresetować?

    Przyczyn może być wiele. Błąd w sofcie modemu, zakłócenia na zasilaniu, zimny lut, luźny kabelek. Program w miarę możliwości powinien wykrywać wszystkiego błędy i reagować na nie.

  • #11 12 Sty 2019 14:48
    noel200
    Poziom 24  

    LChucki napisał:
    Włącza i wyłącza modem.

    Aha ja chyba mam tam na stałe wlutowany mostek.
    Teraz pomyślałem, że jak kiedyś powstanie druga wersja to trzeba dorobić zasilanie modułu gsm przez tranzystor. Tylko jak np. Okaże się, że moduł nie ma zasięgu to resetowanie go w kółko jest bez sensu. U mnie 15 godzin na dobę on nie ma zasięgu w garażu pod blokiem. Tylko nie potrzebnie żarłby prąd z akumulatora.
    LChucki napisał:
    Chody wtedy, gdy zmienisz kartę SIM. Zapomnisz o PIN i karta zostanie zablokowana

    Tak, wtedy zostanie zablokowana. Trzeba o tym pamiętać. Ja już raz zmieniałem, ale druga nowa od razu przyszła bez pinu. Z resztą w razie niepowodzenia z pinem arduino nie ma jak nas poinformować o tym. W prawdzie zacząłem kiedyś robić do kabiny auta zegarek z datą temperaturą i ma on wejście rx i tx właśnie do komunikacji z piecem. Siedzi tam wyświetlacz alfanumeryczny 2x16. Miał on pełnić tą samą funkcję co fabryczny zegarek od webasto, a nawet znacznie więcej. Płytka sterownika ma też wyprowadzone wyjścia, ale jak wpadłem na pomysł z gsm to ani tego fizycznie nie podłączyłem ani nie oprogramowałem.
    LChucki napisał:
    Czy nie lepiej aby była informacja o tym, ze modem nie jest zalogowany, sygnał za słaby itp?

    No ale to chyba na tym wyświetlaczu w kabinie, którego nie ma. Z resztą ja to wiem, bo widzę od razu, że ani nie dostałem raportu że sms dostarczony, ani piec nie odpowiedział, bo jest taka funkcja. Od razu po otrzymaniu poprawnego sygnału do startu odpisuje mi.
    LChucki napisał:
    Program w miarę możliwości powinien wykrywać wszystkiego błędy i reagować na nie.

    To prawda. Do ideału mu daleko.

  • #12 12 Sty 2019 14:56
    LChucki
    Poziom 21  

    noel200 napisał:
    Tak, wtedy zostanie zablokowana. Trzeba o tym pamiętać. Ja już raz zmieniałem, ale druga nowa od razu przyszła bez pinu. Z resztą w razie niepowodzenia z pinem arduino nie ma jak nas poinformować o tym.

    Mylisz się. U mnie informuje
    Sterownik webasto BW50 z testem pieca i sterowaniem gsm
    Przeczytaj dokumentację SIM800. Jest informacja o błędnym PIN i jak pamiętam o liczbie prób wpisania PIN jakie pozostały. Jak jest ok też mam info.
    Sterownik webasto BW50 z testem pieca i sterowaniem gsm
    Jak pin był już wpisany (np restart uC)
    Sterownik webasto BW50 z testem pieca i sterowaniem gsm

    noel200 napisał:
    No ale to chyba na tym wyświetlaczu w kabinie, którego nie ma

    Mogą byc LED-y.

  • #13 12 Sty 2019 15:04
    noel200
    Poziom 24  

    LChucki napisał:
    Przeczytaj dokumentację SIM800. Jest informacja o błędnym PIN i jak pamiętam o liczbie prób wpisania PIN jakie pozostały.

    Tak i chyba nawet to jest, ale od dawna zakomentowane.
    Ledów też nie ma. Program nie jest całkowicie idiotoodporny. Z resztą żaden nie jest.
    Może kiedyś to napiszę, choć wątpię. Planuję w lato zrobić drugi sterownik ale chyba już bez mosfeta P, ACSa bez testu elementów za to z przerobioną komorą spalania do LPG.

  • #14 12 Sty 2019 15:33
    LChucki
    Poziom 21  

    noel200 napisał:
    Ledów też nie ma.

    Błąd. Widziałem konstrukcje, w których nawet LED od zasilania nie było :-) Konstrukcji, co informują o pracy pętli głównej jest bardzo dużo.
    U mnie obowiązkowo (prawie zawsze) jest zestaw LED: ERR (R), OK (G lub B), RUN (G lub B), Alert (Y). Czasem jest więcej np INIT, USB, ETH. Bardzo często daję mały LCD graficzny, który znajduje się na PCB i służy celom serwisowym. Jest na złączu, więc nie musi być zamontowany, jak coś szwankuje, można go podłączyć i określić co jest przyczyną błędu. Dodatkowo na USB czy UART wysyłam informacje diagnostyczne, co widać w poprzedniej mojej wypowiedzi.

    noel200 napisał:

    Program nie jest całkowicie idiotoodporny. Z resztą żaden nie jest.

    Należy przewidzieć możliwie dużo sytuacji awaryjnych. Nawet jak robi się dla siebie, to warto wiedzieć, np w samochodzie, gdzie nie masz podłączonego laptopa (wtedy można dać BT i posilić się tabletem czy smartfonem) co szwankuje. Nie będziesz miał styku na złączu SIM i nic nie wiesz, w moich konstrukcjach po logach widać co konkretnie się stało a na LED też kilka informacji można wyświetlić. Przykładowo miga led RUN ale nie świeci INIT, więc wiem, że coś nie tak z SIM, sygnałem. Nie świeci ERR więc sam modem odpowiada.
    Nabiera to szczególnego znaczenia gdy urządzenie robi się dla kogoś innego a jeśli mówimy o sprzedaży na większą skalę to już diagnostyka jest bardzo ważna.

    Niestety, może tak być, że diagnostyka, stany awaryjne, logi itp to 70% całego programu!

  • #15 12 Sty 2019 15:42
    noel200
    Poziom 24  

    Tu się z tobą zgadzam. Diagnostyka jest bardzo ważna i bardzo często niezbędna. Cały czas jak pisałem program miałem wszystko w terminalu i jak wgrywam nowy program i go sprawdzam to czasami z tego korzystam.
    Z tym bluetoothem to podsunąłeś mi pomysł. Muszę to przemyśleć. Dzięki.

  • #17 12 Sty 2019 22:42
    noel200
    Poziom 24  

    eurotips napisał:
    Mógłbyś dołączyć do Archiwum z postu #1 biblioteki które użyte są w .ino ?

    Przy najbliższej okazji to zrobię.

  • #18 15 Sty 2019 02:37
    el_sys
    Poziom 13  

    Witam. Tak jak kolega LChucki wspomniał, diagnostyka układu i tzw. "selftesty" to czasami ponad 50% całego softu. W przypadku modułów GSM jest to szczególnie ważne, należy przewidzieć jak najwięcej sytuacji. Przewidywanie w/w jest tym skuteczniejsze, im większe doświadzenie posiada programista/elektronik. Kwestii może być wiele, od zbyt długiego SMS-a lub innego komunikatu systemowego, po brak zasięgu/zrywany zasięg (to, że masz zasięg nie znaczy, że jak będziesz wysyłał sms zasięg nadal będzie, co wtedy? ), brak komunikacji z kartą SIM, po zawieszenie się modułu GSM tak po prostu, a użycie linii włącz/wyłącz nic nie da, dopiero odłączenie zasilania i powtórne jego podłączenie rozwiąże problem. Możliwości, gdzie coś będzie nie tak jest wiele, ważne, żeby przez "niedopatrzenie" nie doszło do uszkodzenia urządzenia lub poważniejszych konsekwencji. Watchdog to podstawa przy jakichkolwiek operacjach związanych z obsługą urządzeń peryferyjnych, czy to moduł GSM, pamięć eeprom/flash , czy inny układ, który może się po prostu zawiesić.

  • #19 15 Sty 2019 20:53
    noel200
    Poziom 24  

    eurotips napisał:
    Mógłbyś dołączyć do Archiwum z postu #1 biblioteki które użyte są w .ino ?

    Dołączyłem w pierwszym poście. Tylko trzy. Reszta chyba jest w Arduino od razu po instalacji.

  • #20 16 Sty 2019 07:14
    eurotips
    Poziom 35  

    Dzięki. Będę próbował to wgrać. A wiadomo, jak jest z Arduino, najlepiej użyć tych samych bibliotek i wersji programu.