Forum: Mikrocontroller und Digitale Elektronik Single Board Computer (SBC) oder Single Board Microcontroller (SBM)?


von S. W. (maschbauing)


Lesenswert?

Hallo liebes Forum,

ich möchte ein Projekt mit Hilfe eines SBC oder SBM realisieren. Das 
Projekt besitzt die folgenden Randbedingungen:
- Mikrofon als Sensor
- Minimale Abtastrate 1,5 MS (Hertz)
- Wünschenswerte Abtastrate 10 MS
- Minimale Auflösung des AD-Wandlers 12 Bit
- Wünschenswerte Auflösung des AD-Wandlers 18 Bit
- Messzeit 3ms

Die Recheneinheit soll primär als "Datensklave" arbeiten, also die 
Sensordaten digitalisieren und speichern. Eine Verarbeitung/Auswertung 
der Sensordaten ist auf der Recheneinheit nicht erforderlich, hierfür 
kann ein externer PC zum Einsatz kommen. Das Projekt möchte ich mit 
Hilfe eines Entwicklungsboards/Einplatinenboard sofern möglich aufbauen.

Vor allem die wünschenswerten Randbedingungen stellen eine 
Herausforderung dar. Wobei diese wohl nicht mit einem SBM realisierbar 
sind. Zumindest hab ich kein Entwicklungsboard gefunden, dass das 
leisten kann.

Ich habe mich bislang über die Unterschiede Mikroprozessor, 
Mikrocontroller und 
Mikrocomputer/Einplatinencomputer/Single-Board-Computer (SBC) 
informiert. Auf der Recheneinheit selbst muss kein eigenständiges 
Betriebssystem laufen, das spricht nach meinen Informationen für einen 
Microcontroller bzw. Single-Board-Microcontroller (SBM). Würdet ihr dem 
zustimmen?

Tendenziell besitzen SBC eine höhere Leistung als SBM, beispielsweise 
hinsichtlich Prozessor und Speicher. Aber benötige ich diese Leistung 
auch?

Aufgrund der vorgegebenen Randbedingungen resultieren hohe Datenmengen, 
die ich nach:
Datenmenge [Byte] = Auflösung [Bit] * 1/8 * Abtastfrequenz [MS/s] * 
Messzeit
berechnet habe.

Wichtig ist, dass die Recheneinheit die Daten speichern kann und die 
Datenmenge handhaben kann.

Konkrete Fragen:
- Wann verwendet man ein SBC und wann ein SBM?
- Welches eignet sich für den vorliegenden Fall? (Leistungsaspekt)


Über die Datenspeicherung informiere mich als nächstes, würde das gerne 
als wachsenden Beitrag leben lassen.
Danke euch! :)

von H. H. (Gast)


Lesenswert?

Florian W. schrieb:
> Projekt besitzt die folgenden Randbedingungen:
> - Mikrofon als Sensor
> - Minimale Abtastrate 1,5 MS (Hertz)
> - Wünschenswerte Abtastrate 10 MS
> - Minimale Auflösung des AD-Wandlers 12 Bit
> - Wünschenswerte Auflösung des AD-Wandlers 18 Bit
> - Messzeit 3ms

Klingt nach einer gehörigen Portion Fehlvorstellungen.

Was soll denn da aufgezeichnet werden?

von S. W. (maschbauing)


Lesenswert?

Naja in erster Linie geht es darum zu versuchen die Randbedingungen 
umzusetzen. Auch ein "ist nicht möglich" wäre ein Erkenntnisgewinn, nur 
muss diese Erkenntnis erarbeitet werden.

Laut deiner Aussage ist das wohl nicht realisierbar. Kannst du mir auch 
sagen warum?

von H. H. (Gast)


Lesenswert?

EOT

von Andreas (Gast)


Lesenswert?

Was hast du für einen Vorstellung davon für welche Frequenz ein Mikrofon 
vorgesehen ist?

von S. W. (maschbauing)


Lesenswert?

Das Mikrofon dient nur beispielhaft als Sensor. Wichtig ist die Kette 
der Digitalisierung.

