Hallo,
ich suche eine Möglichkeit Temperaturen mit einem Atmega/tiny zu messen,
wobei die obere Grenze im Bereich von 250-300° liegen muss.
Das ganze bräuchte ich gradgenau, möglichst billig und wenn's geht per
i²c oder spi.
Kennt jemand eine Schaltung/ ein Bauteil was dies leisten kann?
Dank i.V.
Patrick
ein thermoelement mit opamp oder instrumentenverstärker verstärken und
dann mit dem internen ad messen, alternativ ein externen ad über spi/i2c
...
negative temperaturen auch?
Sorry, hatte ganz vergessen das der MAX6675 per SPI an den Controller
angebunden wird. Temp.-Bereich 0-1024 Grad Celsius, Auflösung 0,25 Grad.
Im Anhang das Datenblatt.
Gruß, Blobb.
Leider habe ich nur einen K-typ Sensor gefunden als ich diese Lösung
fand und dieser Sensor kostet ~60€; daher stammt ja auch meine Frage...
GTT15150 im Geist-Electronic-Versand
Minimaltemperatur ist Raumtemperatur
Ich versuche den SMD-Ofen aus der Elektor 1/2006 nachzubauen!
http://www.elektor.de/default.aspx?tabid=28&art=5550657
Hallo,
Thomas Pfeiffer beschreibt auf seiner Seite http://thomaspfeifer.net/,
wie er den Ofen nachgebaut hat. Vielleicht findest du auf dieser Seite
weitere Infos.
MfG
Karsten
Proffesionelle Thermoelemente kannst Du bei Greissinger kaufen. Selbst
da sollten sie billiger als 60€ sein. (Ich habe da noch welche liegen,
die ich nicht brauchen kann).
Und dann kannst Du bei allen Versendern NiCr-Ni-Elemente kaufen, die
ohne Verpackung sind, also nur Adern in Glasseide o.ä. mit Stecker. Die
liegen selbst einem 30€ Multimeter bei.
Ich fürchte, bei dunkler Rotglut wird aus dem Silizium wieder der Sand,
aus dem es gewonnen wurde. Die max. Temperatur für Siliziumhalbleiter
bevor bleibende Veränderungen auftreten liegt irgendwo bei 250°C
Eine Diode macht die 300° mit Sicherheit nicht mit. Löten ist da auch
nicht mehr.
Günstig und evtl. ohne Zusatzhardware wäre ein PT1000. Mit Oversampling
und Kennlinienlinearisierung sollten 1° möglich sein...
... aber wie eichen ?? ;o))
> Das ganze bräuchte ich gradgenau ....
Das halte ich für illusorisch, da der Temperaturgradient innerhalb des
Ofens ein Vielfaches davon ist.
Als Anhaltspunkt:
Ein Thermoelement Typ K nach DIN IEC 584 hat in Genauigkeitsklasse 1
(das ist die beste bei Standardelementen) von 0 bis 350°C einen Fehler
von +-1,5 Grad.
In Klasse 2 ist der Fehler +-2,5 Grad.
Dazu kommen noch die Abweichungen der Vergleichsstelle und der
Messwertverarbeitung (Verstärkung, Linearisierung), geschätzt jeweils
0,5 bis 1 Grad.
@Lothar
>und Kennlinienlinearisierung sollten 1° möglich sein...>... aber wie eichen ?? ;o))
Beim Eichamt. Für teuer Geld. Aber auch "nur" kalibrieren wird nicht so
einfach.
MFG
Falk
Uber Temperaturmessung mit K-Type Thermoelement im Bereich von
-50°C bis 500°C habe ich schon geschrieben.
Voraussetzung:
ATmega mit Differenz-Versärker, Gain200(Atmega16,32,64,128).
Als externe Beschaltung ist nur noch ein 2K7(1%) Widerstand,
5K Spindelpoti für Aref einstellung und
ein KTY81-110 Temperaturfühler für Raumtemperaturkompensierung
notwendig.
Beitrag "Re: ADC im Messbereich kleiner 1V"
Branko
>Aber auch "nur" kalibrieren wird nicht so einfach.
Wieso denn nicht? Wird bei uns auf Arbeit täglich gemacht. Und zwar auf
0.5% genau. Das geht mit Burster-Kalibratoren oder mit präzisen
Widerständen für Nullpunkt und Spanne, diese anstelle des PT100 (PT1000)
anschließen.
Ich habe sowas auch mal mit PT100 gebaut (Nebelmaschine, regelt bei
250°C), Stromspiegelschaltung (mit CA3046) und 5V-Spannungsregler als
1mA-Konstantstromquelle, 4-Leiterschaltung, Messen mit Tiny26
differentiell, Verstärkung x20 (glaub'ich). Funktioniert prima,
Genauigkeit liegt bei ca. 2%, je nach TK der Widerstände und Potis.
>> Das mache ich normalerweise auch so, aber bei 250-300°C tropft dir die>> Isolation weg. Da braucht's schon einen vernünftigen Geber.
Kommt auf die Leitung an. Bei einer Leitung mit Teflon oder Silikon
Isolierung machen die 300°C nicht viel aus. Darf halt kein PVC sein!
@sonic
hättest du mir davon irgendwie einen Schaltplan?
@Mr Thermo
Ich verstehe nicht wie du das meinst?
>>einfach eine Ausgleichsleitung für Typ K und verdrille einfach
ein Ende
@Sonic
>>Aber auch "nur" kalibrieren wird nicht so einfach.>Wieso denn nicht? Wird bei uns auf Arbeit täglich gemacht. Und zwar auf>0.5% genau. Das geht mit Burster-Kalibratoren oder mit präzisen>Widerständen für Nullpunkt und Spanne, diese anstelle des PT100 (PT1000)>anschließen.
Ja eben, dieser Aufbau läuft bei mir nicht unter "einfach".
>Ich habe sowas auch mal mit PT100 gebaut (Nebelmaschine, regelt bei>250°C), Stromspiegelschaltung (mit CA3046) und 5V-Spannungsregler als>1mA-Konstantstromquelle, 4-Leiterschaltung, Messen mit Tiny26
1mA? Heizung gegen vereisen des Sensors? ;-)
MfG
Falk
> 1mA? Heizung gegen vereisen des Sensors?
Hä? Das sind 0,1mW.
Bei einem Wärmewiderstand von 1000K/W würde sich der Sensor immerhin um
gewaltige 0,1 Grad erwärmen.
Tolle Heizung.
> 1mA? Heizung gegen vereisen des Sensors?
In der Industrie (ältere Technik) sind 2.5mA normal. <1mA ist nur nötig
wenn der Sensor in unbewegter Luft misst.
@Sonic
>> 1mA? Heizung gegen vereisen des Sensors?>In der Industrie (ältere Technik) sind 2.5mA normal. <1mA ist nur nötig>wenn der Sensor in unbewegter Luft misst.
OK, mein Fehler. Ich hatte im Studium mal was mit PT1000 gebaut, dort
waren 100uA der Standardwert.
MFG
Falk
Hallo,
Danke! Hättest du mir noch den Programmteil der den Sensor einließt
(wenn du's in C hast)
oder könntest du mir nur kurz die wichtigsten Steps nennen?
Gruß
Patrick
Du meinst die AD-Wandlung?
Die Einstellung des ADCs musste dir für den Tiny26 halt aus dem
Datenblatt 'raussuchen, habe die Bits nur binär (ohne Bezeichnung) da:
1
// Einstellungen für AD-Wandler
2
3
ACSR=0b10000000;
4
ADCSR=0b10010110;
5
ADMUX=0b01001011;
und hier die ADC-Funktion:
1
voidADC_conversion(void)// Spannung über pt100 messen (32 Messswerte-Mittelwert)
2
{
3
intADC_temp;
4
intADCresult=0;
5
unsignedchari;
6
7
for(i=0;i<32;i++)// 32 Messungen für bessere Genauigkeit
8
{
9
ADCSR|=(1<<ADSC);// 'single conversion' einleiten
10
while(!(ADCSR&0x10));// auf ende der Wandlung warten, ADIF flag '1'
11
ADC_temp=ADCL;// ADCL Register lesen
12
ADC_temp+=(ADCH<<8);// ADCH Register lesen
13
ADCresult+=ADC_temp;// Ergebnisse der 32 Messungen addieren
14
}
15
ADCresult=ADCresult>>5;// Addierte Ergebnisse durch 32 teilen
16
ADCresult_average=ADCresult;// Mittelwert der 32 Messungen der globalen Variable zuweisen
17
18
return;
19
}
Das Ganze ist schon etwas älter, geht also eleganter. So funktioniert's
jedenfalls.
Das habe ich aus Platzgründen hier nicht gemacht. Aber an ein bischen
Mathematik wird's wohl nicht scheitern, oder? ;-)
Z.B.:
Bereich 0..250mV => 0..1023 (Faktor x20 beim Tiny26)
Messergebnis z.B. 400
also: Bereich = (250 / 1023)
Messwert = Bereich * Messergebnis
Das wäre (250 / 1023)*400 = 97.75 Ohm
Umrechnung in Temperatur entsprechend dem Fühler.
Du kannst auch die Kennlinie in einem ext. EEPROM in Form von
1-byte-Korrekturfaktoren für die 1023 Messwerte hinterlegen und dann nur
den Entsprechenden Wert dort 'holen'.