Inhaltsverzeichnis |
Die Lötstation ist geeignet für WELLER oder ERSA oder andere Lötkolben mit einer 24V Heizung und Temperaturfühler. Die Solltemperatur lässt sich durch 2 Tasten (UP und DOWN) in 10° Schritten einstellen. Auf einem LCD-Display wird die aktuelle Temperatur des Lötkolbens und die Solltemperatur angezeigt.
Jede Sekunde wird die Isttemperatur gemessen. Gesteuert wird eine bestimmte Anzahl Perioden. Also von 0 bis 50 in einer Sekunde. So kann die Heizleistung in 2% Schritten variiert werden. Gewöhnlich erreicht der ein 50W Lötkolben schon mit 20W eine Temperatur von 280°C, deshalb wird nahe der Isttemperatur die Regelung auf 40% (20 Perioden) gestellt.
Im Bild sieht man eine Sekunde mit 50% Leistung.
Temperaturmessung:
Im Lötgriffel befindet sich ein Temperaturfühler Dies kann ein Thermoelement
sein (z.B. bei Ersa) oder ein Platinsensor (z.B. Weller). Auch andere Sensoren
(Wie PTC) sind denkbar, die Schaltung muss entsprechend dimensioniert werden
und evtl. muss die Berechnung in der SW geändert werden. Der OPV in der
Schaltung arbeitet als nichtinvertierter Verstärker falls ein Widerstandsfühler
verwendet wird. Oder als Differenzverstärker wenn ein Thermoelement verwendet
wird. Es kann der OP07 oder der CA3140 verwendet werden. Vermutlich auch noch
andere.
Steuerung der Heizleistung:
Ein Triac schaltet im Nulldurchgang auf der 24V Seite des Trafos. Es können
verschiedene Optotriacs verwendet werden, der Widerstand R2 muss dann jedoch
angepasst werden, damit der Triac sicher schaltet.
Controllerteil:
Die Steuerung erfolgt mit einem AVR Mega8 getaktet mit 1MHz.
Per UP/DOWN Tasten kann die Soll-Temperatur eingestellt werden Soll- und Ist-Temperatur werden auf dem LCD-Display angezeigt Die Regelung erfolgt durch Ein-Ausschalten im 1Hz Takt, wobei das Puls-Pausenverhältnis variiert wird. Der Schalter an PC3 ist für Erweiterungen gedacht. (z.B. Erkennen ob der Kolben lange Zeit nicht abgelegt war um dann abzuschalten)
Der Nulldurchgang wird durch den Komperator im µC erkannt, der dann (alle 20ms) einen Interrupt auslöst. Ein Eingang des Komparators (PIN13) geht an die 2,5V Referenz des AVR, der andere (PIN12) zum Netzteil
Achtung der Stecker vom Display ist spiegelverkehrt angeschlossen weil ich ihn von unten anlöte
Netzteil:
Trafo 2*7 bis 2*12V
Eine Halbwelle wird über den 100k Widerstand auf den Komperator des µC gelegt
Das Programm ist in C geschrieben.
Im Hauptprogramm läuft der Prozessor nach Initialisierung der Komponenten in eine Endlosschleife
int main(){
port_init(); // Ports initialisieren
lcd_init(LCD_DISP_ON); // initialisiere display, cursor off
ad_init(); // AD-Wandler initialisieren
ac_init(); // initialisiere analog-Komparator
timer_init(); // Timer initialisieren
Tsoll=Lese_Starttemp(); // Starttemperatur lesen, Vorgabe vom letzten mal
Schreibe_Startemp(Tsoll); // Starttemperatur schreiben
lcd_puts("Start... "); // Startmeldung auf LCD
sei(); // enable interrupts
for(;;){ // tue nix Schleife
}
}
Die eigentliche Steuerung liegt in der Interrupt-Routine von Timer1 der genau jede Sekunde ausgeführt wird. Hier wird die Spannung des AD-Wandlers gelesen und in einen Temperaturwert umgerechnet. Die Tasten UP, DOWN werden abgefragt und der Sollwert entsprechend geändert. Ändert sich der Sollwert, wird er im EEPROM gesichert. Die Ist-Temperatur (Tist) und die Soll-Temperatur (Tsoll) werden angezeigt.
//Timer Interrupt - kommt genau jede Sekunde
SIGNAL (TIMER1_OVF_vect){ // Timer1 overflow
cli(); // Alle Int. sperren solange in INT-Routine
TCNT1 = startwert; // Vorbesetzen (1s)
perioden=0; // neuer Periodenzyclus
lcd_clrscr(); // 1.Zeile
adWert=leseAD(); // lese Spannungswert
Tist = adWert*faktor+n; // Temperatur berechnen
zeige_Tist(Tist); // anzeigen
if(bit_is_clear (PINC,1)) // wenn Taste DOWN gedrückt
{
if(Tsoll>10) // und min-wert noch nicht erreicht
{
Tsoll=Tsoll-10; // erniedrige Tsoll
Schreibe_Startemp(Tsoll); // sichere Tsoll im EEPROM
}
}
if(bit_is_clear (PINC,2)) // wenn Taste UP gedrückt
{
if(Tsoll<450) // und max-wert noch nicht erreicht
{
Tsoll=Tsoll+10; // erhöhe Tsoll
Schreibe_Startemp(Tsoll); // sichere Tsoll im EEPROM
}
}
zeige_Tsoll(Tsoll); // Solltemp. anzeigen
Die Regelung schaltet auf volle Heizleistung wenn die Temperatur mindestens 20°
zu gering ist.
Ist die Temperatur 20° zu hoch wird die Heizung auf 0% gestellt. Dazwischen
beträgt die Heizleistung 40%
// regelung ********************************************
if (Tsoll<=Tist){ // zu heiss
if (Tist-Tsoll < 10){ // weniger als 10 Grad Abweichung
stellwert = 20; // Heizleistung 40%
}
else { // Abweichung größer 20 Grad C
stellwert = 0; // erst mal gar nicht Heizen
}
}
if (Tsoll>Tist){ // zu kalt
if (Tsoll-Tist < 10){ // weniger als 10 Grad Abweichung
stellwert = 20; // Heizleistung 40%
}
else { // Abweichung größer 20 Grad C
stellwert = 50; // 100% Heizleistung
}
}
sei(); // enable interrupts
}
Der Analogkomparator des Mega8 löst einen Interrupt aus wenn die
Wechselspannung fallend ist und den Wert von 2,5V erreicht hat.
Dies ist alle 20ms der Fall. Hier werden nun die Perioden gezählt und die
Heizung nach vorgegebener Periodenzahl abgestellt.
Das Einschalten erfolgt, wenn die Periodenzahl 0 beträgt. Nach einer vollen
Sekunde wird die Periodenzahl vom Timerint. auf Null gesetzt.
//Analog-Comparator Interrupt Routine je Netzspannungshalbwelle in Nulldurchgang
SIGNAL (ANA_COMP_vect){
if (perioden==0){ // Neuer Periodenzyclus hat begonnen
PORTC |= (1 << 5); // Heizung einschalten
PORTC |= (1 << 4); // LED einschalten ***test*************
}
if (perioden==stellwert){ // Einschaltdauer (Periodenzahl) erreicht
PORTC &= ~(1 << 5); // Heizung abschalten
PORTC &= ~(1 << 4); // LED abschalten ****test*********
}
perioden++; // wieder eine Periode vergangen
}
Zur LCD-Anzeige muss das Programm von Peter Fleury eingebunden werden
Anpassungen:
Hier müssen bei Platin- oder PTC-Temperaturfühler ein Widerstand RPTC1 und eine
Brücke RPTC2(0 Ohm) rein.
In der Software muss die Formel zur Berechnung der Temp. angepasst werden.
Entweder für Ersa mit Thermoelement
float faktor = 0.5889; // Spannung in Temp. bei Thermoelement
float n = 20; // y = mx + n bei Thermoelement
oder für Weller mit PT25
float faktor = 0.73; // Spannung in Temp. bei PTC
float n = -289; // y = mx + n bei PTC
Die eigentliche Berechnung erfolgt hier
Tist = adWert*faktor+n; // Temperatur berechnen