Forum: Mikrocontroller und Digitale Elektronik Digitaler Lock-In Verstärker mit Mikrocontroller, DSP oder FPGA?


von Lauri S. (lauri)


Lesenswert?

Hallo zusammen,

für einen Messaufbau möchte ich mir ein PCB zusammenstellen, welches die 
Funktionalität von bisher mehreren verschiedenen Geräten übernimmt. Im 
Kern geht es um eine Signalmodulation und anschließende Demodulation 
eines Response Signals mittels Lock-In Verstärker, sowie ggf. Fensterung 
und Filterung.

Gewünscht ist USB Kommunikation mit einem zentralen Steuerelement, 
welches alle weiteren Messkomponenten anspricht und Messdaten 
zurückliefert. Mein Gedanke ist einen Mikrocontroller, DSP oder FPGA zu 
nutzen. Meine bisherigen Erfahrungen beschränken sich auf Projekte mit 
Mikrocontrollern. Gerne würde ich mich auch mal an DSPs probieren, kann 
aber den Aufwand nur schlecht einschätzen. Daher mein Post hier...


Anforderungen sind:


-kontinuierliches Sampling:

->Input  1x ADC (mind. 16Bit, 1MS/s - besser 2MS/s) - Empfängersignal < 
+-3V bis 200kHz moduliert
->Synchrone Trigger Erkennung (Zuordnung zum Input) - Abstand ~1ms oder 
weniger
->Output 1x DAC Modulationsrampe, einstellbar bis 200kHz, Referenz-Sinus 
& -Cosinus sollen im Speicher abgelegt sein und für den Lock-In mit dem 
Input multipliziert werden

Die Datenverarbeitung sollte mit einem einstellbarem Zeitfenster von 
40us bis 500ms gesampelter Daten möglich sein.

-Peripherie:
->SPI-Bus mit ~5 ICs
->UART Schnittstelle
->USB, Übertragung der Demodulierten Messdaten an den Computer


Ich denke ein FPGA ist für diese Aufgabe überqualifiziert. Die meisten 
Mikrocontroller die ich gefunden habe waren leider zu langsam, bzw. ich 
fürchte nicht genug Speicher für die Datenverarbeitung und weiteren 
Steuerungsaufgaben zu haben. Mein Hauptaugenmerk liegt momentan auf 
DSPs, ohne Erfahrung ist man jedoch schnell verloren.

Daher würde ich mich über einige Einschätzungen zur Umsetzung mit DSP, 
Mikrocontroller oder FPGA freuen, bezüglich Aufwand sowie 
Sinnhaftigkeit. Außerdem nehme ich auch gerne Empfehlungen für passende 
Bausteine/ Herstellerserien falls jemand was im Kopf hat!

Vielen Dank & viele Grüße
Lauri

von Bernd (Gast)


Lesenswert?

Welche Ressourcen (finanziell & zeitlich bzw. personell) stehen zur 
Verfügung?
FPGA-Entwicklungstools sind für die kleineren Devices oft kostenlos.
Gibt es das auch für DSPs?
Welche DSPs hattest Du ins Auge gefasst?

von Alexxx (Gast)


Lesenswert?

>> ->*SPI-Bus mit ~5 ICs*
->UART Schnittstelle
???...
Da nimmt man einen Controller der das d'rin hat - und noch viel mehr!
Du wirst DMAs wollen und mit einem Eventsystem kannst du viel in 
Hardware lösen.

von Patrick C. (pcrom)


Lesenswert?

Lauri S. schrieb:
> ohne Erfahrung ist man jedoch schnell verloren.

Ja, das ist sehr erkennbar. Mach eine erste auswahl von 2 oder 3 
systemen die im budget passen, nimmt dich zB 2 Wochen pro system um da 
ein kleines Projekt mit zu bauen und erste erfahrung mit zu bauen. Dann 
evaluierung : ist der beste zu benutzen oder musz man mehr untersuchen ?

Ich bin nicht sicher ob deine specs in dieser processor passen, aber ich 
benutze seit einige jahren der PSOC5lp von Cypress mit viel erfolg. Mit 
der $10 development kit CY8CKIT-059 (und alle gratis tools) kan man 
einfach die erste erfahrung machen.

Patrick

von Gerd E. (robberknight)


Lesenswert?

Lauri S. schrieb:
> ->Input  1x ADC (mind. 16Bit, 1MS/s - besser 2MS/s) - Empfängersignal <
> +-3V bis 200kHz moduliert

Du willst dafür einen separaten, dedizierten ADC verwenden, nicht 
irgendwas, was in einem Controller integriert ist. Ergibt deutlich 
bessere Resultate.

