en / de
Expertisen
Methoden
Dienstleistungen
Referenzen
Jobs & Karriere
Firma
Technologie-Trends TechCast WebCast TechBlog News Events Academy

Arduino und MATLAB im Internet der Dinge

Arduino ist eine Open Source Computing Plattform, bestehend aus Hardware und einer dazugehörigen Softwareentwicklungsumgebung. Die Hardware basiert auf einem I/O Board mit einem 8-bit Mikrocontroller und analogen sowie digitalen Ein- und Ausgängen. Zugehörige Softwarelibraries und Hardwarekomponenten werden von mehreren Herstellern angeboten und sind dank modularem Konzept weitgehend kompatibel. Wegen der begrenzten Leistungsfähigkeit des «kleinen» Prozessors gibt es seit einiger Zeit auch verschiedene 32-bit Varianten des Mikrocontrollers.

Mit einem USB-Kabel, einem Arduino Board und der Entwicklungsumgebung kann bereits mit Programmieren begonnen werden. Durch die leicht verwendbaren Bibliotheken können auch Einsteiger schnell erste Erfolge beim Programmieren erzielen. Dieses Konzept ist aktuell sehr erfolgreich. So kommt es, dass immer mehr Hersteller die Technologie aufgreifen und Arduino-kompatible Hardware auf den Markt bringen (z.B. Intel mit dem Edison).

Auch Softwareanbieter springen auf diesen Zug auf und stellen Libraries zur Integration von Arduino in ihre spezifischen Programmierumgebungen zur Verfügung. So stellt auch MATLAB seinen Entwicklern Libraries zur Seite, welche die Einbindung von Sensoren und Aktoren über ein Arduino board unterstützen.

Beim initialisieren der Plattform wird eine von MathWorks gelieferte Firmware auf den Arduino geladen, welche Funktionen zum Ansprechen der angeschlossenen Sensoren und Aktoren für MATLAB bereitstellt. Mit dieser Möglichkeit kann über den Arduino bereits ein einfacher Regler implementiert werden, der mit einer Abtastfrequenz von bis zu 25 Hz läuft. Dabei gilt zu beachten, dass das Verhalten des Systems nicht Echtzeitfähig ist, spricht es werden keine Reaktionszeiten garantiert.

Folgendes Beispiel zeigt einen Scope der zyklisch den Analogeingang 8 vom Arduino Mega 2560 einliest und auf dem PC-Bildschirm grafisch als Kurve darstellt.

MATLAB-Quellcode Scope für Arduino

Abbildung 1: Quellcode Scope

 

Für die Interaktion von MATLAB mit Arduino werden von der MATLAB-Library die folgenden Schnittstellen angeboten.

Da die Codes für die Anbindung an MATLAB und die Firmware auf dem Arduino einsehbar sind, sollte es mit zusätzlichem Wissen über Arduino- und MATLAB-Programmierung möglich sein, weitere Schnittstellen oder Funktionen des Arduinos in MATLAB verwenden zu können.

Für eine Anwendung bei der es um genaue Zeiten geht oder hohe Abtastraten gefordert sind, ist ein Abtasten mit MATLAB und Arduino auf Grund der ungenauen Taktrate nicht geeignet. Für einfache Datenerfassungsaufgaben, wie beispielsweise das Aufzeichnen einer Temperatur über mehreren Tagen, eignet sich ein Arduino-Board geradezu ideal. Für schnellere Anwendungen wird im nächsten Abschnitt die Möglichkeit von Arduino in Verbindung mit Simulink aufgezeigt.

Simulink und Arduino

Mit dem Board Support Package von Simulink kann ein Arduino als Target für Simulinkmodelle verwendet werden. Dabei erhält man eine Rapidprototypingplattform mit allen Einschränkungen die so ein Arduino mit sich bring (Speicher, Rechenleistung, begrenzte IO’s…). Wer seinen Versuchsaufbau unter diesen Einschränkungen entwerfen kann, erhält ein sehr kostengünstiges System für Prototypen, das von den vielen Vorteilen von Simulink profitiert.

Mit diesem Vorgehen können Modelle mit harten Echtzeitanforderungen realisiert werden. Da einzig das Simulinkmodel auf dem Arduino läuft, werden Abtastzeiten von bis zu 1 ms erreicht. Damit lassen sich Modelle erstellen, die schnell und unabhängig von einem PC laufen.

Mit dem Ethernet oder WiFi-Shield kann das Simulinkmodell Daten im Netzwerk per TCP oder UDP senden und empfangen. Damit lässt leicht ein Sensornetzwerk realisieren, bei dem die Arduinos Messdaten über das Netzwerk an einen Host senden und dieser die Daten aufzeichnet und auswertet.

Das Beispiel zu diesem Anwendungsfall rechnet die Spannung die ein Temperatursensor liefert in eine Temperatur um. Das Sensorelement ist ein NTC-Thermoelement, das eine nichtlineare Kennlinie aufweist. Die Umrechnung erfolgt im Simulinkmodell, das aus mehreren mathematischen Operationen besteht. Da nur alle 60 Sekunden ein Messwert gesendet wird und somit eine Extremtemperatur verpasst werden könnte, werden jeweils die minimale und die maximale Temperatur mitgesendet.

Berechnung auf dem Arduino

Abbildung 2: Berechnung der Temperatur

 

Die Kennlinie des Temperatursensors (Abbildung 5) ist aus dem Datenblatt entnommen.

ntc

Abbildung 3: Kennlinie Thermoelement

Temperatursensor

Abbildung 4: Temperatursensor

Für Anwendungen wie einem Webserver, der Messdaten von angeschlossenen Sensoren auf Abfrage zur Verfügung stellt, eignet sich die Programmierung in C/C++ besser. Einerseits existieren dafür bereits viele Beispiele und anderseits lassen sich ereignisgesteuerte Abläufe effizienter in C/C++ umsetzen. Wenn es jedoch bei der Anwendung um das Sammeln und Verarbeiten von Daten geht und diese über das Netzwerk gesendet werden sollen, hat man durch die Programmierung mit MATLAB/Simulink einige Vorteile.

 

 

Folgende Blöcke existieren in der Simulink Bibliothek für Arduino:

 

 

 

 

 

 

 

Zusammenfassung

Die angeführten Beispiele zeigen viele der Vorteile auf, welche der Einsatz von MATLAB und Simulink, in Verbindung mit Arduino mit sich bringt.

Es gibt jedoch auch Einschränkungen die je nach Anwendungsfall einen Einsatz dieser Technologie verunmöglichen. Zu diesen Einschränkungen gehören zum Beispiel die beschränkte Leistungsfähigkeit, die Eigenschaft dass das Modell zyklisch abgearbeitet wird oder die begrenzte Anzahl an Schnittstellen. Da Mathworks diese Low-Cost Plattformen noch nicht sehr lange unterstützt, könnte eine Verbreitung dieser Methode zu besserer Unterstützung durch Mathworks führen. Da MATLAB ein kostenpflichtiges Produkt ist, werden diese Möglichkeiten im Vergleich zu den realisierten Projekten von Arduinos ohne MATLAB wohl ein Nischendasein bleiben.

Link zu den Quellcodes: sourceArduino

Kommentare

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Newsletter - aktuelle Angebote, exklusive Tipps und spannende Neuigkeiten

 Jetzt anmelden
NACH OBEN
Privacy Policy Cookie Policy
Zur Webcast Übersicht