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

Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy)

Myrek1 07 Sie 2009 22:25 17097 16
  • Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy)

    To mój nie pierwszy projekt, ale ten w jakimś tam stopniu nadaje się na pokazania, że można coś takiego w łatwy sposób zrobić.

    Urządzenie to 3-fazowy regulator temperatury do grzałek 3x2000W. Jest to po prostu sterownik bojlera. Początkowo miał być to sterownik PID. Algorytm sterowania PID napisałem, jedynie trzeba było dobrać parametry regulatora (Tp, Ti, Td). Jednak wywaliłem tą procedurę, bo okazało się, że regulator będzie działał w różnych warunkach (ilość cieczy i jej rodzaj). To by za bardzo działało destrukcyjnie na stabilność temperatury oraz dokładność.
    W związku z tym użytkownik końcowy zażyczył sobie regulatora tylko ze zmianą procentową mocy. Regulator steruje grzałkami w przedziale 0 - 100%. Elementami wykonawczymi są trzy triaki BTA (izolowane). Jest też oczywiście zabezpieczenie przed uszkodzeniem triaków i ich zwarciem. Są to przekaźniki, którymi steruje termostat 93°C. Po osiągnięciu tej temperatury termostat automatycznie rozłącza obwody wyjściowe (przez przekaźniki).

    Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy)

    Funkcje sterownika:
    - LCD 2x16 wyświetlające wszystkie dane
    - sygnalizacja przejścia przez 0 (brak lub wykrycie)
    - alarm sygnalizujący przekroczenie zadanej temperatury (dzękowy i animacja na LCD)
    - płynna regulacja mocy od 0 do 100%
    - cyfrowy pomiar temperatury na DS18B20 (2 termometry)

    Układ działa w dość ciekawy sposób. Otóż w celu regulacji użyłem tylko jednej linii uC. Steruje ona na podstawie przerwania przejścia przez zero optotriakiem MOC3021. Przy okazji uruchamia podłączone do niej optotriaki MOC3041 (z wykryciem przejścia przez 0). Takim oto sposobem uniknąłem badania zera na każdej fazie i odpowiedniego uruchamiania triaków.

    Jak już wynika z opisu triaki sterowane są grupowo, okres sterowania to 2,55sekundy..
    Wszystko oparte na Atmega16. Płytki wykonałem sam (termotransfer).

    Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy)

    Niestety nie mam fotek płytek, ponieważ montowałem urządzenie "na gwałt". Miałem na to mało czasu, przez co też jego estetyka pozostawia wiele do życzenia. Jednak to była najmniej istotna sprawa. Z pewnością poprawił bym obudowę, ale nie miałem na to czasu.





    Źródeł oraz schematów źródłowych nie udostępniam, związane to jest z pewnymi planami dotyczącymi urządzenia. Jeśli ktoś chce zbudować podobne to naprawdę nie ma w tym żadnej filozofii i jeśli chce da rade (tak jak ja).

    Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy)

    W produkcji jest już kolejna wersja 1 fazowa, ale z MENU oraz czujnikiem PT1000 działającym do kilkuset stopni. Gdy zostanie ukończony pewnie zamieszczę jego opis.

    Program napisany w C w AVRStudio + kompilator AVR-GCC.

    W celu zbierania danych o temperaturze do wyznaczania parametrów PID napisałem program na kompa odbierający dane ze sterownika. Wyświetla je na wykresie.
    Miał w 100% współpracować ze sterownikiem, ale projekt został zawieszony ze względu nie skorzystania w tej chwili ze sterowania PID.

    Komunikacja odbywa się po RS-232, z moim laptopem na przejściówce na FTDI. Układ do komunikacji to oczywiście MAX232.

    Program napisany w języku Python + pyserial + wx.Python + Eclipse

    Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy) Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy)

    Koszt wszystkich części to coś ok 100zł.

    Najważniejsze elementy:
    - ATmega 16 16MHz
    - MAX232
    - triaki BT
    - przekaźniki 16A
    - LM7805
    - DS18B20
    - LCD 2x16
    - MOC3021
    - MOC3041
    - CNY 17 (do przejścia przez 0)
    i drobne elementy dyskretne

    Schematy:
    Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy) Regulator mocy (grzałek 2000W) na ATmedze (3-fazowy)

    ZAZNACZAM: PROSZĘ NIE KOMENTOWAĆ ESTETYKI, bo nie o nią chodziło. To pierwsze podejście do regulatora, miałem go szybko zamontować i to zrobiłem. Jak zajdzie potrzeba przerobienia obudowy, to zrobię wszystko jeszcze raz, tym razem bardziej estetycznie.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 07 Sie 2009 22:35
    mirekk36
    Poziom 42  

    Witam,

    nie broń się tak przed komentowaniem estetyki bo jak na prototyp to fajnie wygląda ;)

    ja mam pytanko - jako że nie jestem dosyć dobry z części analogowych schematów - to muszę korzystać albo z jakichś gotowych i poddawać je ew lekkiej modyfikacji .

    dlatego zastanawia mnie - może mi wyjaśnisz co robą te warystory za triakami ??? - jakie spełniają w tym przypadku zadanie ?


    Ciekawy pomysł , ciekawe wykonanie .... i jak dla mnie nieco egzotyczny język Python - bo nigdy w życiu nie miałem z nim do czynienia .... ale też ciekawie wyglądają screenshoty z aplikacji w pythonie ;)

  • #3 07 Sie 2009 22:50
    Myrek1
    Poziom 23  

    Warystory służą do zabezpieczenia triaka przed niechcianymi udarami. W tym wypadku (obciążenie rezystancyjne) nie są potrzebne, nawet nie mam ich na płytce, ale są otwory w razie czego :) Warystory okazują się bardzo ważne w przypadku obciążeń indukcyjnych takich jak silniki itp.

    Python to język skryptowy w pełni obiektowy, przydatny do szybkiego pisania aplikacji. W Pythonie, na pracę mgr inż. zrobiłem symulacje robota automatyki w środowisku graficznym korzystającym z OpenGL. Jak będę miał chwilkę czasu to może przedstawię tamten projekt. Jest ciekawy, bo jest symulacja robota, system wejść cyfrowych i analogowych z Atmegą 16 i sterowanie za pomocą ARM Cortex-M3 (Luminary Micro).

  • #4 07 Sie 2009 22:52
    tzok
    Moderator Samochody

    Ja bym jednak tych awaryjnych przekaźników nie sterował z uK... jeśli jest tylko taka możliwość zastosowałbym wyłącznik bimetalowy lub półprzewodnikowy bezpiecznik termiczny. Nie można wykluczyć powstania przekłamania w pamięci uK które doprowadzi do zawieszenia się programu sterującego (niby można użyć watch-doga, ale jak będziesz miał pecha to może nie pomóc), lub jakiegoś przepięcia, które uszkodzi uK.

  • #5 07 Sie 2009 22:53
    RAFAŁ.M
    Poziom 18  

    Ciekawy projekt, mógłbyś dokładniej opisać procedurę regulacji temperatury. Czy po włączeniu urządzenia grzałki pracują z pełną mocą a po uzyskaniu zadanej temperatury procesor zmniejsza moc ,czy jakoś inaczej.

  • #6 07 Sie 2009 23:01
    Myrek1
    Poziom 23  

    tzok napisał:
    Ja bym jednak tych awaryjnych przekaźników nie sterował z uK... jeśli jest tylko taka możliwość zastosowałbym wyłącznik bimetalowy lub półprzewodnikowy bezpiecznik termiczny. Nie można wykluczyć powstania przekłamania w pamięci uK które doprowadzi do zawieszenia się programu sterującego (niby można użyć watch-doga, ale jak będziesz miał pecha to może nie pomóc), lub jakiegoś przepięcia, które uszkodzi uK.


    Nie naspałem, że są sterowane z uC. Oczywiście podzielam Twoje zdanie w 100% i zastosowałem termostat bimetalowy z małym przekaźnikiem (w ogóle termostat jest bardzo mały), który jest w szeregu z cewkami przekaźników i zasilaniem. Napisałem o tym.
    Poza tym uC oczywiście chroniony jest "pieskiem" :)


    @RAFAŁ.M
    Założenie początkowe było takie jak piszesz (sterowanie PID). Ale tak jak napisałem, obecnie sterowanie odbywa się za pomocą potencjometru, nie jest automatyczne. Potencjometrem ustawia się moc grzałek. Termometry służą tylko do pomiaru temperatury oraz włączania alarmu.

    Podczas alarmu zaczyna chodzić buzer oraz mała animacja na LCD. Po wciśnięciu switcha wyłącza się buzer, ale alarm dalej jest sygnalizowany na LCD do czasu zmniejszenia się temperatury.

    Okres regulacji to 2,55 sekundy. W tym czasie, jeśli ustawimy regulator na 50% to grzałki zostaną załączone na 1,275 sekundy, drugie tyle zostaną wyłączone. Jeśli ustawimy np 30% to włączenie grzałek będzie trwało 0,3*2,55 = 0,765 a wyłączone 2,55-0,765 = 1,785 sekundy.

    Dlaczego okres to 2,55sekundy? Dla programistów będzie to jasne ;)

  • #7 07 Sie 2009 23:19
    tzok
    Moderator Samochody

    To może źle popatrzyłem na schemat, bo uznałem że te awaryjne to K1-K3 i że są podłączone do złącza SL2 i dalej do pinów PC0 i PC1, ale teraz widzę że to jakaś nieścisłość oznaczeń na schematach.

  • #8 07 Sie 2009 23:31
    Myrek1
    Poziom 23  

    To fakt, oba schematy nie do końca się "zaziębiają".

    Oba układy złączone są tylko gniazdem "PLYTKA2" (na sterującej) , "SL1" (na wykonawczej). Reszta to niezależne złącza. Na płycie głównej są wyprowadzone praktycznie wszystkie linie na GOLDPINy albo do podzespołów. To tak na przyszłość, jakbym chciał podłączyć coś więcej (klawiatura itp). Na schemacie nie ma też buzera czy switcha, które podłączone są do tych właśnie wolnych linii.
    Jakby było więcej czasu to przyłożył bym się również do oznaczeń na schematach. Ale jest jak jest i trzeba sie przyzwyczaić ;)

  • #9 07 Sie 2009 23:40
    RAFAŁ.M
    Poziom 18  

    Co się stanie jeśli z jakiejś przyczyny z podgrzewanego zbiornika zniknie woda. Czy grzałki mają zabezpieczenie? Robiłem kiedyś podobny układ jednofazowy 3300W też z procentową regulacją mocy lub z przełączeniem na regulacje włącz/wyłącz. Dodatkowo był czujnik poziomu wyłączający grzałkę przy braku wody.

  • #10 08 Sie 2009 03:18
    markovip
    Poziom 34  

    Podczas normalnego użytkowania bojlera jest wręcz niemożliwe, żeby woda zniknęła "tak o". Poza tym, masz tam zawory jednostronne.

  • #11 08 Sie 2009 05:47
    RAFAŁ.M
    Poziom 18  

    Zadałem takie pytanie ponieważ autor projektu napisał: "regulator będzie działał w różnych warunkach (ilość cieczy i jej rodzaj). " co sugeruje ,że ilość cieczy może ulec zmianie.

  • #12 08 Sie 2009 09:26
    spoli
    Poziom 15  

    Napisz coś więcej o założeniach funkcjonalnych sterownika i o Twoich opiniach na temat tego jak udało Ci się je zrealizować w programie, i wreszcie jak to się ma do praktyki. Osiągnięta dokładność, o ile jest wymagana, regulacji temperatury?
    Rozumiem, że bojler będzie przygotowywał ciepłą wodę w jakimś tam, wyznaczonym przez użytkownika, celu.
    Użytkownik będzie, patrząc na wyświetlacz, ustawiał temperaturę wody jaką chciałby otrzymać na wyjściu bojlera. Ową temperaturę ustawiał będzie w procentach ?! Wczoraj podgrzewaliśmy wodę na 63%, a dzisiaj będziemy grzali na 75% ?! Jakoś tego nie "trawię" :(
    Przecież w sterowniku masz pełną informację o bieżącej temperaturze wody.
    Jak często użytkownik będzie dokonywał tych zmian i po co? Napisz coś więcej...
    Moim zdaniem nie wykorzystujesz możliwości jakie niesie z sobą użycie sterownika na mikrokontolerze. Transmisja danych wyjściowych via RS232 -OK, to rozumiem. Ale ustawianie temperatury w procentach ?... A gdzie czysto użytkowa funkcjonalność? Spójrz na to trochę od strony klienta i tego jak on, każdego dnia, będzie korzystał ze sterownika.

    Piszę o tym wszystkim ponieważ sam jestem w przededniu budowy sterownika jednofazowego bojlera, który mam w domu, a twój sterownik mnie żywo zainteresował. Mój bojler będzie przygotowywał ciepłą wodę użytkową na bieżące potrzeby domowe: mycie, prysznic, zmywanie naczyń, o z góry ustalonej temperaturze, na którą domownicy nie będą mieli wpływu, a od czasu do czasu do czasu użytkownicy będą mogli zadać czas (godzinę) na którą chcieliby mieć przygotowaną kąpiel, o wyższej niż codzienna temperaturze wody. Tutaj podobnie użytkownicy nie będą mieli wpływu na temperatury- będą się posługiwali ich nazwami (kąpiel/mycie). Sterownik w trybie serwisowym będzie oczywiście umożliwiał zmianę pre-definiowanych temperatur.

    Twój schemat:
    To jakiś, co najmniej dziwne, rozwiązanie ze sterowaniem wszystkich trzech faz w oparciu o jeden sygnał sterujący. Przecież każda z faz przechodzi przez zero w innym momencie...?
    Nie możesz jedną nogą mikrokontrolera sterować wszystkimi trzema fazami. Musisz użyć trzech niezależnych nóżek procesora i badać przejście przez zero niezależnie dla każdej z faz (chyba też trzy wyprowadzenia mikrokontrolera), itd :|

  • #13 08 Sie 2009 16:30
    Krzysio74
    Poziom 16  

    Trochę nieczytelny schemat na części procesorowej, za dużo rzeczy na sobie. Może byłoby lepiej jakoś pogrupować te elementy i wprowadzić więcej powietrza między blokami.
    A z drugiej strony, skoro i tak korzystasz z opto z przejściem przez zero, który załatwia ci włączanie w dwóch z trzech faz, to po co używasz osobnego detektora? Ta "pierwsza faza" też może się włączać przez detektor zera w optotriaku.
    Wiem, że się czepiam :) ale nie lepiej było od razu zastosować FTDI w układzie i mieć od razu wyjście/sterowanie przez USB, a nie stosować MAXa, a pożniej konwerter RS232C -> USB?

    Pozdrawiam

  • #14 08 Sie 2009 16:41
    Myrek1
    Poziom 23  

    Oj.. @koledzy, jak już cos was ciekawi to czytajcie to co napisałem wcześniej ze zrozumieniem. Na wszystkie pytania poza pierwszym jest odpowiedź w tekście.

    Przepraszam, mogłem kogoś wprowadzić w błąd tematem, to w sumie nie regulator temperatury, a mocy grzałek, które wpływają na temperaturę. Już to poprawiłem.

    @spoli
    Opisałem 2 razy jak to ma działać. w pierwszym projekcie miałem zrobić regulację automatyczną PID. Wtedy ładnie wszystko by się regulowało z dokładnością do 1°C (taki postawiłem sobie cel). Ale w trakcie robienia sterownika owy klient zapowiedział, że nie chce mieć takiej regulacji, bo będzie miał różny rodzaj cieczy i różną objętość w tym bojlerze. Zażyczył sobie regulacji mocy grzałek w procentach i tak to zrobiłem.

    Doskonale zdaje sobie sprawę co to mikrokontroler i jakie ma możliwości, szczególnie rodzina AVR :D Ale takie było założenie i taki jest wynik końcowy.

    Jeśli chodzi o schemat to jest poprawny, bo urządzenie działa :) To o czym piszesz wyjaśniłem w pierwszym poście. Jest układ przejścia przez zero i jest tak sterowany pierwszy triak. Dwa pozostałe zostały podłączone pod optotriaki z wykrywanie przejścia przez zero i załączają się odpowiednio o 1/3 okresu. To 2/3 okresu to błąd, ale jest tak znikomy, że nie ma wpływu na regulację.
    To rozwiązanie (autorskie) eliminuje trzy układy przejścia przez zero, albo liczenia odstępów czasu przez uC i sterowania każdym triakiem z osobna.

    @RAFAŁ.M
    O warunki to chodziło mi o regulację PID, nie że coś zniknie ze zbiornika. Faktycznie w takim skrajnym wypadku nie ma zabezpieczenia. Ale zapewniam, że tam gdzie ma pracować nie będzie takiej sytuacji.

    @Krzysio74
    Przejście przez zero jest z procka bo to miało być to automatycznej regulacji, gdzie jest ty wymagane. A że zostało to zostało. Dzięki temu w każdej chwili mogę wgrać program z regulatorem PID i będzie regulacja automatyczna.

    Faktycznie się czepiasz, bo regulator nie komunikuje się cały czas z kompem, tylko czasem, podczas wpisywania parametrów, które nie muszą się zmieniać w ogóle. Po co stosować na stałe układ za 10zł i komplikować schemat, jak może raz być użyty?

    Co do schematu to wiem... Ogólnie jest roboczy i nie miał być udostępniany szerszej publiczności :)

  • #15 09 Sie 2009 11:37
    spoli
    Poziom 15  

    Nadal jednak nie rozumiem po co w ogóle budowałeś układ kontroli przejścia przez zero, przecież wszystkie trzy fazy sterowane są jednakowo (jednym sygnałem), a skoro dwie są załączane w "zerze sieci" przez odpowiadające im optotriaki, to i trzecia może być również z takim samym skutkiem. Procesor wystawiał by tylko sygnał załączenia, a optotriaki włączały by grzałki dokładnie w momencie przejścia danej fazy przez zero.
    Nie odpisałeś mi nic w odpowiedzi na pytanie odnośnie bezwładności termicznej sterownika- jakości stabilizacji temperatury cieczy, bo to ona jest finalnym efektem i chyba jednak celem działania takiego sterownika (chyba?).
    Jaka jest pojemność zbiornika?
    Gdzie (po co/czemu dwa) umieściłeś DSy?
    Jeżeli to jednak temperatura cieczy jest tym parametrem, który użytkownik chce uzyskać zlecając Ci budowę sterownika, to napisz coś więcej jak Ci to wyszło? Jaka jest jakość stabilizacji temperatury (masz przecież DSy)?

  • #16 10 Sie 2009 00:01
    popiol667
    Poziom 15  

    Wtrącę swoje trzy grosze - tak z doświadczenia praktyka - zdarzyło mi się wypuścić projekt, który poszedł w około 150 egzemplarzach i potem te 150 sztuk musiałem ręcznie naprawiać (skrobanie laminatu, lutowanie kondensatora). Niby błąd niewielki, ale może dać po d... w środowisku mocno zakłóconym. RESET u Ciebie wisi w powietrzu. Daj mały (około 100nF) kondensator między masę i RESET. Przed i po modyfikacji dotknij to wyprowadzenie palcem / śrubokrętem. Jest różnica?:)

    Pozdrawiam!

  • #17 11 Sie 2009 09:18
    Bojleros
    Poziom 15  

    Ciekawy projekt. Nie wiem tylko dlaczego wykorzystując mikroprocesor nie zrobiłeś regulatora temperatury. Starczyłby jakikolwiek czujnik(dwa czujniki) na i2c. Nie wiem jakie korzyści przynosi regulacja ciągła w tym przypadku (PID) ale gdybyś dysponował czujnikiem temperatury podającymi temperaturę z wymaganą dokładnością mógłbyś zrezygnować z regulatora PID na rzecz regulacji dwustanowej. Odpada wtedy sterowanie fazowe tyrystorów, nie musisz łapać zera tylko sterujesz wszystkie jednym sygnałem niezależnie od kolejności faz.