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.

Cyfrowo sterowana stacja lutownicza

Pixelx 03 May 2018 00:54 783 12
Tespol
  • #1
    Pixelx
    Level 9  
    Witam.

    Jestem w trakcie budowy cyfrowej stacji lutowniczej.
    Chcę wykorzystać uC Atmega32 i sterowanie fazowe, kolba lutownicza to ESD Solomon SL-20ESD, transformator toroidalny 2x12V uzwojenia połączyłem i uzyskałem 24V.

    Na razie wykonałem sterowanie fazowe i zsynchronizowałem się z siecią w tym celu zrobiłem detektor zera na PC814 i za pomocą potencjometru płynnie zmieniam kąt załączenia triaka.
    Problem mój jest taki, że nie za bardzo wiem jak przeliczyć wartość napięcia z termopary (po wzmocnieniu) na wartość temperatury i jak sterować tym kątem załączenia w sterowaniu fazowym w zależności od tej temperatury. Czy ktoś z was posiada jakiś kawałek kodu, który pomógłby mi to wysterować.

    Tak wygląda na oscyloskopie regulacja fazowa, którą zrobiłem i reguluje to jak wspomniałem potencjometrem przez ADC.

    Cyfrowo sterowana stacja lutownicza

    Z góry dziękuję za pomoc.
  • Tespol
  • #2
    kacpo1
    Level 33  
    Pixelx wrote:
    że nie za bardzo wiem jak przeliczyć wartość napięcia z termopary (po wzmocnieniu) na wartość temperatury

    Potrzebowałbyś to albo przeliczyć, znając przyrost napięcia na stopień Celsjusza i wzmocnienie, albo wykorzystać układ do termopary np. MAX31856.
    Pixelx wrote:
    jak sterować tym kątem załączenia w sterowaniu fazowym w zależności od tej temperatury

    Albo porównywać temperaturę kolby z tą "ustawioną", i jeśli jest mniejsza, to w jakimś stopniu zmienić kąt załączania, poczekać i sprawdzić jeszcze raz (szybsze rozgrzewanie), albo po prostu zrobić sobie wykres zależności kąta (czasu w którym triak jest zamknięty, do temperatury kolby.
  • #3
    jarek_lnx
    Level 43  
    Musiał byś znać typ termopary, ale jest prostszy sposób, zarejestrować napięcie podczas kiedy stop lutowniczy krzepnie, jeśli użyjesz stopu zbliżonego do eutektyki i w miarę czystego (lepiej świeżego, a nie resztek po lutowaniu o nieznanej liczbie domieszek), to temperatura krzepnięcia jest dość dokładnie znana.

    Na potrzeby stacji lutowniczej można założyć że termopara jest liniowa, a w temperaturze 20°C daje zerowe napięcie, więc jednopunktowa kalibracja wystarczy.

    A co do sterowania fazowego - po obliczeniu różnicy temperatury nastawionej i aktualnej powinien się znaleźć jakiś regulator najprościej proporcjonalny, lepszy był by PID, ale wszystko zależy jak dobrą stabilizację chcesz uzyskać i jak długo będzie ci się chciało bawić w dobieranie nastaw.
  • #4
    Pixelx
    Level 9  
    Z tego co słyszałem to typ termopary jest to K.

    Quote:
    Albo porównywać temperaturę kolby z tą "ustawioną", i jeśli jest mniejsza, to w jakimś stopniu zmienić kąt załączania, poczekać i sprawdzić jeszcze raz (szybsze rozgrzewanie), albo po prostu zrobić sobie wykres zależności kąta (czasu w którym triak jest zamknięty, do temperatury kolby.


    No to wydaje mi się być najbardziej rozsądne np: dla temp 450 stopni będzie to kąt 30 stopni elektrycznych, a dla np: temp 80 stopni to kąt elektryczny 10 stopni. Czyli jednym potencjometrem ustawiam temp zadaną i przeliczam w zależności od tej nastawy na kąt załączenia triaka.

    Myślałem też o PID. Sprawdzałem trochę po internecie ale nigdzie nie ma nic na temat doboru nastaw. I do końca nie wiem jak to zaimplementować.
    Takie coś znalazłem: https://starter-kit.nettigo.pl/2013/09/regulatory-pid-wstep/

    O układzie MAX31856 słyszałem ja pisze w C języku, patrzyłem za bibliotekami i wszystko na arduino, posiada ktoś z was bibliotekę do tego i sprawdzoną?
  • Tespol
  • #5
    jarek_lnx
    Level 43  
    Pixelx wrote:
    No to wydaje mi się być najbardziej rozsądne np: dla temp 450 stopni będzie to kąt 30 stopni elektrycznych, a dla np: temp 80 stopni to kąt elektryczny 10 stopni. Czyli jednym potencjometrem ustawiam temp zadaną i przeliczam w zależności od tej nastawy na kąt załączenia triaka.
    Tylko że to jest regulacja w otwartej pętli kiedy zaczniesz topiś cynę temperatura spadnie a "regulator" tego nie uwzględni. Poza tym zależność mocy od kąta włączenia jest nieliniowa, temperatury od mocy także nie ma sensu przyjmować jakichś wartości "na oko"
  • #6
    Pixelx
    Level 9  
    No to jak rozwiązać ten problem tego sterowania? I jak przeliczyć to te wolty po wzmocnieniu sygnału z termopary na temperaturę? Ma ktoś jakiś kod takiego przeliczenia?
  • #7
    kacpo1
    Level 33  
    jarek_lnx wrote:
    Tylko że to jest regulacja w otwartej pętli kiedy zaczniesz topiś cynę temperatura spadnie a "regulator" tego nie uwzględni.

    Raczej swego rodzaju sprzężenie zwrotne. I dla czego "regulator" ma tego nie uwzględnić? Zasada działania wygląda tak, że cały czas porównuje temperaturę nastawioną do rzeczywistej, i jeśli nastawiona jest wyższa, to w jakimś stopniu zmniejsza czasu opóźnienia na triaku, sprawdza ponownie, i znowu koryguje.

    Pixelx wrote:
    I jak przeliczyć to te wolty po wzmocnieniu sygnału z termopary na temperaturę?


    A nie lepiej zamontować układ ze znanym wzmocnieniem? Są do tego nawet biblioteki na uC. Choćby MAX6675
  • #8
    Pixelx
    Level 9  
    No mógłbym wykorzystać taki układ, tylko ze jak szukałem bilbiotek to wszystko widzialem na arduino a ja pisze w atmel studio czyli w C. Jakos nie idzie mi zbytnio odnalezienie takiej biblioteki. Chyba ze mozna wykorzystac te z arduino? Bo nigdy tak nie robilem. Jeżeli mógłbyś to umiescilbys tutaj ja do pobrania?

    A gdybym chciał to ręcznie przeliczyć w uC? To jak powinno wygladac to przeliczenie konkretnie ?

    I PID chcialbym dodać, przegladalem rozne metody na internecie tylko nikt nie opisuje jak dobrac nastawy.
    Jeżeli chodzi o PID to mam pyt. Co zwraca ten regulator jak dodam go do funkcji? Jakas wartosc napiecia rozumiem ? Czyli stabilna temperature mi zapewni?
  • #10
    kacpo1
    Level 33  
    Znajdź notę katalogową swojej termopary (chyba, że znasz przyrost napięcia na stopień) i skorzystaj z wzmacniacza nieodwracającego, czyli takiego ze znanym wzmocnieniem. Reszta to już prosta matematyka w kodzie.

    Tutaj artykuł o wzmacniaczu nieodwracającym https://extronic.pl/content/9-wzmacniacz-nieodwracajacy
  • #11
    Pixelx
    Level 9  
    Wzmacniacze operacyjne itd wiem jak działają, miałem z nimi już do czynienia w różnych konfiguracjach.

    Problem mój to właśnie przeliczenie na temp. Znalazłem kilka różnych tabeli z termoparami i wartości są identyczne ja używam kolby ESD Solomon SL-20ESD.

    Przeliczyłem i wychodzi, że na 1 stopień przypada 0,004V.

    Pytanie jak wysterować kąt załączania triaka i chciałbym dodać też regulator PID??
    Myślałem, że jak dodam regulator to kątem załączenia będę sterował w zależności o wartości uchybu czyli różnicy temperatury zadanej a bieżącej grota.
    Znalazłem takie coś o PID: https://starter-kit.nettigo.pl/2013/09/regulatory-pid-wstep/

    Kod z powyższej strony. Jest w języku dla arduino, ale przerobienie na C to nie problem.

    Code:
    void loop()
    
    {
     en = analogRead(2); //tutaj założyłem, że wartość uchybu poznajemy za pomocą odczytu z pinu A2
     C += ((ep + en)/2)*dt;
     U = Kp*(en + (1/Ti)*C/1000 + Td*(en - ep)*1000/dt)
     ep = en;
    }


    Poniżej załącznik i strona z wartościami mV w zależności od temperatury
    http://www.ni.com/white-paper/4231/en/
  • #12
    kacpo1
    Level 33  
    Pixelx wrote:
    Przeliczyłem i wychodzi, że na 1 stopień przypada 0,004V.

    ADC w ATmega32 ma 10-bit więc dokładność 0.0048V więc możesz mieć błąd odczytu +- 1 stopień, czyli dosyć dokładny.

    Pixelx wrote:
    Pytanie jak wysterować kąt załączania triaka i chciałbym dodać też regulator PID??

    PID to jest nic innego jak pętla sprzężenia zwrotnego z układem regulacji. Czyli - bierzesz zadaną temperaturę, odejmujesz od niej prawdziwą temperaturę, i jeśli wynik jest dodatni, oznacza to, że zadana temperatura jest większa od realnej, czyli o jakiś stopień zwiększasz "wypełnienie" fazy, czynność powtarzasz znowu i znowu... Aż do uzyskania temperatury bliskiej tej zadanej. Oczywiście układ będzie oscylował przy zmianach temperatury, ale po jakimś czasie to ustąpi (masz wykresy na stronie). Przy okazji, przy porównywaniu temperatur, zostaw sobie margines błędu, np. 2-5 stopni, aby układ nie oscylował w nieskończoność.
  • #13
    Pixelx
    Level 9  
    W sumie zrobiłem takie przeliczenie na temp.
    Wartość 0,004 odpowiada 1 st i jest to wartość już po wzmocnieniu przez OPAMP.

    V= wart_ADC * 0,0049
    temp= V / 0.004
    temp+=25

    wart_ADC to jakaś wartość np: 120

    V=120 * 0,0049 = 0,588
    temp=0,588 / 0,004 = 147 C
    temp=147+25=172 C

    1. Takie obliczenie jest poprawne?

    Znalazłem też temat na elektrodzie z stacją lutowniczą i tam obliczenie temperatury wyglądało tak.
    2. Jak to rozumieć, skąd wynika wartość 260 w wzorze?

    Link do tematu:
    https://www.elektroda.pl/rtvforum/topic1426196.html

    Code:
    V = Wart_ac * 0.0049
    
     Temp = V * 260
     Temp = Temp + 25


    Domyślam się, że jest to prosty sposób wyznaczania wartości temp grota. Czytałem też o kompensacji temperatury zimnego końca i myślę, że fajnie byłoby dodać taką opcję.

    3.Jak to uwzględnić w obliczeniach temperaturę zimnego końca?
    4. Jeżeli termopara zwróci wartość około 1,8V przy 450 stopniach to warto zastosować zewnętrzne napięcie referencyjne o wartości 2V? I czy takie napięcie będzie wystarczające?