von Luca E. (derlucae98)


Lesenswert?

Es gibt ADCs mit deinen Anforderungen (z.B. LTC2386-18, 18 bit 10 Msps). 
Mit einem Mikrocontroller wirst du da nicht weit kommen. Klingt eher 
nach einer Aufgabe für einen FPGA.

von S. W. (maschbauing)


Lesenswert?

Danke für deine Antwort. Die wünschenswerten Randbedingungen werde ich 
wohl nicht mit einem Microcontroller realisieren können. Dafür aber die 
minimalen Anforderungen?

Das Nucleo L496ZG besitzt einen STM32L496ZG Microcontroller, welcher 
drei AD-Wandler integriert hat. Die AD-Wandler haben 12-Bit und 5 MS. 
Damit sollte ich also die Minimalanforderungen erfüllen können. 
Kritische Stimme dagegen?

Die einzige Sorge habe ich aktuell hinsichtlich des Speicherplatzes.

Link:
https://www.reichelt.de/nucleo-144-arm-cortex-m4-stm32-l496-serie-nucleo-l496zg-p276496.html?&trstct=pol_4&nbc=1

von Frank K. (fchk)


Lesenswert?

S. W. schrieb:

> Auf der Recheneinheit selbst muss kein eigenständiges
> Betriebssystem laufen, das spricht nach meinen Informationen für einen
> Microcontroller bzw. Single-Board-Microcontroller (SBM). Würdet ihr dem
> zustimmen?

Nein.

Schau Dir mal an, wie ein modernes Speicheroszilloskop funktioniert. Ja, 
da ist ein Prozessor drin. Der bedient aber nur LAN und USB und macht 
die Benutzerschnittstelle. Für die eigentliche Datenerfassung ist er zu 
langsam. Das wird komplett im programmierbarer Digitallogik aufgebaut. 
Früher waren das Spezialchips, heute nimmt man FPGAs dafür. Die haben 
sehr schnellen, aber kleinen internen Speicher und oft auch extern 
angeschlossenen Speicher, der dann aber nicht ganz so schnell ist.

Das ist der Weg, den Du gehen wirst, wenn Du Erfolg haben willst.

Du wirst wohl bei sowas hier landen.

https://digilent.com/shop/zedboard-zynq-7000-arm-fpga-soc-development-board/

So, und zu Deinen sonstigen Anforderungen:
Weißt Du, was 18 Bit bedeuten? Da ist dann ein Schritt nur noch 12 
millionstel Volt groß. Um das richtig ausnutzen zu können, brauchst Du 
Wissen und Erfahrung, das Du offenbar nicht hast und so schnell auch 
nicht haben wirst. Sorry, ist so. Ich denke, selbst die 12 Bit werden 
für Dich schon mehr als genug sein, damit die letzten Bits nicht im 
Rauschen verschwinden.

fchk

von S. W. (maschbauing)


Lesenswert?

Danke für deine Tipps. Das Wissen und die Erfahrung habe ich noch nicht, 
da möchte ich von euch profitieren. Im Rahmen meines Projektes möchte 
ich mir das Wissen entsprechend aneignen, seid nachsichtig mit mir :)

von Yalu X. (yalu) (Moderator)


Lesenswert?

S. W. schrieb:
> Das Nucleo L496ZG besitzt einen STM32L496ZG Microcontroller, welcher
> drei AD-Wandler integriert hat. Die AD-Wandler haben 12-Bit und 5 MS.
> Damit sollte ich also die Minimalanforderungen erfüllen können.
> Kritische Stimme dagegen?

Ein Versuch wäre es wert. Das Board kostet ja auch nicht viel.

> Die einzige Sorge habe ich aktuell hinsichtlich des Speicherplatzes.

5 MSa/s · 3 ms · 2 B/Sa = 30 kB

Das sind nur etwa 10% der verfügbaren 320 KiB. Auch die Rechenleistung
bei 80 MHz CPU-Takt sollte ausreichen, um die 5 MSa/s in vom ADC zu
lesen und in den Speicher zu schreiben. Wahrscheinlich geht das sogar
mit DMA, so dass die CPU fast überhaupt nichts tun muss.

