Suche Mikrocontroller mit 16Bit ADCs und DACs

Gast #6245178
Lesenswert?

Hallo,

in einem Projekt (Prozessspannungsquelle) setzte ich zur Zeit den 
STM32F767 ein.
Um Spannung zu regeln, erfasse ich mit den 3 ADCs Ströme und Spannungen 
und gebe über die DACs die Stellgrößen aus.

Das funktioniert soweit auch, allerdings stört mich, dass in oben 
genanntem Mikrocontroller die ADCs und DACs nur 12Bit haben.

Ich benötige 3 ADCs und 2 DACs. Eine Samplerate von 750kSps genügt. Am 
besten 14 oder 16 Bit.
Kennt jemand einen Mikrocontroller mit 14 oder 16Bit ADCs und DACs 
integriert? Oder macht es Sinn bei diesen Anforderungen auf externe 
Bauteile auszuweichen (würde ich eigentlich ungern, denn mit dem 
internen ADC kann man bequem den DMA benutzen).

Viele Dank für eventuelle Tipps!

Gruß,
Paul
Gast #6245197
Lesenswert?

Der H7 hat meine ich 14 Bit ADCs im Msps Bereich. Ansonsten hat der F3 
16 Bit Sigma-Delta aber nur 50ksps. Mehr als 12 Bit DAC wird glaub ich 
schwierig, mir ist da so direkt keiner bekannt. Du kannst natürlich die 
16 bzw. 32 Bit Timer nutzen um ein DAC aufzubauen.

Wenn du es wirklich so genau haben willst dann wirst du wohl nicht um 
externe Komponenten herumkommen. Mal davon abgesehen das es im µC 
ohnehin schwierig ist so eine Präzision zu erreichen. Auch die externen 
Komponenten brauchen eine entsprechende Versorgung etc.
Gast #6245219
Lesenswert?

Paul schrieb:

> Kennt jemand einen Mikrocontroller mit 14 oder 16Bit ADCs und DACs
> integriert?

Nein, gibt es nicht. Es ist nämlich praktisch unmöglich, ADCs mit 
derartiger Auflösung (oder gar Genauigkeit) mit µC-Cores auf einen Chip 
zu bringen.

> Oder macht es Sinn bei diesen Anforderungen auf externe
> Bauteile auszuweichen

Das wirst du zwingend tun müssen. Allerdings wird es darauf 
hinauslaufen, dass du dadurch effektiv wenig bis nix gewinnst. Denn 
diese externen analogen ICs sind gegen die Einfüsse des µC genauso 
empfindlich. Man muss sehr viel Aufwand in der Schaltung und im Layout 
treiben, um ihre Eigenschaften tatsächlich nutzen zu können.

Das ist definitiv nix für Leute, die noch solche Fragen stellen...
Gast #6245454
Lesenswert?

Vielen Dank an alle für die Tipps, dann muss ich wohl externe ADCs und 
DACs verwenden und bei Layout auf gute Leitungsführung achten. Oder gibt 
es das als fertige Platine zu kaufen? So etwas ist doch quasi eine 
Standardanwendung....?
Gast #6245526
Lesenswert?

Paul schrieb:
> Oder gibt es das als fertige Platine zu kaufen? So etwas ist doch quasi
> eine Standardanwendung....?

Du wirst sicherlich für alle Einzelkomponenten Evalboards finden. Auf 
mich wirkt das nicht wie eine Standardanwendung, Voralpen mit den doch 
recht hohen Anforderungen an die Genauigkeit.
#6245671
Lesenswert?

Der Stm32H743 hat 16 bit Wandler mit 14bit ENOB.
Bei 750Khz kannst du noch 4fach oversamplen das wären dann 15Bit.
Das Nucleo Board kostet ca. 25€ probier es einfach aus.

The ADC module itself is a 16-bit successive
approximation converter with additional oversampling
hardware. Due to the noise level, only 14-bit equivalent
performance is achieved. To have more than 16-bit
performance, it is necessary to use oversampling
methodology. Under certain conditions, the oversampled
output can have a 21-bit result. The sampling speed is 5
mega samples per second for 14-bit resolution. Each ADC
module integrates an analog watchdog.
Gast #6245764
Lesenswert?

Hans-Georg L. schrieb:
> Der Stm32H743 hat 16 bit Wandler mit 14bit ENOB.
> Bei 750Khz kannst du noch 4fach oversamplen das wären dann 15Bit.
> Das Nucleo Board kostet ca. 25€ probier es einfach aus.

Danke für den Tipp, ich habe sogar ein solches Board hier, nur nicht 
daran gedacht!! Wird gleich am langen Wochenende ausprobiert ;-)
Gast #6245774
Lesenswert?

