Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Termostat na przetwornicy AC-DC SR087SG, attiny i DS18S20. Język C, AtmelStudio

wiono 02 Dec 2014 02:52 6522 11
  • Witam wszystkich.

    Chciałbym się pochwalić zaprojektowaniem i wykonaniem termostatu bazującego na wymienionych w tytule podzespołach. W założeniu chciałem stworzyć termostat do swojej trawiarki tak, aby utrzymywać stałą temperaturę trawienia 40°C. Wcześniej po prostu zanurzałem w cieczy trawiącej podłączony do napięcia sieciowego przewód grzewczy. Sądzę, że taka konstrukcja przyda się każdemu, kto potrzebuje niewielkiego termostatu, z ustawioną na stałe podtrzymywaną temperaturą.

    Gdy spojrzałem na dokumentację do przetwornicy SR087SG, uzmysłowiłem sobie, że nadaje się ona wręcz idealnie do sterowania przekaźnikiem za pomocą mikrokontrolera. Dzięki niej mogłem uzyskać:
    - stałe napięcie 5V do zasilania mikrokontrolera oraz czujnika DS18S20,
    - stałe napięcie z przedziału 9-50 V dla cewki przekaźnika,
    - redukcję miejsca w obudowie ze względu na brak transformatora.
    Na mikrokontroler wybrałem ATtiny 85 (może być ATtiny 25). Do 2. pinu mikrokontrolera podpięty jest poprzez biały kabel czujnik DS18S20 i komunikacja z nim odbywa się poprzez protokół 1wire. 3. pin steruje przekaźnikiem za pomocą tranzystora 2n7000. Jako przekaźnik wybrałem G5PA firmy OMRON z napięciem cewki 24 V DC i przełączanym napięciem max. 250 V AC. Przewód grzewczy jest podłączony na schemacie do oznaczeń OUT1 i OUT2. Oporność przewodu grzewczego wynosi 950 Ω.

    Jeżeli chodzi o kod na ATtiny, to nie ma w nim nic wyszukanego. Temperatura jest sprawdzana co 30 sekund i jeżeli temperatura jest niższa niż 40 stopni, na 3. pinie pojawia się stan wysoki (5V), tranzystor 2n7000 zaczyna przewodzić, przekaźnik się załącza i przewód grzewczy grzeje. Gdy temperatura osiągnie bądź przekroczy 40 °C, na 3. pinie pojawia się stan niski i w konsekwencji przewód grzewczy przestaje grzać. Kod został napisany w C za pomocą AtmelStudio (w załączniku). Do komunikacji poprzez 1wire wykorzystałem gotowy kod dostępny na GIThubie (thoj/avr-hutcontrol). Wsad zajmuje 1,3 kB i z powodzeniem zmieści się na ATTiny 25.



    Jeżeli chodzi o koszty, to:
    - płytkę PCB zamówiłem w SATLANDzie za 68,27 zł (10 dniowy termin wykonania),
    - koszt części nie przekracza 30 zł. Prawie wszystko zamówiłem na TME. Najważniejsze z niewymienionych dotychczas części to: mostek prostowniczy DB157S, tranzystor unipolarny IGBT STGD5NB120SZT4, obudowa do zasilacza CP-Z-10A/B.

    Taka mała uwaga. Jeżeli ktoś zechce zbudować termostat w oparciu o moją dokumentację, niech NIE próbuje programować ATTiny, gdy termostat jest podłączony do napięcia sieciowego. W najlepszym wypadku wywali wam korki, jak tylko włożycie wtyczkę USB do komputera, w najgorszym - coś sobie sfajczycie w komputerze. Aby zaprogramować ATTiny w obudowie SMD, musiałem wykonać oddzielną przystawkę do programatora.

    PS: !!! URZĄDZENIE JEST NIEBEZPIECZNE ZE WZGLĘDU NA BRAK IZOLACJI GALWANICZNEJ !!! Podłączałem je do gniazdka, które znajdowało się 1 metr nad trawiarką. Mam w domu instalację elektryczną zabezpieczoną przez wyłączniki różnicowo-prądowe. Pod żadnym pozorem nie zamierzam dotykać trawiarki przed odłączeniem termostatu.

    Może macie jakiś pomysł na bezpieczniejszy element grzewczy do trawiarki, lepszy niż przewód oporowy? To jest mój pierwszy post na elektrodzie, więc proszę o wyrozumiałość. :D



    Termostat na przetwornicy AC-DC SR087SG, attiny i DS18S20. Język C, AtmelStudio Termostat na przetwornicy AC-DC SR087SG, attiny i DS18S20. Język C, AtmelStudio Termostat na przetwornicy AC-DC SR087SG, attiny i DS18S20. Język C, AtmelStudio Termostat na przetwornicy AC-DC SR087SG, attiny i DS18S20. Język C, AtmelStudio Termostat na przetwornicy AC-DC SR087SG, attiny i DS18S20. Język C, AtmelStudio

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    wiono
    Level 10  
    Offline 
    Has specialization in: cokolwiek po fotonice
    wiono wrote 11 posts with rating 9, helped 0 times. Live in city Wrocław. Been with us since 2008 year.
  • #2
    bootrecord
    Level 13  
    Brawo za odwagę i opisanie swojego rozwiązania na forum. Bardzo dobry artykuł, to się naprawdę chwali.

    A teraz trochę dziegciu.
    1) Dopisz proszę uwagę dla własnego bezpieczeństwa, że używanie tego urządzenia grozi śmiercią oraz że używanie go do pomiaru temp. płynów jest niedopuszczalne.
    2) Takie urządzenie bezwzględnie musi posiadać izolację galwaniczną od sieci 230V. Najprostszy transformator załatwia sprawę.

    Popraw proszę schemat i przeprojektuj urządzenie. Schemat obecny usuń i nigdy nikomu nie pokazuj. Nie używaj go proszę jeśli nie planujesz spotkania ze św. Piotrem.

    Pozdrawiam
  • #3
    tronics
    Level 38  
    Quote:
    2) Takie urządzenie bezwzględnie musi posiadać izolację galwaniczną od sieci 230V. Najprostszy transformator załatwia sprawę.

    Myślę, że koledze właśnie chodziło o małe wymiary i dużą sprawność - tutaj mała przetwornica impulsowa flyback da radę zamiast tego niebezpiecznego bucka i dodatkowo nie będzie problemu z programowaniem przy włączonym urządzeniu. A trafo do flybacka i tak zabierze dużo, dużo mniej miejsca niż zwykłe.
  • #4
    wiono
    Level 10  
    Dzięki za odpowiedź. Następna wersja będzie na flybacku. Schemat usunąłem, żeby nikt nie pokusił się o jego zbudowanie. Przetwornica SR087SG według dokumentacji nie nadaje się do współpracy z transformatorem
    Quote:
    Line Transformer
    During initial testing it is tempting to use an isolation transformer or a variable transformer on the AC line. However,the high inductance of the transformer (frequently in the mH’s) interferes with the normal operation of the SR087 and should not be used. This is not a concern with the normal inductance of the AC line or for AC line filters.

    The SR087 draws current from the AC line in short, high current pulses. The transformer’s high inductance tends to limit the current pulse. Furthermore, inductive kickback on the falling edge of the current pulse can create high voltage
    spikes which must be absorbed by the transient protector.
  • #5
    bootrecord
    Level 13  
    Proponuje aby wykorzystać zasilacze od telefonów komórkowych. Są małe i powinno się udać wcisnąć je do obudowy. Wiąże się to jeszcze z wymiana przekaźnika na mniejsze napięcie np 5V ale wtedy cały układ może być zasilany z 5V. Jak położysz przekaźnik to taki zasilacz się zmieści w obudowie.

    Pełno zasilaczy można znaleźć w pojemnikach ze zużytym sprzętem elektronicznym lub popytać znajomych. Lepiej użyć markowego zasilacza ze sprzężeniem zwrotnym na transoptorze, które dokładnie stabilizuje napięcie. Ostatecznie taki zasilacz można przestawić na inne napięcie.

    Jeszcze jedno usprawnienie. Przekaźnik jest dobry ale często ulega awarii, wykańczają go częste przełączenia oraz obciążenia nierezystancyjne. Jak taki regulator będziesz wykorzystywał sporadycznie to wystarczy, jeśli miałby działać ciągle to proponuje optotriak i triak jako element wykonawczy.

    Kolejnym usprawnieniem może być regulacja PID. Będzie znacznie dokładniejsza ale nie nadaje się w połączeniu z przekaźnikiem (szybko go wykończy). Takie rozwiązanie do trawiarki nie jest konieczne.
  • #6
    mdm150
    Level 27  
    Gratulacje za odwagę, ale do takich rzeczy to jak wyżej wspomniano lepiej użyć nawet wypatroszonej elektroniki z ładowarki do telefonu, która bedzie bardziej bezpieczna(pełna separacja galwaniczna od napięcia sieci) niż ten scalaczek. Dobrym pomysłem byłoby użycie modułu zasilacza z drukarki laserowej (dostępne są tam napięcia:+24V i +5V a czasem tez i inne)-są tam obecne obwody zasilania i załączania(separacja przez optotriak)"grzałki". Wtedy by odpadło użycie przekaźnika bo tam miałbyś triaka. Jedyny chyba minus tego ostatniego to nieco większe wtedy gabaryty urządzenia-przy użyciu wypatroszonej elektroniki z ładowarki raczej byś nie odczuł na zwiększeniu gabarytów.
  • #7
    maciek_1992
    Level 13  
    Projekt ciekawy jednak ja rozwiązałbym to inaczej (przy okazji dużo taniej).
    1. Tak mało skomplikowaną płytkę można zrobić bez problemów w domowych warunkach- tym bardziej, że wspominałeś o "twojej trawiarce" więc chyba masz jakieś pojęcie w wykonywaniu płytek PCB. Wykonanie takiej płytki wyniosłoby ok 10zł jeśli musiałbyś kupić wytrawiacz. Co prawda nigdy nie robiłem solder maski w domu więc nie wiem jakie są tego koszty ale płytkę zawsze można zabezpieczyć w inny sposób. Do tego dochodzi satysfakcja wykonania czegoś samemu.
    2. Zasilanie całego układu można zrealizować tak jak koledzy wcześniej pisali na ładowarce od telefonu (ok 5zł).
    Więc koszt takiego termostatu to tak max do 40zł za całość albo i mniej.

    Ok 2 lat temu zrobiłem termostat do lady chłodniczej 600W: ładowarka usb 750mA->atmega8 (taką miałem w szufladzie)->DS18S20->przekaźnik(nie pamiętam dokładnie jaki) do tego 2 rezystory i kondensator filtrujący zasilanie (można pominąć) wszystko na płytce uniwersalnej za 50gr, działa 24/7 do dzisiaj i ma się dobrze.

    A co do elementu grzejnego z często widzę na elektrodzie wytrawiarki z grzałką z akwarium.
  • #8
    vinetu_
    Level 13  
    Projekt spokojnie dałoby się to wykonać na AtTiny13, 1kb to wystarczająco.

    Płytkę mogłeś zrobić sam i zabezpieczyć np lakierem izolacyjnym - może nie wygląda tak ładnie jak zielona maska, ale jest równie skuteczny, wtedy łączny koszt to byłoby < 20pln (laminat, wytrawiacz, lakier).

    Co do ładowarek USB, sam przejechałem sie na dwóch typowych noname, ale po zastąpieniu ich używanymi ładowarkami od głównego dostawcy nadgryzionego jabłka, działają bez przerwy od 4lat (ładowarki 350mA, obciążenie spoczynkowe < 20mA, podczas pracy 110mA)

    Zastosowanie grzałki akwariowej 100W nie byłoby bezpieczniejsze? Sam posiadam 80W dla 2.5l pojemnika, z czego podgrzewam 2L i sprawuje sie wyśmienicie.
  • #9
    mdm150
    Level 27  
    Owszem, często ładowarki noname mają niestabilne napięcie wyjściowe (od 4,5Vdo nawet 10V), a tzw. firmówki się znajdzie choćby ze starego nieużywanego już fona czy może od znajomych... .
  • #10
    wiono
    Level 10  
    W swoim projekcie znalazłem błąd. Jakimś cudem przy temp. 40 °C stan niski na 2 pinie na attiny wynosi 1,35 V. Przy takim napięciu 2n7000 przewodzi. Zamierzam zamienić 2n7000 na 2n7008 i zobaczę czy pomoże.
  • #11
    Nerwus
    Level 18  
    Popraw linie (kosmetycznie wygląda lepiej)

    while (DS18X20_conversion_in_progress()) {}
    na
    while (DS18X20_conversion_in_progress());

    Twoj #define relay_pin to PB4 a w DDRB = (1<<PB3);

    Jesteś pewny, że jest to ok? Czemu nie używasz wspólnego define w całym kodzie? Przy ewentualnej modyfikacji HW możesz mieć problem.
    Proponuje poprawić linie na DDRB = (1<<relay_pin);

    Mam nadzieje, że to rozwiąże twój problem.

    Masz trochę wolnej pamięci wiec można się pokusić o lepsza implementacje wliczając maszynę stanu, nie ma potrzeby co 30s zapisywać do portu.
    Proponuje coś takiego

    Code: c
    Log in, to see the code


    Mając już maszynę stanu możesz się pokusić o implementacje histerezy. Nie masz problemów z stabilnością przełączania?
  • #12
    wiono
    Level 10  
    Do Nerwus: Z kodem masz rację. Dzięki :D. Mam problemy ze stabilnością przełączania. Zamówiłem parę 2n7008 i chcę jeden wstawić zamiast 2n7000. Z symulacji w LTSpice wynika mi, ze powinien sprawować się lepiej.
    Termostat na przetwornicy AC-DC SR087SG, attiny i DS18S20. Język C, AtmelStudio Termostat na przetwornicy AC-DC SR087SG, attiny i DS18S20. Język C, AtmelStudio
    Do vinetu_, maciek_1992: Wcześniejszą wersję płytki wytrawiłem. Jej jakość nie była najlepsza. Jak chciałem zaprogramować attiny to po podłączeniu zewnętrznego napięcia 5V nie mogłem zaprogramować mikrokontrolera bo programator nie mógł się z nim skomunikować (wszystkie LEDy zielone, Błąd: Failed to enter programming mode. ispEnterProgMode: Error status received: Got 0xc0, expected 0x00, ModuleName: TCF (TCF command: Device:startSession failed.).