> ->USB, Übertragung der Demodulierten Messdaten an den Computer

Warum muss die Demodulation und Berechnung auf Deinem Gerät stattfinden 
und kann nicht im PC gemacht werden?

Wenn Du die Berechnung auf dem PC machen kannst, reicht es quasi die 
Daten vom ADC einzusammeln und ohne Aussetzer an den PC weiterzuleiten. 
Zusätzlich noch das bischen DAC-Ansteuerung, Trigger und UART-Gedöns. 
Das braucht aber alles nicht viel Rechenkapazität und Arbeitsspeicher 
und kann daher gut mit einem gängigen Mikrocontroller gemacht werden.

Damit sparst Du Dir den ganzen Aufwand mit DSP oder dickem FPGA.

von Lauri S. (lauri)


Lesenswert?

Hallo zusammen,

danke schonmal für die Rückmeldungen. Ich werde nach und nach mal einige 
beantworten.


Bernd schrieb:
> Welche Ressourcen (finanziell & zeitlich bzw. personell) stehen zur
> Verfügung?

Im wesentlichen arbeite ich alleine, habe aber 25-30 Stunden pro Woche 
zur Verfügung. Finanzen sollten nicht das Problem sein (bisher wurde 
viel Geld in Messgeräte investiert die nur einen einzigen Part der 
Funktionalität übernehmen...), so etwas wie eine kostenlose 
Entwicklungsumgebung ist natürlich trotzdem gut.



Alexxx schrieb:
> ???...
> Da nimmt man einen Controller der das d'rin hat - und noch viel mehr!
> Du wirst DMAs wollen und mit einem Eventsystem kannst du viel in
> Hardware lösen.

War vielleicht von mir nicht ganz verständlich: Ich habe noch einige LD- 
& TEC- Treiber ICs die zum Messaufbau gehören und über SPI bzw. 1x UART 
angesteuert werden müssen. Ist ja aber standardmäßig in allen 
Controllern vorhanden.



Gerd E. schrieb:
> Warum muss die Demodulation und Berechnung auf Deinem Gerät stattfinden
> und kann nicht im PC gemacht werden?
>
> Wenn Du die Berechnung auf dem PC machen kannst, reicht es quasi die
> Daten vom ADC einzusammeln und ohne Aussetzer an den PC weiterzuleiten.
> Zusätzlich noch das bischen DAC-Ansteuerung, Trigger und UART-Gedöns.
> Das braucht aber alles nicht viel Rechenkapazität und Arbeitsspeicher
> und kann daher gut mit einem gängigen Mikrocontroller gemacht werden.
>
> Damit sparst Du Dir den ganzen Aufwand mit DSP oder dickem FPGA.

Das stimmt. Das bisherige Messsystem tut auch genau dies: PC mit 
angeschlossener Messkarte von National Instruments und weiterer 
Peripherie.
Auf der National Instruments Karte wird das Modulationssignal gesampelt, 
das Messsignal aufgenommen (16Bit ADC, 1MS/s) und zusammen mit der 
Trigger Erkennung an den PC übertragen. Damit ist die Verbindung 
zwischen PC und Messkarte allerdings schon am Limit, hat man noch mehr 
USB Peripherie (was am Messplatz schnell passiert) werden die Daten 
nicht schnell genug übertragen. Prinzipiell wäre es aber sogar 
wünschenswert noch schnellere Trigger-Signale und ein schnelleres 
Messsignal-Sampling umzusetzen.

Wäre schön, wenn man sich schon den Aufwand mit dem Board macht auch 
gleich die "elegante" Version mit Demodulation auf dem Board umzusetzen. 
Falls dies im Aufwand oder preislich dann aber doch den Rahmen sprengt 
würde ich auf so eine Lösung wie von dir beschrieben zurückkommen.



Gerd E. schrieb:
> Du willst dafür einen separaten, dedizierten ADC verwenden, nicht
> irgendwas, was in einem Controller integriert ist. Ergibt deutlich
> bessere Resultate.

Ich habe mir einige separate ADCs von Analog devices angeschaut, diese 
erfüllen auch ohne Probleme meine Anforderungen. Dabei müsste man aber 
vermutlich mit direct memory access arbeiten? Bzw. über einen 
Microcontroller würde ich die Messdaten wohl kaum schnell genug zum PC 
bekommen?! Gleichzeitig mache ich mir etwas sorgen mit der Synchronität 
zwischen Modulationsausgabe (DAC), und Messsignal (ADC) kombiniert mit 
dem Trigger Input...


