{"id":1380,"date":"2016-02-24T20:35:51","date_gmt":"2016-02-24T19:35:51","guid":{"rendered":"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/?p=1380"},"modified":"2019-01-11T12:58:22","modified_gmt":"2019-01-11T11:58:22","slug":"arduino-mit-matlab-der-sensor","status":"publish","type":"post","link":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2016\/02\/24\/arduino-mit-matlab-der-sensor\/","title":{"rendered":"Arduino mit Matlab &#8230; Der Sensor"},"content":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1380\" class=\"pvc_stats all  \" data-element-id=\"1380\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p style=\"text-align: justify\">Nachdem ich im letzten Teil die Installation der Arduino-Matlab Packages zum Laufen bekommen habe, kann es nun weitergehen. Ziel dieses kleinen Beispiels ist es ja, an einen Arduino Uno einen NTC-Widerstand anzuschlie\u00dfen. Dieser soll als analoger Temperatursensor dienen (was er ja ist \ud83d\ude00 ) und \u00fcber einen der A\/D &#8211; Eing\u00e4nge des Arduino eingelesen werden. Matlab soll dann schlussendlich die eingelesenen A\/D- Werte&nbsp; in Temperaturwerte umrechnen. Das Ganze soll \u00fcber eine gewisse Zeit laufen, wobei alle paar n-Sekunden ein Wert eingelesen wird. Am Ende soll ein wundersch\u00f6ner Temperaturplot mit Temperatur \u00fcber Zeit erstellt werden.<\/p>\n<div style=\"text-align: justify\">Doch zuerst zum Sensor. Ich verwende hier einen NTC-Widerstand von dem Hersteller VISHAY mit einem R<sub>25<\/sub> von 2200 Ohm (<a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/Datenblatt_NTC.pdf\" target=\"_blank\" rel=\"noopener\">s.Datenblatt<\/a>). Das bedeutet, er hat bei 25\u00b0C einen ohmschen Widerstand von 2.2kOhm. Je w\u00e4rmer es nun wird, umso kleiner wird der Widerstand und umgekehrt. Der analoge Eingang des Arduino hat eine Aufl\u00f6sung von 10Bit. Das bedeutet, er kann den Spannungshub am Eingang (eingestellt durch die ADC Referenz) in 2<sup>10<\/sup> , also 1024 Teile aufl\u00f6sen (zerlegen). Der Standard beim Arduino ist 0V bis 5V. Also 0V am Eingang bedeutet einen ADC-Wert von 0 und 5V bedeutet einen ADC-Wert von 1024. Die Aufl\u00f6sung, also die kleinste aufl\u00f6sbare Spannungs\u00e4nderung&nbsp; ist daher:<\/div>\n<div style=\"text-align: justify\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel.jpg\" rel=\"attachment wp-att-1388\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1388\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel.jpg\" alt=\"formel\" width=\"158\" height=\"61\"><\/a><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-2.jpg\" rel=\"attachment wp-att-1361\"><img fetchpriority=\"high\" decoding=\"async\" class=\"size-medium wp-image-1361 alignleft\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-2-300x169.jpg\" alt=\"arduino01 (2)\" width=\"300\" height=\"169\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-2-300x169.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-2-768x432.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-2-1024x576.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Gibt der ADC beispielsweise einen Wert von 558 aus, so entspricht dies einer Spannung am Eingang von 558*0.00488V = 2.72304V. Doch wie soll der NTC jetzt an den Eingang angeschlossen werden? Ganz einfach. Man nehme einen Spannungsteiler und dimensioniere ihn so, dass der Strom durch die beiden Widerst\u00e4nde nie so gro\u00df werden kann, dass er zum einen die Versorgung des Arduino gef\u00e4hrdet und zum anderen auch nie so gro\u00df werden kann, dass er den NTC selbst erw\u00e4rmt. In der Skizze ist nun dargestellt wie der Spannungsteiler aufgebaut und angeschlossen ist. Jetzt gilt es noch herauszufinden, wie aus der Spannung am ADC der gemessene Widerstandswert berechnet werden kann. Hier hilft die Spannungsteilerregel:<\/div>\n<div><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel2.jpg\" rel=\"attachment wp-att-1394\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1394 size-full\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel2.jpg\" alt=\"formel2\" width=\"563\" height=\"61\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel2.jpg 563w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel2-300x33.jpg 300w\" sizes=\"(max-width: 563px) 100vw, 563px\" \/><\/a><\/div>\n<div style=\"text-align: justify\">In diesem Beispiel hier besteht der Spannungsteiler aus dem NTC (2k2 @ 25\u00b0C) und einem 2k2 Festwiderstand. Wenn der NTC null Ohm haben sollte (nur rein theoretisch), so flie\u00dft ein maximaler Strom von 0.002A durch die Widerst\u00e4nde (5V\/2200Ohm). Wir lesen jetzt in Matlab den Spannungsabfall am NTC ein und k\u00f6nnen uns \u00fcber den Spannungsteiler den Widerstandswert berechnen. Jetzt fehlt nur noch die Formel zur Berechnung der Temperatur. Und die ist, samt den notwendigen Konstanten A<sub>1<\/sub>, B<sub>1<\/sub>, C<sub>1<\/sub> und D<sub>1<\/sub>, im Datenblatt angegeben:<a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel3.jpg\" rel=\"attachment wp-att-1399\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1399 size-medium\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel3-300x47.jpg\" alt=\"formel3\" width=\"300\" height=\"47\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel3-300x47.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/formel3.jpg 594w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Das Ergebnis dieser Berechnung ist die Temperatur in Kelvin. Um die Temperatur aber in \u00b0Celsius angezeigt zu bekommen, rechnet man: \u00b0C = \u00b0K-273,15. Mit all diesen Informationen kann man jetzt ein Matlab-Script schreiben, das dann in etwa so aussieht:<\/div>\n<div>&nbsp;<\/div>\n<div>&nbsp;<\/div>\n<pre class=\"brush: cpp; title: ; notranslate\" title=\"\">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r\n% Beispielscript um mit ArduinoUno einen Temperaturverlauf aufzuzeichnen\r\n% 02\/2016 by I.Bihlo\r\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r\n&amp;nbsp;\r\n%a = arduino('com5','Uno');\r\n&amp;nbsp; a = arduino('com5','Uno','TraceOn', true)\r\n&amp;nbsp; analogpin=0;\r\n&amp;nbsp; analog=0;\r\n&amp;nbsp;\r\n&amp;nbsp; %ein paar konstanten f\u00fcr die weiteren berechnungen\r\n&amp;nbsp; %\r\n&amp;nbsp; r=2200;&amp;nbsp; %Spannungsteilerwiderstand\r\n&amp;nbsp; rt=0; %das wird der errechnete widerstand des NTC\r\n&amp;nbsp; urt=0; %das wird der errechnete Spannungsabfall am NTC\r\n&amp;nbsp;\r\n&amp;nbsp; % konstanten f\u00fcr berechnung der Temperatur aus NTC Widerstand\r\n&amp;nbsp; % B25=3977K\r\n&amp;nbsp; a1=3.354016E-03;\r\n&amp;nbsp; b1=3.2569850E-04;\r\n&amp;nbsp; c1=2.61013E-06;\r\n&amp;nbsp; d1=6.38309e-08;\r\n&amp;nbsp; rref=2200;\r\n&amp;nbsp;\r\n&amp;nbsp;\r\n&amp;nbsp;\r\n&amp;nbsp; %Lesen eines Temperaturabh\u00e4ngigen Widerstandes am Analog Eingang A0\r\n&amp;nbsp; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r\n&amp;nbsp;\r\n&amp;nbsp; for x=1:50\r\n&amp;nbsp; analog(x)=readVoltage(a, analogpin) %Liest den AnalogIn von A0 und gibt in Volt aus\r\n&amp;nbsp; urt(x)=5-analog(x); %spannungsabfall am NTC\r\n&amp;nbsp; rt(x)=(r\/analog(x))*urt(x); %widerstand des NTC\r\n&amp;nbsp;\r\n&amp;nbsp; %berechung der temperatur\r\n&amp;nbsp; rvsrref(x)=rt(x)\/rref;\r\n&amp;nbsp; temp(x)=1\/(a1+(b1*log(rvsrref(x)))+(c1*(log(rvsrref(x)^2)))+(d1*(log(rvsrref(x)^3))));\r\n&amp;nbsp; tempc(x)=temp(x)-273.15 %Kelin in Celsius umrechnen\r\n&amp;nbsp; pause(2);\r\n&amp;nbsp;\r\n&amp;nbsp; end\r\n&amp;nbsp;\r\n&amp;nbsp; clear a;\r\n&amp;nbsp;\r\n&amp;nbsp; %plot den mist\r\n&amp;nbsp; figure(1);\r\n&amp;nbsp; time=1:50;\r\n&amp;nbsp; plot(time,analog,'b');\r\n&amp;nbsp; grid on; hold on;\r\n&amp;nbsp; plot(time,rt\/1000,'r');\r\n&amp;nbsp; plot(time,urt,'g');\r\n&amp;nbsp; plot(time,tempc,'m');\r\n&amp;nbsp; legend('Analogspannung des ADC','Widerstand des NTC in kOhm','Spannung am NTC','Temperatur &#x5B;\u00b0C]'); \r\n&amp;nbsp; %ende<\/pre>\n<p>&nbsp;<\/p>\n<div>&nbsp;<\/div>\n<div>\n<div id=\"attachment_1438\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/temperaturgraph.jpg\" rel=\"attachment wp-att-1438\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1438\" class=\"wp-image-1438 size-medium\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/temperaturgraph-300x217.jpg\" alt=\"temperaturgraph\" width=\"300\" height=\"217\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/temperaturgraph-300x217.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/temperaturgraph-768x556.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/temperaturgraph.jpg 967w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1438\" class=\"wp-caption-text\">So sieht der Graph mit dem Temperaturlog danach aus&#8230;<\/p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1380\" class=\"pvc_stats all  \" data-element-id=\"1380\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p>Nachdem ich im letzten Teil die Installation der Arduino-Matlab Packages zum Laufen bekommen habe, kann es nun weitergehen. Ziel dieses kleinen Beispiels ist es ja, an einen Arduino Uno einen NTC-Widerstand anzuschlie\u00dfen. Dieser soll als analoger Temperatursensor dienen (was er ja ist \ud83d\ude00 ) und \u00fcber einen der A\/D &#8211; Eing\u00e4nge des Arduino eingelesen werden.&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2016\/02\/24\/arduino-mit-matlab-der-sensor\/\">Weiterlesen<\/a><\/p>\n","protected":false},"author":86,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[1187,57],"tags":[430,431,289,432,434,437,438,435,436],"class_list":["post-1380","post","type-post","status-publish","format-standard","hentry","category-arduino","category-elektronikbastler","tag-arduino","tag-arduino-matlab","tag-arduino-uno","tag-avr-gcc-exe","tag-avrdude","tag-matlab-r2014b","tag-messen-mit-matlab-und-arduino","tag-ntc-arduino","tag-temperaturmessung-mit-arduino"],"a3_pvc":{"activated":true,"total_views":83,"today_views":0},"_links":{"self":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts\/1380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/users\/86"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/comments?post=1380"}],"version-history":[{"count":0,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts\/1380\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/media?parent=1380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/categories?post=1380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/tags?post=1380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}