{"id":1254,"date":"2013-06-14T15:42:36","date_gmt":"2013-06-14T13:42:36","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=1254"},"modified":"2023-08-20T14:55:16","modified_gmt":"2023-08-20T12:55:16","slug":"temp","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=1254","title":{"rendered":"Temperatur Messung mit dem DS18B20 und Arduino Nano"},"content":{"rendered":"<p>Habe heute einen One-Wire <a href=\"https:\/\/www.analog.com\/media\/en\/technical-documentation\/data-sheets\/ds18b20.pdf\" title=\"DS18B20\">DS18B20<\/a> Temperatursensor erhalten und ihn mit dem Arduino Nano verbunden. Der Messbereich des Sensors betr\u00e4gt von -55\u00b0C bis +125\u00b0C bei \u00b1 0,5\u00b0C Genauigkeit.<\/p>\n<p>Mit den <a href=\"https:\/\/www.pjrc.com\/teensy\/td_libs_OneWire.html\" title=\"OneWire\">OneWire 2.2<\/a> und <a href=\"https:\/\/github.com\/milesburton\/Arduino-Temperature-Control-Library\" title=\"Arduino-Temperature-Control-Library\">Dallas Temperature Control Library 3.7.2<\/a> Bibliotheken ist die<br \/>\nTemperaturmessung schnell zusammengebaut. <\/p>\n<p>Hier das Foto des Aufbaus mit Schaltplan:<\/p>\n<figure id=\"attachment_1253\" aria-describedby=\"caption-attachment-1253\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/06\/20130614-154149-e1371217466807.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/06\/20130614-154149-e1371217418119-1024x767.jpg\" alt=\"Arduino Nano Temp. Messung via 1-Wire\" width=\"640\" height=\"479\" class=\"size-large wp-image-1253\" \/><\/a><figcaption id=\"caption-attachment-1253\" class=\"wp-caption-text\">Arduino Nano Temp. Messung via 1-Wire<\/figcaption><\/figure>\n<p>Das Programm (8038 byte) gibt zuerst die eindeutige ID des Sensors aus, (28-A2-9D-8A-04-00-00-2B) und dann jede Sekunde den neuen Messwert:<\/p>\n<p><code><br \/>\n<span style=\"color: #7E7E7E;\">\/*&nbsp;<\/span><br \/>\n<span style=\"color: #7E7E7E;\">TWTemp&nbsp;Version&nbsp;1.0&nbsp;vom&nbsp;14.06.2013&nbsp;<\/span><\/p>\n<p><span style=\"color: #7E7E7E;\">8038&nbsp;bytes<\/span><\/p>\n<p><span style=\"color: #7E7E7E;\">Thomas&nbsp;Wenzlaff&nbsp;http:\/\/www.wenzlaff.de<\/span><\/p>\n<p><span style=\"color: #7E7E7E;\">Temperature&nbsp;Sensor&nbsp;DS18B20&nbsp;an&nbsp;Digitalen&nbsp;Port&nbsp;Pin&nbsp;2&nbsp;wie&nbsp;folgt&nbsp;verbunden<\/span><br \/>\n<span style=\"color: #7E7E7E;\">Links=Masse,&nbsp;<\/span><br \/>\n<span style=\"color: #7E7E7E;\">Mitte=Data,&nbsp;<\/span><br \/>\n<span style=\"color: #7E7E7E;\">Rechts=+5V,&nbsp;<\/span><br \/>\n<span style=\"color: #7E7E7E;\">3300&nbsp;to&nbsp;4700&nbsp;Ohm&nbsp;Widerstand&nbsp;von&nbsp;+5V&nbsp;nach&nbsp;Data.<\/span><\/p>\n<p><span style=\"color: #7E7E7E;\">Es&nbsp;wird&nbsp;erst&nbsp;die&nbsp;Adresse&nbsp;des&nbsp;1-Wire-Device&nbsp;ausgegeben&nbsp;und&nbsp;dann&nbsp;wird&nbsp;die&nbsp;Temperaturmessung&nbsp;gestartet.<\/span><\/p>\n<p><span style=\"color: #7E7E7E;\">*\/<\/span><\/p>\n<p><span style=\"color: #7E7E7E;\">\/*&nbsp;Ben&#246;tigte&nbsp;Bibliotheken&nbsp;importieren&nbsp;*\/<\/span><br \/>\n#include&nbsp;&lt;<span style=\"color: #CC6600;\">OneWire<\/span>.h&gt;<br \/>\n#include&nbsp;&lt;<span style=\"color: #CC6600;\">DallasTemperature<\/span>.h&gt;<\/p>\n<p>#define&nbsp;ONE_WIRE_BUS&nbsp;2&nbsp;<span style=\"color: #7E7E7E;\">\/* Digitalport Pin 2 definieren *\/<\/span><\/p>\n<p><span style=\"color: #CC6600;\">OneWire<\/span> ourWire(ONE_WIRE_BUS); <span style=\"color: #7E7E7E;\">\/* Ini oneWire instance *\/<\/span><\/p>\n<p><span style=\"color: #CC6600;\">DallasTemperature<\/span> sensors(&amp;ourWire);<span style=\"color: #7E7E7E;\">\/* Dallas Temperature Library f&#252;r Nutzung der oneWire Library vorbereiten *\/<\/span><\/p>\n<p><span style=\"color: #CC6600;\">void<\/span> <span style=\"color: #CC6600;\"><b>setup<\/b><\/span>()<br \/>\n{<br \/>\n<span style=\"color: #CC6600;\">delay<\/span>(1000);<br \/>\n<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">begin<\/span>(9600);<br \/>\n<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">println<\/span>(<span style=\"color: #006699;\">\"Temperatur Messprogramm\"<\/span>);<br \/>\n<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">println<\/span>(<span style=\"color: #006699;\">\"TWTemp 1.0 vom 14.06.2013\"<\/span>);<br \/>\n<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">println<\/span>(<span style=\"color: #006699;\">\"http:\/\/www.wenzlaff.de\"<\/span>);<br \/>\n<span style=\"color: #CC6600;\">delay<\/span>(1000);<\/p>\n<p>sensors.<span style=\"color: #CC6600;\">begin<\/span>();<span style=\"color: #7E7E7E;\">\/* Inizialisieren der Dallas Temperature library *\/<\/span><\/p>\n<p>adresseAusgeben();&nbsp;<span style=\"color: #7E7E7E;\">\/* Adresse der Devices ausgeben *\/<\/span><\/p>\n<p><span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(<span style=\"color: #006699;\">\"Starte Temperatur abfragen ...\"<\/span>);<br \/>\n}<\/p>\n<p><span style=\"color: #CC6600;\">void<\/span> <span style=\"color: #CC6600;\"><b>loop<\/b><\/span>()<br \/>\n{<br \/>\n<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">println<\/span>();<\/p>\n<p>sensors.<span style=\"color: #CC6600;\">requestTemperatures<\/span>(); <span style=\"color: #7E7E7E;\">\/\/ Temp abfragen<\/span><\/p>\n<p><span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(sensors.<span style=\"color: #CC6600;\">getTempCByIndex<\/span>(0) );<br \/>\n<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(<span style=\"color: #006699;\">\" Grad Celsius\"<\/span>);<br \/>\n}<\/p>\n<p><span style=\"color: #CC6600;\">void<\/span> adresseAusgeben(<span style=\"color: #CC6600;\">void<\/span>) {<br \/>\n&nbsp;&nbsp;<span style=\"color: #CC6600;\">byte<\/span> i;<br \/>\n&nbsp;&nbsp;<span style=\"color: #CC6600;\">byte<\/span> present = 0;<br \/>\n&nbsp;&nbsp;<span style=\"color: #CC6600;\">byte<\/span> data[12];<br \/>\n&nbsp;&nbsp;<span style=\"color: #CC6600;\">byte<\/span> addr[8];<\/p>\n<p>&nbsp;&nbsp;<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(<span style=\"color: #006699;\">\"Suche 1-Wire-Devices...\\n\\r\"<\/span>);<span style=\"color: #7E7E7E;\">\/\/ \"\\n\\r\" is NewLine <\/span><br \/>\n&nbsp;&nbsp;<span style=\"color: #CC6600;\">while<\/span>(ourWire.<span style=\"color: #CC6600;\">search<\/span>(addr)) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(<span style=\"color: #006699;\">\"\\n\\r\\n\\r1-Wire-Device gefunden mit Adresse:\\n\\r\"<\/span>);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\">for<\/span>( i = 0; i &lt; 8; i++) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(<span style=\"color: #006699;\">\"0x\"<\/span>);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\">if<\/span> (addr[i] &lt; 16) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(<span style=\"color: #006699;\">'0'<\/span>);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(addr[i], <span style=\"color: #006699;\">HEX<\/span>);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\">if<\/span> (i &lt; 7) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(<span style=\"color: #006699;\">\", \"<\/span>);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\">if<\/span> ( <span style=\"color: #CC6600;\">OneWire<\/span>::<span style=\"color: #CC6600;\">crc8<\/span>( addr, 7) != addr[7]) {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">print<\/span>(<span style=\"color: #006699;\">\"CRC is not valid!\\n\\r\"<\/span>);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #CC6600;\">return<\/span>;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;}<br \/>\n&nbsp;&nbsp;<span style=\"color: #CC6600;\"><b>Serial<\/b><\/span>.<span style=\"color: #CC6600;\">println<\/span>();<br \/>\n&nbsp;&nbsp;ourWire.<span style=\"color: #CC6600;\">reset_search<\/span>();<br \/>\n&nbsp;&nbsp;<span style=\"color: #CC6600;\">return<\/span>;<br \/>\n}<br \/>\n<\/code><\/p>\n<p>Um die h\u00f6chstm\u00f6gliche Genauigkeit des Sensors auszulesen ist im Setup noch dieser Befehl n\u00f6tig, damit dauert die Messung aber etwas l\u00e4nger:<!--more--><\/p>\n<pre class=\"lang:default decode:true \" >\r\nsensors.setResolution(TEMP_12_BIT); \/\/ Genauigkeit auf 12-Bit setzen\r\n<\/pre>\n<p>So sieht die Ausgabe des Programms aus:<\/p>\n<figure id=\"attachment_1260\" aria-describedby=\"caption-attachment-1260\" style=\"width: 869px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/06\/Bildschirmfoto-TWTemp-Ausgabe.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/06\/Bildschirmfoto-TWTemp-Ausgabe.png\" alt=\"TWTemp Ausgabe\" width=\"869\" height=\"457\" class=\"size-full wp-image-1260\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/06\/Bildschirmfoto-TWTemp-Ausgabe.png 869w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2013\/06\/Bildschirmfoto-TWTemp-Ausgabe-300x157.png 300w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption id=\"caption-attachment-1260\" class=\"wp-caption-text\">TWTemp Ausgabe<\/figcaption><\/figure>\n<p>Als n\u00e4chstes folgt dann der <a href=\"https:\/\/playground.arduino.cc\/Interfacing\/Java\/\" title=\"Zugriff\">Zugriff<\/a> via <a href=\"https:\/\/playground.arduino.cc\/Interfacing\/Java\/\" target=\"_blank\" rel=\"noopener noreferrer\">Java<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Habe heute einen One-Wire DS18B20 Temperatursensor erhalten und ihn mit dem Arduino Nano verbunden. Der Messbereich des Sensors betr\u00e4gt von -55\u00b0C bis +125\u00b0C bei \u00b1 0,5\u00b0C Genauigkeit. Mit den OneWire 2.2 und Dallas Temperature Control Library 3.7.2 Bibliotheken ist die Temperaturmessung schnell zusammengebaut. Hier das Foto des Aufbaus mit Schaltplan: Das Programm (8038 byte) gibt &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=1254\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eTemperatur Messung mit dem DS18B20 und Arduino Nano\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[562,538,566,79],"tags":[2188,597,563,596,594,595,598],"class_list":["post-1254","post","type-post","status-publish","format-standard","hentry","category-arduino","category-elektronik","category-hardware","category-programmierung","tag-arduino","tag-ds20s20","tag-nano","tag-sensor","tag-temp","tag-temperatur","tag-twtemp"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/1254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1254"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/1254\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1254"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}