Ein Thermoelement am ATtiny85
Elektronik-Labor Projekte AVR Tiny85
Ein Termoelement von Typ K
liefert nur eine Spannung von etwa 39 µV pro Grad. Wenn man den
AD-Wandler des ATTiny85 mit der internen Referenz von 1100 mV betreibt,
hat man schon eine Auflösung von 1 mV. Wenn man dann noch die interne
Differenzmessung mit 20-facher Verstärkung verwendet, sind es schon 50
µV. Und dann noch mal kräftig mitteln, dann müsste es für eine
Auflösung von einem Grad reichen. Das war trotzdem nicht ganz einfach,
die nötige Präzision hinzubekommen. Wichtig war auch noch eine kleine
Wartezeit zwischen jeder Messung.
Das Thermoelement wurde mit
einem Kondensator mit 100 nF verbunden, damit die Spannung möglichst
sauber ist. Und ADC3 wurde intern an GND geschaltet, um eine eindeutige
Referenz zu bekommen.
'Thermo.bas Thermoelement Typ K an ADC2 und ADC3
$regfile = "attiny85.dat"
$crystal = 8000000
$hwstack = 8
$swstack = 4
$framesize = 4
Dim U As Long
Dim D As Long
Dim N As Integer
Dim T As Long
Dim T0 As Long
Open "comb.1:9600,8,n,1" For Output As #1
Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1
Adcsrb
=
0
' Unipolar
Ddrb.3 =
1
' Referenz-Pin
Portb.3 = 0
Do
U = 0
For N = 1 To 1000
D =
Getadc(7)
' (ADC2-ADC3)*20
U = U + D
Waitus 200
Next N
U = U * 1100
U = U / 1023
U = U /
20
' U in µV
T = U * 500
T = T /
20644
' 20.644 mV bei 500 Grad
U = 0
D = Getadc(15)
Waitms 200
For N = 1 To
100
' Interne Temperatur
D = Getadc(15)
U = U + D
Next N
U = U / 100
T0 = U - 273
T = T -
T0
' Eispunkt-Kompensation
T = T +
14
' Kalibrierung
Print #1 , Chr(13);
Print #1 , " T = ";
Print #1 , T;
Print #1 , " C ";
Loop
End
Das
Programm verwendet zusätzlich die interne Temperaturmessung des
Controllers für eine Eispunkt-Kompensation. Am Ende blieb dann ein
Fehler von 14 Grad übrig, der wegkalibriert werden muss. Das wird wohl
bei jedem Controller anders sein. Für die Anzeige wird der im Handbuch
des Lernpakets verwendete Trick eingesetzt, eine stehende, einzeilige
Anzeige im Terminal zu erzeugen.
Ich
hätte das nicht erwartet, aber die Anzeige steht absolut still,
wenn sich die Temperatur nicht ändert. Zum Test habe ich mal einen
Gasbrenner drangehalten. Die Temperatur stieg über 500 Grad.
Und
wenn die Spitze hell glüht, können sogar über 1000 Grad gemessen
werden. Man bekommt also tatsächlich ein richtig brauchbares
Thermometer zu geringsten Kosten von rund zwei Euro für den Tiny85.
Und wer grade kein echtes Thermoelement hat, kann einfach zwei
unterschiedliche Drähte nehmen. Kupfer und Konstantan geht sehr gut,
aber man kann auch einfach mal alle Drähte testen, die gerade in
Reichweite sind. Wenn es dann richtig genau werden soll, muss man natürlich noch einen Faktor in der Software anpassen.
Elektronik-Labor Projekte AVR Tiny85