c-hater schrieb:
> Das wirst du zwingend tun müssen. Allerdings wird es darauf
> hinauslaufen, dass du dadurch effektiv wenig bis nix gewinnst. Denn
> diese externen analogen ICs sind gegen die Einfüsse des µC genauso
> empfindlich. Man muss sehr viel Aufwand in der Schaltung und im Layout
> treiben, um ihre Eigenschaften tatsächlich nutzen zu können.
>
> Das ist definitiv nix für Leute, die noch solche Fragen stellen...

Was kann ich dann machen? Wie kann ich es lernen?
Gast #6246010
Lesenswert?

c-hater schrieb:
> Paul schrieb:
>
>> Kennt jemand einen Mikrocontroller mit 14 oder 16Bit ADCs und DACs
>> integriert?
>
> Nein, gibt es nicht. Es ist nämlich praktisch unmöglich, ADCs mit
> derartiger Auflösung (oder gar Genauigkeit) mit µC-Cores auf einen Chip
> zu bringen.
>

Natürlich gibts diese Prozessoren nur Du weißt nicht das es sie gibt...

Soll der To (und auch Du zur Horizonterweiterung) bei Analog Devices 
nachschauen und sich aussuchen ob der sowas mit einem 8051-Core, Cortex 
M3 oder Cortex M4 haben will.

https://www.analog.com/en/parametricsearch/10852#/

Wir arbeiten mit M3 und in einem älteren Produkt mit 8051-Teilen und 
alles ist bestens, abgesehen davon das der von uns verwendete M3 eher 
gemächlich unterwegs ist.
#6246040
Lesenswert?

Der STM32F373 hat 3 Stk.16 Bit ADCs
https://www.st.com/en/microcontrollers-microprocessors/stm32f373.html

Aber max. 50 ksps bei einem Kanal bzw 16.6 ksps bei drei Kanälen.

Wenn Du das Datanblatt genau anguckst, siehst Du dass man die letzen 
2..3 Bit bzgl. Genauigkeit "rauchen" kann, bist also bestenfalls wieder 
bei 13..14 Bit.

Es gibt auch endere uC mit 16 Bit ADCs, aber die kämpfen mit den selben 
Problemem.

Wie schon mehrfach empfohlen: Suche dir einen guten externen 16 Bit ADC, 
die sind um Faktoren besser, Du sparst sonst am falschen Ort.
#6246074
Lesenswert?

drm schrieb:
> jeder uC mit 16 digital IOs hat einen 16bit DAC wenn man daran ein R2R
> Netzwerk anschliesst

Wo gibt es denn bezahlbare Netzwerke mit 0,001% Matching?
Und die Analogschalter müssen bei 10k Widerständen <0,1 Ohm 
On-Widerstand bzw. >600M Off-Widerstand haben.

Diskrete R2R macht man bis maximal 7 Bit und da braucht es schon 0,1% 
Widerstände.
#6246221
Lesenswert?

Peter D. schrieb:
> und da braucht es schon 0,1%
> Widerstände.

Und die feste Hoffnung, dass die Ausgangstreiber im Chip natuerlich auch 
alle keine oder genau definierte, gleiche Innenwiderstaende haben und 
deren Ausgangsspannung natuerlich auch keine weiteren relevanten 
Stoerungen ueber die Spannungsversorgung ausgibt...
Naja, die Hoffnung driftet, rauscht und schwingt zuletzt ;-)

Gruss
WK
Gast #6248388
Lesenswert?

Ok, also habe mir nun Gedanken gemacht und anbei ist mein Schaltplan.
Als 16Bit DAC habe ich mir den AD5062 ausgesucht und als ADC würde ich 
den ADS8681 verwenden.

Das ganze soll eine Art "Kennlinienschreiber" werden, um von Dioden und 
(wenn man zwei Kanäle aufbaut) von Transistoren die Kennlinie aufnehmen 
zu können.

Hat jemand Anmerkungen oder Tipps für mich? Könnte das so funktionieren?

Die Masse habe ich in "Power" und Signal-Masse aufgeteilt und an einem 
Sternpunkt zusammengeführt.

Ein Thema ist noch, passende OpAmps zu finden....
Angehängte Dateien:
Gast #6248933
Lesenswert?

Paul M. schrieb:
> Das ganze soll eine Art "Kennlinienschreiber" werden, um von Dioden und
> (wenn man zwei Kanäle aufbaut) von Transistoren die Kennlinie aufnehmen
> zu können.

Kannst du mir mal erklären wieso man dafür 16 bit ADC und DAC benötigt? 
Und dazu noch mit 750 kS?
Gast #6249122
Lesenswert?

Andi schrieb:
> Paul M. schrieb:
>> Das ganze soll eine Art "Kennlinienschreiber" werden, um von Dioden und
>> (wenn man zwei Kanäle aufbaut) von Transistoren die Kennlinie aufnehmen
>> zu können.
>
> Kannst du mir mal erklären wieso man dafür 16 bit ADC und DAC benötigt?
> Und dazu noch mit 750 kS?

