Lötstation
Vorgeschichte:
Wie man im Panorama noch erkennen kann,
hatte ich bis Anfang 2006 noch eine LS50, die ich Anno 2000 beim hohen C gekauft
hab. Durch einen Transport hat sich das Teil anscheinend einen Schlag
eingefangen, zumindest fing die Temperaturanzeige ab einer gewissen Temperatur
das Spinnen an. Dadurch wurde auch die Regelung irritiert und der Lötkolben
wurde mit 100% befeuert (wer kommt eigentlich auf die bekloppte Idee, den
Lötkolben mit 100% Leistung zu betreiben, wenn ein Fehler bei der
Temperaturmessung auftritt?). Nachdem ich die Leitungen zur "Bratwurst" geprüft
hab, ob es nicht doch nur ein Wackelkontakt ist, öffnete ich das Gehäuse.
Entgegen kam - wie ich es eigentlich schon erwartet habe - ELV'sche
Ingenieurskunst. Damit niemand auf dumme Gedanken kommt, fällt hier kein
weiteres Wort über die Schaltung der alten Lötstation.
Nachdem ich zugegebenermaßen ein relativ fauler Mensch bin, habe ich mich
daraufhin nach einer neuen Lötstation in der gleichen Preisklasse und etwa den
gleichen technischen Daten umgesehen. Alle, aber auch wirklich alle, die ich
gefunden habe (darunter auch die von ERSA) haben so ziemlich die gleichen
Bedienelemente und das gleiche Display - so vermutlich auch die gleiche
Elektronik. Also nicht wirklich das, was ich suche.
Also das Thema nochmal im IRC ein bisschen durchkauen - warum eigentlich kein Selbstbau? Das Know-How für die Entwicklung ist ja durchaus vorhanden. Damit die ganze Elektronik nicht allzu stark ausufert und komplette Europlatinen füllt, kommt wieder einmal ein Mikrocontroller zum Einsatz. Da der CC5x-Compiler in der freien Version auf 1k Code beschränkt ist und nicht optimiert, fällt die Entscheidung nicht auf einen PIC. Viel mehr ist es ein schöner Einstieg in die Welt der AVRs!
Der Vorteil von AVRs ist klar ersichtlich:
- Die CPU hat den gleichen Takt wie die Taktquelle (kein 4:1 Vorteiler)
- Viel Programmspeicher für wenig Geld
- Sehr einfacher Programmer (Einfachversion benötigt lediglich eine Hand voll
Bauteile)
- Keine Codebeschränkung, relativ gute Codeoptimierung (WinAVR
- aufgebohrtes GCC)
Anforderungen:
- Einfache Bedienung -> Schnelltasten, Drehgeber
- halbwegs intelligente Regelung
- LC-Display (2x16 - gehört einfach dazu)
- kompatibel mit möglichst vielen Lötkolben
- effektive Leistungsregelung (schließlich soll nur der Lötkolben heiß werden)
- Erweiterbarkeit (zum Beispiel Ablagetaster zum automatischen abkühlen)
Als Thermoelement verwenden viele Lötkolben ein Typ K-Element,
also durchaus gebräuchlich. Zum digitalisieren der Temperaturwerte sollte ein
interner ADC reichen, nur wie vom ADC-Wert auf die Temperatur schließen? Da die
Kennlinie nicht ganz linear ist, reicht einfaches rechnen nicht. Also muss man
irgendwie die unlinearität der Kurve berücksichtigen.
Die einfachste Lösung hierfür wäre eine Lookup-Table. Für meinen Geschmack ist
das allerdings zu einfach und braucht zudem noch unnötig viel Speicher. Zudem
schwanken die Messwerte eh immer ein bisschen und bei einer Lötstation kommt es
auch nicht auf jedes einzelne °C an. Prinzipiell sollten wenige Schritte von
markanten Punkten ausreichen. Alles dazwischen kann man ausrechnen. Solch eine
Funktion lässt sich in C schon mit einigen wenigen Zeilen lösen - Stichwort
Steigungsdreieck, Mathematik 8. Klasse.
Zweiter Punkt: Leistungsregelung. Da linear regeln totaler
Schwachsinn ist (im Unidealfall werden >100W in Hitze umgewandelt) muss einfach
gesagt eine an/aus-Regelung her. Wenn man PWM auf Trafoausgang (für den
Lötkolben nicht gleichgerichtet, wären Perlen vor die Säue) loslässt, wird
dieser wohl schon ziemlich früh den Dienst quittieren.
Die einzig vernünftige Lösung ist wohl ein Phasenan- bzw. abschnittdimmer.
Hardwareseitig ist dazu nur eine Nullpunktdurchgangserkennung notwenig, bzw.
eher eine Schaltung, die eine Halbwelle komplett (von Nulldurchgang bis
Nulldurchgang) auf anzeigt. Das ist mit einem Operationsverstärker und ein paar
Bauteilen außen herum möglich. Das Signal kann in den AVR (natürlich an einem
Interrupt) eingespeist werden, der dann den ganzen Rest macht.
Die Softwareseite ist genauso einfach wie genial. Wenn ein Interrupt ausgelöst
wurde, wird je nach der Heizleistung der Wert für den Timerüberlauf gesetzt.
Gleichzeitig wird die Flankenart geändert, damit auf die fallende Flanke (zweite
Halbwelle) reagiert werden kann.
Wenn nun der Timer überläuft, wird dessen Interrupt ausgelöst, in dem der Triac
abgefeuert wird. Damit nicht zu viel Strom verbraten wird, wird der Ausgang nach
kurzer Zeit (aber immer noch in der Routine) abgeschaltet. Damit der Timer nicht
wieder sporadisch losgeht, wird er deaktiviert.
Interessant wird es hingegen beim dritten elementaren Programmteil - der Regelung. Vorab wird es sich darauf hinaus belaufen, dass die Heizleistung strikt nach der aktuellen Temperatur geregelt wird, da zur genauen Regelung mehr als die aktuelle Temperatur gehört ist klar. Die zweite Generation der Regelung wird, wenn es so klappt wie ich es mir vorstelle, sich die Temperaturwerte der letzten Messungen speichern und dadurch die zukünftige Temperatur schätzen und dementsprechend die Heizleistung anpassen. Oder einfach nur ein PID-Regler ;)
| Momentaner Entwicklungsstand: | |
| - Steuerung mit 3 Schnelltasten und Drehimpulsgeber | 100% |
| - Ansteuerung LC-Display | 90% |
| - Auslesen der Lötspitzentemperatur | 90% |
| - Phasenanschnittsregelung (noch etwas wackelig auf den Beinen) | 75% |
| - Regelalgorithmus (momentan Lookup-Table) | 50% |
| - Setup Lötkolbenkalibrierung | 5% |
| - Setup Wahl Kalibrierungsdaten | 0% |
| - Spielereien | 0% |
| - Quelltextdokumentation (Kommentare) | 40% |
| - Hardware | 80% |
| - ... | ?% |
Um die Spannung etwas aufrecht zu erhalten, hier ein paar Einblicke:

