• Witamy w największym polskim serwisie internetowym poświęconym w całości zagadnieniom samodzielnej budowy nagłośnienia.
    Dzięki DIYaudio.pl poznasz zagadnienia samodzielnej budowy nagłośnienia od podszewki oraz będziesz mógł dyskutować o DIY audio do woli.

    Artykuły z dawnego portalu zostały przeniesione do sekcji forum na samym dole.

Stacja lutownicza DIY

  • Autor wątku Autor wątku suszi
  • Data rozpoczęcia Data rozpoczęcia
Rejestracja
Lut 26, 2006
Postów
157
Reakcji
0
Lokalizacja
ustroń / warszawa
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
Kod:
#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
}

W planie mam wymianę przycisków na koder obrotowy.
Koszt rozłożony w długim czasie, zdecydowanie poniżej 100zł.
 
Ostatnia edycja:
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.
 
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 .
 
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ę :)
 
Świetna robota, gratuluję wykonania i wiedzy :thumbup:
 
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.

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.
 
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.
 
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ą
grzaka.png

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
 
Ostatnia edycja:
Powrót
Góra