Ogłoszenie

Collapse
No announcement yet.

Stacja lutownicza DIY

Collapse
X
 
  • Filtr
  • Czas
  • Pokaż
Clear All
new posts

    Stacja lutownicza DIY

    Dawno temu postanowiłem wkonać samodzielnie sterownik do kolby Solomon SL1. Zakupiłem więc kolbę i tak przeleżała sobie kilka ładnych lat. Ostatnio postanowiłem zrobić z niej użytek. Po przejrzeniu kilku projektów w internecie powstał mój - podobny do innych.



    Założenia:
    * Regulacja nastawionej temperatury.
    * Nastawianie dokonywane przyciskami lub koderem obrotowym.
    * Wyświetlanie statusu na wyswietlaczu LCD lub LED - ostatecznie zostal uzyty LCD 2linie x 8znaków.
    * Kolba lutownicza z termoparą. Solomon posiada termoparę typu K. Opis można znaleźć tu: http://www.termoaparatura.com.pl/index.php?go=1457

    Zasilacz
    Użyłem transformatora TS40/47, który akurat miałem pod ręką. Posiada on 4 uzwojenia po 10v, które wykorzystałem do wykonania prostowników 2 połówkowych dla napięć +24v, +5v, -5v (5V stabilizowane). Pod obciążeniem napięcie zasilania grzałki lutownicy utrzymuje się w okolicach 24v.

    Sterownik
    Do sterowania zasilaniem grzałki wykorzystany został procesor Atmega8. Zadawnie temperatury odbywa się za pomocą 2 przycisków, z krokiem co 10 stopni. Napięcie z termopary wzmacniane jest 151x za pomocą wzmacniacza OP07C, ewentualne zakłócenia filtrowane są za pomocą układów całkujących na jego wejściu i wyjściu. Ze wzmacniacza sygnał kierowany jest do wewnętrzenego przetwornika ADC procesora. Przetwornik pracuje w trybie 10bitowym, pomiar dokonywany jest w stanie uspienia procesora i przy wyłączonym przetworniku PWM dla zmniejszenia zakłoceń i zwiekszenia precyzji pomiaru. Odczytana wartość dzielona jest przez 2.4, co w wyniku daje wartość temperatury w stopniach Celsjusza. W zależności od róznicy między temperaturą zadaną a odczytaną dostarczana jest różna moc do grzałki - przedstawia to poniższa 'tabelka': (dt = temperatura zadana - temperatura odczytana)
    dt PWM [%]
    >3 100
    3 80
    2 60
    1 40
    0 20
    Jak widać, regulacja jest skokowa, z dokładnością do jednego stopnia. W połączeniu z odczytem temperatury 3x na sekudę daje to wystarczającą dokładność regulacji. Maksymalna mozliwa do ustawienia temperatura to 420 stopni - wynika z napięć termopary, wzmocnienia stopnia wejściowego i napięcia odniesienia przetwornika ADC. Zakres ten można rozszerzyć zmniejszając wzmocnienie stopnia wejściowego oraz współczynnnik podziału odczytu ADC.
    Układ współpracuje z termoelementem typu K, dla innych typów należy dostosować wzmocnienie stopnia wejściowego i zmodyfikować program.

    Schemat

    Złącza:
    LCD słyży do podłączenia wyświetlacza ze standardowym sterownikiem HD.
    IMP - podłączenie klawiatury lub kodera obrotowego oraz diod LED sygnalizujących np. grzanie (nie używane).
    ISP - złącze programatora w stadardzie KANDA.

    Program
    [code]
    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>
    #include <avr/sleep.h>
    #include "LCD/lcd44780.h"

    volatile int temp_read=0;
    volatile int temp_set=0;
    int pwm=0;

    //inicjalizacja ADC
    void initADC()
    {
    ADMUX = (1<<REFS0)|(1<<REFS1); //internal VREF = 2.65v
    ADMUX |= 0x05; //wejscie ADC5
    ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE); //enable + INT + start str.207
    ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //prescaler = 128 str.208
    }

    //ustawienie obsługo przerwań
    void initINT()
    {
    // przerwania na INT0 oraz INT1 wyzwalane przez zbocze opadające
    MCUCR = (1<<ISC01)|(0<<ISC00)|(1<<ISC11)|(0<<ISC10);
    GICR |= (1<<INT0)|(1<<INT1); //wlaczenie zewn. INT0, INT1
    GIFR=0xC0; //wyczyszczenie flag przerwań INT0, INT1
    sei();
    }

    //włączenie PWM z zadanym wypełnieniem
    void setPWM(int value)
    {
    DDRB |= (1<<PB2);
    if(value<=0)
    {
    PORTB &= ~(1<<PB2); //0% bez uzycia PWM
    return;
    }

    if(value>=100) //100% bez uzycia PWM
    {
    PORTB |= (1<<PB2);
    return;
    }

    TCCR1A |= (1<<WGM10)|(1<<WGM12);//tryb FastPWM 8bit, str.98
    TCCR1A |= (1<<COM1B1); //Set OC1A/OC1B on Compare Match, clear OC1A/OC1B at BOTTOM, (inverting mode), str.97
    TCCR1B |= (1<<CS10); //No prescaling, str.100

    OCR1B=value * 2.55; // % -> 0..255
    }

    //zatrzymanie PWM, zero na wyjście
    void stopPWM()
    {
    PORTB &= ~(1<<PB2);
    TCCR1A = 0;
    TCCR1B = 0;
    }

    void refreshDisplay()
    {
    lcd_cls();
    lcd_str("s");
    lcd_int(temp_set);
    lcd_locate(1,0);
    lcd_str("r");
    lcd_int(temp_read);
    lcd_locate(0,5);
    lcd_str("PWM");
    lcd_locate(1,5);
    lcd_int(pwm);
    }

    int main(void)
    {
    lcd_init();
    lcd_str("SOLOMON1");
    lcd_locate(1,0);
    lcd_str("suszig");
    _delay_ms(2000);

    initADC();
    initINT();

    int dt=0;

    while(1)
    {
    stopPWM();
    _delay_ms(10);
    ADCSRA |= (1<<ADSC); //start pomiaru
    MCUCR|= (1<<SM0)|(1<<SE); //w trybie uśpienia
    sleep_cpu();

    dt = temp_set - temp_read;

    if(dt>3)
    pwm=100;
    else if (dt<0)
    pwm=0;
    else
    {
    switch (dt)
    { //zamiast obliczania
    case 0: pwm = 20; break;
    case 1: pwm = 40; break;
    case 2: pwm = 60; break;
    case 3: pwm = 80; break;
    }
    }
    refreshDisplay();
    setPWM(pwm);
    _delay_ms(333);
    }
    }

    ISR( INT0_vect )
    {
    temp_set+=10;
    if(temp_set>400)
    temp_set=400;
    }

    ISR( INT1_vect )
    {
    temp_set-=10;
    if(temp_set<=0)
    temp_set=0;
    }

    ISR(ADC_vect)
    {
    temp_read = ADC /2.45; //temp w stopniach, wzmocnienie napiecia termopry typu K x151
    }
    [/code]

    W planie mam wymianę przycisków na koder obrotowy.
    Koszt rozłożony w długim czasie, zdecydowanie poniżej 100zł.
    Last edited by suszi; 02.06.2011, 16:44. Powód: formatowanie, zdjęcia :)

    #2
    UWAGI MODERATORA
    O jejku. Ciężko podciągnąć stacje lutowniczą pod tematykę forum. Urządzaniem elektroakustycznym na pewno nie jest. Do kosza szkoda wrzucić. Przenoszę do elektronika.

    Próbowałeś mierzyć temperaturę grota i porównywać z tym co mierzy stacja ? Brak kompensacji termopary (cold junction
    compensation) więc błąd może być znaczny ale raczej do pominięcia w takim zastosowaniu.
    ATMEGA8 się nudzi można by zrobić regulator PID.

    Skomentuj


      #3
      Zamieszczone przez raven1985 Zobacz posta
      UWAGI MODERATORA
      O jejku. Ciężko podciągnąć stacje lutowniczą pod tematykę forum. Urządzaniem elektroakustycznym na pewno nie jest. Do kosza szkoda wrzucić. Przenoszę do elektronika.

      Próbowałeś mierzyć temperaturę grota i porównywać z tym co mierzy stacja ? Brak kompensacji termopary (cold junction
      compensation) więc błąd może być znaczny ale raczej do pominięcia w takim zastosowaniu.
      ATMEGA8 się nudzi można by zrobić regulator PID.
      No właśnie ,: "...szkoda wyrzucić" może by stworzyć w dziale własne konstrukcje wątek poświęcony tego typu sprzętom?To jest nieco chore, że maja tam być tylko i wyłącznie konstrukcje bezpośrednio związane z akustyką.Wszak takie urządzenia jak prezentowana stacja lutownicza czy inne ,ułatwiające,umożliwiające zbudowanie czegoś jak to nazwałeś akustycznego (elektroakustycznego) to właśnie początek jakiejś konstrukcji lądującej na koniec w obecnym dziale diy.Zdecydowanie ciekawsza i bardziej użyteczna jest ta stacja lutownicza niż kabel zasilania 230V za kilka kpln .

      Skomentuj


        #4
        no wrzuciłem w offtopic,
        w końcu to nie "własna konstrukcja elektroniczna związana z audio" (chociaż na upartego, jak się ustawi odpowiednią częstotliwość PWM to grzałka w kolbie gra)

        co do komentarzy
        sam pomiar temperatury może nie być super dokładny, atmega w sumie nie wiele liczy, ale był to projekt typu
        "nudzi mi się, atmegi u brata sobie leżą, może bym się pouczył, bo to przecież proste jest"
        z zawodu jestem informatykiem, więc zaprogramować procka w C to nie problem :)
        temperatura utrzymuje się w zakresie +-2 stopni max, więc wg mnie jest bardzo dobrze
        ile dokładnie jest stopni na grocie też na razie nie sprawdziłem, bo nie posiadam odpowiedniego termometru, brałem dane z tabelek, będę miał to zmierzę
        co do zimnego końca to myślałem zrobić pomiar na czymś i odejmowanie wartości jeśli dobrze rozumiem zasadę, ale, przy temp rzędu 20-30 stopni tego zimnego końca, to różnica nie jest super istotna - niektórzy lutują 270, inni 300, inni 350, a kiedyś transformatorówka dawała radę

        porównując z lutownicą dla studentów i uczniów za 50zł to robienie samemu jest mało sensowne - dla satysfakcji i nauczenia się czegoś, no i może groty solomon ma lepszej jakości (tak uważam)

        ogólnie to chodziło o test :)
        drugą wersję tego sterownika zamierzałem zrobić na attiny, temperatura zadawana DPIswitchem lub koderem BCD - nastawiasz i zapominasz, diodka sygnalizuje kiedy jest OK
        od biedy sam sterownik na attiny mozna by później wmontować w kolbę (zrobić w SMD)

        podsumowując - jak by ktoś chciał coś zaprogramować, to chętnie pomogę :)

        Skomentuj


          #5
          Świetna robota, gratuluję wykonania i wiedzy :thumbup:

          Skomentuj


            #6
            Nie wiem jak w praktyce sie sprawuje ta lutownica ale regulator jest bardzo prymitywny. Jak kolega reven wspomnial regulator PID to jest dopiero dobre rozwiazanie. I przy zaprzegneiciu mikroprocesora jest to jedyne sensowne rozwiazanie. Regulator liniowy mozna zrealizowac znacznie prosciej, analogowo. Jednak on nie uwzglednia bezwladnosci cieplnej grota a to jest bardzo wazne. Obecnie lutuje zawodowa lutownica firmy Pace i to jest na prawde kosmiczna technologia. Nagrzewanie grota trwa 5 sekund a wiem ze sa juz lutownice co nagrzewaja sie w w krotszym czasie.

            Zamieszczone przez suszi Zobacz posta
            niektórzy lutują 270, inni 300, inni 350, a kiedyś transformatorówka dawała radę

            To nie do konca prawda. Po ptostu albo wskaznik tem dziala do du.. albo nawet jesli to jest to tylko temperatura teoretycznie stabilizowania bo rzeczywista jest duzo mniejsza. Dlatego kiepskie lutownice trzeba ustawiac na 350stopni i tyle osiagaja w spoczynku a w trakcie lutowania temp spada do wymaganej, stabilizacja sobie nie raadzi, glownie ze wzgledu na bezwladnosc i rezystancje termiczna grota, najgorsze sa dlugie groty.

            Skomentuj


              #7
              W przypadku prymitywnej lutownicy, gdzie bezwładność temperaturowa jest bardzo duża wynikająca np w dużej pojemności cieplnej lub słabej grzałki i czas reakcji temperatury na grocie od momentu uruchomienia grzania jest bardzo duży, zastosowanie wyszukanego regulatora zupełnie mija się z celem. Nim ten regulator zareaguje a grzałka dogrzeje to już dawno użytkownik skończy lutować element. Zwykły regulator na zasadzie włącz gdy za zimno, wyłącz gdy za ciepło lub regulator proporcjonalny jest wystarczająco dobry.

              Skomentuj


                #8
                wartości dobierałem doświadczalnie, a nie "bo tak sobie wymyśliłem"
                u mnie grzałka jest na zewnątrz grota i styka się bezpośrednio z wymienną końcówką

                czarne - grzałka
                niebieskie termopara - jak mniemam gdzieś pod spodem grota

                przetestowałem też tryb włącz wyłącz, nie sprawdza się, ze względu na bezwładność układu - temperatura utrzymywała się w zakresie nawet +-10 stopni

                wartości dla PWM są dobrane doświadczalnie, oczywiście wiadomo, że po wsadzeniu kolby do szklanki z wodą temperatur spadnie w końcu to tylko 50W!
                lutownice o których pisze Irek maja pewnie po 100-200W i porządny regulator

                implementować PIDa w tym przypadku sensu nie widzę, inaczej, gdybym robił sterownik temperatury dla domu, to owszem
                Last edited by suszi; 04.06.2011, 11:47.

                Skomentuj


                  #9
                  Wszystkie stacje z wyższej półki mają PID :) Roboty nie dużo :)

                  Skomentuj


                    #10
                    kurde :) prawie mnie namówiliście
                    z nudów to chyba go zrobię...

                    Skomentuj

                    Czaruję...
                    X