www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Wert für Temperatur berechnen


Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe an meinen cc2431 einen temperatur-sensor, nun möchte ich mir gerne 
diese an meinem lcd ausgeben lassen.
so habe die möglichkeit den temperatursensor als input für meinen adc 
anzugeben. habe ich auch gemacht. so jetzt bekomme ich einen hex-wert 
der mit der temperatur nichts zu tun hat.

deshalb wollte ich den wert über die geradengleichung berechnen.
also:
temp = m * adc-wert + t
m = (temp1 - temp2) / (adc1 - adc2)
t = temp1 - m * adc

blöd daran ist nur das ich keine vergleichswerte habe und auch keine 
möglichkeit sie durch geräte heraus zu finden. deshalb wollte ich fragen 
ob mir von euch jemand diese werte zukommen lassen könnte.

gruß, jimbo

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher Temperatursensor? Welche Schaltung? Meine Glaskugel ist gerade 
beim TÜV . . .;-)

MFG
Falk

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh tut mir leid

mhh, welcher sensor das ist weiß ich leider nicht.
hier der link zum datenblatt.
http://www.chipcon.com/index.cfm?kat_id=2&subkat_i...
dort das pdf "cc2430 data sheet".

interessant sind hier die seiten.
S.17 -> sensor werte, fehler usw.
S.125 ist die schaltung.

mehr hab ich leider auch nicht

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube du hast den falsch Link geschickt. In 
CC2430_Data_Sheet_rev2p0.pdf ist nur die Beschreibung des Prozessors 
drin. Zur Lösung des Problems bräuchte man schon die Beschreibung des 
Development boards.

MfG
Falk


Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Prozessor scheint einen Onboard-Temperatur-Sensor zu 
haben...(zumindest stand das in der Beschreibung, die ich nur überflogen 
habe, unter dem Link...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> blöd daran ist nur das ich keine vergleichswerte habe

Wieso hast du keine Vergleichswerte

Nimm ein Glas kaltes Wasser, Eiswürfel rein und warten
bis die Hälfte davon geschmolzen ist. Öfter mal umrühren.
Schon hast du deinen Vergleichswert für 0°C

Setze einen Topf auf den Herd und bringe Wasser zum kochen.
100°C

Was für Celsius gut genug war, wird wohl auch für dich gut
genug sein.

Du kannst ja dann immer noch Mutters Fieberthermometer
auspacken und mal schaun wie gut deine Werte waren.

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frag doch mal beim Hersteller an, die werden doch mal ein Application 
Note oder sowas dafür haben...

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten morgen,

sorry! hier der link zum dk.
http://www.chipcon.com/index.cfm?dok_id=244&kat_id=6
dann CC2430DK/.../... User Manual.

ich habe das cc2430dk

zu kbuchegg:
ist schon ne gute idee aber für die formle brauche ich auch die adc 
werte und
ich glaube nicht das ich meinen chip da reinlegen kann ;-)
oder wie soll ich das verstehen.

gruß, jimbo

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich glaube nicht das ich meinen chip da reinlegen kann ;-)

Dann solltest du dir ein Thermometer besorgen...

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du sorry ich versteh das nicht ganz.
wie bekomme ich die adc werte zu den, mit thermometer gemessenen werten.

gruß, jimbo

ps.: vorherige antwort war nicht gehässig gemeint.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max Dm wrote:

> blöd daran ist nur das ich keine vergleichswerte habe und auch keine
> möglichkeit sie durch geräte heraus zu finden. deshalb wollte ich fragen
> ob mir von euch jemand diese werte zukommen lassen könnte.


Steht doch alles im Datenblatt:

7.9 Analog Temperature Sensor


Peter

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Max Dm

Du machst es einem aber nicht leicht. Die gesuchte Tabelle ist in 
CC2430_Data_Sheet_rev2p0.pdf Seite 18, nicht 17! Un dort sthet doch, was 
du wissen willst.

-40C = 0,648V
0C   = 0,743V
120C = 1,039V

-> 2,44 mV/K (steht direkt im Datenblatt)

Daraus ergibt sich die Temperaturgleichung

Theta = 0,743 + (V_ADC-0,743) * 2,44mV/K

wobei du V_ADC (ADC Eingangsspannung) vorher noch berechnen musst

