Auswertung Temperatursensor LM75
Auswertung Temperatursensor LM75
Hallo PL Fans,
ich arbeite gerade mal wieder an einer PL-Routine, in diesem Fall um den LM75 über ein Horter I2C Interface abzurufen.
Der Sensort antwortet inzwischen...
Ich bekomme die Messwerte, habe jedoch ein kleines Problem:
a) Byte 3 = Temperatur in °C
b) Byte 4 = 0 oder 128
128 = 0,5°C
0 = 0°C (das muss zur Information aus Byte 3 addiert werden.
Dieses habe ich bereits gelöst in dem ich zu Byte 3 das Byte 4 dividiert durch 256 addiert habe.
Mein noch nicht gelöstest Problem betrifft die Temperatur unter 0°C
Beispiel: -1°C = 255
Rechenregel : Wenn Byte 3 > 127 dann T="255-Byte 3" sonst "Byte 3".
Wie kann ich das in PL realisieren?
Gruß
Peter
ich arbeite gerade mal wieder an einer PL-Routine, in diesem Fall um den LM75 über ein Horter I2C Interface abzurufen.
Der Sensort antwortet inzwischen...
Ich bekomme die Messwerte, habe jedoch ein kleines Problem:
a) Byte 3 = Temperatur in °C
b) Byte 4 = 0 oder 128
128 = 0,5°C
0 = 0°C (das muss zur Information aus Byte 3 addiert werden.
Dieses habe ich bereits gelöst in dem ich zu Byte 3 das Byte 4 dividiert durch 256 addiert habe.
Mein noch nicht gelöstest Problem betrifft die Temperatur unter 0°C
Beispiel: -1°C = 255
Rechenregel : Wenn Byte 3 > 127 dann T="255-Byte 3" sonst "Byte 3".
Wie kann ich das in PL realisieren?
Gruß
Peter
Re: Auswertung Temperatursensor LM75
Die Sache ist doch viel einfacher als beschrieben:
Byte 3 = Temperatur (-128 bis +127)
Byte 4 = 0 ODER* +0.5
siehe Schaltung ...
* = Gemeint ist: ein logisches ODER
Byte 3 = Temperatur (-128 bis +127)
Byte 4 = 0 ODER* +0.5
siehe Schaltung ...
* = Gemeint ist: ein logisches ODER
- Dateianhänge
-
- Lösung.png (24.01 KiB) 13520 mal betrachtet
++++++
Gruss/regards IKT
Gruss/regards IKT
Re: Auswertung Temperatursensor LM75
Hallo IKT,
danke für den Tipp. Die 0,5°C Sache finde ich interessant, ich hatte das jetzt mit einer Division durch 256 gelöst.
Die Auswertung des ersten Byte geht leider so noch nicht:
Der Sensor gibt 0-255 aus, 0-127 = 0-127°C bei -1°C wirft er 255 aus. Defakto ist das zwar -128 bis 127.
255-256 = (-1°C)
Ich denke da muss ich noch etwas ändern, aber das erst morgen, mir fallen die Augen zu...
Aber mit AD/AD Wandlern experimentiert (da die entsprechenden Grenzen eingegeben) führte zu keinem positiven Ergebnis.
Jetzt fällt mir noch etwas ein, was bei meinem Oszilloskop von Lecroy (auch schon fast 20 Jahre her mit (IEEE488) seinerzeit geholfen hat, wo in den Daten der Offset auch verschoben wurde.
Das ging mit einem Exor, wenn ich mich nicht irre.
Ich teste morgen und melde mich.
Liebe Grüße
Peter
danke für den Tipp. Die 0,5°C Sache finde ich interessant, ich hatte das jetzt mit einer Division durch 256 gelöst.
Die Auswertung des ersten Byte geht leider so noch nicht:
Der Sensor gibt 0-255 aus, 0-127 = 0-127°C bei -1°C wirft er 255 aus. Defakto ist das zwar -128 bis 127.
255-256 = (-1°C)
Ich denke da muss ich noch etwas ändern, aber das erst morgen, mir fallen die Augen zu...
Aber mit AD/AD Wandlern experimentiert (da die entsprechenden Grenzen eingegeben) führte zu keinem positiven Ergebnis.
Jetzt fällt mir noch etwas ein, was bei meinem Oszilloskop von Lecroy (auch schon fast 20 Jahre her mit (IEEE488) seinerzeit geholfen hat, wo in den Daten der Offset auch verschoben wurde.
Das ging mit einem Exor, wenn ich mich nicht irre.
Ich teste morgen und melde mich.
Liebe Grüße
Peter
Re: Auswertung Temperatursensor LM75
Auch keine Hexerei, dafür gibt's die Korrektur-Tabelle in PL:deepsky hat geschrieben:Ich denke da muss ich noch etwas ändern ...
0 = 0
127 = 127
128 = -128
255 = -1
diese ersetzt VAL ... Ende der Konversion. Andere Variante:
0 = -128
127 = -1
128 = 0 (hier sitzt die Null in der Mitte des Bereichs!)
255 = 127
Dies entspricht einem Minus-Offset von 128, Offset Baustein einsetzen (anstelle KT).
Manual des Wandlers lesen! Hier muss stehen, wie die Zahlen zu interpretieren sind.
++++++
Gruss/regards IKT
Gruss/regards IKT
Re: Auswertung Temperatursensor LM75
Hallo IKT,
ich denke ich habe die Lösung:
Korrekturtabelle wäre eine Lösung, allerdings geht es auch anders:
Ich habe dein Beispiel ergänzt um die Regel, was passiert wenn der Wert des ersten bytes über 127 ist.
Dann gilt = Wert = 256-Wert.
So klappt dann alles was ich benötige.
Danke für den Denkanstoß
Peter
ich denke ich habe die Lösung:
Korrekturtabelle wäre eine Lösung, allerdings geht es auch anders:
Ich habe dein Beispiel ergänzt um die Regel, was passiert wenn der Wert des ersten bytes über 127 ist.
Dann gilt = Wert = 256-Wert.
So klappt dann alles was ich benötige.
Danke für den Denkanstoß
Peter
- Dateianhänge
-
- Auswertung des LM75.PNG (22.92 KiB) 13423 mal betrachtet
Re: Auswertung Temperatursensor LM75
Hallo PL-Fans,
anbei die Routine um den LM75 an einem Horter I2C-Interface auszulesen.
Bitte um Beachtung das COM-Port zu setzten ist. Beim USB-Interface ist die Baudrate fest eingestellt und liegt bei 115200.
Der Rahmen und das Trennzeichen ist die $04.
Liebe Grüße
Peter
anbei die Routine um den LM75 an einem Horter I2C-Interface auszulesen.
Bitte um Beachtung das COM-Port zu setzten ist. Beim USB-Interface ist die Baudrate fest eingestellt und liegt bei 115200.
Der Rahmen und das Trennzeichen ist die $04.
Liebe Grüße
Peter
- Dateianhänge
-
- I2C_LM75.prj
- (15.84 KiB) 450-mal heruntergeladen
Re: Auswertung Temperatursensor LM75
Hallo deepsky,
leider hat die Schaltung noch einen gravierenden Fehler:
3 versch. Ausgänge gehen auf einen (denselben) Eingang!
PowerOnReset ( muss weg )
Oszillator und
Taster ( müssen gegen einander verriegelt sein! )
es darf nur jeweils einer "durchgeschaltet" sein ... sonst gibt's Ärger.
Z.B. Schalter und zwei AND-Gates ( das eine "invertiert" ) damit:
Ein/Aus Schalter wird somit zum UmSchalter ( auto / manuell ).
leider hat die Schaltung noch einen gravierenden Fehler:
3 versch. Ausgänge gehen auf einen (denselben) Eingang!
PowerOnReset ( muss weg )
Oszillator und
Taster ( müssen gegen einander verriegelt sein! )
es darf nur jeweils einer "durchgeschaltet" sein ... sonst gibt's Ärger.
Z.B. Schalter und zwei AND-Gates ( das eine "invertiert" ) damit:
Ein/Aus Schalter wird somit zum UmSchalter ( auto / manuell ).
- Dateianhänge
-
- Um-Schalter (manu./auto.)
- UmSchalter.png (11.3 KiB) 13360 mal betrachtet
-
- Fehler ...
- i2c_horter_im75.png (6.46 KiB) 13363 mal betrachtet
++++++
Gruss/regards IKT
Gruss/regards IKT
Re: Auswertung Temperatursensor LM75
...die "Problematik" UNSIGNED BYTE (0...255) TO SIGNED BYTE(-128...127) lässt sich übrigens auch mit einem Pärchen "AD/DA" elegant erledigen.
Das geht auch in die andere Richtung und bei entsprechender Konfiguration der AD/DA auch mit 16-Bit-Werten (WORD<->INT16), oder anderen Auflösungen (wie etwa 12 Bit).
Einfach die Eingangs- und Ausgangswertebereiche entsprechend eingeben und das MSB invertieren.
Die ganze Lösung für die Umrechnung sieht dann so aus....
... und geht davon aus das "Byte 4" ausschließlich die Werte 0 oder 128 annimmt, dh. Bit 0..6 sind immer 0.
Dann ist 128/256=0.5 schnell addiert.
(Ein Trigger auf ">127" und danach ein eine Verstärkung von 0,1 geht natürlich auch. Triggerausgang (High=5) * 0,1 = 0,5)
Das geht auch in die andere Richtung und bei entsprechender Konfiguration der AD/DA auch mit 16-Bit-Werten (WORD<->INT16), oder anderen Auflösungen (wie etwa 12 Bit).
Einfach die Eingangs- und Ausgangswertebereiche entsprechend eingeben und das MSB invertieren.
Die ganze Lösung für die Umrechnung sieht dann so aus....
... und geht davon aus das "Byte 4" ausschließlich die Werte 0 oder 128 annimmt, dh. Bit 0..6 sind immer 0.
Dann ist 128/256=0.5 schnell addiert.
(Ein Trigger auf ">127" und danach ein eine Verstärkung von 0,1 geht natürlich auch. Triggerausgang (High=5) * 0,1 = 0,5)
ABACOM support