Erwarte aber nicht zu viel bzgl. der Qualität der ADC-Messungen.
Insbesondere die in Mikrocontrollern integrierten ADCs sind oft starken
Störungen ausgesetzt, die der Mikrocontroller selbst erzeugt. Dazu
kommen das unvermeidbare Messrauschen des ADC selbst sowie dessen
Nichtlinearitäten.

Ein FPGA braucht man bei 5 oder 10 MSa/s nicht unbedingt.

Statt eines Mikrocontrollerboards könntest du auch ein USB-Oszilloskop
nehmen. Das ist zwar teurer, dafür aber schon fertig aufgebaut und
getestet.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Andreas schrieb:
> Was hast du für einen Vorstellung davon für welche Frequenz ein Mikrofon
> vorgesehen ist?

Es muss ja kein Kohlemikrofon aus einem alten Telefon sein. Die obere
Grenzfrequenz besserer Messmikrofone liegt bei deutlich über 100 kHz.
Will man das Abtasttheorem nicht bis zum Anschlag ausreizen, sind die
genannten 1,5 MSa/s eine durchaus sinnvolle Abtastrate.

von chris_ (Gast)


Lesenswert?

Nimm einen RedPitaya. Den gibt es fertig zu kaufen und er erfüllt alle 
Anforderungen.

von Patrick B. (p51d)


Lesenswert?

S. W. schrieb:
> Wichtig ist, dass die Recheneinheit die Daten speichern kann und die
> Datenmenge handhaben kann.

Schon mal überlegt, wo und in welcher Art die Daten gespeichert werden 
sollen? - internes / externes RAM, FLASH, USB Stick, Speicherkarte...
- Rohdaten (z.B. als Array), aufbereitet (z.B. CSV)
- Wie soll der spätere Zugriff / Anzeige erfolgen? Display, Ethernet, 
Monitor, WLAN, Bluetooth

Mal abgesehen von den erwähnten Bedenken gegenüber ADC Auflösungen 
>12Bit definieren dir unter anderem deine Systemanforderungen

Wenn du etwas "Bastelerfahrung" sammeln möchtest und mit verschiedenen 
Varianten spielen würde ich dir ein Zynq-Board empfehlen (die gibt es 
bei diversen Händlern auch mit Studenten-Rabaten). Dort hast du zum 
einen viel Rechenleistung und gleichzeitig ein FPGA in einem Chip... mit 
den Adapterboards kannst du so mit wenig HW-Tauschen mehrere Varianten 
durchgehen.

von N. M. (mani)


Lesenswert?

Die Frage ist, mit was hast du Erfahrung? Möchtest du in endlicher Zeit 
ein Ergebnis haben? Und wie wichtig sind dir die maximalen 
Anforderungen?
Kannst du programmieren?
Was für eine Sprache?
Kennst du dich mit FPGAs/VHDL aus?

Zu den 18Bit: never ever! Vergiss das. Das bekommst du niemals so hin, 
dass du die 18 Bit auch wirklich nutzen kannst. Wahrscheinlich nicht Mal 
16Bit. Was bringen dir 18Bit wenn die unteren 10 Bit rauschen?Außerdem 
Stelle ich in Frage dass du es wirklich brauchst.
Viele Oszis arbeiten auch heute noch mit weniger Auflösung. Außerdem 
verdoppelt sich deine Datenrate beim Schritt>16 Bit. Zumindest wenn du 
sauber alignest.

Ich würde an deiner Stelle auch mit einem STM32 anfangen. Die Typen mit 
3 ADCs können oft interleaved Mode was dann glaube ich 12MSPS sind. 
Zumindest mit einem Kanal.
Und ja, das geht mit DMA. Also ohne jegliche Aktion während des 
Messzeitraum des uC.
Wenn du richtig schaust gibt es dafür bestimmt sogar ein Beispiel das du 
verwenden kannst.

: Bearbeitet durch User
von S. W. (maschbauing)


Lesenswert?

