wtorek, 24 kwietnia 2018

Sterowanie grupowe mocą grzałki - BLYNK +ESP + SSR czII

Teorię sterowania grupowego napięciem / mocą prądu przemiennego mamy już za sobą. Wybór elementu wykonawczego również. Pora zająć się sercem układu - będzie to ulubiony mój mikrokontroler ESP8266. A że potrzebuję jedynie jedno wyjście cyfrowe może to być nawet najprostszy ESP-01 a najlepiej ESP-01S. Dziś o tym jak połączyć silne i słabe prądy w mikroprocesorowym regulatorze mocy.



Sterować przekaźnikiem SSR można bezpośrednio z mikrokontrolera nawet tak delikatnego jak ESP. Ale dla pewności wcisnę między nimi tranzystor  zwiększając napięcie sterowania SSR do 5 V.

To w zasadzie cały schemat regulatora nie licząc oczywiście modułu ESP. Niestety ESP-01 nie ma na pokładzie stabilizatora 5/3V3 i ten element trzeba dodać. Przydała by się jakaś dioda i  ewentualnie zaciski zasilania i przyłączenia sterowania. Coś ten prosty schemacik zaczyna się niebezpiecznie rozrastać. Na szczęście w pogotowiu są bracia Chińczycy i ich sympatyczny układzik ESP-01 Relay opisywany wcześniej.


Mam tu wszystko czego mi potrzeba: podstawka pod ESP, stabilizator, tranzystor, zaciski i dioda. Zbędny jest przekaźnik ale co tam za 6 zł mogę zaszaleć płytką z przekaźnikiem. Powyższy schemat dotyczy wersji 1.0 płytki przekaźnika, moja zaś ma już numer 4.0 i dodatkowo włączony transoptor pomiędzy GPIO0 a bazę tranzystora. Po jakiego grzyba? Przekaźnik zasilany jest z tego samego 3V co i ESP-01 i ewentualne przepięcia i tak pojawią się na ESP poprzez zasilanie. Jeśli problem był w załączaniu przekaźnika zerem zawsze można zastosować tranzystor PNP. Więc nie bardzo wiadomo po co ten transoptor jest. Ale kto tam zrozumie chińskich inżynierów ....
Najważniejsze, że płytka idealnie pasuje jako element sterujący regulatorem grupowym.

Zacisk sterujący +SSR jest przyłączony do +5V zaś -SSR do kolektora tranzystora (nóżka nr 3 przekaźnika). Te dwa punkty dołączyłem do kostki zaciskowej przekaźnika (wcześniej usuwając go z modułu) i sterownik gotowy.

I jeszcze zasilanie modułu z ESP. Potrzebne jest 5V. Ale i tu z pomącą pospiesza Aliexpress. Bardzo eleganckie i bezpieczne przetwornice typu HLK dostarczają stabilizowanego napięcia o mocy 3W. Idealnie.


A tak to wygląda w po przeróbkach. Zasymulowałem stan 0 na pinie GPIO0 (zworka na podstawce ESP). Widać święcący się niebieski LED na module i czerwony LED w SSR co oznacza załączony przekaźnik SSR.



Program

Ciężko to nazwać programem. To raczej programik do odmierzania impulsów czasowych. Co 1 sekundę następuje początek okresu regulacji. W tym momencie staruje generator impulsu realizowany przez bibliotekę Timers.h.  Minimalny cza załączenia to 10 ms toteż dla 1 sekundy mam 100 poziomów regulacji mocy. A potrzebuję ich 5 (0; 1/4; 1/2; 3/4; 1). Dodałem więc tablicę przelacznik[] zawierającą kolejne nastawy przełącznika mocy.

#include <Timers.h> //  my favorite timer 
Timers <7> akcja; //
#include "blynk.h" //obsługa BLYNKa

#define led_czerw   0 //SSR
#define led_wew   2   //LED ESP
#define s_max   100 //okres regulacji = s_max*10 ms

int przelacznik[] = {0, 25, 50, 75, 100};
int nr_p = 0;

