{"id":119,"date":"2013-12-31T17:29:13","date_gmt":"2013-12-31T15:29:13","guid":{"rendered":"http:\/\/grenzdebiel.dyndns.org\/wordpress\/?p=119"},"modified":"2015-07-24T16:25:15","modified_gmt":"2015-07-24T14:25:15","slug":"119","status":"publish","type":"post","link":"https:\/\/blog.grenzdebiel.dynv6.net\/?p=119","title":{"rendered":"Temperatur messen &#8211; DS18(S)20"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-179 size-full\" src=\"http:\/\/grenzdebiel.no-ip.biz\/wordpress\/wp-content\/uploads\/2013\/12\/DS18S20_arduino.jpg\" alt=\"DS18S20\" width=\"188\" height=\"250\" \/>Das messen der Temperatur mit einem DS18S20 ist sehr einfach da er die Temperatur digital per 1-Wire sendet.<\/p>\n<p>Hier ein Schaltplan der einen DS18(S)20 ansteuert bzw. ausliest und seine Daten per RS232 und am LC-Display ausgibt.<\/p>\n<p>Im moment nur als PDF &#8211; ein Bild folgt.<br \/>\n<a title=\"Atmega328-DS18S20-MAX232\" href=\"http:\/\/grenzdebiel.no-ip.biz\/wordpress\/wp-content\/uploads\/2013\/12\/Atmega328-DS18S20-MAX232.pdf\" target=\"_blank\">Atmega328-DS18S20-MAX232<\/a><br \/>\n<!--more--><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Da ich es mit dem Arduino-Framework gemacht habe hier der Code aka Sketch:<\/p>\n<pre class=\"lang:arduino decode:true \">#include &lt;LiquidCrystal.h&gt;\r\n#include &lt;OneWire.h&gt;\r\n\r\nLiquidCrystal lcd(2, 3, 4, 5, 6, 7);\r\nOneWire  ds(9);\r\n\r\nvoid setup(void)\r\n{\r\n\tSerial.begin(19200);\r\n\tlcd.begin(16, 2);\r\n\tlcd.print(\"Temperatur\");\r\n\tdelay(1000);\r\n}\r\n\r\nvoid loop(void)\r\n{\r\n\tbyte i=0,t=0;\r\n\tbyte present = 0;\r\n\tbyte type_s=1;\r\n\tbyte data[12];\r\n\tbyte addr[8];\r\n\tfloat celsius;\r\n\tfloat grad[16];\r\n\tint z=0;\r\n\tint tr;\r\n\r\n\twhile ( ds.search(addr))\r\n\t{\r\n\t\tds.reset();\r\n\t\tds.select(addr);\r\n\t\tds.write(0x44);\r\n\r\n\t\tdelay(100);\r\n\t\tpresent = ds.reset();\r\n\t\tds.select(addr);\r\n\t\tds.write(0xBE);\r\n\r\n\t\tfor ( i = 0; i &lt; 9; i++)\r\n\t\t{\r\n\t\t\tdata[i] = ds.read();\r\n\t\t}\r\n\r\n\t\ttr = data[0];\r\n\t\tif (data[1] &gt; 0x80)\r\n\t\t{\r\n\t\t\ttr = !tr + 1;\r\n\t\t\ttr = tr * -1;\r\n\t\t}\r\n\t\tint cpc = data[7];\r\n\t\tint cr = data[6];\r\n\r\n\t\ttr = tr &gt;&gt; 1;\r\n\r\n\t\tcelsius=tr - (float)0.25 + (cpc - cr)\/(float)cpc;\r\n\t\tgrad[t]=celsius;\r\n\r\n\t\tz=0;\r\n\t\twhile(z &lt; sizeof(addr))\r\n\t\t{\r\n\t\t\tSerial.print(addr[z],HEX);\r\n\t\t\tz++;\r\n\t\t}\r\n\t\t\tSerial.print(\";\");\r\n\t\t\tSerial.print(celsius);\r\n\t\t\tSerial.println();\r\n\t\t\tt++;\r\n\t}\r\n\r\n\tunsigned int tmp=0;\r\n\tfor(i=0;i&lt;t;i++)\r\n\t{\r\n\t\tif(i==0)\r\n\t\t{\r\n\t\t\ttmp=1;\r\n\t\t\tlcd.clear();\r\n\t\t\tlcd.setCursor(0, 0);\r\n\t\t}\r\n\t\tif(i==1)\r\n\t\t{\r\n\t\t\tlcd.setCursor(0,1);\r\n\t\t}\r\n\t\tlcd.print(\"Sensor: \");\r\n\t\tlcd.print(tmp);\r\n\t\tlcd.print(\" \");\r\n\t\tlcd.print(grad[i]);\r\n\t\tlcd.print(\" C\");\r\n\t\ttmp++;\r\n\t}\r\n\r\n\tds.reset_search();\r\n\tdelay(800);\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Die Ausgabe auf der RS232 ist im Format &#8222;&lt;SensorID&gt;;&lt;Temperatur&gt;&lt;\\nl&gt;&#8220;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das messen der Temperatur mit einem DS18S20 ist sehr einfach da er die Temperatur digital per 1-Wire sendet. Hier ein Schaltplan der einen DS18(S)20 ansteuert bzw. ausliest und seine Daten per RS232 und am LC-Display ausgibt. Im moment nur als PDF &#8211; ein Bild folgt. Atmega328-DS18S20-MAX232<\/p>\n","protected":false},"author":3,"featured_media":179,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,2,11],"tags":[4,5,49],"class_list":["post-119","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-hardware","category-software-arduino","tag-arduino-2","tag-atmega","tag-ds18s20"],"_links":{"self":[{"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=119"}],"version-history":[{"count":2,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/119\/revisions"}],"predecessor-version":[{"id":203,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/119\/revisions\/203"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=\/wp\/v2\/media\/179"}],"wp:attachment":[{"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.grenzdebiel.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}