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