Weil die Kennlinie rauscht, siehe Anhang.
Außerdem kann ich mit mehr Bits den Messbereich erhöhen.
750kS/s benötige ich, damit ich schnell (~100us) einregeln kann, damit 
die Selbsterwärmung des DUTs möglichst gering bleibt.
Angehängte Dateien:
#6249307
Lesenswert?

>750kS/s benötige ich, damit ich schnell (~100us) einregeln kann, damit
>die Selbsterwärmung des DUTs möglichst gering bleibt.

Das mit der Selbsterwärmung ist interessant. Wird die Kennlinie dann bei 
verschiedenen Temperaturen aufgenommen? Im späteren Betrieb wird die 
Diode ja dann auch abhängig vom Strom erwärmt.
Gast #6249324
Lesenswert?

drm schrieb:
> Parametersuche CubeMX 188 Treffer, zusammen mit R2R DAC reichlich
> Auswahl bei nur einem Hersteller und uC Serie

Schon gemerkt, dass er auch DAC haben wollte ? Offenkundig nicht, aber 
wozu die Frage lesen.

Und ihm in der Messanwendung sicher nicht AudioA/D-D/A gut genug ist.
Gast #6249499
Lesenswert?

Stefan ⛄ F. schrieb:
> Einen OP-Amp der die "genauigkeit" der 16 Bit nicht zunichte macht,
> dürfte auch nicht leicht zu finden und anzuwenden sein.

Ja, das denke ich mir auch. Mein Hauptproblem ist wahrscheinlich auch 
eher das "Rauschen", siehe das Bild "Diodenkennlinie_1N4007_Samples.png" 
oben, der ADC1 hat die Spannung am Ausgang vom OP U2 (siehe Anhang) 
gemessen. Was könnte ich tun, um das Rauschen zu minimieren? einen 1nF 
Kondensator habe ich auf dem STM-Nucleo-Board am ADC-Eingang schon gegen 
GND geschaltet...
Angehängte Dateien:
Gast #6249521
Lesenswert?

Christoph M. schrieb:
> Das mit der Selbsterwärmung ist interessant. Wird die Kennlinie dann bei
> verschiedenen Temperaturen aufgenommen? Im späteren Betrieb wird die
> Diode ja dann auch abhängig vom Strom erwärmt.

