Seite 1 von 1

Auswertung Temperatursensor LM75

Verfasst: Sonntag 17. April 2016, 19:45
von deepsky
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

Re: Auswertung Temperatursensor LM75

Verfasst: Montag 18. April 2016, 11:16
von IKT
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

Re: Auswertung Temperatursensor LM75

Verfasst: Montag 18. April 2016, 22:04
von deepsky
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

Re: Auswertung Temperatursensor LM75

Verfasst: Dienstag 19. April 2016, 09:46
von IKT
deepsky hat geschrieben:Ich denke da muss ich noch etwas ändern ...
Auch keine Hexerei, dafür gibt's die Korrektur-Tabelle in PL:
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.

Re: Auswertung Temperatursensor LM75

Verfasst: Dienstag 19. April 2016, 21:40
von deepsky
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

Re: Auswertung Temperatursensor LM75

Verfasst: Dienstag 19. April 2016, 22:10
von deepsky
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

Re: Auswertung Temperatursensor LM75

Verfasst: Donnerstag 21. April 2016, 12:06
von IKT
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 ).

Re: Auswertung Temperatursensor LM75

Verfasst: Donnerstag 28. April 2016, 09:34
von abacom
...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.
complement2.png
complement2.png (24.22 KiB) 12843 mal betrachtet
Die ganze Lösung für die Umrechnung sieht dann so aus....
Complement2.prj
(4.64 KiB) 433-mal heruntergeladen
... 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)

Re: Auswertung Temperatursensor LM75

Verfasst: Donnerstag 22. September 2016, 10:01
von abacom