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
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?
>> ->*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.
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
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.
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
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
> -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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.