Ja, mit aktiver Heizung kann man bei verschiedenen Temperaturen messen.
Das ganze soll übriges ein Geburtstagsgeschenk für meine Frau werden, 
damit sie ihre Kennlinien von Dioden und Transistoren bei verschiedenen 
Temperaturen automatisiert aufnehmen kann. Aber mit der Messgenauigkeit, 
die ich aktuell erreiche, wird das kein gutes Geschenk :-(
#6249657
Lesenswert?

Hier im Forum gab es ja mal jemand, der den Transistortester entwickelt 
hat. Ich bin immer wieder höchst erstaunt, wie genau der ist und was der 
alles kann ( C,R,L C und L auch mit Serienersatzschaltbild ).

Deshalb könnte ich mir gut vorstellen, dass man das Kennlinienproblem 
auch mit einem Atmega328 lösen könnte.

Hier mein erster Versuch mit einem Arduino Uno und 6 x 
Hühnerfutterbauelementen. Das Ding muss man vielleicht noch etwas 
kalibrieren ...
Angehängte Dateien:
Gast #6249779
Lesenswert?

Paul M. schrieb:
> Oh man, wie schön sieht denn Deine Kennlinie aus! Wie hast Du das so
> schön glatt bekommen? Oder warum habe ich so viel Rauschen drin?

Ich denke das dir mehr Auflösung gar nichts bringt sondern etwas anderes 
nicht stimmt.

Wie sieht denn deine aktuelle Schaltung aus?
Gast #6249904
Lesenswert?

Baendiger schrieb:
> Wie sieht denn deine aktuelle Schaltung aus?

Wie im Anhang hier: 
Beitrag "Re: Suche Mikrocontroller mit 16Bit ADCs und DACs"

Die verwendeten OpAmps sind noch THS4041: 
http://www.ti.com/lit/ds/symlink/ths4042.pdf?ts=1588522887626

Sind diese eventuell das Problem? Da sie pinkompatibel mit dem von Mark 
empfohlenen AD8033 sind, könnte ich das mal ausprobieren, muss die 
AD8033 aber erst bestellen. Ist das ein Versuch wert?
Gast #6250055
Lesenswert?

Stefan ⛄ F. schrieb:
> Hast du da wirklich 100kΩ Widerstände verwendet? Mit etwas Pech
> empfängst du so noch Radio Eriwan, nicht nur elektromagnetisches
> Rauschen.

Ok, habe nun mal deutlich kleinere Werte verwendet, um das 
auszuschließen.
Schalung ist nun so wie im Anhang, das hat aber keine Besserung gebracht 
:-(

Meine Idee war halt, mit der Messschaltung das DUT so wenig wie möglich 
zu belasten. Ein Oszi misst doch auch z.B. mit 1MegOhm!?
Angehängte Dateien:
#6250088
Lesenswert?

>Oh man, wie schön sieht denn Deine Kennlinie aus! Wie hast Du das so
>schön glatt bekommen? Oder warum habe ich so viel Rauschen drin?

Hmm ... die 1N5819 Kennlinie wäre gar nicht so glatt, wenn man reinzoomt 
...
Ich habe über 20 Werte gemittelt, aber verwende auch keinen DAC, der 
Rauschen erzeugen könnte.
Gast #6250146
Lesenswert?

c-hater schrieb:
> Paul schrieb:
>
>> Kennt jemand einen Mikrocontroller mit 14 oder 16Bit ADCs und DACs
>> integriert?
>
> Nein, gibt es nicht

Name: schrieb:
> c-hater schrieb:
>> Nein, gibt es nicht.
>
> Doch. Beispiele:
>
> PIC24FJ128GC006
> STM32F3

Noch so ein Schwachmat der die Überschrift nicht liest.

16 bit DAC und ADC mit 750ksps gibt es nicht, der PIC hat bloss 2x10-bit 
1MSPS DAC und dumme SigmaDelta ADC, der STM ebenso zu wenig.

Es gibt einige Audio-DSP z.B. von AK, aber zu langsam und 16 (oder gar 
24) bit Auflösung macht nicht 16 bit Genauigkeit, als Messknecht also 
unbrauchbar.
Gast #6250161
Lesenswert?

Paul M. schrieb:
> Ok, habe nun mal deutlich kleinere Werte verwendet
> das hat aber keine Besserung gebracht

Schade, das habe ich nicht erwartet.

Paul M. schrieb:
> Ein Oszi misst doch auch z.B. mit 1MegOhm!?

Das stimmt wohl, aber mit abgeschirmten Leitungen. Und dennoch sind 
Messfehler durch eingekoppelte EMV immer wieder ein Anlass für 
Überraschungen (vor allem bei Anfängern).
#6250206
Lesenswert?

>Benutzt Du dann PWM statt DAC?

Nein, das würde wahrscheinlich auch Störungen erzeugen.

Zufälligerweise habe ich vor kurzem ein paar ADS1115 ADCs ( 16Bit ) 
bestellt und für die gibt's einen Arduino Treiber.
Tatsächlich sehen die Kurven damit noch ein wenig besser als mit den 
internen 10Bit des Arduino Uno aus.
Angehängte Dateien:
Gast #6250383
Lesenswert?

Paul M. schrieb:
> Das ganze soll übriges ein Geburtstagsgeschenk für meine Frau werden,
> damit sie ihre Kennlinien von Dioden und Transistoren bei verschiedenen
> Temperaturen automatisiert aufnehmen kann. Aber mit der Messgenauigkeit,
> die ich aktuell erreiche, wird das kein gutes Geschenk :-(

Ach so, das erklärt es natürlich.
Solche Roboterfrauen sind sicher sehr empfindlich und müssen oft 
durchgemessen werden, nicht dass sie noch schwanger werden. Ob da 16bit 
reicht?
#6250792
Lesenswert?

Wo bitte wird denn da der Messstrom geregelt? Das was Du da misst ist 
kein Rauschen sondern einfach das Stromgewackel von deinem Fet.

Die Schutzdioden an den Ausgängen der OPs sind auch kontraproduktiv. 
Z-Dioden haben keine scharfe Kennlinie bei den kleinen Spannungen. Die 
verfälschen Dein Ergebniss zusätzlich.
Gast #6250903
Lesenswert?

Andreas M. schrieb:
> Wo bitte wird denn da der Messstrom geregelt? Das was Du da misst ist
> kein Rauschen sondern einfach das Stromgewackel von deinem Fet.
>
Geregelt wird im Mikrocontroller. Über die ADCs wird ja Strom und 
Spannung erfasst und mit dem DAC gebe ich entsprechende Spannung über 
den OpAmp auf das Gate. Die Regelung funktioniert ziemlich gut, ich 
erreiche den Sollwert. Das Problem ist dann nur, dass die mit dem ADC 
gemessene Spannung und Strom um den Sollwert herum so stark rauschen....

> Die Schutzdioden an den Ausgängen der OPs sind auch kontraproduktiv.
> Z-Dioden haben keine scharfe Kennlinie bei den kleinen Spannungen. Die
> verfälschen Dein Ergebniss zusätzlich.

Das ist natürlich eine Idee! Werde ich mal entfernen! Danke!
Gast #6250904
Lesenswert?

Mark B. schrieb:
> Paul M. schrieb:
>> Das ganze soll übriges ein Geburtstagsgeschenk für meine Frau werden,
>> damit sie ihre Kennlinien von Dioden und Transistoren bei verschiedenen
>> Temperaturen automatisiert aufnehmen kann.
>
> Der 1. April ist aber schon seit ner Weile vorbei... ;-)

Das ist auch kein Scherz, ich habe Glück mit meiner Frau und wir basteln 
beide gerne. Auch das gibt es!
#6251080
Lesenswert?

Paul M. schrieb:
> Mark B. schrieb:
>> Der 1. April ist aber schon seit ner Weile vorbei... ;-)
>
> Das ist auch kein Scherz, ich habe Glück mit meiner Frau und wir basteln
> beide gerne. Auch das gibt es!

Mag sein. Dann betrachte Dich als glücklich :-)

