Przeczytałem sobie ostatnio artykuł kol. tenbjetka pt. “USBasp – Programator mikrokontrolerów AVR”. Artykuł jak artykuł – jako że programatora budować nie zamierzam, czytałem po prostu tak jak artykuł w gazecie. Kiedy dotarłem do opisu użycia ekspresu do kawy do wytrawiania płytek stwierdziłem, że to pewnie całkiem ciekawy sposób. Widziałem już pomysły stosowania napędu CD-ROM do poruszania kuwetą, pompki do akwarium do wywoływania ruchu wytrawiacza, ale ekspres…
I w tym momencie mnie olśniło: przecież gdzieś w rupieciach powinien leżeć stary prawie nieużywany ekspres – ot, taki niechciany prezent który jakoś uniknął wyrzucenia na śmietnik. Postanowiłem więc nieco ulepszyć pomysł autora i spróbować na bazie owego ekspresu zbudować jak najniższym kosztem wytrawiarkę.
Urządzenie jest zasilane niebezpiecznym napięciem 230V, a przeróbka wymaga modyfikacji wewnętrznej instalacji. Jeśli nie masz doświadczenia w pracy z napięciem sieciowym nie próbuj samodzielnej przeróbki – poproś kogoś doświadczonego o pomoc. Pamiętaj, że nieumiejętne obchodzenie się z napięciem sieci może doprowadzić do śmiertelnego porażenia!
Zacząłem od małego remanentu i okazało się, że dysponuję praktycznie wszystkimi elementami koniecznymi do zbudowania wytrawiarki. Oprócz oczywiście ekspresu do kawy znalazłem:
- Arduino Pro Mini
- Serwa SG90 – w tym jedno uszkodzone (spalona elektronika)
- Przekaźnik (w Botlandzie oznaczony jako 12A/125V AC, ale według danych producenta styki mogą pracować z prądem 6A przy 250V). Przekaźnik był uprzednio zamontowany w jakimś już nieistniejącym wyłączniku – czyli był już wlutowany w kawałek płytki z zamontowanymi złączami ARK.
- Termometr DS18B20
- Płytka uniwersalna
- Różnej maści oporniki, kondensatory, tranzystory, ledy (wszystko kiedyś kupione w Botlandzie)
- Ładowarka do e-papierosa (niestety, nie przydała się, pewnie dlatego że nie z Botlandu)
Wobec tego postanowiłem zbudować urządzenie wyłącznie z tego co mam w domu.
Zacząłem od sprawdzenia, czy posiadany ekspres nadaje się do moich celów. Usunąłem górny zbiornik wody wraz z całym ekwipunkiem do parzenia kawy, pozostawiając nienaruszoną płytkę grzejną wraz z całą instalacją elektryczną. Usunąłem jedynie rurki łączące grzałkę ze zbiornikiem wody. Po podłączeniu zasilania okazało się, że oryginalny termostat co prawda nie pozwala płytce na osiągnięcie zbyt wysokiej temperatury (nic w tym dziwnego, jako że w obiegu nie ma wody), natomiast bez problemu podgrzewa wodę w dzbanuszku do co najmniej 50 stopni (dalej nie sprawdzałem). Jednocześnie stwierdziłem, że wewnątrz ekspresu po prowizorycznym zakryciu otworu po usuniętym zbiorniku temperatura nie stwarza zagrożenia dla zamontowanej elektroniki.
Teraz byłem już pewien, że uda mi się zbudować wytrawiarkę. Ponieważ jednym z problememów kolegi od którego zaczerpnąłem pomysł było rzadkie mieszanie, uznałem za konieczne zamontowanie jakiegoś mieszadła. Do tego celu postanowiłem wykorzystać uszkodzone serwo SG90 TowerPro (serwo kiedyś omyłkowo podłączyłem do 12V – silniczek to wytrzymał, ale elektronika już nie).
Przeróbka serwa na wolnoobrotowy silniczek jest bardzo prosta. Po odkręceniu czterech śrubek zdejmujemy najpierw dekielek od spodu. Po jego zdjęciu należy odłączyć płytkę z elektroniką (trzy przewody podłączone do potencjometru i dwa do silnika) i przylutować do silnika nowe przewody zasilające. Następnie delikatnie należy podnieść górny dekielek. Nie trzeba demontować zębatek – na najwyższej od spodu znajdziemy dwa występy blokujące krańcowe położenia serwa. Trzeba je delikatnie usunąć (ja użyłem do tego miniaturowej piłki tarczowej, ale można to zrobić nawet porządnym nożem) i zmontować całe serwo z powrotem.
Mając tak przerobione serwo budowa mieszadła była już prosta. W wieczku dzbanuszka wyciąłem otwór na serwo, które przykręciłem dwiema śrubkami M2. Element roboczy można zrobić z dowolnego kawałka plastiku – ja użyłem kawałka starej listwy instalacyjnej, który przymocowałem do orczyka kawałkiem stalowego drutu (taki, jakiego używa się do robienia sztucznych kwiatów Efekt na zdjęciu poniżej.
Przyszła kolej na termometr. Najlepiej by było umieścić go wewnątrz dzbanuszka, ale naprawdę nie miałem pomysłu jak zrobić sondę. Wobec tego przykleiłem go po prostu epidianem do dzbanuszka po zewnętrznej stronie niedaleko dna. Co prawda pomiar temperatury nie jest przez to zbyt dokładny, ale zależy mi na utrzymaniu temperatury mniej więcej w okolicach zadanej, a nie na jakiejś dokładności rodem z laboratorium. Dodatkowo sposób wyświetlania temperatury (za pomocą trzech led) również nie sugerował żadnej superdokładności.
Po skleceniu wszystkiego (oprócz przekaźnika) na płytce doświadczalnej mogłem przystąpić do prób.
Niestety – po podłączeniu całości okazało się, że o ile pojedyncze elementy działają bezbłędnie, o tyle po połączeniu wszystkiego razem termometr pokazuje uparcie 85°. Szybkie spojrzenie w Google – aha, 85° to wartość po resecie (faktycznie, jak już wiem to nawet w dokumentacji znalazłem, przypis drobnym druczkiem pod tabelą przykładowych wartości na czwartej stronie). Wlutowanie kondensatorka 100nF bezpośrednio obok nóżek termometru skutecznie uleczyło go z niezdrowych ciągotek do restartów.
Ostatecznie schemat wygląda tak:
Na szczęście więcej niespodzianek już nie było. Przekaźnik połączyłem szeregowo z oryginalnym wyłącznikiem (musiałem przeciąć i przedłużyć przewód prowadzący od wyłącznika do grzałki) i przykleiłem go klejem na gorąco do ścianki obudowy. Na płytce uniwersalnej umieściłem dwa żeńskie goldpiny jako podstawkę pod Arduino, wlutowałem resztę elementów, przewody, i chciałem w obudowę jeszcze wrzucić zasilacz. Niestety – okazało się że ładowarka po wyjęciu z obudowy z niewiadomych przyczyn zmieniła się w generator dymu, a nie miałem już pod ręką innej niewykorzystanej. Postanowiłem więc, że na razie zasilać urządzenie będę zewnętrznym zasilaczem 5V a jeśli zda egzamin, kupi się jakiś zasilaczyk do zamontowania wewnątrz. Niestety – zakupione kiedyś w Botlandzie gniazda 2.1/5.5 są nieszczególnie wysokiej jakości, w dodatku przeznaczone do druku (Botlandzie, jeśli to czytasz to sprowadź gniazda przykręcane do obudowy, bo w miejscowym Wybitnie Wspaniałym Sklepie Elektronicznym raz że trzeba stać godzinę w kolejce, dwa że mam wrażenie że z moich gniazdek właściciel chciałby wyżywić całą rodzinę łącznie ze stryjecznym dziadkiem wujka żony). Tak więc wygląda to nieco prowizorycznie – ale działa.
Po kilku próbach (z wodą) okazało się, że co prawda sposób wyświetlania temperatury na ledach jest wystarczający, to jednak chciałoby się mieć jakiś termometr – szczególnie w początkowej fazie, kiedy płytka się dopiero nagrzewa. Najbardziej oczywiste rozwiązanie – wyświetlacz – nie wchodziło w grę z uwagi na założenie, że zbuduję to wyłącznie z posiadanych już elementów. Postanowiłem więc wypróbować coś, co miałem ochotę zrobić już dawno: wskaźnik zrobiony z małego serwo ze wskazówką zamiast orczyka.
Jako obudowy użyłem pudełka po kremie (mam kilka takich, przeznaczonych do trzymania różnych drobiazgów) – ma rozmiar akurat taki jak trzeba, dość ładny kolor, a przede wszystkim kształt wieczka pozwala na dość precyzyjne wycięcie okrągłego otworu. Oczywiście tak jak wspomniałem miała to być próba, a jako że urządzenie poza ninejszym artykułem nie jest przeznaczone do prezentacji – drobne niedoróbki mogłem tolerować, o ile poznałem sposób na ich uniknięcie w przyszłości.
Wypukłość na wieczku została odcięta za pomocą tarczy ściernej (tnącej) osadzonej na miniwiertarce. Po podszlifowaniu powstał ładny okrągły otwór (tzn. powstałby teoretycznie, o tym za chwilę). Od wewnątrz zeszlifowałem krawędzie otworu i wkleiłem na Poxipol kawałek przezroczystego plastiku (dokładniej opakowanie po PowerBanku). Oryginalnej wkładki (coś w rodzaju uszczelki) użyłem jako tarczę, do której przymocowałem serwo Redox SG90. Na drukarce wydrukowałem skalę i przykleiłem jakimś klejem do papieru do podkładki. Wskazówkę wyciąłem z kartonu i po pomalowaniu na czarno przykręciłem oryginalnym wkrętem do osi serwa. Samo pudełko przykręciłem do obudowy pojedynczą śrubą M3 – jedna śruba pozwala na pochylenie wskaźnika tak, aby wygodniej było odczytać.
Oczywiście – musiałem przy tym wszystkim popełnić kilka błędów. Przede wszystkim za nisko ściąłem wieczko i wskutek tego pozostały ślady po tarczy ściernej. Należało pozostawić jakiś milimetr i dopiero podszlifować.
Użycie oryginalnej podkładki było największym błędem. Przede wszystkim okazało się, że podkładka plus kartka ze skalą to trochę za dużo. Poza tym chciałem przymocować serwo na dwóch śrubach przyklejonych do tarczy – okazało się, że żaden klej tego nie chwyci, w związku z tym serwo trzyma się na razie na jednej śrubie (nie mogłem zastosować dwóch z uwagi na zbyt małą odległość wskazówki do tarczy) i chyba zaklęciu… Trzeba by było zrobić tarczę z jakiegoś cienkiego i sztywnego plastiku (ewentualnie podszlifowując nieco krawędź pudełka) i wkleić dwie śrubki M2 16mm tak, aby serwo było ustawione idealnie pośrodku tarczy. Niestety – nie miałem odpowiedniego kawałka plastiku, ale już mam namiary na opakowanie po margarynie w lodówce :)
Samą skalę trzeba wydrukować na lepszym papierze (kreda?), a co do wskazówki to co prawda nie mam w tej chwili pomysłu, ale na pewno musi być ładniejsza niż moja.
Jak można było oczekiwać, liniowość tanich serw jest czymś, o czym nie wypada wspominać. W związki z tym napisałem krótki programik, pozwalający na podzielenie skali na 5 odcinków (od 10 do 60°). Program po prostu co sekundę pokazuje temperaturę w pożądanym zakresie co 5°, trzeba tak dobrać wartości w tablicy aby osiągnąć maksymalnie sensowne wskazania.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include <Servo.h> Servo myservo; void setup() { Serial.begin(9600); myservo.attach(5); myservo.write(0); } byte vals[]={170, 125, 88, 54, 22, 1}; void wservo(float temp) { int t; if (temp < 20) t=map(temp, 10, 20, vals[0], vals[1]); else if (temp < 30) t=map(temp, 20, 30, vals[1], vals[2]); else if (temp < 40) t=map(temp, 30, 40, vals[2], vals[3]); else if (temp < 50) t=map(temp, 40, 50, vals[3], vals[4]); else t=map(temp, 50, 60, vals[4], vals[5]); myservo.write((int) constrain(t, 0, 180)); } void loop() { for (byte i=10; i<= 60; i+=5) { wservo((float)i); delay(1000); } } |
Kolej na właściwy program. Postanowiłem napisać go tak, aby był jak najbardziej uniwersalny. Odpowiednio ustawiając definicje w początkowych liniach możemy użyć zwykłego serwo jako mieszadła, ustawić stałe nastawy termostatu lub podłączyć potencjometr do regulacji temperatury. Działanie układu obrazują cztery ledy:
Żółta – temperatura za niska
Żółta + zielona – temperatura nieznacznie niższa od dolnej wartości
Zielona – temperatura między dolną a górną wartością
Zielona + czerwona – temperatura nieznacznie przekracza górną granicę
Czerwona – temperatura za wysoka
Niebieska – włączenie zasilania grzałki
Migotanie wszystkich led oznacza, że termometr nie został wykryty lub utracono kontakt z termometrem. W takiej sytuacji zasilanie grzałki jest odłączane, ale mieszadło działa cały czas.
Termometr jest wykrywany automatycznie, czyli nie trzeba wpisywać do programu adresu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 |
/* * Wytrawiarka.ino * * Copyright 2016 ethanak <ethanak@polip.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * */ #include <DS18B20.h> #include <OneWire.h> //zakomentuj linię poniżej jeśli nie montujesz potencjometru #define USE_POT 1 // zakomentuj linię poniżej jeśli nie używasz wskaźnika #define USE_INDICATOR 1 // zakomentuj linię poniżej jeśli używasz nieprzerobionego serwo // jako mieszadła #define SERVO_BROKEN 1 // zakomentuj linię poniżej jeśli nie używasz seriala #define USE_SERIAL 1 #ifdef USE_POT float TEMP_LOW, TEMP_HIGH; #else // dobierz doświadczalnie wartości poniżej // TEMP_LOW powinna być o 1.5 do 2 stopni niższa niż TEMP_HIGH // TEMP_HIGH dobierasz w zależności od właściwości cieplnych // układu termometr - pojemnik. #define TEMP_LOW 36.0 #define TEMP_HIGH 37.5 #endif // dostosuj definicję pinów do własnych potrzeb #define PIN_THERMO 2 #define PIN_MOTOR 9 #define PIN_RELAY 7 #define PIN_INDICATOR 5 #define PIN_Y 10 #define PIN_G 11 #define PIN_R 12 #define PIN_B 13 #define PIN_POT A3 #ifdef USE_INDICATOR // dostosuj do swojego serwa wartości dla 10, 20, 30, 40, 50 i 60° byte temp_vals[]={170, 125, 88, 54, 22, 1}; #endif // poniżej już nic nie trzeba zmieniać #ifndef SERVO_BROKEN #include <Servo.h> Servo stirrer; #endif #ifdef USE_INDICATOR #include <Servo.h> Servo indicator; #endif /* * funkcje odczytu temperatury pochodzą z mojego innego projektu */ static OneWire onewire(PIN_THERMO); static unsigned char dallas[8]; static float last_temp; static uint32_t last_temp_time; static unsigned char dallas_ok=0; static unsigned char dallas_status = 0; static unsigned char dallas_cycle_lost; static DS18B20 sensors(&onewire); #define THERMO_PERIOD 5000 static int read_sync_dallas(void) { unsigned char i; for (i=0; i < 3; i++) { sensors.request(dallas); while(!sensors.available()) { delay(20); } last_temp=sensors.readTemperature(dallas); if (last_temp < -100.0) { continue; } return 1; } return 0; } void init_thermo(void) { byte i,found=0; for (i=0; i<5; i++) { onewire.reset_search(); while (onewire.search(dallas)) { #ifdef ESP8266 yield(); #endif if (dallas[0] != 0x28) continue; if (OneWire::crc8(dallas, 7) == dallas[7]) { found=1; } } if (!found) { delay(100); continue; } found = 1; onewire.reset(); delay(100); sensors.begin(10); delay(100); if (read_sync_dallas()) break; else found=0; } if (!found) return; last_temp_time = millis() - THERMO_PERIOD; dallas_cycle_lost = 0; dallas_ok = 1; } char read_dallas(void) { if (!dallas_ok) { return -1; } if (millis() - last_temp_time < THERMO_PERIOD) { return 0; } if (!dallas_status) { dallas_status = 1; sensors.request(dallas); return 0; } if (!sensors.available()) return 0; dallas_status = 0; last_temp=sensors.readTemperature(dallas); if (last_temp < -100.0 || last_temp == 85.0) { last_temp_time = millis() - (THERMO_PERIOD - 1000); if (!dallas_cycle_lost) { dallas_cycle_lost = 1; return 0; } return -1; } dallas_cycle_lost = 0; last_temp_time = millis(); return 1; } /* koniec funkcji odczytu temperatury */ byte relay_status = 0; byte bad_temp; void setup() { #ifdef USE_SERIAL Serial.begin(9600); Serial.println("Hello"); #endif init_thermo(); pinMode(PIN_R, OUTPUT); pinMode(PIN_G, OUTPUT); pinMode(PIN_B, OUTPUT); pinMode(PIN_Y, OUTPUT); pinMode(PIN_RELAY, OUTPUT); #ifdef SERVO_BROKEN pinMode(PIN_MOTOR, OUTPUT); digitalWrite(PIN_MOTOR,0); #else stirrer.attach(PIN_MOTOR); #endif #ifdef USE_INDICATOR indicator.attach(PIN_INDICATOR); indicator.write(0); delay(1000); indicator.write(180); delay(1000); #endif bad_temp = !dallas_ok; #ifdef USE_POT read_pot(); #endif } #ifdef USE_INDICATOR void show_temp(float temp) { int t; if (temp < 20) t=map(temp, 10, 20, temp_vals[0], temp_vals[1]); else if (temp < 30) t=map(temp, 20, 30, temp_vals[1], temp_vals[2]); else if (temp < 40) t=map(temp, 30, 40, temp_vals[2], temp_vals[3]); else if (temp < 50) t=map(temp, 40, 50, temp_vals[3], temp_vals[4]); else t=map(temp, 50, 60, temp_vals[4], temp_vals[5]); indicator.write((int) constrain(t, 0, 180)); #ifdef USE_SERIAL Serial.print("Wskaznik "); Serial.println(t); #endif } #endif void do_temp() { #ifdef USE_INDICATOR show_temp(bad_temp?0.0:last_temp); #endif if (bad_temp) { digitalWrite(PIN_RELAY, (relay_status = 0)); return; } if (last_temp < 0) { return; } #ifdef USE_SERIAL Serial.print("Temperatura "); Serial.println(last_temp); #endif if (last_temp <= TEMP_LOW) { digitalWrite(PIN_RELAY, (relay_status = 1)); return; } if (last_temp >= TEMP_HIGH) { digitalWrite(PIN_RELAY, (relay_status = 0)); return; } } void do_led() { if (bad_temp) { byte n = (millis() / 100) % 6; digitalWrite(PIN_R,n == 2 || n == 4); digitalWrite(PIN_G,n == 1 || n == 5); digitalWrite(PIN_B,n == 3); digitalWrite(PIN_Y,n == 0); return; } digitalWrite(PIN_B, relay_status); if (last_temp <= TEMP_LOW) { digitalWrite(PIN_Y, 1); digitalWrite(PIN_R, 0); digitalWrite(PIN_G, last_temp > TEMP_LOW - 2.0); } else if (last_temp >= TEMP_HIGH) { digitalWrite(PIN_Y, 0); digitalWrite(PIN_R, 1); digitalWrite(PIN_G, last_temp < TEMP_HIGH + 2.0); } else { digitalWrite(PIN_Y, 0); digitalWrite(PIN_Y, 0); digitalWrite(PIN_G, 1); } } int motor_counter; byte motor_len; byte motor_mode = 0; void do_motor() { if (!motor_counter) { motor_len=random(50 * 2, 50 * 5); #ifdef SERVO_BROKEN digitalWrite(PIN_MOTOR,(motor_mode = !motor_mode)); #else stirrer.write(motor_mode * 180); #endif } motor_counter = (motor_counter + 1) % motor_len; } #ifdef USE_POT void read_pot() { float n = analogRead(PIN_POT) * (20.0 / 1024.0); TEMP_HIGH = 31.0 + n; TEMP_LOW = 29.0 + n; } #endif void loop() { int n=read_dallas(); #ifdef USE_POT read_pot(); #endif if (n) { bad_temp = n < 0; do_temp(); } do_motor(); do_led(); delay(20); } |
Teraz pozostało tylko zakrycie otworu po zdemontowanym zbiorniku na wodę. W tym celu odciąłem niepotrzebną część (osłonę filtra) górnej pokrywy tak, aby pasowała ona do podstawy. Najprostszym sposobem byłoby wykorzystanie istniejącego zawiasu – nieststy, w moim egzemplarzu był on wyłamany, toteż pokrywę przykleiłem po prostu klejarką na gorąco.
A oto wytrawiarka w pełnej krasie:
A co najważniejsze: Arduino i oba serwa można w razie potrzeby szybko wymontować i zamontować z powrotem!
Kilka uwag:
Schemat dotyczy najbardziej rozbudowanej wersji. W przypadku jeśli nie korzystamy z potencjometru lub wskaźnika, po prostu nie podłączamy tych elementów. Jeśli używamy zwykłego serwo jako mieszadła, pomijamy tranzystor Q1 wraz z diodą i rezystorem, a wejście serwa podłączamy bezpośrednio do pinu D9 Arduino. Należy pamiętać o dokonaniu odpowiedniej modyfikacji w programie!
Poziom wytrawiacza nie powinien być wyższy niż kilka milimetrów powyżej dolnej krawędzi mieszadła – w przeciwnym przypadku ruch wirowy cieczy może poderwać płytkę.
Przyjemnego trawienia życzy
ethanak
A do czego służy wytrawiarka?
Do wytrawiania (robienia) własnych płytek PCB, czyli tworzenia ścieżek drukowanych na laminacie przygotowanych do lutowania elementów elektronicznych ;)
Bardzo dobry projekt, wytrawiarka z pewnością się przyda.
O nie widziałam, że taką rzecz można wgl zrobić. Pierwsze słyszę o wytrywiarce ;) Projekt jakby nie było bardzo dobry.
Ekspres do płytek :-)
Hej, próbuje użyć ekspresu i mam problem, po włączeniu do kontaktu pojawia się dymek i płyta mocno się nagrzewa, ekspres ma 1000 w. Czy zastosowanie termoregulatora i przekaźnika załatwi sprawę?
Po jakim czasie puszcza dym i nagrzewa się zbyt mocno?
Możesz programowo zmniejszyć moc grzałki, w linii 254 programu wpisz np.:
W ten sposób zmniejszasz moc grzałki do 1/5 znamionowej. Liczby 10000 i 2000 musisz sobie dobrać do swojej płytki.
Hej,
dzięki za odpowiedź.
Raz jeszcze wymontowałem podstawkę z grzałką i jak podłączyłem samą to dym się nie pojawił. Pewnie dotykało plastiku jakiegoś.
Nagrzało się mocno, bo jak odstawiłem na bok i oparłem o plastik, to się lekko wtopił.
Czy ten fragment kodu nie rozwali przekaźnika jak będzie go tak włączał/wyłączał? Bo rozumiem, że moc grzałki jest zmniejszona poprzez załączanie i wyłączanie przekaźnika?
A może dało by się regulować moc grzałki za pomocą potencjometru?
Da się za pomocą potencjometru, da się automatycznie, tylko czy to przypadkiem nie jest już temat na forum? Więcej ludzi może pomóc i więcej przeczyta ewentualne rozwiązanie.
Przekażnika nie powinno rozwalić – będzie włączany raz na 10 sekund, powinien to przeżyć. Ale prawdę mówiąc w takiej sytuacji dałbym triaka i MOC3041 – przynajmniej zakłóceń by nie było.
Hej,
złożyłem jeszcze raz wszystko, dymu nie ma :)
Podłączyłem termoregulator akwarystyczny RT-2 i pięknie działa.
Teraz pozostaje tylko zrobić coś w oparciu o jakiś mikro kontroler.
Dzięki za pomysł i pomoc :)!
czas na zakupienie nowego starego expressu.