void ledsetup() {
  pinMode(led_czerw, OUTPUT); //LED na module
  digitalWrite(led_czerw, HIGH);
  pinMode(led_wew, OUTPUT); //LED na module
  digitalWrite(led_wew, LOW);
}
int skok = 0;
int flaga_led = 0;
void led_timer()
{
  flaga_led = !flaga_led;
  digitalWrite(led_wew, flaga_led);
}
BLYNK_WRITE(V11) {
  int i = param.asInt();
  if (i == 1) {
    nr_p++;
    if (nr_p > 4)nr_p = 0;
    skok = przelacznik[nr_p];
    Blynk.virtualWrite(V10, skok);
    Blynk.virtualWrite(V12, skok);
  }
}
BLYNK_WRITE(V10) {
  skok = param.asInt();
  Blynk.virtualWrite(V12, skok);
}

void ssr_timer()
{
  Serial.println(skok);
  int  impuls = skok * 10;
  akcja.setInterval(2, impuls);
  if (impuls > 0) digitalWrite(led_czerw, LOW); else digitalWrite(led_czerw, HIGH);
}

void ssr_stop_timer() {
  akcja.setInterval(2, 0);
  digitalWrite(led_czerw, HIGH);
}

void setup() {
  Serial.begin(115200);  delay(100);
  Serial.println();  Serial.println(F(__FILE__));  //BLYNK .4.10 Arduino IDE.cc 1.8.3
  ledsetup();

  akcja.attach(0, 2000, led_timer);
  akcja.attach(1, (s_max * 10), ssr_timer);
  akcja.attach(2, 0, ssr_stop_timer); //mono impuls
  akcja.attach(3, 3000, blynk_timer); //

  blynksetup(); // setup biblioteki BLYNK
  Blynk.virtualWrite(V10, skok);
  Blynk.virtualWrite(V12, skok);
  Blynk.setProperty(V10, "color", _MAGENTA);
  Blynk.setProperty(V11, "color", _MAGENTA);
  Blynk.setProperty(V12, "color", _MAGENTA);

}

void loop() {
  akcja.process(); // timer
  blynkakcja();    //BLYNK
}

Część programu odpowiedzialna za komunikację z BLYNK - blynk.h - jest taka sama jak w innych projektach (np. tu >>>).
Wszystko obsługiwane jest z telefonicznego BLYNKa  dwoma widgetami. Suwak umożliwia "płynną" regulację mocy co 1%. Przycisk przełącza kolejne stopnie mocy.  I to wszystko.




No może nie całkiem wszystko. Teraz najtrudniejsze - część mechaniczna. Najważniejsze to radiator. Oprócz samych zalet SSR ma potężną wadę - się grzeje. Typowy spadek na tym przekaźniku to 1-1,6V. Niby niewiele. Ale już przy prądzie 10 A wydziela się do 16 W mocy. A dla 25A prawie 40 W!!! To już naprawdę spory piecyk i to zamknięty w obudowie. Dla 10-16 A można się jeszcze pokusić o chłodzenie naturalne przy sporych rozmiarów radiatorze. Dla większych prądów konieczny jest już wentylator.
Kolejny problem to obudowa. Ne może być z byle jakiego plastiku bo popłynie pod wpływem temperatury. Metalowa też odpada ze względów bezpieczeństwa. Tylko twardy, odporny na temperaturę plastik (kiedyś był to ebonit) wchodzi w grę. Do tego solidne gniazdo sieciowe i kabel zasilający minimum 1,5 mm2. I wszystko oczywiście z przewodem ochronnym. Tu już nie ma żartów z bezpieczeństwem naszym i osób trzecich.

Udało się to wszystko upchać do znalezionej w warsztacie obudowy


 a po zamknięciu nawet znośnie wygląda



A z drugiej strony kontroly LED migający w takt sterowania przekaźnika SSR i przycisk przełączający skokowo moc co 25%.



Teraz już tylko próby pod obciążeniem i pracę można uznać za zakończoną.

I chwila przerwy na prace ogrodowe w oczekiwaniu na lato i ciąg dalszy.....
132

Brak komentarzy:

Publikowanie komentarza