Zur Lösung Deines Problems brauchst Du aber sehr wahrscheinlich keine 
A/D oder D/A-Wandler mit 16 Bit Auflösung... sondern einen vernünftigen 
Messaufbau ohne Störeinflüsse. Sonst misst Du nur die Störungen noch 
genauer und für teuer Geld. ;-)

Wer viel misst, misst viel Mist!
Gast #6251198
Lesenswert?

Mark B. schrieb:
> Zur Lösung Deines Problems brauchst Du aber sehr wahrscheinlich keine
> A/D oder D/A-Wandler mit 16 Bit Auflösung... sondern einen vernünftigen
> Messaufbau ohne Störeinflüsse. Sonst misst Du nur die Störungen noch
> genauer und für teuer Geld. ;-)
>
> Wer viel misst, misst viel Mist!

Ok, stimmt. Mein Aufbau ist aber eigentlich ganz ordentlich. Mache heute 
Abend mal ein Foto, vielleicht könnt ihr dann erkennen, woher die 
Störung kommen könnten. Die Schaltung habe ich auf eine geätzte Platine 
gebaut und mit möglichst kurzen Drähten mit dem STM32F767-Nucleo Board 
verbunden.
#6251482
Lesenswert?

Wie bist Du auf die Anforderungen an die Abtastzeit gekommen?

Meiner Meinung nach bringt es nicht wirklich viel, schnell zu messen, 
weil man nichts über die Diodenfläche ( die dürfte sehr klein sein ) und 
über die punktuelle Erwärmung dort sagen kann.
Im Betrieb hängt dann die Kennlinie immer vom Strom und der daraus 
folgenden schnellen Erwärmung ab.
Die eigentliche Temperatur auf dem Silizium setzt sich dann aus der 
Eigenerwärmung und der Wärmeabfuhr an die Umgebung zusammen.

Mich würde mal interessieren, wie die Hersteller die Diodenkennlinien 
messen ( unter zeitlichen Randbedingungen ).
#6253114
Lesenswert?

Paul schrieb:
> Am
> besten 14 oder 16 Bit.

bist du sicher mit 12-14 Bit umgehen zu kömnnen?
16bit umfasst schon mal runter bis 30µV bei maximal 2V signal.
Solche Forderungen nach 14-16 bit findet man öfter aber kaum jemanden 
der damit umgehen kann!
Dazu sind die meisten Versorgungsspannungen und Leiterbahnführungen oder 
die Verkabelung mit allen Impedanzen zu dilettantisch aufgebaut!
#6253171
Lesenswert?

Hallo nochmals,

zu später Stunde hatte ich die Idee, den noch unbenutzten ADC3-Eingang 
doch einfach mal direkt auf dem STM32-Nucleo-Board mit GND 
kurzzuschließen und währenddessen die Messung durchzuführen.

Anbei das Resultat: die rote Kurve zeigt den ADC2 der den Strom durch 
das DUT gemessen hat. Die blaue Kurve zeigt den ADC3, dessen Eingang 
nach GND kurzgeschlossen war. Wie man sieht, bekomme ich trotzdem Peaks, 
die bis zu ADC-Rohwert = 8 hoch reichen. Woran kann das liegen? Probleme 
mit Vref oder AGND auf dem Nucleo-Board? Hat jemand Tipps für mich, was 
ich noch probieren könnte?
Angehängte Dateien:
#6253205
Lesenswert?

Paul M. schrieb:
> Wie man sieht, bekomme ich trotzdem Peaks,
> die bis zu ADC-Rohwert = 8 hoch reichen.

Das sind doch nur die letzten 3 Bits die wackeln. Nimm mal viele (z. B. 
2^14) Werte am Stück auf und mach davon
- eine FFT
- ein Histogram.
(Oder poste hier eine z. B. CSV Datei mit vielen Werten und ich erstelle 
FFT/Histogram.)

