Jak skuteczniej ogrzewać stół, drukarki
20.11.2016 | aktual.: 20.11.2016 17:53
I to znów nie będzie kotatsu. Jakiś czas temu popełniłem wpis o zmaganiach starego człowieka z upływającym czasem, ewentualnie o potężnych (jak na drukarkowe standardy) grzałkach do ogrzewania platform. Potężnych, skracają czas potrzebny do rozgrzania platformy z nieskończoności (lub około 20 minut, ale to to samo) do ~2 minut w Megalodonie i do 40 sekund w mojej Prusie. Dziś prezentuję państwu kolejną zabawkę, sterownik do tych grzałek. I nie, poprzedni się nie zepsuł, ot ten ma nowe, a właściwie nową funkcję a przy okazji nie wygląda jak wydziergany szydełkiem.
Ale pierwej, teoria
Oryginalna* wersja grzałki na prąd stały, posiada funkcję regulacji mocy. Regulacji za pomocą PWM. Funkcja pozwala na utrzymywanie temperatury stołu w bardzo wąskim korytarzu. Niestety, wraz z konwersją na prąd zmienny funkcja wyszła. Aktualnie platforma może być tylko włączona na pełnej mocy albo wyłączona, żadnych stanów pośrednich. Szczęśliwie, dokładna kontrola temperatury dla stołu nie jest tak ważna jak dla hotendu, ale i tak miło by było ją kiedyś przywrócić.
Prąd zmienny, co raczej wiadomo, wygląda tak:
Sygnał PWM, prezentuje się jakoś tak:
Pierwszym pomysłem ludzi (w sumie, moim też) byłoby zaaplikowanie sygnału PWM o wielokrotnie wyższej częstotliwości niż 50 Hz do powyższego sygnału, by uzyskać coś takiego:
I to by nawet mogło się udać, jeśli tylko dałoby się znaleźć przekaźnik będący w stanie wyciągnąć sporo ponad 1 kHz w częstotliwości przełączania. Tyle, że takich przekaźników nie ma. Są za to triaki i takie tam**, ale z nimi jest ten mały problem, że działają, powiedzmy, niezupełnie tak jakbyśmy tego od nich oczekiwali. Jeśli zaaplikujemy sygnał PWM wysokiej częstotliwości na bramkę triaka, to zamiast oczekiwanego wyżej efektu, dostaniemy jeden z takich efektów:
Który z nich - zależy od sterownika triaka. Jeśli ma układ wykrywania przejścia przez zero - jakąś wariację na temat dolnego, jeśli nie ma, to wariant górny. Wszystko dlatego, że triaki (a także diaki i olbrzymia większość SSRów), niestety, raz uruchomione nie przestaną przewodzić póki napięcie nie spadnie do zera. To nie jest jakimś gigantycznym problemem, prąd zmienny jak nazwa wskazuje, jest zmienny, do zera spada 100 razy na sekundę (albo 120). Na szczęście, aby w ogóle zacząć przewodzić muszą być wyzwolone odpowiednim napięciem na bramce. Wyzwolić można je w dowolnym momencie. I dziś właśnie będziemy je wyzwalać w dowolnym momencie, dążąc do uzyskania jakiejś wariacji na temat takiego wykresu:
Podnoszenie ciężarów, czyli układ wykonawczy
Sprawa z układem, który wykona zadanie cięcia prądu zmiennego jest raczej prosta, w aktualnie używanych urządzeniach mam dwa triaki BTA24**** potrafiące maksymalnie przesłać 25 A każdy. Razem dawało by to 11 kW dostępnej mocy maksymalnej, ale są ograniczenia - triaki, jak chyba wszystkie półprzewodniki grzeją się coraz mocniej wraz z coraz większym przepływającym przez nie prądem. A ja wcale nie chcę im dawać radiatorów i co gorsza aktywnego chłodzenia. Identyczny problem dotyczy przewodników, miedź na PCB może się przegrzać jeśli przesadzimy. Z obliczeń wyszło, że zakładając wzrost o 20 stopni temperatury samego PCB, płytka jest w stanie wytrzymać około 8 A, to daje 1,8 kW maksimum i po 4 A na jeden triak. Wszystko razem zapewnia im spokojny żywot, we względnie (jak na ich możliwości) chłodnym otoczeniu, a mnie możliwość opakowania ich w zamknięta obudowę bez szczególnej wentylacji. Poza tym triaki serii BTA mają izolowany tab (tę blaszkę na górze), przez co jak ją jakimś cudem macniemy to nie poliże nas prąd.
Triaki wymagają sterowania, w poprzednim modelu zainstalowane są optotriaki MOC3043, które mają całe 5 mA potrzebnego prądu dla diod i układ przełączania w zerze. Układ przydatny, albo nie. W wypadku nie PWM‑owych sygnałów sterujących - przydatny, nie pozwala na włączenie w dowolnej fazie cyklu, a tylko gdy akurat napięcie przechodzi przez zero. W naszym wypadku całkowicie przeszkadzający, bo my chcemy je uruchamiać w dowolnym momencie. Także zostaną tu zastąpione układami MOC3023, które są tego układu pozbawione. A gdyby się ktoś zastanawiał, albo w sklepie nie było, optotriaki MOC30xy mają różne to "y" w zależności od prądu potrzebnego dla uruchomienia diody, 3 – 5 mA, 2 – 10 mA, 1 – 15 mA, 0 – 30 mA. Nam wystarczy wersja 3, po co marnować prąd. Tym bardziej, że całość zasilana jest liniowym stabilizatorem AMS1117, a liniowe stabilizatory to nie są najoszczędniejsze urządzenia na świecie. Choć tak na prawdę chodzi o temperaturę tego AMS.
Ten myślący, czyli układ wejściowy
Mamy układ podnoszący ciężary, czas na część która pozwoli mu działać zgodnie z przeznaczeniem. Pewnie dałoby się zbudować układ analogowy realizujący taką funkcję, ale coś czuję, że nie zmieściłby się na płytce. A płytka, na której to siedzi musiałaby być mała, bo byłaby tylko towarzystwem do czegoś większego, szkoda marnować miejsce. No, ale do rzeczy. Sercem układu jest mikrokontroler ATtiny13. Jak nazwa wskazuje (albo i nie bo tiny2313 na którym zrobiłem sumator PPM jest większy niż mega8 :D) jest malutki. Cały 1 kB pamięci flash i 64 B pamięci RAM. Oryginalny program na niego zamknął się jedynie w 2 kB. Szczęśliwie, człowiek ma skilla w optymalizacji i po zastąpieniu 32‑bit matematyki wersja 8‑bit + trochę operacji na 16 bitach i sztuczkach z rodziny "zamiast mnożenia/dzielenia przesunięcie bitowe", program wcisnął się w 948 B i to nie tracąc na oryginalnej funkcjonalności. Jego zadaniem jest odczytanie wejściowego sygnału PWM, przeznaczonego dla niskonapięciowych grzałek, stwierdzenie jakie ma wypełnienie i na podstawie tegoż - pocięcie sinusoidy dostarczonej z gniazdka. Ciąć może w zakresie 6‑bit, tj. - na 64 poziomy. Okres trwa 20 ms, połowa 10 ms. Wiedząc kiedy wystąpiło zero w sieci przesyłowej, wystarczy opóźnić wyzwolenie triaka o 0‑63 pętli o czasie wykonania ~155 us. uC podaje 30 uS impuls na diody MOC3023, te uruchamiają triaki, tymczasem uC robi sobie inne rzeczy, gdy pomiar wypełnienia PWM. A właśnie, pomiar wypełnienia możliwy jest w zakresie od około 2 Hz do 125 Hz - niby mało, ale domyślnie repetier używa bodajże 4 Hz a Smoothie 20 Hz. Gdyby ktoś jednaj chciał marudzić, że timery pracują przecież z częstotliwością sporo wyższą, to spieszę tylko donieść iż owszem, dla 4 Hz sygnału, który ma rozdzielczość 8‑bit, timer pracuje z częstotliwością ~1 kHz. Więc przy 8 bitach rozdzielczości PWM, dozwolona podstawowa częstotliwość timerów to jakieś 512 Hz‑32 kHz. Wystarczy prawdopodobnie dla wszystkich istniejących kontrolerów. Częstotliwość PWM, o ile mieści się w wyznaczonym przedziale - nie ma znaczenia dla pomiaru wypełnienia. Program ma timeout 0,5 s, jeśli sygnał zaniknie (albo wejdzie na 100% wypełnienie) to zauważy to właśnie po około 0,5 s. Tutaj uwaga, wejście sygnału działa poprawnie tylko dla sygnału sterowanego od strony niskiej. Jeśli ktoś miałby, jakimś cudem, sterowanie grzałką oparte na P‑MOSFET-ach (czyli po plusie), to nie będzie działać. Wymaga N‑MOSFET-ów. Choć to nie powinien być problem, bo jeszcze się nie spotkałem aby jakaś płytka miała coś innego niż N‑MOSFET-y do sterowania wysokoprądowymi elementami. Pozostaje jeszcze kwestia wykrywania gdzie to zero właściwie jest. Można by dać prosty dzielnik napięcia, ale jak to nieizolowane pomysły mają w zwyczaju, gdyby się któryś rezystor z jakiegoś powodu spalił, to moglibyśmy dostać 230 V na CPU (co by posłało go do krainy wiecznego dzielenia przez zero), a potem na sterowanie grzałką. I tak dalej, doprowadzając do spalenia płyty głównej drukarki (a także, opcjonalnie, małego porażenia). Izolowane pomysły są lepsze, a z tych pomysłów, najwygodniejszy wydaje mi się (niech mnie ktoś poprawi?) optoizolator. 7 kV izolacji chyba wystarczy. H11AA1M podłączony jest diodą do 230 V, tam ma ograniczenie prądu do około 1 mA za pomocą 2x100k 0,2W rezystorów. Z drugiej strony, wyjście ma podciągnięte do zasilania części niskonapięciowej. Kiedy dioda świeci, tj. mamy górkę sinusoidy, napięcie na wyjściu spada do zera, gdy nie świeci - rośnie do poziomu napięcia zasilania CPU. Działa, ale może powodować mały problem, jeśli zasilanie nie jest podłączone to może interpretować to jako wieczne zero, ale w sumie rozwiązanie banalne - sprawdzać wcześniej czy była jakaś górka. ;)
A zwycięzcą jest...
Albo raczej efektem końcowym, taka oto zabawka:
Kompaktowa, z optyczną izolacją od wszystkiego co złe albo wysoko napięciowe, mało grzejąca się i pokazująca z jaką mocą aktualnie pracuje. No, z grubsza. Do tego dzięki mocy drukarek 3D, zapakowana w małą obudowę wykonaną z ABS, uniemożliwiającą przypadkowe pomacanie wszystkich niebezpiecznych złącz. Całość skręcona 4 wkrętami do drewna 3x16mm.
Układ do poprawnej pracy wymaga 4 przewodów od strony wejścia:
- +5 do 12 V
- Masy (i to nie tej z grzałki, bo to sygnał sterujący)
- +3.3 do +24 V na wejściu sygnału grzałki
- Masy grzałki, która tak na prawdę jest właściwym sygnałem sterującym
Wszystkie muszą być podłączone i pochodzić z systemu, który ma wspólną masę. To akurat nie powinien być problem, chyba, że ktoś miałby dwa zasilacze z niepołączonymi masami. W którym to wypadku układ zachowywałby się nieprzewidywalnie. Z drugiej strony zasilanie musi być podłączone do górnego zestawu złącz (zaskakująco podpisanego "IN"), a grzałka do dolnego (znów zaskoczenie, "OUT"). Triakom (za bardzo) różnicy nie robi w która stronę przewodzą, ale układ wykrywania przejścia przez zero jest na stałe podłączony do górnego zestawu złącz, a bez niego... no może trochę nie działać.
I tak oto mamy SSR potrafiący robić PWM na prądzie zmiennym***, sterowany akurat sygnałem o takiej polaryzacji jaka używana jest w drukarkach. Swoją drogą, chciałem dać optoizolator na wejście, ale jakoś nie bardzo miejsce nań było. A że i tak płytki sterujące drukarkami mają na wyjściu low‑side-switch... mosfet się wcisnął. Nieco upierdliwe było tylko przeprowadzenie analizy tego czy działa poprawnie, brak oscyloskopu daje się we znaki. Ale wydaje mi się, że watomierz umieszczony na wejściu i żarówka halogenowa spełniły swoje zadanie. W sumie prosty układ na 2 triakach z tiny13, znów nie zrobiłem schematu.
* - A te grzałki na prąd stały to są, tak poza tym, takie sobie, duże straty na samych przewodach, niskie napięcie a prądy duże, Edison się na tym już przejechał kiedyś. ** - A także diaki i osobliwe SSRy na IGBT i izolatorach fotowoltaicznych, ale że osobliwe, to widujemy je w stanie dzikim dość rzadko. To może Tyratrony ? Wyglądałoby ciekawie. *** - sterowanie fazowe, czy jakoś tak temu było w zasadzie. **** - Kuszące jest zrobienie całości w wersji SMD, wyszło by mniejsze. Ale z jakiegoś powodu (pewnie popytu) triak T2535 (DDPAK) będący odpowiednikiem BTA24 kosztuje o rząd wielkości więcej. To ja sobie z tymi BTA poradzę.