Liste der Anhänge anzeigen (Anzahl: 1)
Problem mit Temperaturmessung mittels ATtiny 13 und LM335
Hallo,
ich versuche mittels eines LM335 Temperatursensors (Datenblatt)und einem ATtiny 13 die Temperatur zu messen, um einen Lüfter zu steuern.
Meine Schaltung sieht so aus:Anhang 30544
Das Zugehörige Bascom Programm misst alle 10 Sekunden über den ADC die Temperatur und wenn der gemessene Wert über 600 (also über 23 Grad) liegt werden der Lüfter und die Grüne LED eingeschaltet, liegt er über 800 werden der Lüfter und die rote LED eingeschaltet. Ansonsten bleiben der Lüfter und die LEDs aus.
Dazu initialisiere ich zuerst den Tiny
Code:
$regfile = "attiny13.dat" 'Tiny13
$crystal = 4000000
$hwstack = 10
$swstack = 20
$framesize = 20
Definiere die benötigten Ports
Code:
Config Portb.2 = Output 'Anschluss Lüfter
Luefter Alias Portb.2
Luefter = 0
Config Portb.1 = Output 'Anschluss LED Rot
Ledrot Alias Portb.1
Ledrot = 0
Config Portb.0 = Output 'Anschluss LED Grün
Ledgruen Alias Portb.0
Ledgruen = 0
Config Portb.3 = Output
Sensorversorgung Alias Portb.3 'GND oder +5V für Messung
Sensorversorgung = 1
Starte den ADC und führe die erste Messung durch
Code:
Config Portb.4 = Input 'ADC Initialisieren
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim Messergebnis As Word 'Variable für gemessenen Wert
Waitms 500
Ledgruen = 1
Messergebnis = Getadc(3) 'Erste Temperaturmessung
Waitms 500
Sensorversorgung = 0
und gehe schließlich in das Hauptprogramm über
Code:
Do
If Messergebnis > 600 Then
Luefter = 1
Ledgruen = 1
Else
Luefter = 0
Ledgruen = 0
Ledrot = 0
End If
If Messergebnis > 800 Then
Luefter = 1
Ledrot = 1
End If
Waitms 8500
Sensorversorgung = 1
Waitms 500
Messergebnis = Getadc(3) 'Temperaturmessung
Waitms 5000
Sensorversorgung = 0
Ledrot = 0
Ledgruen = 0
Waitms 500
Loop
End
Mein Problem ist folgendes:
Bei normaler Raumtemperatur (gerade ca. 22 Grad) ermittelt der ADC einen Wert zwischen 1010 und 1020, was absolut unrealistisch ist.
Nach meiner Berechnung anhand des Datenblatts des LM 335 müsste es bei 23 Grad Celsius 2,9V also über den ADC bei Referenzspannung 5V ca 600 ergeben-
(Rechnung: [ 273,15 (Kelvin) + 23 (Grad Celsius) ] * 10mV (pro Kelvin) =~ 2,9V ;
[1024 (Auflösung des ADC):5 (V Referanzspannung)] * 2,9(Volt) =~ 595 ).
Wenn ich mit dem Multimeter an den Beinchen 3 und 4 manuell nachmesse komme ich auf 3,2 Volt, was ca 48 Grad Celsius entspricht und ebenfalls zu hoch aber dennoch realistischer als die Messung des ADC ist. Da es mir nicht auf ein halbes Grad ankommt habe ich das Adjust Beinchen des LM 335 frei gelassen.
Hat jemand eine Idee wie ich einen realistischen Temperaturwert ermittelt bekomme?
Gruß,
Marius
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Also VCC-R-LM335-GND, zwischen R und LM335 greift dann der ADC vom AVR das Temperatursignal ab.
Genauso hab ich es ja, nur dass bei mir VCC durch Pin 1 ausgegeben wird. Dadurch ändert aber doch nichts an der Beschaltung, oder?
Gruß,
Marius
- - - Aktualisiert - - -
Ich sehe gerade, dass da im Schaltplan ein Fehler ist, ich habe es so geschaltet: Pin 2 (führt während der Messung VCC) - R - LM 335 - GND und zwischen R und dem LM 335 greife ich das Signal ab und messe es an Pin 3.
- - - Aktualisiert - - -
Anhang 30545
So ist es geschaltet