Paul M. schrieb:
> Woran kann das liegen?

Da gibt es sehr viele Möglichkeiten.
Wie hast du den Eingang mit Masse verbunden? Ein langer Draht kann 
Rauschen einfangen.
Wie hast du AGND und DGND beschaltet? Ist das eine ordentliche 
Spannungsreferenz (welche?) mit einem schön großen Kondensator dran?

Paul M. schrieb:
> Probleme mit Vref oder AGND auf dem Nucleo-Board?

Ja genau, das kann beides sein. Tatsächlich eine hohe Genauigkeit zu 
erreichen ist gar nicht so einfach.

Ich vermute das wird mit einem ADC in einem uC sehr schwer werden. 
Verwende da lieber einen externen ADC mit ordentlicher Referenz, 
gefilterter Versorgung und einem möglichst jitterarmen Abtasttakt.

Was ich noch nicht ganz verstehe ist wieso du eine so hohe Genauigkeit 
brauchst/haben willst.
#6253240
Lesenswert?

Gustl B. schrieb:
> Ich vermute das wird mit einem ADC in einem uC sehr schwer werden.

deswegen werden die auch selten sein, ein guter ADC hochauflösend und 
genau verträgt sich schlecht mit µC.

Was ich schrieb:

Joachim B. schrieb:
> bist du sicher mit 12-14 Bit umgehen zu kömnnen?

Ich hatte im industriellen Umfeld schon Schwierigkeiten -60dB zu messen 
(Kosten fast egal) und der TO will ja noch weiter aber günstiger runter.
#6253250
Lesenswert?

>Christoph M. schrieb:
>> Mich würde mal interessieren, wie die Hersteller die Diodenkennlinien
>> messen ( unter zeitlichen Randbedingungen ).

>Gar nicht.

>Die messen 1 oder 2 markante Kennwerte, und der Rest wird durch eine
>schnelle Hand eines begabten Bleistifthalters dazwischengezogen,
>'interpoliert'.

Wer weiß, am Ende könntest Du noch Recht haben.

https://de.wikipedia.org/wiki/Shockley-Gleichung

Wenn ich's richtig sehe, sind da nur zwei variable Parameter in der 
Gleichung: Der Emissionskoeffizient und der Sättigungssperrstrom.
#6254362
Lesenswert?

Gustl B. schrieb:
> Paul M. schrieb:
>> Wie man sieht, bekomme ich trotzdem Peaks,
>> die bis zu ADC-Rohwert = 8 hoch reichen.
>
> Das sind doch nur die letzten 3 Bits die wackeln. Nimm mal viele (z. B.
> 2^14) Werte am Stück auf und mach davon
> - eine FFT
> - ein Histogram.
> (Oder poste hier eine z. B. CSV Datei mit vielen Werten und ich erstelle
> FFT/Histogram.)
>
Vielen Dank für Dein Angebot und die Hilfe. Im Anhang ist die CSV-Datei 
mit 2^14 Werten. Die Samplerate war 1MSps. Der ADC-Eingang war direkt 
(mit so kurzem Draht wie möglich) mit GND kurzgeschlossen.

> Paul M. schrieb:
>> Woran kann das liegen?
>
> Da gibt es sehr viele Möglichkeiten.
> Wie hast du den Eingang mit Masse verbunden? Ein langer Draht kann
> Rauschen einfangen.
> Wie hast du AGND und DGND beschaltet? Ist das eine ordentliche
> Spannungsreferenz (welche?) mit einem schön großen Kondensator dran?
>
Da habe ich ganz auf ST vertraut. Es ist die Standardschaltung auf dem 
Nucleo-Board, siehe Schaltplan von ST anbei.

> Paul M. schrieb:
>> Probleme mit Vref oder AGND auf dem Nucleo-Board?
>
> Ja genau, das kann beides sein. Tatsächlich eine hohe Genauigkeit zu
> erreichen ist gar nicht so einfach.
Ja, das habe ich nun gelernt. Macht es Sinn, ein Design mit externem 
DAC/ADC anzugehen?

>
> Ich vermute das wird mit einem ADC in einem uC sehr schwer werden.
> Verwende da lieber einen externen ADC mit ordentlicher Referenz,
> gefilterter Versorgung und einem möglichst jitterarmen Abtasttakt.
>
Ok, mache mich daran.

