Pyrometer GY-906 MLX90614: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
= Simulink Modell =
= Simulink Modell =
[[Datei:Simulink GY-906.jpg|thumb|left|600px|Abb. 2: Simulink Modell]]
[[Datei:Simulink GY-906.jpg|thumb|left|600px|Abb. 2: Simulink Modell]]
[[Datei:Simulink GY-906 Einstellungen.jpg|thumb|left|300px|Abb. 3: Einstellungen des I2C Controll Read]]
[[Datei:Simulink GY-906 Einstellungen.jpg|thumb|left|300px|Abb. 3: Einstellungen des I2C Controller Read-Blocks]]
<br clear="all">
Abb. 2 zeigt das Modell zum einlesen der Objekttemperatur. Die Umgebungstemperatur steht an der Position <code>0x06</code> im Sensorregister. Abb. 3 zeigt die kompletten Einstellungen des Sensorblocks.


 
== MATLAB Function ==
= MATLAB Function =
Die Daten kommen im Format <code>uint8</code> als Array ([LSB, MSB, PEC]). Die Bytes werden in der MATLAB Function <code>Byte2Temp</code> in einen Temperaturwert in °C umgerechnet.
<syntaxhighlight lang="matlab" style="border: none; background-color: #EFF1C1; font-size:medium">function Temp_in_C = Byte2Temp(Data)
<syntaxhighlight lang="matlab" style="border: none; background-color: #EFF1C1; font-size:medium">function Temp_in_C = Byte2Temp(Data)
% Data: uint8 array, Länge 3: [LSB, MSB, PEC]
% Data: uint8 array, Länge 3: [LSB, MSB, PEC]

Version vom 4. Dezember 2025, 16:27 Uhr

Abb. 1: Pyrometer GY-906 MLX90614

Autoren: Marc Ebmeyer, Prof. Dr.-Ing. Schneider

Simulink Modell

Abb. 2: Simulink Modell
Abb. 3: Einstellungen des I2C Controller Read-Blocks


Abb. 2 zeigt das Modell zum einlesen der Objekttemperatur. Die Umgebungstemperatur steht an der Position 0x06 im Sensorregister. Abb. 3 zeigt die kompletten Einstellungen des Sensorblocks.

MATLAB Function

Die Daten kommen im Format uint8 als Array ([LSB, MSB, PEC]). Die Bytes werden in der MATLAB Function Byte2Temp in einen Temperaturwert in °C umgerechnet.

function Temp_in_C = Byte2Temp(Data)
% Data: uint8 array, Länge 3: [LSB, MSB, PEC]


% Sicherheitsprüfung: Sind 3 Byte angekommen?
if numel(Data) < 2
    Temp_in_C = NaN;
    return;
end

LSB = uint16(Data(1));
MSB = uint16(Data(2));

% Little-Endian: LSB first
Rohwert = bitor(bitshift(MSB,8), LSB)  % Rohwert = MSB<<8 | LSB
Rohwert = LSB+bitshift(MSB,8);  % Rohwert = MSB<<8 | LSB

% Umrechnung in °C
Temp_in_K = double(Rohwert) * 0.02
Temp_in_C = Temp_in_K - 273.15;
end

SVN-URL: https://svn.hshl.de/svn/SDE_Sensortechnik_MTR/trunk/Demos/Temperaturmessung/Pyrometer_GY-906/Pyrometer_R2025a.slx