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
Paul schrieb:> Oder macht es Sinn bei diesen Anforderungen auf externe> Bauteile auszuweichen.
Wenn Du nicht nur höhere Auflösung, sondern auch höhere Genauigkeit
willst, sind externe AD/DA-Wandler auf jeden Fall sinnvoll. Vor
allen, wenn diese zusätzlich auch noch schnell sein sollen.
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.
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...
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....?
SiLabs hat einige 8051-Derivate mit recht schnellen und genauen ADCs.
z.B.: https://www.silabs.com/mcu/8-bit/c8051f06x
Ich habe noch keinen vergleichbaren Hersteller ausgemacht.
Gruss
Mark
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.
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.
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 ;-)
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?
Paul schrieb:> Was kann ich dann machen?
Der c-hater wird dir eine asm Routine schreiben, die aus den 12-Bittern
die gewünschten 16-Bitter machen. So gut ist er, so gut kann er asm. ;-)
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.
Hans-Georg L. schrieb:> Bei 750Khz kannst du noch 4fach oversamplen das wären dann 15Bit.
Das reduziert nur das Rauschen und liefert ein Bit mehr Auflösung, wenn
das Wandlerergebnis ausreichend rauscht, erhöht aber nicht die
Genauigkeit.
jeder uC mit 16 digital IOs hat einen 16bit DAC wenn man daran ein R2R
Netzwerk anschliesst, der Rest ist Software.
Also kann man die Suche auf einen 16bit ADC einschränken.
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.
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.
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
Wolfgang schrieb:> Hans-Georg L. schrieb:>> Bei 750Khz kannst du noch 4fach oversamplen das wären dann 15Bit.> Das reduziert nur das Rauschen und liefert ein Bit mehr Auflösung, wenn> das Wandlerergebnis ausreichend rauscht, erhöht aber nicht die> Genauigkeit.
Du hast gelesen das dies ein 16 Bit Wandler und weisst was ENOB ist ?
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....
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?
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.
>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.
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.
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...
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 :-(
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 ...
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?
Paul M. schrieb:>> Wie sieht denn deine aktuelle Schaltung aus?> Wie im Anhang hier:
Hast du da wirklich 100kΩ Widerstände verwendet? Mit etwas Pech
empfängst du so noch Radio Eriwan, nicht nur elektromagnetisches
Rauschen.
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!?
>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.
Christoph M. schrieb:> Ich habe über 20 Werte gemittelt, aber verwende auch keinen DAC, der> Rauschen erzeugen könnte.
Ich habe sogar 25 Werte gemittelt...
Benutzt Du dann PWM statt DAC?
c-hater schrieb:> Paul schrieb:>>> Kennt jemand einen Mikrocontroller mit 14 oder 16Bit ADCs und DACs>> integriert?>> Nein, gibt es nichtName: 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.
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).
>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.
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?
Paul schrieb:> 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....?
Es gibt den AD5522 und ein Evalboard dazu.
Hat aber auch seinen Preis.
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... ;-)
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.
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!
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!
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!
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.
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 ).
Hallo,
nun endlich ein Foto vom Aufbau.
Außerdem habe ich die Dioden an den OpAmp-Ausgängen abgezwickt. Leider
hat auch das keinerlei Verbesserung gebracht. Mir gehen die Ideen aus...
was könnte ich denn noch versuchen?
Stefan ⛄ F. schrieb:> Eigentlich wollte ich den Verlauf sämtlicher GND Leitungen sehen.
Na dann lade ich doch einfach das Layout hoch. Das GND-Net ist
gehighlightet.
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!
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'.
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?
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.
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.
>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.
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.
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.
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?
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.
Hallo zusammen,
vielen Dank für die vielen Tipps, vor allem an Gustl für das Anfertigen
der FFT.
Ich habe mich nun so entschieden, eine Platine mit externen DACs und
ADCs zu machen. Ich melde mich dann wieder, mit dem was dabei
rausgekommen ist.
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.
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.
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.
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...
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....
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!
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.
c-hater schrieb:> Paul M. schrieb:>>> Die ADCs rauschen damit noch ungefähr um 5 ADC-Rohwerte.>> Das wäre ein wirklich sehr, sehr gutes Ergebnis.
stimme absolut zu, das ist wirklich gut!
Paul M. schrieb:> Außerdem habe ich etwas mehr Erfahrung als meine Posts hier vermuten> lassen,
da wage ich nicht zu widersprechen, trotzdem danke für die Rückmeldung!
Joachim B. schrieb:> trotzdem danke für die Rückmeldung!
Nur durch Feedback lernt man und sammelt Erfahrung. Ihr habt mir einige
Tipps gegeben, da melde ich mich natürlich zurück.