> Was ich noch nicht ganz verstehe ist wieso du eine so hohe Genauigkeit
> brauchst/haben willst.
Muss es nicht unbedingt sein, aber ich möchte die Kennlinien ja noch bis 
ca. 50V aufnehmen... und 50V / 2^12 = 12mV, naja, stimmt, auch das wäre 
ja ok. Also genügen wohl doch 12Bit, aber das Rauschen (das ja jetzt 
schon mit dem 12Bit ADC da ist, es wird mit mehr Bit ja nicht weniger), 
stört. Das werde ich daher zuerst angehen und wenn ich dann doch noch 
mehr Auflösung benötige, mache ich mich an ein weiteres Design mit 16Bit 
DAC und ADC extern.
Angehängte Dateien:
Gast #6254468
Lesenswert?

Paul M. schrieb:
> Da habe ich ganz auf ST vertraut. Es ist die Standardschaltung auf dem
> Nucleo-Board, siehe Schaltplan von ST anbei.

Ich denke, dieses Board ist zum Experimentieren gedacht, nicht für 
hochgenaue Messungen.

Schaue Dir dazu mal die AN2834 an, dort sind alle denkbaren Maßnahmen 
zusammen gefasst. Du könntest z.B. mal versuchen, die CPU während der 
Messung anzuhalten.
#6254505
Lesenswert?

Paul M. schrieb:
> Andreas M. schrieb:
>> Wo bitte wird denn da der Messstrom geregelt? Das was Du da misst ist
>> kein Rauschen sondern einfach das Stromgewackel von deinem Fet.
>>
> Geregelt wird im Mikrocontroller. Über die ADCs wird ja Strom und
> Spannung erfasst und mit dem DAC gebe ich entsprechende Spannung über
> den OpAmp auf das Gate. Die Regelung funktioniert ziemlich gut, ich
> erreiche den Sollwert. Das Problem ist dann nur, dass die mit dem ADC
> gemessene Spannung und Strom um den Sollwert herum so stark rauschen....

Wie hast Du das geprüft, dass dein Sollwert stabil ist? Hast du mal mit
einem Oszi und AC Kopplung mit kleinem Messbereich draufgeschaut? Ich
verstehe nicht warum Du überhaupt per Software regelst. Wenn da eh schon
nen OP am FET ist. Der könnte das auch direkt viel genauer regeln.

Ich glaube eh das da was schwingt. Die ganzen Kapazitäten, der FET
ohne wirkliche Gegenkopplung und auf der Drain-Seite
eine nichtlineare Diode die gemessen werden soll.

Hast du mal eine Messung mit einem einfachen Widerstand gemacht?
#6254594
Lesenswert?

Paul M. schrieb:
> Der ADC-Eingang war direkt
> (mit so kurzem Draht wie möglich) mit GND kurzgeschlossen.

Das sieht doch auch ganz gut aus. Ja, es gibt Rauschen, aber das gibt es 
immer. Das Histogramm zeigt deutlich, dass die Häufigkeit der höheren 
Werte ziemlich selten ist.

Paul M. schrieb:
> Macht es Sinn, ein Design mit externem DAC/ADC anzugehen?

Das kommt drauf an zu was du bereit bist und was du erreichen möchtest.

Paul M. schrieb:
> Das werde ich daher zuerst angehen und wenn ich dann doch noch
> mehr Auflösung benötige, mache ich mich an ein weiteres Design mit 16Bit
> DAC und ADC extern.

Naja, da gibt es Grenzen. 16 Bits ADCs haben selten eine ENOB von 16 
Bits. Da kannst du Aufwand treiben wie du willst.

Du verwendest hier 1 MSps als Abtastrate, welche Freuanz hat denn das 
Signal das du angucken möchtest? Mit 1 MSps fängst du dir vielleicht 
deutlich höherfrequentes Rauschen ein als seien müsste. Da könnte dann 
auch ein Tiefpassfilter in Software helfen oder analog vor dem ADC.
Angehängte Dateien:
#6257285
Lesenswert?

Andreas M. schrieb:
> Wie hast Du das geprüft, dass dein Sollwert stabil ist? Hast du mal mit
> einem Oszi und AC Kopplung mit kleinem Messbereich draufgeschaut?

Genau so. Zum einen mit dem Oszi in kleinstem Messbereich (AC-Kopplung) 
aber auch in dem ich die DAC-Samples "mit geloggt" habe und man sieht, 
dass der DAC eine konstante Spannung/konstanter Wert ausgibt.

In meiner ersten Version früher, habe ich analog geregelt. Ging auch 
ganz gut, der Sollwert kam über ein Poti und später über einen DAC.
Da ich nun aber mit ADCs messen möchte, wirst ja im Mikrocontroller 
sowieso der Istwert schon erfasst. Deshalb ist es praktisch, die 
Regelschleife im Mikrocontroller zu schließen.
#6260236
Lesenswert?

Paul M. schrieb:
> Genau so. Zum einen mit dem Oszi in kleinstem Messbereich (AC-Kopplung)
> aber auch in dem ich die DAC-Samples "mit geloggt" habe und man sieht,
> dass der DAC eine konstante Spannung/konstanter Wert ausgibt.

