Hallo zusammen,
es geht um folgende Schaltung:
Ziel ist einen Heizblock zwischen 200 und 250 Grad zu halten und nur
innerhalb dieses Sollfensters Pumpen zuzulassen.
In dem Heizblock steckt ein Thermoelement Typ J.
Dazu habe ich mir folgendes überlegt:
1. Thermospannung mit dem TLC272CP (im Wiki als Präzisions-OPV benannt)
verstärken.
2. Mit einem TL072 in Komparatorschaltung die verstärkte Spannung mit
der verstärkten Spannung vergleichen. Referenzen sind die Spannungen,
die umgerechnet den Spannungen des Thermoelements für 220 und 270 Grad
entsprechen.
Ich nehme an der Stelle Ungenauigkeit in Kauf und gehe von 20 Grad
Umgebungstemperatur aus.
An den Ausgang kommt zum Debuggen direkt ein Transistor mit LED.
3. Mit einem µC wird die Fernsteuerung (Taster mit Beleuchtung, die
innerhalb des Temperaturfensters leuchtet) mit den Messergebnissen aus
vorheriger Anrichtung verwurstet. Der Quellcode ist wie folgt:
1
$regfile = "ATTiny45.dat"
2
$crystal = 8000000
3
$hwstack = 22
4
$swstack = 100
5
$framesize = 100
6
7
Dim Zukalt As Bit
8
9
Taster Alias Pinb.0
10
Config Taster = Input
11
Taster = 1
12
13
Pumpe Alias Portb.1
14
Config Pumpe = Output
15
16
Heizung Alias Portb.2
17
Config Heizung = Output
18
19
250grad Alias Pinb.3
20
Config 250grad = Input
21
22
200grad Alias Pinb.4
23
Config 200grad = Input
24
25
Fertig Alias Portb.5
26
Config Fertig = Output
27
28
Do
29
30
If 200grad = 0 Then
31
Zukalt = 1
32
Fertig = 0
33
Heizung = 1
34
Pumpe = 0
35
End If
36
37
If 200grad = 1 Then
38
Zukalt = 0
39
Fertig = 1
40
End If
41
42
If 250grad = 1 Then
43
Heizung = 0
44
End If
45
46
If Taster = 1 Then
47
If Zukalt = 0 Then
48
Pumpe = 1
49
End If
50
End If
51
52
If Taster = 0 Then
53
Pumpe = 0
54
End If
55
56
Loop
57
58
End
Über Transistor / Relais wird dann die Pumpe bzw. die Heizung gesteuert.
Das Relais der Heizung ist extern. Das Netzteil, das die 12V Spannung im
System liefert ist ebenfalls extern (mit SPS berzeichnet).
Folgende Probleme
1. Die LED, die eine Temperatur von über 250 Grad signalisieren soll
geht sofort an. Der Grund dafür entzieht sich meinem Verständnis. Einen
Lötfehler kann ich (denke ich) ausschließen, habe die Platine von hinten
beleuchtet und nach jeder Lötstelle begutachtet.
2. Die LED für das Heizrelais geht auch sofort an. Gut, das soll so
sein. Allerdings bricht die Spannung auf 7,6V zusammen und damit
schaltet das 12V-Relais natürlich nicht. Der Spulenwiderstand beträgt 85
Ohm. Liegt das an den Leiterbahnen, fallen die zu dünn aus? (nirgends
unter 0,6 mm) Sollte doch eigentlich für die paar Milliampere kein Thema
sein.
3. Wenn ich das Relais von den dafür vorgesehenen Flachsteckzungen
abziehe geht für einen kurzen Moment die LED des Heizrelais aus und man
sieht zwischen den Kontakten Funkenflug. Zwar nur wenig aber doch da.
Was ist da los? Eine Freilaufdiode ist da.
Ich hoffe ich habe alle Informationen geliefert und hoffe auf
aufschlussreiche Antworten.
Nachgesehen und an den Kopf gefasst.
Akzeptiert, dürfte wohl erklären warum die 250-Grad-LED angeht.
Die anderen zwei Punkte kann ich mir deshalb aber nicht erklären. Zumal
die aktivierte LED ja heißt, dass an den Mikrocontroller zu heiß
gemeldet wird und deshalb das Heizrelais überhaupt keine Spannung
kriegen dürfte.
partyfraktion schrieb:> *Folgende Probleme*> 1. Die LED, die eine Temperatur von über 250 Grad signalisieren soll> geht sofort an. Der Grund dafür entzieht sich meinem Verständnis. Einen> Lötfehler kann ich (denke ich) ausschließen, habe die Platine von hinten> beleuchtet und nach jeder Lötstelle begutachtet.
Was dem Vorredner schon aufgefallen ist. Mit welcher Spannung betreibst
Du die TL072? Die Verschaltung von zwei Operationsverstärkern
hintereinander ist grundsätzlich schon eine Sache bei der man sehr
sorgfältig sein muß. Hier kann es zu verschiedenen Problemen kommen:
a) Der Ausgangsspannungsbereich vom "vorderen" OPV muß im
Eingangsspannungsbereich des "hinteren" enthalten sein. Das ist bei Dir
zumindest schon mal nicht der Fall.
b) Es kann zu einem LatchUp beim Einschalten kommen, wenn die
Versorgungsspannungen unterschiedlich schnell ansteigen.
c) Probleme durch WarmUp Drift. Ein OPV kann ganz unangenehme
Eigenschaften in seiner Aufwärmphase kurz nach dem Einschalten haben,
die der folgende OPV ggf. nicht verträgt.
Was spricht eigentlich dagegen für die TL072 auch TLC272 einzusetzen?
Oder ggf. einen echten Komparator?
> 2. Die LED für das Heizrelais geht auch sofort an. Gut, das soll so> sein. Allerdings bricht die Spannung auf 7,6V zusammen und damit> schaltet das 12V-Relais natürlich nicht. Der Spulenwiderstand beträgt 85> Ohm. Liegt das an den Leiterbahnen, fallen die zu dünn aus? (nirgends> unter 0,6 mm) Sollte doch eigentlich für die paar Milliampere kein Thema> sein.
Das dürfte in der Tat nicht sein. Falls Du keinen Kurzschluß oder
Kriechstrecke hast bleiben eigentlich nur die Leiterbahnen oder ein
defektes Bauteil (Dioden/Transistor).
> 3. Wenn ich das Relais von den dafür vorgesehenen Flachsteckzungen> abziehe geht für einen kurzen Moment die LED des Heizrelais aus und man> sieht zwischen den Kontakten Funkenflug. Zwar nur wenig aber doch da.> Was ist da los? Eine Freilaufdiode ist da.
Das abgesteckte Relais zeigt Funkenflug? Aus Deiner Beschreibung ist
nicht ganz klar von wo nach wo Du den Funkenflug beobachtest.
Ansonsten:
>2. Mit einem TL072 in Komparatorschaltung die verstärkte Spannung mit>der verstärkten Spannung vergleichen. Referenzen sind die Spannungen,>die umgerechnet den Spannungen des Thermoelements für 220 und 270 Grad>entsprechen.
Der IC1a arbeitet als * 100 Verstärker.
Die Widerstandskombination am TL072 hingegen ist ein Spannungsteiler.
Also:
"die um 100 verstärkte Thermospannung mit dem Vergleichswert zu
vergleichen." Schauen wir uns das mal genauer an, das sind: 0,88 Volt am
IC2B und das ist ein Spannungswert, den der TL072 ganz sicher NICHT
verarbeiten kann. Die Mindestspannung an jedem Eingang des TL072 muß bei
einer Betriebsspannung von 12 Volt mindestens 3,2 Volt sein um auf der
sicheren Seite zu sein (garantierter Maximalwert der Mindestspannung,
der typische wird etwas darunter liegen).
Da aber Deine 0,88 Volt < 3,2 Volt funktionieren die Komparatoren bei
Dir nicht.
Also die Schaltung kann so definitiv nicht funktionieren. Abhilfe:
Austauschen durch TLC272.
Was der IC1b macht entzieht sich meiner Kenntnis. Nach Schaltplan macht
er gar nichts, ist aber mit zwei Widerständen verschaltet. Warum? Oje
außerdem ist er in Mittkopplung gezogen. Da ist sicher was ganz falsch.
Der Code schaut okay aus, allerdings habe ich eine Frage dazu:
Taster Alias Pinb.0
Config Taster = Input
Taster = 1
Die Anweisung Taster = 1 verstehe ich dabei nicht. Wenn es ein Eingang
ist, wie kann ich diesen dann setzen? Was macht also diese Anweisung?
Frank schrieb:> Die Anweisung Taster = 1 verstehe ich dabei nicht. Wenn es ein Eingang> ist, wie kann ich diesen dann setzen? Was macht also diese Anweisung?
Bei ATmega ist der interne PullUp Widerstand schaltbar, das bewirkt das
'setzen/löschen' des Eingangs.
partyfraktion schrieb:> heißt, dass an den Mikrocontroller zu heiß> gemeldet wird und deshalb das Heizrelais überhaupt keine Spannung> kriegen dürfte.
Wenn der OPV mit einer ungültigen Eingangsspannung versehen wird ist der
Ausgang vollkommen undefiniert und kann jeden möglichen Wert annehmen.
Da fällt mir gleich das nächste Problem auf:
Der Mikrocontroller wird mit 5 Volt betrieben.
Die Ausgangsspannung des als Komparator geschalteten OPV wird direkt an
den Mikrocontroller angeschlossen und als Digitaleingang interpretiert.
Das kann ebenfalls zu Problemen führen, da es sich um einen OPV handelt
und eben nicht um einen Komparator mit Digitalausgang. Auch da kann es
zu allerhand Problemen kommen, auch wenn Dein Spannungsteiler das
schlimmste verhindert.
Ein wichtiges Problem ist der Pegel, da sind aber MCUs eher tolerant.
Schwieriger dürfte es mit der minimalen Anstiegsgeschwindigkeit
aussehen. Kannst Du per Konfiguration alle Eingänge als Schmitt-Trigger
schalten? Falls ja solltest Du das tun.
Miß doch auch mal die Spannungen an den verschiedenen Punkten,
insbesondere direkt an Pin 2 und 3 der MCU.
Heinz V. schrieb:> Frank schrieb:>> Die Anweisung Taster = 1 verstehe ich dabei nicht. Wenn es ein Eingang>> ist, wie kann ich diesen dann setzen? Was macht also diese Anweisung?> Bei ATmega ist der interne PullUp Widerstand schaltbar, das bewirkt das> 'setzen/löschen' des Eingangs.
Danke. Ja das ersetzt den externen Pull-Up. Wird beim ATTiny wohl
genauso sein.
Frank schrieb:> Was der IC1b macht entzieht sich meiner Kenntnis. Nach Schaltplan macht> er gar nichts, ist aber mit zwei Widerständen verschaltet. Warum? Oje> außerdem ist er in Mittkopplung gezogen. Da ist sicher was ganz falsch.
Ah jetzt verstehe ich das. Du willst den OPV so schalten, daß er wenig
Strom verbraucht und nicht stört. Dazu mußt Du aber die beiden Eingänge
vertauschen (also Pin 5 und 6 von IC1b).
Das solltest Du unbedingt ändern. In der jetzigen Mitkopplung kann der
ganz böse Schwingen und die restliche Schaltung stören.
Noch was allgemeines:
Ein "Funkenflug" im Relais zwischen zwei Kontakten, würde mich allgemein
erst mal nicht stören, wenn dies beim Schalten geschieht. Es würde mich
ebenfalls nicht stören, wenn dies beim Abziehen des Relais bei
angelegter Spannung geschieht. Letzteres sollte man allerdings natürlich
nicht machen.
Eine Freilaufdiode dient nicht dazu einen Funkenschlag zu vermeiden,
sondern dazu, die restliche Schaltung von einer Gegenläufigen Spannung
durch die Spuleninduktivität beim Ausschalten zu schützen.
Frank schrieb:> Eine Freilaufdiode dient nicht dazu einen Funkenschlag zu vermeiden,> sondern dazu, die restliche Schaltung von einer Gegenläufigen Spannung> durch die Spuleninduktivität beim Ausschalten zu schützen.
Eben. Sie lässt den Strom weiter fließen und verhindert damit den
Spannungsanstieg. Wenn du das Relais jetzt rausziehst, unterbrichst den
Stromfluss, die Spannung steigt bis zur Funkenbildung. Deine
Freilaufdiode schließt das ganze jetzt wieder kurz. Allerdings solltest
du trotzdem kein angezogenes Relais ausstecken, das könnte die Kontakte
langsam verschlechtern.
Danke für den Input, sehr hilfreich.
Kann soweit alle angesprochenen Punkte nachvollziehen.
Das Problem mit den zwei OPVs nacheinander werde ich wahrscheinlich
durch den Umstieg auf einen ATmega 16 mit seinem ADC-Eingang lösen, dann
brauche ich nur noch einen TCL272, den ich durch den Mega anschalten
lassen kann, dann sollte es auch keinen Latch-Up geben. Der TCl
verstärkt dann nur das Eingangssignal des Thermoelements.
Das sollte auch das Problem lösen, dass der TCL272 keinen Digitalausgang
hat. Außerdem ist die Referenz des ATmega vermutlich genauer als das
Netzteil, das ja die Grundlage für meine "Referenz" mit den
Spannungsteilern ist.
Wegen des Funkenflugs: Da habe ich mich unklar ausgedrückt, der
Funkenflug findet an den Kontakten zur Spule statt, nicht an den
Leistungskontakten.
Ich überarbeite das Ganze mal und melde mich dann nochmal.
Es gibt Nachschlag :)
Was ist anders:
1. Der 7805 hat einige Kondensatoren bekommen.
2. Der TLC wird durch den ATmega angeschaltet - sollte Latch-Up-Probleme
lösen.
3. Das Signal des TLC geht an einen ADC-Pin des ATmega.
4. Der ATmega erhält auch ein Signal eines LM335. Damit halte ich mir
spätere Kaltstellenkompensation in der Software offen.
Ausgangsseitig hat sich nicht viel getan, das Relais der Pumpe ist noch
vom Gehäuse runtergewandert, fühle mich wohler wenn nur Niederspannung
auf der Platine ist.
Ist der Messteil des ATmega ausreichend entstört?
Für den 7805 wird eine recht hohe Genauigkeit angegeben von 25 mV. Das
wäre deutlich besser als die Genauigkeit der internen Referenz des
ATmega.
(http://sprut.de/electronic/referenz/index.htm) Spricht etwas dagegen,
die 5V des 7805 als Referenzspannung zu nehmen?
Ein Thermoelement mit einem TlC272 zu verstärken ist keine gute Idee.
Schau Dir mal dessen Eingangssoffsetspannung an und vergleiche die mit
dem Signal das Dein Thermoelemet liefert.
An dieser Stelle kommen nur ein Präzisions-OPV in bipolar-Technik in
Frage, mit Eingangs-Offset-Spannungen im uV-Bereich (Analog Devices,
Linear Technologies)
Ich habe mich jetzt für den MAX entschieden und den Schaltplan
überarbeitet.
Grund für den MAX ist, dass er eine extrem geringe Offsetspannung hat,
laut Datenblatt single-supply-fähig ist und dabei noch recht günstig
ist.
Außerdem bietet er eine Shutdown-Funktion, die ihn erst starten lässt,
wenn VCC auch auf dem Shutdown-Pin liegen lässt. Sehr nützlich, kann man
direkt mit dem µC ansteuern.
Dazu ist ARef statt mit den 5V mit 4V aus einer TL431 gespeist, die ist
imho schon recht brauchbar als Referenz.
Gibt es Einwände, sind irgendwo größere Murksereien drin, würdet ihr was
anders machen - warum?
(Die Werte stammen von https://cxem.net/calc/tl431_calc.php)
Um einigermaßen korrekt die Thermospannung eines Thermoelements messen
zu können, mußt Du böse aufpassen was für Materialien Du bei der
Kontaktierung einsetzt! Das Thermoelement erzeugt eine
temperaturanhängige Spannung genau an dem Punkt, wo zwei
unterschiedliche Materialen (i.d.R. Metalle) aufeinandertreffen. Allein
die Verkabelung/Verbindung zu Deinem MAX4238 könnte die ganze Messung ad
absurdum führen.
Das passende Stichwort dazu lautet "Kaltstellenkompensation". Natürlich
kann ich nicht wissen, ob Du Dir dazu schon Gedanken gemacht hattest. Am
Schaltplan allein kann man dies z.Z. nicht erkennen.
Jedenfalls gibt es für diesen 'Fall' spezielle ICs mit denen sowas in
den Bereich des machbaren kommt: z.B. AD594 (jedenfalls im Fall des Typ
J Thermoelements). Schau Dir dazu mal die "Thermocouple Basics" am Ende
des Datenblattes an.
Dafür habe ich den LM335 angedacht, mit dem kann ich die reale
Temperatur an den Kontaktstellen messen und dann in der Software eine
Kompensation durchführen.
Heben sich die Einflüsse der Kontaktierung nicht auf? Sind ja zweimal
exakt dieselben Übergänge (Messing - Flachsteckzunge aus vernickeltem
Kupfer/Stahl - Leiterbahn)
partyfraktion schrieb:> Dafür habe ich den LM335 angedacht, mit dem kann ich die reale> Temperatur an den Kontaktstellen messen und dann in der Software eine> Kompensation durchführen.
Wäre 'ne Möglichkeit.
> Heben sich die Einflüsse der Kontaktierung nicht auf? Sind ja zweimal> exakt dieselben Übergänge (Messing - Flachsteckzunge aus vernickeltem> Kupfer/Stahl - Leiterbahn)
Naja, an (wirklich) jedem(!) Übergang zwischen zwei Metallen entsteht
eine Thermospannung. Wenn Du absolut gesehen nur(!) die der Messspitze
wissen möchtest, musst Du sicherstellen, dass (wirklich) alle(!) anderen
Übergänge die gleiche Temperatur haben (natürlich tendenziell auch eine
Kältere ;-) ). Nur dann heben sich die Absolutwerte der Thermospannungen
bei den Kontaktierungspaaren aufgrund ihrer Vorzeichen gegenseitig auf.
Beim Typ J hast Du aber immer irgendwo den Übergang von Eisen und
Konstantan auf Deine Platine/MAX4238 via Kupfer und/oder Lötzinn.
Schon ein warmes Bauteil, das näher an einem der beiden
Kontaktierungspunkten liegt, kann hier die erfolgreiche Aufsummierung
der Thermospannungen zu Null verhindern.
Evtl. kann es, wenn man es sehr präzise haben möchte, erforderlich sein
eine thermisch (und auf keinen(!) Fall elektrisch) leitende Verbindung
zwischen den beiden Kontaktstellen zu haben.