Patrick C. schrieb:
> Ich bin nicht sicher ob deine specs in dieser processor passen, aber ich
> benutze seit einige jahren der PSOC5lp von Cypress mit viel erfolg. Mit
> der $10 development kit CY8CKIT-059 (und alle gratis tools) kan man
> einfach die erste erfahrung machen.

danke, schaue ich mir mal an.


Bernd schrieb:
> Welche DSPs hattest Du ins Auge gefasst?

Weil für mich besser zugänglich bin ich bisher noch überwiegend an 
Mikrocontrollern hängen geblieben... Interessant finde ich:

-TMS320F2807x Piccolo von Texas Instruments
->ADC mit 3.1MSPS, aber leider nur 12 Bit...

-C8051F06x von Silicon Labs:
->16Bit ADC aber leider nur 1 MSPS


Die meisten DSPs die ich mir angeschaut hatte und welche auch meine 
Anforderungen erfüllen sind schon sehr komplex, weshalb ich doch etwas 
abgeschreckt war. Aktuell bin ich dabei mich mehr zum Thema DSP zu 
belesen um die Auswahl besser einschätzen zu können. Wenn jemand einen 
Tipp für einen vergleichsweise "schlanken" DSP hat der 
einsteigerfreundlich ist schaue ich mir den gerne an... :)


Soweit erstmal von mir, ich suche am Wochenende mal DSPs raus die ich 
mir vorstellen kann. Wäre schön dann ein paar Einschätzungen zu 
bekommen.



Vielen Dank!

Lauri

von Gerd E. (robberknight)


Lesenswert?

Lauri S. schrieb:
> Das stimmt. Das bisherige Messsystem tut auch genau dies: PC mit
> angeschlossener Messkarte von National Instruments und weiterer
> Peripherie.
> Auf der National Instruments Karte wird das Modulationssignal gesampelt,
> das Messsignal aufgenommen (16Bit ADC, 1MS/s) und zusammen mit der
> Trigger Erkennung an den PC übertragen. Damit ist die Verbindung
> zwischen PC und Messkarte allerdings schon am Limit,

nun, USB ist nicht gleich USB. Und man kann das auch in 
unterschiedlicher Qualität implementieren, z.B. mit größeren Puffern so 
daß nicht gleich was verloren geht wenn der Rechner kurz was anderes 
macht.

16 Bit mit 1 MS/s sind 2 MByte/s. Eine gescheite USB-Implementation 
lacht da nur drüber. Ich übertrage z.B. von einem kleinen ice40-FPGA mit 
einem Cypress FX2 per USB HighSpeed reale 42 MByte/s an Nutzdaten zum 
PC. Da braucht es also kein USB 3 SuperSpeed für und man hat dennoch 
noch massenweise Luft nach oben. Keine Ahnung was NI da treibt.

> Prinzipiell wäre es aber sogar
> wünschenswert noch schnellere Trigger-Signale und ein schnelleres
> Messsignal-Sampling umzusetzen.

gar kein Problem wenn der ADC das hergibt, siehe oben.

> Ich habe mir einige separate ADCs von Analog devices angeschaut, diese
> erfüllen auch ohne Probleme meine Anforderungen. Dabei müsste man aber
> vermutlich mit direct memory access arbeiten?

Du musst natürlich die Daten vom ADC schnell genug in Deiner nächsten 
Stufe (µC, FPGA,...) annehmen. Ein ADC enthält normalerweise keinen 
Puffer.

Daher sollte Deine nächste Stufe die Daten in Hardware entgegennehmen 
und in einen Puffer übertragen. Bei einem µC würde man das mit DMA 
machen. Also kläre über was für ein Protokoll der ADC die Daten ausgibt, 
z.B. SPI, und stelle sicher, daß das in Deinem µC in Hardware vorhanden 
ist. SPI wäre z.B. ziemlich verbreitet.

> Bzw. über einen
> Microcontroller würde ich die Messdaten wohl kaum schnell genug zum PC
> bekommen?!

Mit einem Atmega natürlich nicht. Aber es gibt heutzutage auch 
wesentlich schnellere Mikrocontroller.

Such Dir irgendwas mit Highspeed-USB. Z.B. STM32F7 oder STM32H7, 
brauchen beide aber einen externen ULPI-PHY. Oder NXP LPC432x, der hat 
den PHY schon integriert.

