{"id":1364,"date":"2016-02-09T22:31:45","date_gmt":"2016-02-09T21:31:45","guid":{"rendered":"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/?p=1364"},"modified":"2019-01-11T12:57:20","modified_gmt":"2019-01-11T11:57:20","slug":"arduino-mit-matlab-startschwierigkeiten","status":"publish","type":"post","link":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2016\/02\/09\/arduino-mit-matlab-startschwierigkeiten\/","title":{"rendered":"Arduino mit Matlab &#8230; Startschwierigkeiten"},"content":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1364\" class=\"pvc_stats all  \" data-element-id=\"1364\" 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\"><a href=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-4.jpg\" rel=\"attachment wp-att-1363\"><img fetchpriority=\"high\" decoding=\"async\" class=\"size-medium wp-image-1363 alignleft\" src=\"http:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-4-300x169.jpg\" alt=\"arduino01 (4)\" width=\"300\" height=\"169\" srcset=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-4-300x169.jpg 300w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-4-768x432.jpg 768w, https:\/\/blog.fh-kaernten.at\/ingmarsretro\/files\/2016\/02\/arduino01-4-1024x576.jpg 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Heute m\u00f6chte ich ein Thema vorstellen, mit dem ich mich kurz im Rahmen einer Recherche besch\u00e4ftigt habe. Viele (Techniker) kennen vielleicht die Software <a href=\"http:\/\/de.mathworks.com\/products\/matlab\/\" target=\"_blank\" rel=\"noopener\">Matlab<\/a> von der Firma Matworks. Das ist ein extrem umfangreiches Softwarepaket, das bei uns in der Lehre eingesetzt wird, um Studierende in allen m\u00f6glichen technischen Bereichen zu unterrichten. Sei es Signalverarbeitung, Regelungstechnik, Bildverarbeitung, etc. &#8211; Matlab ist das Tool, um all das professionell umzusetzen. Auch wenn es um Messdatenerfassung geht, mu\u00df man nicht unbedingt auf Tools zur\u00fcckgreifen, mit denen ein Projekt oder Programm &#8222;gezeichnet&#8220; wird. Das ist zwar toll f\u00fcr den Einstieg, kann (und wird) in sp\u00e4terer Folge aber aufgrund des riesen Overheads und der ben\u00f6tigten PC Resourcen viel zu umst\u00e4ndlich, wenn man schnell einmal \u00fcber eine externe Hardware irgendwelche physikalischen Gr\u00f6\u00dfen aufzeichnen und verarbeiten will.<\/p>\n<p style=\"text-align: justify\">In diesem kleinen Projektchen m\u00f6chte ich nun zeigen, wie einfach man mit Hilfe eines <a href=\"https:\/\/www.arduino.cc\/en\/Main\/ArduinoBoardUno\" target=\"_blank\" rel=\"noopener\">Arduino Uno<\/a> Boards zusammen mit Matlab eine Temperaturmessung realisieren kann. Der Sensor soll hier ein ganz einfacher NTC Widerstand sein. Das bedeutet, der ohmsche Widerstand des Bauteils \u00e4ndert sich mit der Temperatur, in dessen Umgebung sich das Bauteil befindet. Die \u00c4nderung passiert hier folgenderma\u00dfen: wenn die Temperatur steigt, so wird der ohmsche Widerstand kleiner. (Negativer Temperatur Koeffizient) (Coefficient engl. -&gt; NTC). Einziger kleiner Haken &#8211; die \u00c4nderung passiert nicht linear wie zum Beispiel beim PT100. Das bedeutet der Verlauf&nbsp; des Widerstands bei \u00c4nderung der Temperatur ist keine Gerade mit irgendeiner Steigung, sondern eine e-Funktion. Das wiederum bedeutet, dass, will man aus den gemessenen Widerstandwerten in eine Temperatur zur\u00fcckrechnen, die Funktionsgleichung zum NTC gefunden werden muss. Gl\u00fccklicherweise findet man diese aber fix und fertig in den Herstellerdatenbl\u00e4ttern \ud83d\ude09 aber dazu sp\u00e4ter.<\/p>\n<p style=\"text-align: justify\">Man hat nun einen temperaturabh\u00e4ngigen Widerstand, ein Arduino Uno &#8211; Board und einen PC auf dem Matlab l\u00e4uft. Wie geht\u00b4s nun weiter? Nehmen wir als Beispiel an, dass Matlab 2014b installiert ist. Nun gibt es in Matlab unter dem Tab &#8222;Home&#8220; eine Rubrik, die sich &#8222;Add-Ons&#8220; nennt. Klick man auf&nbsp; diese, so klappt ein Menue auf, in dem man den Eintrag &#8222;Get Hardware Support Packages&#8220; findet. Den klickt man an und es \u00f6ffnet sich ein Fenster namens &#8222;Support Package Installer&#8220;.<\/p>\n<p style=\"text-align: justify\">Unter &#8222;Install from Internet&#8220; und &#8222;Next&gt;&#8220; kommt man zu einem Auswahlmenue der verf\u00fcgbaren Packages. Hier sucht man sich &#8222;Arduino&#8220; aus und setzt im rechten Bereich des Fensters einen Haken &#8211; und zwar bei dem Paket &#8222;Aquire inputs and send outputs on Arduino Uno&#8230;&#8220;. Danach wieder auf &#8222;Next&gt;&#8220; klicken und die Installation vollenden.<\/p>\n<p style=\"text-align: justify\">Ist alles erledigt so kann man den Arduino am USB-Port anstecken. Windows sollte einen Treiber zuordnen. (Unter Systemsteuerung &#8211; Ger\u00e4temanger &#8211; Anschl\u00fcsse &gt; sollte ein <strong><em>Arduino Uno (COMx)<\/em><\/strong> zu finden sein). Ist das der Fall, dann sollte es klappen \ud83d\ude42<\/p>\n<p>Jetzt kann in der Matlab Console folgender Befehl eingegeben werden:<\/p>\n<p><code>arduino()<\/code><\/p>\n<p>Folgende Antwort kommt nun zur\u00fcck:<\/p>\n<p><code>&nbsp;arduino with properties:<\/code><\/p>\n<p><code>Port: 'COM5'<\/code><br \/>\n<code> Board: 'Uno'<\/code><br \/>\n<code> AvailableAnalogPins: [0, 1, 2, 3, 4, 5]<\/code><br \/>\n<code> AvailableDigitalPins: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]<\/code><br \/>\n<code> Libraries: {'I2C', 'SPI', 'Servo'}<\/code><\/p>\n<p style=\"text-align: justify\">Der COM-Port unterscheidet sich nat\u00fcrlich und wird meist auf den n\u00e4chsten freien COM gemappt. Hat das aber geklappt, so ist der erste Teil schon gewonnen. Matlab kommuniziert mit dem Arduinoboard. Es kann aber auch vorkommen, dass Fehlermeldungen auftauchen. Wie bei mir der Fall:<\/p>\n<p><em>Cannot detect Arduino hardware. Make sure original Arduino hardware is properly plugged in. If<\/em><br \/>\n<em>using unofficial(clone) hardware, specify port and board type. For more information, see the<\/em><br \/>\n<em>arduino function reference page.<\/em><\/p>\n<p style=\"text-align: justify\">Das war die erste Meldung nach der Installation: Daf\u00fcr gibt&#8217;s aber auch Abhilfe. Man gibt folgendes ein:<\/p>\n<p><code>a = arduino('com5','Uno')<\/code><\/p>\n<p style=\"text-align: justify\">Wenn auch dann eine Fehlermeldung kommt, so wie nat\u00fcrlich bei mir, dann kann man mit folgendem commando auf Fehlersuche gehen:<\/p>\n<p><code>&nbsp;a = arduino('com5','Uno','TraceOn', true)<\/code><\/p>\n<div style=\"text-align: justify\">Jetzt kam bei mir die Meldung :<em> Updating server code on Arduino Uno (COM5). Please wait.&nbsp; <\/em>Und danach gleich ein Errorfenster mit einem &#8222;avr-gcc.exe<\/div>\n<div style=\"text-align: justify\">Die Anwendung konnte nicht korrekt gestartet werden (0xc00000142)&#8220; Fehler. Danach habe ich lange in diversen Foren gesucht, Tracelogs verglichen und nach den Fehlermeldungen gegoogelt. Hier gab es Tips von: die make.exe in den Tiefen des SupportPackages Ordner ist nicht kompatibel mit 64bit Systemen, mit Windows8.1 und Windows10 gibt es Zugriffsrechteprobleme und und und. Leider war aber nie ein L\u00f6sungsvorschlag dabei der bei mir funktionierte. Also habe ich auf einem zweiten Rechner eine jungfr\u00e4uliche Installation von Matlab und dem Arduino Matlab Package durchgef\u00fchrt. Und siehe da &#8211; es funktionierte. Aber wie jetzt nach dem Fehler suchen, oder ihn beheben. Also habe ich auf dem funktionierenden Rechner einen Tracelog durchgef\u00fchrt, indem ich beim Aufrufen der Arduinofunktion einen Port angegeben habe, auf dem ein anderes NICHT Arudino Ger\u00e4t angeschlossen ist. Und siehe da, der Errortracelog war seeehr lange und ausf\u00fchrlich. Man konnte ansehen was die Funktion alles aufruft. Und irgendwo ganz unten im Log las ich was von <em>avrdude&#8230; <\/em>Da kam mir die Idee. Auf meinem PC sind einige Entwicklungsumgebungen installiert. Unter anderem auch AVR-Studio und der WinAVR20100110 Compiler. Und genau der war das Problem. Den WinAVR gel\u00f6scht und schon klappte es.<\/div>\n<p>Also steht dem weiteren Aufbau zur Realisierung des Projektchens nichts mehr im Weg. Aber dar\u00fcber scheibe ich beim n\u00e4chsten Mal in Teil 2&#8230;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1364\" class=\"pvc_stats all  \" data-element-id=\"1364\" 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>Heute m\u00f6chte ich ein Thema vorstellen, mit dem ich mich kurz im Rahmen einer Recherche besch\u00e4ftigt habe. Viele (Techniker) kennen vielleicht die Software Matlab von der Firma Matworks. Das ist ein extrem umfangreiches Softwarepaket, das bei uns in der Lehre eingesetzt wird, um Studierende in allen m\u00f6glichen technischen Bereichen zu unterrichten. Sei es Signalverarbeitung, Regelungstechnik,&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/2016\/02\/09\/arduino-mit-matlab-startschwierigkeiten\/\">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,433,437,438,435,436],"class_list":["post-1364","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-cannot-detect-arduino-hardware","tag-matlab-r2014b","tag-messen-mit-matlab-und-arduino","tag-ntc-arduino","tag-temperaturmessung-mit-arduino"],"a3_pvc":{"activated":true,"total_views":48,"today_views":0},"_links":{"self":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts\/1364","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=1364"}],"version-history":[{"count":0,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/posts\/1364\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/media?parent=1364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/categories?post=1364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fh-kaernten.at\/ingmarsretro\/wp-json\/wp\/v2\/tags?post=1364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}