V_ADC = ADC_value * Vref / 4096   (wend die Messung als 12 Bit MEssung 
durchgeführt wird)

Das ganze ist dann aber nur auf +/- 14C (!!!!) genau, weils eben ein 
Ultrabilligsensor ist. Ohne Kalibrierung ist das kaum brauchbar.

Entweder Kalibrierung (Dein Board auf zwei konstante Temperaturen 
heizen, dann messen) oder gleich nen kalibrierten, externen digitalen 
Sensor nehmen. LM75, LM74, und tausend andere.

MFG
Falk

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wie bekomme ich die adc werte zu den, mit thermometer gemessenen werten.

Du musst die Spannung, die dein Thermosensor liefert mit dem ADC.
Da bekommst du einen bestimmten Wert, der der vom Thermometer 
angezeigten Temperatur entspricht.
Jetzt nimmst du dein Board und das Thermometer und gehst vor die Tür (da 
sollte es momentan etwas kühler sein.
Jetzt misst du wieder die Temperatur per ADC und liest sie am 
Thermometer ab. Es bietet sich an, nicht sofort zu messen, weil beide 
Gerätschaften sich erst auf die neue Umgebungstemperatur einstellen 
müssen.
Jetzt hast du zu zwei ADC-Werten die entsprechenden Temperatur-Werte.

Einfach geht es nur, wenn man einen Blick ins Datenblatt wirft...

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ist schon ne gute idee aber für die formle brauche ich auch die
> adc werte

Was hindert dich daran, den Sensor auf eine bestimmte
bekannte Temperatur zu temperieren (daher Eiswasser
und kochendes Wasser) und bei der bekannten Temperatur
einfach mal den ADC Wert direkt auszugeben?
Dann hast du bei 2 bekannten Temperaturen die jeweiligen
ADC Werte und kannst die Koeffizienten für deine
lineare Gleichung berechnen.
Das hat sogar Alex kapiert.


Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhh ok ist wirklich nicht so kompliziert.

Einfach geht es nur, wenn man einen Blick ins Datenblatt wirft...

ja das stimmt, hier habe ich ja temperatur und spannung.
bloß ich bekomme von meinem adc den wert 0x5c = 92 so jetzt wüßte ich 
aber nichts damit anzufangen wenn ich mir die tabelle auf seite 17 aus 
dem data sheet anschaue.


gruß, jimbo

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max Dm wrote:

> bloß ich bekomme von meinem adc den wert 0x5c = 92 so jetzt wüßte ich
> aber nichts damit anzufangen wenn ich mir die tabelle auf seite 17 aus
> dem data sheet anschaue.


Du hast Dich wohl noch nie mit der Funktionsweise von ADCs beschäftigt.


Uin = Uref / 2^Auflösung * ADC-Wert

Bzw. unter Kapitel ADC sollte alles nötige stehen.


Peter

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Du hast Dich wohl noch nie mit der Funktionsweise von ADCs beschäftigt.

Oder dem Inhalt des Datenblattes...

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo peter,

danke! nein hab ich noch nicht, aber es gibt ja immer ein erstes mal.
probiere das gleich aus.

gruß, jimbo

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo irgendein rahul. doch habe mich sehr wohl mit dem datenblatt 
beschäftigt. sehr ausgiebig sogar, aber nicht unbedingt mit adc's. ich 
möchte mich nochmal bei allen für die hilfe bedanken, aber auf solche 
antworten kann ich verzichten. also nochmals danke irgendein rahul!!!

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ps.: vorherige antwort war nicht gehässig gemeint.

Meine schon... SCNR

Um noch mal nachzutreten: Deine Shift-Taste scheint einen Schaden zu 
haben...

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sag mal hast du eigentlich irgendein problem.
ich frage hier um hilfe und du gibst dumme antworten. geh doch in einen 
anderen thread und nerv die leute da, oder auch sonst wo.
mal ehrlich bist du mit dem falschen fuß aufgestanden oder was soll das.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Erfahrung zeigt nur, dass jene Leute, die
bei ihren Postings eine gewisse Sorgfalt ausser
acht lassen, es meistens auch in ihren Programmen
nicht allzu genau nehmen.

Autor: irgendein Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn jemandem die Grundlagen fehlen, wird er komischerweise immer 
schnell patzig, wenn man ihm diesen Mangel vor Augen führt.

Das gilt nicht nur in diesem Fall. Also nicht zu persönlich nehmen.

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na ja, ich dachte das wäre eine normale frage. ich habe noch soviel 
andere sachen um die ohren, das ich mich jetzt nicht stunden mit diesem 
thema auseinander setzen wollte.
wenn ich dabei den eindruck erweckt habe das ich mich nicht vorher 
ausgiebigst damit beschäftigt habe, dann stimmt das auch. tut mir leid, 
dachte das sei schnell zu lösen.

aber das ist noch lange kein grund irgend welche dofen antworten zu 
geben, meiner meinung nach (nicht auf dich bezogen) und deshalb zu sagen 
das ich keine sorgfallt auf meine programmierung lege find ich schon 
etwas unfair. es ist nur so das man doch nicht bei jeder kleinigkeit von 
null anfangen muss. ist gibt wohl komplexere aufgaben die noch genug 
zeit in anspruchen nehmen.

gruß, jimbo

Autor: Max Dm (jimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu irgendein rahul.
ich weiß nicht wer jetzt von uns beiden angefangen hat patzig zu werden.
ja grundlagen fehlen mir mit adc's, sonst denke ich das ich nicht 
unbedingt ein anfänger bin.

aber jetzt ist es auch genung!

danke nochmal, werd mich jetzt damit auseinander setzen.

gruß, jimbo

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Karl heinz Buchegger

> Was hindert dich daran, den Sensor auf eine bestimmte
> bekannte Temperatur zu temperieren (daher Eiswasser
> und kochendes Wasser) und bei der bekannten Temperatur
> einfach mal den ADC Wert direkt auszugeben?

Die Tatsache, dass der Sensor im Controller sitzt un der ein wenig 
wasserscheu ist. UNd es ist auch kein Hummer, also kochendes Wasser ist 
auch icht so doll ;-)

@Max Dm

> bloß ich bekomme von meinem adc den wert 0x5c = 92 so jetzt wüßte ich
> aber nichts damit anzufangen wenn ich mir die tabelle auf seite 17 aus
> dem data sheet anschaue.

Es ist Seite 18!!!!

Und wie gesagt, man muss die Referenzspannung kennen. Ich nehme aml an 
sie ist 3.3V und der ADC arbeitet im 8 Bit Modus.

V_ADC = ADC * Vref / 256
      = 92 * 3,3 /256
      = 1,185 V

Uuups, ich merke gerade, dass ich einen grösseren Fehler in meiner 
Gleichung habe. Peinlich. Man solls halt immer gelcih richtig machen. 
OK, hier die richtige Gleichung.

Theta = -305,1 C + 409 C/V * V_ADC
      = -305,1 + 409 * 1,185
      = 179 C

Hmmm, haut nicht ganz hin, also ist die Referenz anders. Auch Wenn mans 
als 10/12 Ergebnis rechnet funktioniert es nicht.

MfG
Falk





      =





Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Tatsache, dass der Sensor im Controller sitzt un der ein wenig
> wasserscheu ist

Dann pack ihn wasserdicht in einen Plastiksack ein.
Wo ein Wille ist, ist auch ...

> UNd es ist auch kein Hummer, also kochendes Wasser ist
> auch icht so doll ;-)

Ist ein Argument. Dann nimm irgendeine andere Temp.
Schlimmstenfalls Körpertemperatur. Sollte doch bei
den meisten Menschen 37 Grad sein und kann mit einem
Fieberthermometer einfach kontrolliert werden.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ist ein Argument. Dann nimm irgendeine andere Temp.
> Schlimmstenfalls Körpertemperatur. Sollte doch bei
> den meisten Menschen 37 Grad sein und kann mit einem
> Fieberthermometer einfach kontrolliert werden.

Das ist aber jetzt nicht nett. Du empfiehlts also, den Controller ind 
den A**** zu schieben? ;-)

MFG
Falk


Autor: fieser Rahul (auch Oskar genannt) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das ist aber jetzt nicht nett. Du empfiehlts also, den Controller ind
>den A**** zu schieben? ;-)

Wenn's schön macht...(und funktioniert?!)

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.