Es geht nicht um den DAC. Es geht um das was an dem Prüfling anliegt. 
Also:
1) Prüfling anschließen

2) Das Program im UC einen festen Stromwert regeln lassen. (Aufgrund 
deines Diagramms gehe ich davon aus, dass Du den Strom regelst)

3) In diesem Zustand mit dem Oszi an den Prüfling und Messen.
Beitrag #6260247 wurde von einem Moderator gelöscht.
#6286774
Lesenswert?

Hallo,

nach langem Basteln geht es nun weiter.
Habe eine Platine mit ADS8681 ADCs und AD5062 DACs gemacht und zwischen 
Mikrocontroller-Board (immer noch das Nucleo-Board) und die 
Leistungselektronikplatine gebaut.

Die ADCs rauschen damit noch ungefähr um 5 ADC-Rohwerte. (von Minumum zu 
Maximum). Die Kennlinie wird damit schon ganz ansehlich, siehe Anhang 
(Achsenskalierung stimmt noch nicht, aber das bekomme sogar ich hin).

Ich nehme also an, dass die ADCs/DACs im Mikrocontroller einfach durch 
zu viele Störungen (vielleicht aus dem Mikrocontroller selbst oder auf 
dem Nucleo-Board) für diese Anwendung ungeeignet sind.

Ein paar Kleinigkeiten sind noch zu tun und alles muss dann noch in ein 
schönes Gehäuse eingebaut werden, damit ich es meiner Frau schenken 
kann.

Vielen Dank nochmals an alle für die Tipps.
Angehängte Dateien:
Gast #6286902
Lesenswert?

Paul M. schrieb:

> Die ADCs rauschen damit noch ungefähr um 5 ADC-Rohwerte.

Das wäre ein wirklich sehr, sehr gutes Ergebnis.

Die Frage ist: eher Zufall oder wirklich das Ergebnis eines bewussten 
und kompetenten Design-Prozesses?...

> damit ich es meiner Frau schenken
> kann.

Was, zum Teufel könnte einer Frau gefallen, was unbedingt mit 14 oder 
gar 16 Bit aufgelöst werden müsste? Hochaufgelöste Diodenkennlinien 
entzücken nach meiner Erfahrung eher keine Frau...

Da machst du mich jetzt echt neugierig...
#6287326
Lesenswert?

c-hater schrieb:
>> Die ADCs rauschen damit noch ungefähr um 5 ADC-Rohwerte.
>
> Das wäre ein wirklich sehr, sehr gutes Ergebnis.
>
> Die Frage ist: eher Zufall oder wirklich das Ergebnis eines bewussten
> und kompetenten Design-Prozesses?...

Habe 3 Wochen Urlaub genommen und mich intensiv damit beschäftigt. 
Außerdem habe ich etwas mehr Erfahrung als meine Posts hier vermuten 
lassen, da habe ich den falschen Eindruck hinterlassen. Es hat aber 
trotzdem zwei Iterationen (also zwei mal Platinen bestellen) 
gebraucht....
Gast #6287361
Lesenswert?

Paul M. schrieb:
> zu später Stunde hatte ich die Idee, den noch unbenutzten ADC3-Eingang
> doch einfach mal direkt auf dem STM32-Nucleo-Board mit GND
> kurzzuschließen und währenddessen die Messung durchzufüh

Dein ADC ist nur so gut wie deine Referenz.
Also, überprüfe doch mal:
- Was genau wird als Referenz verwendet
- Ist die sauber
- Wie sieht AVDD aus

Und ein Wert von 300 bei einem Kurzschluss gegen GND riecht außerdem 
nach einem Offsetproblem. Hast du die Kalibrierung des ADC verwendet?

Ich arbeite viel mit den STM32, aber selbst bei 3V3 aus einem 
Schaltregler als Referenz haben wir vielleicht 6LSB Rauschen drauf bei 
12Bit.
Bei Platinen mit Referenz und VREF-Pins schaffen die ADCs auch die im 
Datenblatt angegebenen Werte.
Da liegt das Problem wohl an den Nucleo-Boards.

--> VREF, AVDD anschauen!
Gast #6287372
Lesenswert?

Blumpf schrieb:
> Da liegt das Problem wohl an den Nucleo-Boards.

Wenn man sich das Nucleo64 Board genauer anschaut sieht man, dass da auf 
den ADC überhaupt keine Rücksicht genommen wurde. Es ist ja auch nur zum 
Lernen vorgesehen, das ist es gar nicht schlecht, die echte unperfekte 
Welt vorzuführen. Wer immer nur perfekt funktionierende Baugruppen zu 
sehen bekommt, kann sich einige Haken und Ösen nur schwer vorstellen, 
mit denen wir alltäglich zu tun haben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren