Drucken

Temperatursensor LM75

Temperatursensor LM75

Auslesen der Temperatur

Eine gute Beschreibung zum Auslesen des LM75 und verwenden als Datenlogger ist auf http://homepage.eircom.net/~nigelbrooke zu finden.

Kurz zusammengefasst sind folgende Befehle zum Auslesen wichtig, alle Befehle müssen als root ausgeführt werden:

apt-get install i2c-tools

modprobe i2c-bcm2708

modprobe i2c-dev

i2cget -y 1 0x48 0x00 b

Installieren der i2C-Tools wie i2cget, wenn diese schon installiert sind ist dies nicht notwendig.

Laden des Hardware Treibers für I2C

Laden der I2C Kernel Module damit i2cget, etc. zur Verfügung stehen

Auslesen der Temperatur, die Ausgabe erfolgt in HEX

Automatisches herunter fahren bei zu hoher Umgebungstemperatur

Anbei steht ein einfaches Beispiel um den Raspberry Pi mit Hilfe eines LM75 bei zu hoher Umgebungstemperatur herunter zu fahren.

Da der Sensor nicht direkt auf der Raspberry Pi Platine sitzt sollte die Temperatur etwas geringer angesetzt werden.

Die Temperatur bei der Linux herrunter gefahren wird liegt bei 45°C und kann einfach verstellt werden, einfach die entsprechende Zahl ändern.

#!/bin/bash

# This script is published under the GPL-License
# http://www.gnu.org/licenses/gpl-3.0.html
#
# script for Raspberry Pi rev B Board
# comment this commands if i2c is supported by default
modprobe i2c-bcm2708
modprobe i2c-dev

while true;

t=0
do
t=`i2cget -y 1 0x48 0x00 w |
awk '{printf("%.0f\n", (a=( \
(("0x"substr($1,5,2)substr($1,3,1))*0.0625)+0.1) \
)>128?a-256:a)}'` # calculate temperature
#echo $t # just for debug

if test $t -gt 45; then #check temperature
echo  halt # just for debug
halt # if overheat, shut down
fi

sleep 10

done
 

Datei als Download, richtig formatiert für Linux zur Raspberry PI RevA und RevB.

Das Skript muss als root ausgeführt werden, ansonsten wird der Raspberry Pi nicht herunter gefahren!

Diese Bash Datei kann dann auch automatisch beim Start im Hintergrund über die rc.local (rc.local auf ubuntuusers.de) geladen werden.

Einfach die Datei in "/usr/local/bin/" kopieren und  folgende Zeile vor exit 0 in "rc.local" eintragen.

Eventuell muss noch die Datei als ausführbar deklariert werden ( chmod ).

/usr/local/bin/SPOpi4300-LM75-Overheat_RevB.sh     # Shell script for temperature check