www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Temperatur-Messung am T-Sensor LM335


Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuche die Temperatur mit Hilfe von LM335-Baustein am ADC zu 
messen aber bekomme ganz falsche Ergebnisse.

mit einem Timer messe ich alle 20 us den Wert am ADC und speichere es in 
einem Array.
Wenn ich mir die Werte anschaue:

48780
48784
48791
46747
...

Das Problem ist, es ergibt eine Temperatur von ca. 39 °C
( Vref: 3,3 V; ADC: 12 Bit -> 48780 *3,3 V / 2^12 ~ 39)
und das kann einfach nicht sein. Im zimmer kann es nicht wärmer als 25°C 
sein.

Wenn ich die Gleichung ansehe, dann fällt mir auf dass die Einheit Volt 
rauskommt. Wie ist die Umrechnung in °C?

letzte Frage:
interne Vref ist 3,3 V. Wie/wo kann ich sehen, dass wirklich Vref=3,3V 
genommen wird?

Gruß
Cimbomgs

Autor: helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn ich die Gleichung ansehe, dann fällt mir auf dass die Einheit Volt
>rauskommt. Wie ist die Umrechnung in °C?

umrechnung ist 10mV/K

also bei 25Grad Raumtemperatur 2.98V

(273+25) * 10mV = 2.98V

Gruss Helmi

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein 12bit ADC liefert Werte von 0..4096. Zumindest wenn das Ergebnis 
rechtsbündig im Register liegt.

Der LM335 liefert 10mV pro K, das sind 2,73V bei 0°C. Und ca. 3,3V bei 
30°C. Wenn er kann. Wenn du also nicht grad am Nordpol lebst, sind 3,3V 
am obere Ende des Widerstands am LM335 zu wenig.

Und wie schon richtig feststellst, kommt bei Volt/N immer noch Volt 
raus, nicht Temperatur. Bei 2,73V sollte der ADC 2,73V/3,30V * 4096 = 
3388 anzeigen.

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmm..