@N.M.
Basiskenntnisse in C bzw. C++ besitze ich. Die wünschenswerten 
Anforderungen sind nicht besonders wichtig, sie werden wohl auch ein 
Wunsch bleiben.
Ein Ergebnis hätte ich gerne in endlicher Zeit :)

Mit FPGAs kenne ich mich nicht aus. Ich verstehe den groben Aufbau und 
die Unterschied zum Microcontroller und auch, dass die Anwendung im 
Vergleich zu Microcontrollern deutlich komplexer ist.

@Patrick B.
Speicherung der Daten:
Variante a):
- Übertragung der Daten auf einen Laptop während der Messung, sofern 
möglich? Die Option habe ich noch nicht näher betrachtet.
Variante b):
- Lokale Speicherung z.B. auf einem USB-Stick oder einer SD-Karte, um 
längere Messungen (höhere Datenmengen) aufnehmen zu können

Danke für den Tipp! Ich werde mir das Board mal ansehen.

@all Danke für eure Tipps!

Ich werde im Folgenden mit einem Entwicklungsboard mit einem 32-Bit MC 
weiterarbeiten. Dafür werde ich zunächst erstmal nach Alternativen zum 
Nucleoboard suchen, um einen Vergleich durchführen zu können.

von epitaph (Gast)


Lesenswert?

wie überall, in den Kommentaren ,..FPGA und Fehlvorstellungen ..
willkommen im Bastlerforum

Deine Anforderungen sind "normal"
ADC's mit den betreffenden Eckdaten sind auch nicht so schwierig
zu finden.

Anstelle eines Mikrocontrollers o.ä. muss man hier halten
einen DSP nehmen, ...beides von Texas,.. wie gesagt ..
nicht unbedingt etwas für ein Bastlerforum

von N. M. (mani)


Lesenswert?

S. W. schrieb:
> Basiskenntnisse in C bzw. C++ besitze ich.

Dann würde ich eher in die Richtung gehen.

S. W. schrieb:
> Mit FPGAs kenne ich mich nicht aus.

Denn da ist die Lernkurve für dein Projekt etwas steiler als beim uC.

S. W. schrieb:
> Übertragung der Daten auf einen Laptop während der Messung, sofern
> möglich?

Während der Messung, also als lückenloser Stream? Das wäre ambitioniert.
Bei 10MSPS und 16Bit Daten + Datensicherung bist du locker flockig bei 
240MBit/s+!
Ich würde mir überlegen ob du nicht nur Bursts behandelst. Du schreibst 
oben doch auch was von 3ms Messzeit. Da gehe ich von einem Burst aus 
(also bei 10MBit 30k Messpunkte).
Oder meinst du in einem Ringpuffer?

S. W. schrieb:
> Messzeit 3ms

S. W. schrieb:
> Lokale Speicherung z.B. auf einem USB-Stick oder einer SD-Karte, um
> längere Messungen (höhere Datenmengen) aufnehmen zu können

Kann man machen. Allerdings brauchen gerade SD Karten gerne Mal ein paar 
Gedenk ms. Sprich, dein benötigter Puffer wird tendenziell eher größer. 
Außerdem glaube ich nicht dass du diese Datenrate weggeschrieben 
bekommst.
Wie gesagt ist die Übertragung schon ambitioniert. Und das ist nur Fire 
and forget.
Außerdem schreibst du dir auch sehr schnell den NV Speicher kaputt bei 
den Datenraten wenn du da ständig drauf schreibst.

Am ehesten noch 2 stufig. Datenerfassung mit einem uC. Übertragung über 
ein schnelles Medium. Speicherung in einem SBC o.ä.
Alternativ halt die ganz große Keule wie mit einem SoC (CycloneV o.ä.) 
wo du die Datenerfassung im FPGA machst und ins DDR schiebst. Und das 
Linux schreibt es weg.

Aber wie gesagt, ich würde mir diese Anforderung mit dem Speichern (ohne 
PC) nochmal gründlich überlegen. Denn der Aufwand steigt dadurch 
ziemlich.

: 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.