Forum: Analoge Elektronik und Schaltungstechnik ADC für den Raspi i Ms Bereich


von Andreas H. (Gast)


Lesenswert?

Hey,

ich bin schon seit längeren auf der Suche nach einem ADC Wandler inkl. 
Sampler für den Raspi. Ich würde gerne ein 50 kHz Signal erfassen und in 
eine Datei in den Raspberry einlesen. Wie schon gesagt, eine 
fertiglösung scheint es nicht zu geben, bin ich denn der einzige, der 
sowas sucht ?

Das Signal osziliert zwischen +/- 5V, die Frequenz kann bis zu 50 kHz 
erreichen. Die Genauigkeit sollte 12 Bit erreichen und die Samplerate 
sollte daher schon um die 1 MSps liegen.

Vielen Dank schon einmal im voraus :)

Viele Grüße, Andreas

von M. K. (sylaina)


Lesenswert?

Andreas H. schrieb:
> Das Signal osziliert zwischen +/- 5V, die Frequenz kann bis zu 50 kHz
> erreichen. Die Genauigkeit sollte 12 Bit erreichen und die Samplerate
> sollte daher schon um die 1 MSps liegen.

Für negative Spannungen empfielt es sich ein Signal entsprechend für den 
ADC zu konditionieren (Stichwort: Bezugspunkt und Co ;))
1 MSps ist kein Problem, das kann z.B. ein ADS7476 mit SPI-Schnittstelle 
sein.

von Andreas H. (Gast)


Lesenswert?

Hey, danke schonmal für deine Hilfe :) Aber das Problem ist doch, dass 
der Raspberry keine 1Msps aufzeichnen kann über SPI, zudem ist das 
Betirebssystem alles andere als ein RTOS. Somit sind die Samples sicher 
nicht im gleichen Abstand zueinander, oder täusche ich mich da? Muss es 
da nicht am adc einen internen buffer geben ?

von Frank K. (fchk)


Lesenswert?

Ich sage da ganz einfach: falsche Plattform gewählt. Der Pi hat nun mal 
von all diesen Kleincomputern die schlechteste Peripherieausstattung.

Wenn Du geeignetes für Dein Problem suchst:

https://store.digilentinc.com/cora-z7-zynq-7000-single-core-and-dual-core-options-for-arm-fpga-soc-development/

Da fehlt dann nur noch das analoge Frontend, aber das ist ja kein 
Problem.

fchk

von M. K. (sylaina)


Lesenswert?

Andreas H. schrieb:
> Aber das Problem ist doch, dass
> der Raspberry keine 1Msps aufzeichnen kann über SPI

Öhm, so gut kenn ich den Pi nicht aber kann man mit dem den SPI nicht 
auf >16 MHz laufen lassen?

von W.A. (Gast)


Lesenswert?

Andreas H. schrieb:
> Aber das Problem ist doch, dass
> der Raspberry keine 1Msps aufzeichnen kann über SPI, zudem ist das
> Betirebssystem alles andere als ein RTOS.

Unter welchem Betriebssystem hast du den Raspberry denn laufen?
Irgend etwas in Richtung RTOS wäre da wohl schon angesagt.

von Frank K. (fchk)


Lesenswert?

M. K. schrieb:

> Öhm, so gut kenn ich den Pi nicht aber kann man mit dem den SPI nicht
> auf >16 MHz laufen lassen?

Vielleicht. Aber wenn da >>20 Tasks rumlaufen, wer garantiert denn, dass 
Du jede us eine Zeitscheibe bekommst, um das Sample auch abzuholen? In 
einem Bare-Matal-System machbar, in einem nicht deterministischen 
Multitasking-Betriebssystem nicht.

Das von mir vorgeschlagene Zynq-Board machts anders: Da sitzt im FPGA 
ein ADC, der per programmierbarer Logik gesteuert werden kann und dann 
völlig unabhängig vom Linux auf den A9-Kernen seine Samples im Block-RAM 
ablegt. Das Timing ist absolut deterministisch und im Rahmen des 
Quarzoszillators genau. Wenn das Block-RAM voll ist, kann die Software 
die Daten rausholen und analysieren. Oder man könnte sie per DMA ins 
SDRAM kopieren, was aber nur bei ganzen Blöcken sinnvoll ist und nicht 
bei Einzelwerten.

Möglichkeiten gibts viele. Man muss nur anfangen.

fchk

PS: Diese Zynq ARM-FPGA-Bausteine werden gerne in Oszilloskopen der 
Einsteigerklasse verwendet - dann aber natürlich mit externen ADCs und 
nicht mit dem internen.

: Bearbeitet durch User
von M. K. (sylaina)


Lesenswert?

Frank K. schrieb:
> Vielleicht. Aber wenn da >>20 Tasks rumlaufen, wer garantiert denn, dass
> Du jede us eine Zeitscheibe bekommst, um das Sample auch abzuholen? In
> einem Bare-Matal-System machbar, in einem nicht deterministischen
> Multitasking-Betriebssystem nicht.

Das ist sicher dann nicht leicht, keine Frage. Aber wir wissen ja auch 
nicht was er genau wie lösen möchte ;)

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

https://eckstein-shop.de/High-Precision-AD-DA-Board

Der ADC ADS1256 kann max. 30kSamples pro Sekunde:
http://www.ti.com/lit/ds/sbas288k/sbas288k.pdf

Aber mit einem Python-Programm ist das schon sehr sportlich (Ich habe es 
mit "pigpio" wesentlich langsamer in Erinnerung), vermutlich müsste man 
es sehr hardwarenah programmieren.

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.