Oder falls Du einen ADC mit exotischerem Protokoll verwenden möchtest, 
wäre auch ein kleinerer FPGA eine Idee. Der nimmt die Daten nur 
entgegen, puffert sie kurz in seinem BRAM und leitet sie per USB weiter. 
Das ist viel einfacher, günstiger, schneller und flexibler zu machen als 
gleich die ganze Lockin-Berechnung im FPGA. Zum Weiterleiten an den PC 
entweder der von mir oben genannte Cypress FX2 oder ein FTDI FT2232H.

> Gleichzeitig mache ich mir etwas sorgen mit der Synchronität
> zwischen Modulationsausgabe (DAC), und Messsignal (ADC) kombiniert mit
> dem Trigger Input...

Die genannten Mikrocontroller haben alle massenweise schnelle Timer 
integriert. Sollten DAC und ADC nicht sowieso mit der selben (oder 
phasengekoppelten) Clock laufen, kannst Du die Verschiebung damit 
ziemlich genau vermessen. Bei einem Software-Lockin mit einstellbarer 
Phasenverschiebung kannst Du damit alles nötige berechnen.

: Bearbeitet durch User
von ... (Gast)


Lesenswert?

> -TMS320F2807x Piccolo von Texas Instruments
> ->ADC mit 3.1MSPS, aber leider nur 12 Bit...

-TMS320F2809
->ADC mit 12.5 MSPS 12 Bit

Die Piccolos sind wie der Name schon sagt: Die Kleinen.
TMS320F28 mit Gleitkomma gibt es uebrigens auch.

Ob 16 bit bei 1 MSPS und mehr wirklich die Aufloesung bringen?

von Bernd (Gast)


Lesenswert?

Wenn nicht unbedingt das Basteln im Vordergrund steht, kann man das ja 
auch fertig kaufen:

https://thinksrs.com/products/lockin.html
https://www.zhinst.com/products/lock-in-amplifiers

von Lauri S. (lauri)


Lesenswert?

Hallo zusammen,

danke für die weiteren Rückmeldungen. Einen DSP habe ich mir noch nicht 
rausgesucht, allerdings ein paar andere Fortschritte gemacht.


Bernd schrieb:
> Wenn nicht unbedingt das Basteln im Vordergrund steht, kann man das ja
> auch fertig kaufen:
>
> https://thinksrs.com/products/lockin.html
> https://www.zhinst.com/products/lock-in-amplifiers

Natürlich, derzeit wird allerdings ein PCB Entwickelt mit welchem in 
jedem Fall die Modulation der Signalstrecke durchgeführt wird/ werden 
muss. Daher jetzt die Überlegung ein kompaktes PCB mit kurzen 
Signalwegen zu erstellen und gleichzeitig die Anzahl benötigter 
Messgeräte drastisch zu reduzieren.



... schrieb:
> -TMS320F2809
> ->ADC mit 12.5 MSPS 12 Bit
>
> Die Piccolos sind wie der Name schon sagt: Die Kleinen.
> TMS320F28 mit Gleitkomma gibt es uebrigens auch.
>
> Ob 16 bit bei 1 MSPS und mehr wirklich die Aufloesung bringen?

Die derzeitige NI-Messkarte benutzt einen 16-Bit ADC mit max 1MSPS. Es 
werden Photoströme im Bereich <10uA gemessen, derzeit ist ein 
Tranzimpedanzverstärker in Verbindung mit der Messkarte ein Flaschenhals 
welcher zu einem Rauschlevel ~120pA führt. Durch reichlich 
Integrationszeit und Filterung lässt sich das noch auf ca. 80pA drücken. 
Tests mit einer 16-Bit ADC 2MSPS NI-Messkarte haben ein besseres 
Rauschlevel ergeben. Daher würde ich zumindest ungern unter diese 
Auflösung & Messrate gehen.

Zur Signalerzeugung- & Signalaufnahme:
Der AD4001 von Analog Devices bietet 16-Bit mit 2MSPS und SPI Anbindung. 
Der AD9102 ist ein HighSpeed TxDAC, mit 14-Bit und im Speicher 
hinterlegbarer Waveform. Auf hackaday.io habe ich ein AWG-Projekt 
"ArduGen" (https://hackaday.io/project/19134/logs) mittels AD9102 
gefunden, dies entspricht von der Signalerzeugung her relativ gut meinen 
Zielen.

Ich werde mich zunächst intensiver mit der Realisierung mittels dieser 
beiden Bauteile beschäftigen, falls jemand Bedenken hat gerne her damit 
:)
Ansonsten hätte ich im Anschluss die Möglichkeit mir immernoch zu 
überlegen einen DSP und on-board Lock-In Demodulation anzugehen, oder 
eine uC/FPGA Zwischenstation welche mir nur die Daten über USB 
rausschiebt.

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.