Forum: Projekte & Code RTMC - universelles Multifunktions I/O, DAQ, Datenlogger


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Markus G. (markusgruen)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe ein universelles Multifuntions I/O-Gerät (DAQ, Datenlogger,...) 
namens "RTMC" (Real-Time Measure & Control) entwickelt, das ich Euch 
gerne vorstellen möchte. Man kann Daten von 8 Sensoren zeitsynchron und 
mit präzisem Timing mit einer Taktrate von bis zu ca. 4,4 kHz 
aufzeichnen.

https://github.com/markusgruen/RTMC

Sowas gibt es natürlich schon seit vielen Jahren von Open Source bis 
teuer zu kaufen, aber alle bisherigen Geräte können ausschließlich 
analoge Daten aufzeichnen, man kann also nur Sensoren mit analogem 
Ausgang auswerten. Heutzutage gibt es aber immer mehr Sensoren mit 
digitaler Schnittstelle (I²C, SPI, UART,...) und hierfür gab es bisher 
keine einfache Möglichkeit, Daten von mehrern digitalen Sensoren 
zeitsynchron aufzuzeichnen. Mit dem RTMC lassen sich Daten von jeder 
beliebigen Schnittstelle (es müssen ja nicht unbedingt "Sensoren" sein) 
aufzeichnen:
- analog
- I2C
- SPI
- UART
- RS232
- RS422/485
- CAN
- Profibus
- und beliebige andere, auch proprietäte Interfaces.

Mit dem RTMC lassen sich aber nicht nur die Daten von Sensoren 
aufzeichnen, sondern auch Aktoren zeitsynchron ansprechen, so dass man 
einfach einen geschlossenen Regelkreis implementieren kann. Mir war bei 
der Entwicklung insbesondere wichtig, dass die Daten zeitsynchron 
aufgezeichnet werden und dass es sich einfach bedienen lässt. 
Mittlerweile habe ich das schon mehrfach im professionellen Umfeld bei 
mir auf der Arbeit eingesetzt (ich arbeite in der Vorentwicklung, da 
möchte man immer "schnell mal was messen") und es hat sich einwandfrei 
bewährt.

Überblick

Das RTMC ist ein Master-Slave System, mit dem RTMC-hub als Basisgerät 
und den RTMC-nodes an die die Sensoren angeschlossen werden. Die Nodes 
lesen die Sensoren aus und geben die Daten über eine RS485-Schnittstelle 
an den RTMC-hub weiter. Der RTMC-hub erzeugt ein präzises Trigger-Signal 
mit einem benutzerdefinierten Intervall, das bei den Nodes das Auslesen 
der Sensoren anstößt. Der RTMC-hub liest die Daten der bis zu 8 
angeschlossenen Nodes aus, aggregiert sie und streamt sie via USB zum 
Host-PC oder auf eine SD-Karte, wo man sie dann anschließend auswerten 
kann.

Software

Die RTMC-nodes lassen sich direkt mit der Arduino-IDE programmieren, das 
gesamte Handling des Triggerns und Übertragens der Daten passiert für 
den Nutzer nicht sichtbar im Hintergrund, so dass die eigentliche 
Programmierung der Nodes so einfach wie möglich ist. Auf dem RTMC-hub 
wird sogar gar kein nutzerspezifischer Code benötigt. Man kann die Nodes 
einfach anschließen und loslegen. Die maximale Abtastrate wird 
automatisch anhand des "langsamsten" Nodes ermittelt; man kann den Wert 
für die Abtastrate aber auch überschreiben und sogar schnellere 
Abtastraten wählen. (wenn man z.B. einen schnellen und einen langsamen 
Sensor hat, kann man die Abtastrate an den schnellen Sensor anpassen, 
der langsame Sensor übermittelt dann die Messwerte nur jedes n-te Mal)

Jeder Node kann bis zu 8 Werte übermitteln, man kann also problemlos 
einen 3-Achs Beschleunigungssensor anschließen oder auch zwei Sensoren 
pro Node, falls man mehr als 8 Eingänge benötigt. Maximal lassen sich 64 
Werte aufzeichnen. Die maximale Abtastrate hängt von der Zeitdauer ab, 
die es benötigt den angeschlossenen Sensor auszulesen und von der Anzahl 
an zu übertragenden Werten je Node. Da der RTMC-hub die Daten der 
Nodes parallel einliest ist es für die Abtastrate egal, ob man nur einen 
oder acht Sensoren anschließt.

Hardware

Ich habe die Hardware so gestaltet, dass die Nodes möglichst 
kostengünstig sind. Die Bauteile für einen RTMC-node liegen unter 10 €. 
Der RTMC-node basiert auf einem Raspberry Pi pico und hat außer einem 
RS485 Transceiver und einer RJ45 Buchse nur wenig Hühnerfutter auf der 
Platine. Der RPi bietet alle gängigen Schnittstellen und nahezu alle 
GPIOs lassen sich auch noch nutzen, wenn man sie denn braucht. Auf der 
Platine gibt es auch einen Breadboard-Bereich, um dort direkt einen 
Sensor aufzulöten oder einen Levelshifter unterzubringen.

Der RTMC-hub basiert auf einem Teensy 4.1, da dieser 8 separate UARTs 
besitzt, an die die Nodes über RS485 Transceiver angeschlossen werden. 
Auf der Platine ist ausser dem Teensy und den Transceivern nur noch ein 
bißchen Spannungsregelung und ein paar Taster und Schalter für die 
Bedienung. Sowohl der RPi, als auch der Teensy lassen sich ohne Aufwand 
direkt in der Arduino-IDE programmieren.

Mehr Details findet ihr in meinem Repo. Oder fragt mich einfach.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.