ADC dürfte doch garnicht mehr anzeigen als die Referenzspannung.
Warum bekomme ich einen Wert von 39 V :-( ?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fang mal vorne an und finde raus, wie du den ADC dazu bringst, Werte im 
Bereich 0-4095 zu liefern. Oder alternativ eine saubere Begründung, 
warum nicht. Vorher ist Herumraterei witzlos.

> Warum bekomme ich einen Wert von 39 V :-( ?

Hast du dir selber schon beantwortet.

Autor: Daniel D. (bademeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eben, wie sieht denn z.b. die Routine aus um den Wert einzulesen.
Hast du evtl ne Schleife um nen Mittelwert zu bilden? Oder kommen die 
Werte unmittelbar vom ADC?

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Oder kommen die Werte unmittelbar vom ADC?

die Werte kommen vom ADC.

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich benutze einen Freescale Microkontroller und die Entwicklungssoftware 
ist CodeWarrior.

Unter CodeWarrior gibt es die Eigenschaft "Processor Expert", was mir 
den Code für Pins,Timer,ADC usw. selber erzeugen kann.
Dann brauche ich nur in meinem Hauptprogramm die gewünschte Funktion zu 
aktivieren/deaktivieren.

Temperatur-Sensor ist am GPIOC5/ANB1 angeschlossen. Ich aktiere den 
ADC-Kanal und hole den Wert.

Wenn ich mir den Wert in Binär ansehe, dann sind die untersten 4 Bits 
immer 0. Also gehe ich davon aus, dass die Bits linksbündig in das 
Register gespeichert werden.

Ich finde nirgends die Auswahlmöglichkeit zwischen links-/rechtsbündig 
:-(

Autor: Daniel D. (bademeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm ich glaube du bist auf dem richtigen Weg.
Hab gerade mal nen Wert von dir genommen, die untersten 4 Stellen 
weggelassen und nach deiner Rechnung umgewandelt. Kam damit auf etwa 
24-25°C

Autor: Daniel D. (bademeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achja, ich hab bei mir beim CodeWarrior nur die Wahl zwischen 8-oder 
10-Bit rechtsbündig.

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie bist du auf 24-25°C gekommen?

Wenn die unteren 4 Bit weggelassen werden, bleibt die Zahl 3048

3048 *3,3 V / 2^12 = 2,45 V

2,45 V / 10 mV = 245 K -> -28 °C

http://img89.imageshack.us/img89/5637/adctg3.jpg
Auf dem sind die Pin-Einstellungen zu sehen.



Ps.: Wie kann man hier Bilder einfügen?

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmm..
ich habe den Sensor mit Heisluftpistole erhitz aber es zeigt immer den 
selben Wert an.

Irgendetwas ist hier faul aber ich komme nicht drauf :-(



Ps.: ich vermute die Bilder kann man nur als "Dateianhang" einfügen

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine Frage zu Referenzspannung:

wird die Referenzspannung Low/High vom Mikrocontroller eingestellt, dh. 
ist V_ref_LOW intern auf 0 Volt eingestellt und V_ref_High entsprechend 
auf 3,3 V?

Oder muss ich 2 Ports nehmen und das eine mit GRND und das andere mit 
einer Referenzspannung von 3,3 V verbinden und die Ports konfigurieren 
damit der Mikrocontroller die Referenzspannung hat?

Autor: Daniel D. (bademeister)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Cimbom Bom wrote:
> wie bist du auf 24-25°C gekommen?

Hmm, ja stimmt..hab mich wohl beim abtippen vertan.


>wird die Referenzspannung Low/High vom Mikrocontroller eingestellt, dh.
>ist V_ref_LOW intern auf 0 Volt eingestellt und V_ref_High entsprechend
>auf 3,3 V?

Laut Block Diagram meines Datenblattes wird VrefL und VrefH direkt von 
Vss und Vdd abgezweigt.

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm.. laut Datenblatt ist bei mir anders:

----
2.6.1.1 Single-Ended Samples
The ADC module performs a ratio metric conversion. For single ended 
measurements, the digital result is proportional to the ratio of the 
analog input to the reference voltage in the following diagram.

Single Ended Value = round ((VIN – VREFLO)/(VREFH – VREFLO) × 4096 × 8)

VIN = Applied voltage at the input pin
VREFH and VREFLO = Voltage at the external reference pins on the device 
(typically VREFH = VSS and VREFLO = VDD)

NOTE:
The 12-bit result is rounded to the nearest LSB.
The ADC is a 12-bit function with 4096 possible states. However, the 12 
bits have been left shifted three
bits on the 16-bit data bus so its magnitude, as read from the data bus, 
is now 32760.
----

hab auch die Port so eingestellt, dass VrefLO auf GRND und VrefH auf Vss 
liegt.

Vernünftigen Wert bekomme ich trotzdem nicht. So langsam drehe ich durch 
:-$

Autor: Daniel D. (bademeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>VREFH and VREFLO = Voltage at the external reference pins on the device

Hast du denn da irgendeine externe Beschaltung an den entsprechenden 
Pins?

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja habe ich..

habe auch die Spannung am T-Sensor gemessen, funktioniert alles.
Wenn ich erhitze, steigt die Spannung.

Wie ist es eigentlich, wieviel Zeit braucht der ADC für die Abtastung?
Wo kann ich abfragen, wann die Messung fertig ist?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Cimbom Bom (cimbomgs)

>Wie ist es eigentlich, wieviel Zeit braucht der ADC für die Abtastung?

Steht im Datenblatt und hängt von deiner Einstellung des ADC ab.

>Wo kann ich abfragen, wann die Messung fertig ist?

Sicher, da gibt es Statusbits in den ADC Registern. Die MUSST du sogar 
abfragen.

MFG
Falk

Autor: Daniel D. (bademeister)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Laut deinem Bild von oben benötigt die Abtastung 0.531µs...bischen kurz 
wie ich finde..wären ja knapp 2MHz?!?

Also ich kann bei ir für den ADC ne Interrupt Routine festlegen.

Autor: Daniel D. (bademeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso und ja, es gibt in nem Statusregister auch ein entsprechendes bit.

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel Dyla wrote:
> Laut deinem Bild von oben benötigt die Abtastung 0.531µs...bischen kurz
> wie ich finde..wären ja knapp 2MHz?!?

wenn die ADC-AbtastFrequenz 5,33 MHz ist, ist 2 MHz ja kein Problem.

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok ich habe die Conversion-Time erhöht UND JETZT GEHT'S.

Verstehe ich nicht, bei 5,33 MHz dürfte es doch kein Problem sein oder 
sehe ich das falsch?

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt vielen Dank für Eure Hilfe!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.