Änderungen

Aus Linkerkit.de

Wechseln zu: Navigation, Suche

LK-Temp2

3.131 Byte hinzugefügt, 09:01, 20. Sep. 2019
/* Codebeispiel Raspberry */
==Bild==
[[Datei:LK-Temp2.jpg|500x500px|none|500x500px]]
==Technische Daten / Kurzbeschreibung==
Chipsatz: DS18B20 | Kommunikationsprotokoll: 1-Wire<br /><br />9- 12Bit genaue Temperaturmessung im Meßbereich von –55°C bis +125°C  Bitte beachten Sie, dass veränderte Versionen der Zusatzbibliotheken „OneWire“ und „DallasTemperature Control Library“ erforderlich sind, um den Sensor problemlos verwenden zu können. Die originale OneWire Bibliothek, ursprünglich von Paul Stoffregen entwickelt, ist auf dem [http://playground.arduino.cc/Learning/OneWire Arduino Playground] verfügbar. Die originale DallasTemperature Control Library, entwickelt von Tom De Boer, ist auf [https://github.com/tomdeboer/SparkCoreDallasTemperature GitHub] verfügbar.   Die Bibliotheken, sowie der Beispielcode, sind außerdem im Downloadbereich hier erhältlich.
==Codebeispiel Arduino==
<pre class="brush:cpp">// Benötigte Libraries werden importiert# Include include #include // Hier wird der Eingangs-Pin deklariert, an dem das Sensor-Modul angeschlossen ist#define KY001_Signal_PIN 4// Libraries werden konfiguriertOneWire ds oneWire(10KY001_Signal_PIN);DallasTemperature sensors(&oneWire); / / on pin 10void setup (void) { // Initialize inputs / outputsInitialisierung Serielle AusgabeSerial.begin(9600);Serial.println("KY-001 Temperaturmessung"); // Start serial portSensor wird initialisiert Serialsensors.begin (9600);
}
//Hauptprogrammschleifevoid loop (void) { byte i; byte present = 0; byte data [12]; byte addr [8]; int Temp; if (! ds.search (addr)) { // SerialTemperaturmessung wird gestartet..print ("No more addresses."); dssensors.reset_search requestTemperatures(); return;// ... und gemessene Temperatur ausgeben } Serial.print ("R =Temperatur: "); // R = 28 Not sure what this is for (i = 0; i <8; i ) { Serial.print (addr [i], HEXsensors.getTempCByIndex(0)); Serial.print write(""176); } if (OneWire :: crc8 (addr, 7)! = addr [7]) { Serial.print (// UniCode-Angabe eines char-Symbols für das "CRC is not valid!°-Symbol"); return; } if (addr [0]! = 0x28) { Serial.print println("Device is not a DS18S20 family device.C"); return; } ds.reset delay(1000);// 1s Pause bis zur nächsten Messung
}
</pre>
==Codebeispiel Raspberry==
<pre class="brush:py"># coding=utf-8
# Benoetigte Module werden importiert und eingerichtet
import glob
import time
from time import sleep
import RPi.GPIO as GPIO
# An dieser Stelle kann die Pause zwischen den einzelnen Messungen eingestellt werden
sleeptime = 1
# Der One-Wire EingangsPin wird deklariert und der integrierte PullUp-Widerstand aktiviert
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# Nach Aktivierung des Pull-UP Widerstandes wird gewartet,
# bis die Kommunikation mit dem DS18B20 Sensor aufgebaut ist
print 'Warte auf Initialisierung...'
base_dir = '/sys/bus/w1/devices/'
while True:
try:
device_folder = glob.glob(base_dir + '28*')[0]
break
except IndexError:
sleep(0.5)
continue
device_file = device_folder + '/w1_slave'
# Funktion wird definiert, mit dem der aktuelle Messwert am Sensor ausgelesen werden kann
def TemperaturMessung():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
# Zur Initialisierung, wird der Sensor einmal "blind" ausgelesen
TemperaturMessung()
# Die Temperaturauswertung: Beim Raspberry Pi werden erkennte one-Wire Slaves im Ordner
# /sys/bus/w1/devices/ einem eigenen Unterordner zugeordnet. In diesem Ordner befindet sich die Datei w1-slave
# in dem Die Daten, die über dem One-Wire Bus gesendet wurden gespeichert.
# In dieser Funktion werden diese Daten analysiert und die Temperatur herausgelesen und ausgegeben
def TemperaturAuswertung():
lines = TemperaturMessung()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = TemperaturMessung()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
return temp_c
# Hauptprogrammschleife
# Die gemessene Temperatur wird in die Konsole ausgegeben - zwischen den einzelnen Messungen
# ist eine Pause, deren Länge mit der Variable "sleeptime" eingestellt werden kann
try:
while True:
print '---------------------------------------'
print "Temperatur:", TemperaturAuswertung(), "°C"
time.sleep(sleeptime)
except KeyboardInterrupt:
GPIO.cleanup()
</pre>
 
==Downloads==
[[Medium:LK-Temp2_Anleitung.pdf|LK-Temp2_Anleitung (Deutsch).pdf]]
 
[[Medium:LK-Temp2_Manual.pdf|LK-Temp2_Manual (English).pdf]]
 
 
[[Medium:LK-Temp2_Arduino-Libraries.zip|LK-Temp2_Arduino-Libraries.zip]]
 
[[Medium:LK-Temp2_Arduino-Example.zip|LK-Temp2_Arduino-Example.zip]]
 
 
[[Medium:LK-Temp2_Raspberry-Example.zip|LK-Temp2_Raspberry-Example.zip]]