Standard-Anzeige der Lötstation - allerdings noch nicht in der Endgültigen
Fassung.
Links oben wird die aktuell gemessene Temperatur vom angeschlossenen Poti
angezeigt, in der Mitte momentan noch die Heizleistung - dies soll später durch
einen Bargraph ersetzt werden. Rechts ist die Soll-Temperatur zu sehen, die über
den Drehgeber direkt beeinflusst werden kann.
In der unteren Zeile stehen die drei Temperaturen für die Schnelltasten. Falls
die aktuelle Solltemperatur einer Temperatur der Schnelltasten entspricht, wird
ein Pfeil angezeigt.

Wenn man beim Anschalten die dritte Schnelltaste drückt, erscheint diese
liebliche Anzeige ;)

Da beim Start des Setups alle Kalibrierdaten gelöscht werden, muss man den Start
erst bestätigen.
Das "komische A da" sollte eigentlich ein '?' sein, allerdings hat das Display
einen HD44780 mit japanischem Zeichensatz.
Allerdings passiert aufgrund der fehlenden Setup-Routinen nach dem Bestätigen
noch nicht viel:


Hier noch ein kleines Bild von meinem Prototyp. Wie immer: nicht schön, dafür
aber selten.
Eine Vernünftige Version wird folgen... (Dann auch mit Thermoelement im
Lötkolben statt Poti neben AVR)
letzte Änderung 27.08.2006