Forum: Mikrocontroller und Digitale Elektronik Abschätzung Rasp 4 zur Messdatenaufnahme


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 ElecEddy R. (forrix)


Bewertung
0 lesenswert
nicht lesenswert
Hallo liebes Forum,

ich hätte eine Frage zum Abschätzen in Bezug auf den Raspberry Pi 4 und 
der Datenaufnahme. Also ob man das was ich vor habe versuchen könnte 
oder es von vorne rein aussichtslos ist.

Ein 8Ch-ADC (ADS8344) soll über eine SPI-Schnittstelle seine Messdaten 
(Abstastrate pro Kanal: ~10ksps) zum Rasp schicken und abspeichern. Das 
heißt man wäre bei ca. 1,9MBit/s Datenrate (24Bit*8Kanäle*10ksps).

Ein Messzyklus besteht in meinen Wunschvorstellungen aus der Abtastung 
von 600 Punkten pro Kanal, d.h. 600Punkte*10ksps = 60ms Messzeit.
Dieser Zyklus soll alle 100ms wiederholte werden, sprich es gibt 40ms 
Pause.

Wäre so etwas grundlegend machbar?

: Bearbeitet durch User
von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Bewertung
0 lesenswert
nicht lesenswert
Die SPI-Schnittstelle wäre schnell genug. Die Schreibgeschwindigkeit auf 
die SD-Karte (oder USB-Stick) wäre schnell genug. Die Anwendung für das 
Auslesen und Schreiben muss in einer Programmiersprache der 
Geschwindigkeit wie C sein.

von D00fi (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Bei den alten Raspis konnte man zeitlich fuer gar nichts garantieren.
Ob das bei den "neuen" besser geworden ist, weiss ich nicht.
Raspi war damals bei mir raus.

Beitrag #6490470 wurde von einem Moderator gelöscht.
von MaWin (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
ElecEddy R. schrieb:
> Wäre so etwas grundlegend machbar?

Nein.

Ein rPi ist genau so wenig echtzeitfähig wie dein Windows-PC.

Und falls du ihn ohne Linux programmieren wolltest: er ist weitgehend 
undokumentiert.

Also völlig ungeeignet.

von Andre (Gast)


Bewertung
1 lesenswert
nicht lesenswert
ElecEddy R. schrieb:
> Dieser Zyklus soll alle 100ms wiederholte werden

Wie genau muss das sein? Der Pi ist nicht Echtzeit fähig, wenn dem OS 
irgendwas anderes einfällt startet deine nächste Messung halt später.
Ich würde das ganze zeitkritische Zeug auf einem eigenen Controller 
machen z.B. STM32
Die Messdaten schiebt der dann mit Zeitstempel versehen z.B. per 
Ethernet rüber.

von Arno (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Es scheint auch für den Raspberry Pi Echtzeit-Linux-Implementationen zu 
geben: 
https://www.embedded-software-engineering.de/echtzeit-mit-dem-raspberry-pi-und-linux-preemptrt-a-630498/

Ob die Echtzeitfähigkeit "hart genug" ist, kann ich nicht beurteilen, 
17µS Latenz klingt bei 200ms Abtastrate aber nicht komplett daneben.

MfG, Arno

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
ElecEddy R. schrieb:
> 24Bit*8Kanäle*10ksps
https://www.mikrocontroller.net/part/ADS8344
mit einem 16-Bit ADC?

woher stammen die zusätzlichen 8 Bit?

: Bearbeitet durch User
von ElecEddy R. (forrix)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> ElecEddy R. schrieb:
>> 24Bit*8Kanäle*10ksps
> https://www.mikrocontroller.net/part/ADS8344
> mit einem 16-Bit ADC?
>
> woher stammen die zusätzlichen 8 Bit?

die zusätzlichen 8 Bits sind Controlbits (Start bit, Channel select...) 
die den eigentlichen 16 Datenbits vorangestellt sind.

von ElecEddy R. (forrix)


Bewertung
0 lesenswert
nicht lesenswert
Ok, erstmal danke für die ganzen Abschätzungen. Das hilft mir sehr.

Ich denke demnach auch, dass es eine gute Idee ist einen Mikrocontroller 
zwischen ADC und Rasp für die zeitkritischen Dinge zu bauen.
Der Rasp dient dann nur zum Starten der Messung und zur Anzeige der 
Daten, welche er über USB oder Ethernet mit Zeitstempel bekommt.
Zumal im System auch noch ein DAC (AD5761) angesteuert werden müsste, 
welcher im 10ksps Takt Spannungswerte einstellt.


Also wäre dann der Ablauf:

--> Messzyklus starten auf Rasp 4
--> µC wird initialisiert
--> µC startet Messprogramm
--> Spannung wird von DAC(AD5761) mit 10ksps eingestellt
--> Spannung wird auf 8 Kanäle aufgeteilt
--> 8 Kanäle werden von ADC(ADS8344) mit 10ksps digitalisiert
--> Daten kommen über SPI zu µC und bekommen Zeitstempel
--> Messdaten über USB/Ethernet zu Rasp
--> Messzyklus beenden und Daten anzeigen auf Rasp


Bei der Datenmenge von wenigen Mbit/s (2... 3... 4 Mbit/s) sollte USB 
doch eigentlich reichen, oder würde Ethernet einen wichtigen Vorteil 
haben?

Zwecks µC, ich hab hier noch ein MSP-EXP430F5529LP und ein 
LAUNCHXL-F28379D liegen. Eines von beiden sollte das doch schaffen 
können.
Ich bin nur noch nicht ganz draus schlau geworden, ob diese genug 
SPI-Interfaces (2) haben um sowohl den DAC als auch den ADC mit 
bespielen zu können (bspw. über CS).

von Sheeva P. (sheevaplug)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> ElecEddy R. schrieb:
>> Wäre so etwas grundlegend machbar?
>
> Nein.
>
> Ein rPi ist genau so wenig echtzeitfähig wie dein Windows-PC.

Ja, nein, ... vielleicht doch.

Mit so einem Linux kann man ein paar ziemlich lustige Sachen tun.

Es gibt da ja so Realtime-Patches, außerdem RTAI und Xenomai. Womöglich 
kann man seine Software auch als Kernelthread bauen...

Außerdem kann man den Scheduler des Linux-Kernels mit dem Bootparameter 
isolcpus anweisen, einen oder mehrere CPU-Cores nicht zu benutzen. Diese 
sind dann (bis auf die zwingend notwendigen Interrupts) frei für 
Echtzeitprozesse, an die sie per taskset(1) gebunden werden können... 
YMMV.

> Und falls du ihn ohne Linux programmieren wolltest: er ist weitgehend
> undokumentiert.

Das gilt lediglich für den VideoCore, aber nicht für die CPU.

Das Lustige ist, daß die meisten Menschen mit dem Begriff "Echtzeit" 
etwas ganz anderes verbinden als Leute, die sich damit auskennen. 
Nachzulesen hier [1].

[1] https://de.wikipedia.org/wiki/Echtzeit

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.