Hallo, Ich arbeite mit dem STM32F303. Mein 12bit ADC welchen ich in JTag proVision programmiert (Python) habe, ist sehr ungenau. z.B. wenn ich eine Spannung von 2.70V habe misst er 2.68V oder wenn ich eine Spannugn von 0.303V habe misst er 0.247V. Ich habe Toleranzen von 20-70mV. Wie kann ich die Genauigkeit per software präziser machen? Mit der Sampling-Time habe ich auch schon gespielt, jedoch ohne erfolg. FYI: Ich arbeite das erste mal mit einem ADC Danke im Voraus:)
:
Bearbeitet durch User
Hi, als erstes solltest du mal was zu deiner Eingangsbeschaltung sagen und zur Beschaffenheit deiner Spannungsquelle. Weiterhin wäre interessant woher du deinen Referenzwert hast, also mit welchem Messgerät ermittelt?
:
Bearbeitet durch User
Jonah schrieb: > ist sehr ungenau. Jonah schrieb: > Ich habe toleranzen von > 20-70mV. Das ist nicht sehr ungenau, sondern innerhalb der erwartbaren Toleranzen. Der wohl einfachste und üblichste Weg, das zu korrigieren, ist ein einfacher Zweipunkt-Abgleich. Also 0.3V anlegen und den gemessenen AD-Wert als Punkt speichern. Dann 2.7V anlegen und den gemessenen AD-Wert als zweiten Punkt speichern. Die rechnerischen AD-Werte stimmen eigentlich nie mit der Realität überein. Dann hast du die exakten Werte für 0.3 und 2.7V und alles dazwischen und darüber hinaus lässt sich meist ausreichend genau inter- bzw. extrapolieren. Das ganze muss allerdings für jeden Controller aufgrund der erwartbaren Bauteilstreuung individuell gemacht werden. Wichtig ist auch eine stabile, gefilterte Referenzspannung für den AD-Wandler
Was auch wichtig ist und was ich vergaß zu fragen: woher bekommt dein ADC seine Referenzspannung und wie grosst ist diese?
Die Referenzwerte habe ich zeitgleich mit einem Multimerter (Fluke 87) gemessen. meine Referenzspannung ist 3.3V welche ich auf meinem PCB aus 26V generiere. Vref = 3.13-3.35V / typ = 3.24V. Irgenwie kann ich als neuer User nur 2 Beiträge alle 30min schreiben, darum dauern meine Antworten etwas länger.
Jonah schrieb: > meine Referenzspannung ist 3.3V welche ich auf meinem PCB aus 26V > generiere. Ist aber direkt mit Vdda verbunden oder? Per Spannungsregler erzeugt? Du verrechnest den ADC-Wert entsprechend in der Software um ihn auf die Referenz zu skalieren? Hast du auch mal die interne Referenz gemessen, und die Messwerte dagegen skaliert? Führst du die Selbst-Kalibrationsprozedur des ADCs durch? Jonah schrieb: > Mit der Sampling-Time habe ich auch schon gespielt, jedoch ohne erfolg. Schau dir im Datasheet die Tabelle "Maximum ADC RAIN" an. Je höher der Innenwiderstand/Impedanz des Signals, desto langsamer musst du samplen, und die entsprechenden Einstellungen kannst du dieser Tabelle ablesen.
:
Bearbeitet durch User
Jonah schrieb: > Vref = 3.13-3.35V / typ = 3.24V. > Die Referenzwerte habe ich zeitgleich mit einem Multimerter (Fluke 87) > gemessen. Und dabei welchen Wert erhalten? > wenn ich eine Spannung von 2.70V habe Wo hast du diese Spannung? Direkt am µC-Pin? > Ich habe Toleranzen von 20-70mV. Sind das staische Abweichungen oder zappelt der Wert? > Wie kann ich die Genauigkeit per software präziser machen? Mach mal einen Schritt zurück: wie sieht denn die Hardware aus (Beschaltung und Layout)? Denn die beste Schaltung kann durch ein lausiges Layout schlecht werden. > Wie kann ich die Genauigkeit per software präziser machen? Welche "Genauigkeit" brauchst du denn? Was ist die Anwendung? Wie gut und stabil sind die Quellen der Analogwerte?
Sebastian R. schrieb: > Das ist nicht sehr ungenau, sondern innerhalb der erwartbaren > Toleranzen. Naja, die ADCs der STM32 sind schon ziemlich gut (anders als z.B. beim ESP32), damit sollte man schon von Haus aus ohne manuelle Kalibrierung bessere Ergebniss erzielen können. Aber man muss ihn eben richtig bedienen und die Werte richtig interpretieren.
Mit gutem Layout, guter Referenz und ausreichen Sampling Time habe ich gute Erfahrungen mit den ADCs von STM32
:
Bearbeitet durch User
Habe alle Rückmeldungen mal gelesen und probiere auf alle einzugehen. Sebastian R. Zweipunkt-Abgleich => Deine Idee werde ich mal anschauen Niklas G Ist aber direkt mit Vdda verbunden oder? Per Spannungsregler erzeugt? => Ja und ja Die Interne referenz ist in der zuerwartenen Toleranz und ändert sich auch nicht fest. => 3.26V DC / 1.8mV AC Meine Berechnung => adcValue = round((ReadMemory(0x50000540) * 3.3)/4096,3) Meine Sampling-Time habe ich nun wieder auf 7.5 clock cycles welche mir empfohlen wurde. Lothar M. Und dabei welchen Wert erhalten? => 0.303V mit dem Mulimeter und 0.247V mit dem ADC Wo hast du diese Spannung? Direkt am µC-Pin? => ja Sind das staische Abweichungen oder zappelt der Wert? => sind eig immer die selben abweichungen und verändern sich nicht gross. bei dem pin mit 0.303V sind es immer so 55mV und bei andern mit 2.7V immer so 20mV. Mach mal einen Schritt zurück: wie sieht denn die Hardware aus (Beschaltung und Layout)? Denn die beste Schaltung kann durch ein lausiges Layout schlecht werden. => Da das Layout von Fachleuten in meiner Firma gemacht wurde und über viele Versionen verbessert wurde sollte dies eig nicht das Problem sein. Bei meiner 2ten Antwort sollte jedoch noch ein screenshot vom design der Speisung des uC angehängt sein. Welche "Genauigkeit" brauchst du denn? Was ist die Anwendung? Wie gut und stabil sind die Quellen der Analogwerte? => Grundsätzlich teste ich mit der Software alle Eingäge des uC und vergleiche sie mit den soll Werten welche ich erwarte. Dafür habe ich eine gewisse toleranz in welcher der wert liegen muss. Jedoch zb bei der abweichung von 55mV kann ich die toleranzen nicht mehr einhalten und der test failt obwohl die echte Spannung stimmen würde. Die Analogwerte sind stabil. Danke für alle Rückmeldungen
:
Bearbeitet durch User
Beitrag #7739031 wurde von einem Moderator gelöscht.
Jonah schrieb: > Meine Sampling-Time habe ich nun wieder auf 7.5 clock cycles welche mir > empfohlen wurde. Empfohlen von wem? Was für eine Impedanz hat deine Quelle, wo kommt die Spannung her? Wenn da z.B. ein Spannungsteiler ist musst du die Sampling Time erhöhen. Jonah schrieb: > Niklas G > Ist aber direkt mit Vdda verbunden oder? Per Spannungsregler erzeugt? > => Ja und ja Wenn deine Versorgungsspannung schwankt sind dann natürlich auch die Messwerte falsch (sind ja relativ zu Vref). Aber das Multimeter misst natürlich absolut. Es kann sehr helfen, die Werte mit der internen Referenz zu verrechnen (diese immer mitmessen und auf den ADC-Wert aufmultiplizieren).
:
Bearbeitet durch User
Niklas G. schrieb > Empfohlen von wem? Sorry habe mich falsch ausgedrückt. habe es von einem Code bsp. von STM. > Was für eine Impedanz hat deine Quelle, wo kommt die > Spannung her? > Wenn da z.B. ein Spannungsteiler ist musst du die Sampling > Time erhöhen. Ja die spannungen kommen alle von einem Spannungteiler. Meist mit 100k und 12k. Jedoch habe ich das mit der Sampling time schon probiert. Aber werde es gleich nochmals versuchen.
:
Bearbeitet durch User
Jonah schrieb: > habe es von einem Code bsp. von STM. Na der kennt ja nicht deine Gegebenheiten... Jonah schrieb: > Ja die spannungen kommen alle von einem Spannungteiler. Meist mit 100k > und 12k Ziemlich groß. Da ist so eine kurze Sampling Zeit vermutlich zu kurz. Tatsächlich ist es laut der Tabelle im Datasheet gar nicht möglich, bei 100k Eingangsimpedanz 12bit Genauigkeit zu erzielen, nur 10bit bei Sampling time 8354ns. Am Besten wohl einen Impedanzwandler dazwischen schalten...
:
Bearbeitet durch User
Habe es nun mit 61.5 clock cycles versucht jedoch immernoch dieselben resultate.
Jonah schrieb: > Habe es nun mit 61.5 clock cycles versucht jedoch immernoch > dieselben resultate. Das bestätigt die Angabe aus dem Datasheet, dass es so nicht geht Du könntest den im STM32 integrierten OPAMP nehmen und als "Follower" (Impedanzwandler) konfigurieren. Geht natürlich nur mit wenigen Kanälen.
:
Bearbeitet durch User
Niklas G. schrieb: > Tatsächlich ist es laut der Tabelle im Datasheet gar nicht möglich, bei > 100k Eingangsimpedanz Er hat aber eher 10...11kOhm ...
Jens G. schrieb: > Er hat aber eher 10...11kOhm ... Hmm? Jonah schrieb: > Ja die spannungen kommen alle von einem Spannungteiler. Meist mit 100k > und 12k. Wenn der "obere" Widerstand 100k hat, muss der Eingangsstrom durch 100k durch um den Sample-Capacitor zu laden. Und das dauert halt.
Niklas G. schrieb: > Du könntest den im STM32 integrierten OPAMP nehmen und als "Follower" > (Impedanzwandler) konfigurieren. Geht natürlich nur mit wenigen Kanälen. Für meine Anwendung benötige ich alle Kanäle.
100k in Reihe zum ADC-Eingang und 12k gegen GND? Ohne weitere Maßnahmen ist das vermutl. viel zu hochohmig für den ADC Eingang. schau dir mal Datenblatt Seite 108 an. wenn du recht langsame Signale erfasst: Setz mal testweise einen 1nF Kondensator an einen ADC Eingang gegen GND. Wenn es dann deutlich besser wird dann weisst du das deine Eingangsbeschaltung anders dimensioniert werden muss.
:
Bearbeitet durch User
Niklas G. schrieb: > Wenn der "obere" Widerstand 100k hat, muss der Eingangsstrom durch 100k > durch um den Sample-Capacitor zu laden. Und das dauert halt. Das ist nicht richtig. Die Impedanz des Spannungsteilers entspricht der Parallelschaltung der beiden Widerstände. Man kann es so betrachten: Da die Spannung am Eingang 10x höher ist, lädt der Sample-Capacitor auch 10x schneller.
Niklas G. schrieb: > Wenn der "obere" Widerstand 100k hat, muss der Eingangsstrom durch 100k > durch um den Sample-Capacitor zu laden. Und das dauert halt. Ein Spannungsteiler mit zwei R wirkt wie die Parallelschaltung dieser zwei R auf den C.
Dies ist die aktuelle Schaltung. Schutzdioden habe ich weggelassen
:
Bearbeitet durch User
Monk schrieb: > Man kann es so betrachten: Da die Spannung am Eingang 10x höher ist, > lädt der Sample-Capacitor auch 10x schneller. Guter Punkt. Jonah schrieb: > Habe es nun mit 61.5 clock cycles versucht Wie hoch ist deine ADC-Clock, damit man die Sample-Time in ns berechnen kann? Ist es ein fast oder slow channel?
Schaltungstechnische Platzierung und Typ der Schutzdioden wäre durchaus interessant und wichtig zu wissen da dir in einigen Fällen Leckströme durchaus beachtliche Fehler (und das zu allem Überfluss dann auch noch extrem temperaturabhängig) einbringen können.
:
Bearbeitet durch User
Niklas G. schrieb: > Wie hoch ist deine ADC-Clock, damit man die Sample-Time in ns berechnen > kann? > Ist es ein fast oder slow channel? Muss es kurz anschauen. Aber hier schonmal ein screenshot von meiner Clock config.
:
Bearbeitet durch User
Ich habe mit den stm32 bislang nur wenig gemacht. Muss man da den ADC nicht Kalibrieren, bevor da überhaupt was sinnvolles gemessen werden kann? https://www.st.com/content/ccc/resource/technical/document/application_note/group0/3f/4c/a4/82/bd/63/4e/92/CD00211314/files/CD00211314.pdf/jcr:content/translations/en.CD00211314.pdf
Axel R. schrieb: > Muss man da den ADC nicht Kalibrieren, bevor da überhaupt was sinnvolles > gemessen werden kann? Ja. Siehe Reference Manual RM0316, "15.3.8 Calibration (ADCAL, ADCALDIF, ADCx_CALFACT)". Sehr lesenswert ist auch Kapitel "15.3.32 Monitoring the internal voltage reference". Der Name ist evt. irreführend, man kann die ADC-Referenz nicht zwischen interner und externer (VREF- oder VDDA-Pin) umschalten. Die interne ist einfach eine 1.23V Spannungsquelle, die man auf Kanal 18 messen kann. Die wird bei der Chip-Produktion kalibriert und das Ergebnis ins Flash geschrieben (VREFINT_CAL und VREFINT_DATA). Mit etwas Rechnerei bekommt man die maximale Genauigkeit. Jedenfalls bei Zimmertemperatur, 100ppm/K ist leider nicht so toll.
Niklas G. schrieb > Wie hoch ist deine ADC-Clock, damit man die Sample-Time in ns berechnen > kann? ADC Clock = 64MHz > Ist es ein fast oder slow channel? Die 0.247V messe ich an PD10. Also slow channel.
Hab letztens noch eine Zusammenfassung von meinem Code geschrieben als übersicht. Also so ist mein Code aufgebaut.
Auch wenn sie das "schönere Ergebnis" gibt und nicht der Grund für die pfundigen Abweichungen hier sind: die Zahl 4095 da drin ist falsch. Es handelt sich um einen Zaunpfahlfehler: - https://de.wikipedia.org/wiki/Zaunpfahlfehler
Ich dachte 4096-1, da es bei 0 startet und nicht bei 1. Bit0 halt. oder sehe ich das falsch?
Jonah schrieb: > ADC Clock = 64MHz Okay. Das heißt bei Jonah schrieb: > Habe es nun mit 61.5 clock cycles versucht hast du eine Sample time von 961ns. Laut Datasheet sind bei slow channels dann maximal 6.8 kOhm Eingangswiderstand erlaubt. Wenn das stimmt Monk schrieb: > Die Impedanz des Spannungsteilers entspricht der > Parallelschaltung der beiden Widerstände. hast du eine Eingangsimpedanz von 10.7 kOhm. Somit ist also deine Samplingzeit zu kurz. Versuche es mit einer Samplingzeit von 181.5 Cycles. Lothar M. schrieb: > die Zahl 4095 da drin ist falsch. Laut Datasheet "Converting a supply-relative ADC measurement to an absolute voltage value" ist 4095 korrekt in der Formel
:
Bearbeitet durch User
Jonah schrieb: > Ich dachte Zum Glück noch selber gedacht und nicht nur irgendwo abgeschrieben... ;-) > oder sehe ich das falsch? So ist es. Der ADC wandelt den Analogwert mit 4096 Schritten, denn auch 0 ist ein gültiges Wandlungsergebnis: 0,1,2, ..., 4095 = 4096 Niklas G. schrieb: > Laut Datasheet "Converting a supply-relative ADC measurement to an > absolute voltage value" ist 4095 korrekt in der Formel Ja, ich habe auch schon andere Fehler in Datenblättern gefunden. Man glaubt nicht, was Praktikanten da so alles reinschreiben. Das war auch vor 12 Jahren im Beitrag "Re: 1023 oder 1024" schon so. Dort im Beitrag "Re: ADC-Spannung korrekt berechnen?" wurde das Thema dann auch wieder aufgegriffen. Ich sags mal so: wenn ich ein Programm bewerten muss und sehe da 1023, 2047 oder 4095 (eben 2^n-1) beim ADC, dann denke ich mir "Obacht, da sind sicher auch noch andere Fehler drin!" Niklas G. schrieb: > Monk schrieb: >> Die Impedanz des Spannungsteilers entspricht der >> Parallelschaltung der beiden Widerstände. > hast du eine Eingangsimpedanz von 10.7 kOhm. Somit ist also deine > Samplingzeit zu kurz. > Versuche es mit einer Samplingzeit von 181.5 Cycles. Mit dem Kondensator ist die Impedanz aber unheimlich niedrig. Das Thema haben wir mal mit dem AVR im Beitrag "Re: Attiny85 ADC Eingangswiderstand - wie hoch" durchgekaspert. Es dürfte so ähnlich auch bei anderen ADC mit Samplingkondensator und Ladungsteiler zutreffen.
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Ja, ich habe auch schon andere Fehler in Datenblättern gefunden. Soweit so normal... Woanders steht dort 1LSB IDEAL = VREF+ / 4096... Lothar M. schrieb: > dann denke ich mir "Obacht, da > sind sicher auch noch andere Fehler drin! Das ist eine Null-Aussage, Fehler sind sowieso überall drin, egal ob da 4095 oder 4096 steht ;-)
Niklas G. schrieb: > Lothar M. schrieb: >> dann denke ich mir "Obacht, da sind sicher auch noch andere Fehler drin! > Fehler sind sowieso überall drin, egal ob da 4095 oder 4096 steht ;-) Durchaus, aber mit unterschiedlicher Wahrscheinlichkeit... ;)
Habs gerade mit 181.5 clock cycles versucht. Leider hab ich immernoch die Abweichung. Resultat mit 181.5 = 0.245V; Resultat mit 7.5 = 0.244V
Jonah schrieb: > Leider hab ich immernoch > die Abweichung. Resultat mit 181.5 = 0.245V; Resultat mit 7.5 = 0.244V Mach mal eine kleine Versuchsreihe mit >=5 verschiedenen Spannungen über den ganzen Bereich und nenne die Rohwerte aus dem ADC-Register und die dazugehörige direkt am ADC-Pin per Multimeter gemessene Spannung. Verwende nicht jeweils den ersten ADC-Wert sondern lasse einige ADC-Konvertierungen durchlaufen nach dem Anlegen der jeweiligen Spannung. Prüfe per Oszilloskop ob die Spannung auch konstant ist und nicht irgendwie mit HF überlagert. Mach mal eine Trendlinie in Excel...
:
Bearbeitet durch User
Da ist keine Tendenz erkennbar, ausser dass der ADC Wert grob zum Multimeter passt (der einzige Ausreißer ist der mittlere Wert). Lassen sich die Messungen reproduzieren?
Lothar M. schrieb: > Da ist keine Tendenz erkennbar, ausser dass der ADC Wert grob zum > Multimeter passt (der einzige Ausreißer ist der mittlere Wert). Lassen > sich die Messungen reproduzieren? 2. Versuch
:
Bearbeitet durch User
Niklas G. schrieb: > Jonah schrieb: > > Das sind ja unterschiedliche Channels. Mach das mal nacheinander am > selben Channel.
Und jetzt nochmal die Multimeter-Spannung als X-Achse und die ADC-Messwerte als Y-Achse...
Beitrag #7739739 wurde vom Autor gelöscht.
Niklas G. schrieb: > Und jetzt nochmal die Multimeter-Spannung als X-Achse und die > ADC-Messwerte als Y-Achse...
Jonah schrieb: > ADC-Messwerte Da ist offenbar ein Offset von 150mV drin. Nur der letzte Messwert passt. Du misst mit dem Multimeter schon direkt am uC? Minusklemme direkt am Pin 20 und Plusklemme am ADC-Pin? Niklas G. schrieb: > Und jetzt nochmal die Multimeter-Spannung als X-Achse und die > ADC-Messwerte als Y-Achse... Besser wäre einfach die Differenz (= Abweichung) der beiden über der Multimeter-Spannung. Im Idealfall wäre das ja ein Strich auf der Nullinie. Und dann sollte pro Messpunkt auch noch die Referenzspannung direkt am Referenzpin gemessen werden. Nicht, dass die irgendwie instabil ist.
:
Bearbeitet durch Moderator
Lothar M. schrieb: >> ADC-Messwerte > Du misst mit dem Multimeter schon direkt am uC? Hab nochmals eine Version angehängt wo ich so nah wie möglich am uC Pin messe.
Jonah schrieb: > Hab nochmals eine Version angehängt wo ich so nah wie möglich am uC Pin > messe. Versuch mal irgendwie an ein Oszilloskop zu kommen und prüfe dabei auch die Stabilität von Vdda. Jonah schrieb: > Da das Layout von Fachleuten in meiner Firma gemacht wurde und über > viele Versionen verbessert wurde sollte dies eig nicht das Problem sein. Professionelle Hardwareentwicklungsfirma und kein Oszilloskop verfügbar?
Niklas G. schrieb: > Versuch mal irgendwie an ein Oszilloskop zu kommen und prüfe dabei auch > die Stabilität von Vdda. Hab mit dem Multimeter AC ca. 1.8mV > Professionelle Hardwareentwicklungsfirma und kein Oszilloskop verfügbar? Da ich kürzlich den Arbeitsplatz gewechselt habe, muss ich mir noch eins organisieren.
:
Bearbeitet durch User
Jonah schrieb: > Hab mit dem Multimeter AC ca. 1.8mV Das hilft leider kaum. Jonah schrieb: > Da ich kürzlich den Arbeitsplatz gewechselt habe, muss ich mir noch eins > organisieren. Wenn der Prophet nicht zum Berg kommt...
Jonah schrieb: > Hab nochmals eine Version angehängt wo ich so nah wie möglich am uC Pin > messe. 1. Sind diese Vref-Messwerte bei den unterschiedlichen Eingangsspannungen reproduzierbar? 2. Warum ändert sich deine Vref bei sich ändernder Eingangsspanung so sehr (immerhin im Bereich von 2%)? Lothar M. schrieb: > Besser wäre einfach die Differenz (= Abweichung) der beiden über der > Multimeter-Spannung. Die ist bei einer Eingangsspannung ungleich 0V immer etwa gleich und ca. 70mV. Im ähnlichen Bereich 60mV ändert sich lustigerweise auch die Vref. Warum schwankt die so sehr? Was passiert da in deinem System? Was passiert, wenn du da mal eine ordentlich stabile Vref anlegst? Ist da ein Bug im Layout?
:
Bearbeitet durch Moderator
Lothar M. schrieb: > 1. Sind diese Vref-Messwerte bei den unterschiedlichen > Eingangsspannungen reproduzierbar? Siehe Anhang. Diese Werte sind korrekt und reproduzierbar.
Jonah schrieb: > Diese Werte sind korrekt und reproduzierbar. Üble Sache. Kein Wunder misst du Mist. Dann musst du jetzt erstmal feststellen, was ist der Grund für diese Abhängigkeit der Referenzspannung von der Eingangsspannung ist. An den bisher bekannten Informationen kann man das nicht erkennen. Ändern sich die 3V3 dxer Versorgung? Fällt Spannung am R167 ab? Verschiebt sich das GND-Potential?
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Ändern sich die 3V3? Fällt Spannung am R167 ab? Siehe Anhang (Vergleich VDDA und Vref). Spannungabfall über R167 ist 1mV.
Jonah schrieb: > Spannungabfall über R167 ist 1mV. Also fällt der Rest woanders ab. Fazit: weitersuchen.
Schau Dir auch noch mal deine Schutzbeschaltung an. Hier mal das Datenblatt einer beliebigen 3.3V Zenerdiode: https://www.onsemi.com/pdf/datasheet/nz9f2v4-d.pdf Seite 3, Tabelle: Die Zenerspannung kann bei einem 3.3V-Typ zwischen 3.14 und 3.47 schwanken und ist natürlich auch temperaturabhängig. Und bei dieser Zenerspannung fließen schon 5 mA. Du hast ja keine Schaltpläne geliefert, aber ich kann mir vorstellen, dass es irgendwas in der Richtung ist. fchk
Frank K. schrieb: > Du hast ja keine Schaltpläne geliefert, aber ich kann mir vorstellen, > dass es irgendwas in der Richtung ist. Sorry ging irgendwie unter. Ich verwende die BAS40DW-04
Frank K. schrieb: > Du hast ja keine Schaltpläne geliefert, aber ich kann mir vorstellen, > dass es irgendwas in der Richtung ist. Ich vermute, daß wir die Salamischeiben vom falschen Ende der Wurst serviert bekommen haben.
Jonah schrieb: > BAS40DW-04 Nimm mal eine BAV199. Pico-Ampere Diode mit sehr kleinem Leckstrom. Verwende ich als Schutzbeschaltung bei einem 24 Bit ADC.
Dirk F. schrieb: > Nimm mal eine BAV199. Pico-Ampere Diode mit sehr kleinem Leckstrom. Meine Aufgabe ist es eine Testinfrastruktur mit Jtag für ein fertiges PCB zu erstellen. D.h. ich kann keine Modifikationen an der Hardware vornehemen. Ich muss es irgendwie mit der Software regeln.
Jonah schrieb: > D.h. ich kann keine Modifikationen an der Hardware vornehemen. Ich muss > es irgendwie mit der Software regeln. Und was wenn das Problem in der Hardware liegt, z.B. instabiles Vref? Klar kann man versuchen so was zu "wegkalibrieren" aber da hat man keine Garantie dass sich das Problem immer gleich verhält, die Abweichung könnte z.B. durch EMI beeinflusst sein...
Niklas G. schrieb: > Und was wenn das Problem in der Hardware liegt, z.B. instabiles Vref? Bekomme in kürze ein Oszilloskop, dann werde ich es prüfen.
Hast du auch mal ein Beispiel Programm in C mit der STM32 HAL versucht? Vielleicht ist irgendwas an der Ansteuerung in Python falsch.
Niklas G. schrieb: > Hast du auch mal ein Beispiel Programm in C mit der STM32 HAL versucht? Nein, hatte noch nie mit STM32 HAL zu tun.
Niklas G. schrieb: > Wenn der Prophet nicht zum Berg kommt... ,kommt der Berg zum Prophet. => 3V3 AC gemessen
:
Bearbeitet durch User
Jonah schrieb: > Oft hat es noch mehr Störungen, wie in diesem Bild Bleibt nur noch die Frage: Ist das das Signal vor oder hinter R42?
Mi N. schrieb: > Bleibt nur noch die Frage: Ist das das Signal vor oder hinter R42? R42? meinst du R167?
Jonah schrieb: > Vref Wenn Vref eine größere Welligkeit hat als deine ADC-Ergebnisse abweichen, ist die Performance vom ADC doch beeindruckend!
Niklas G. schrieb: > Wenn Vref eine größere Welligkeit hat als deine ADC-Ergebnisse > abweichen, ist die Performance vom ADC doch beeindruckend! Aber warum ist es bein jedem Duchgang exakt das gleiche Ergebnis. Es ist immer 0.245-0.247V.
Jonah schrieb: > Meine Aufgabe ist es eine Testinfrastruktur mit Jtag für ein fertiges > PCB zu erstellen. Ja, dann bist du als Tester schon fertig: du hast einen Test aufgebaut und nachgewiesen, dass diese Leiterplatte den Test nicht bestehen wird. > D.h. ich kann keine Modifikationen an der Hardware vornehemen. D.h. das ist ein **PAL** (= **P**roblem **A**nderer **L**eute). Was sagt der Entwickler der Schaltung zu deinen Beobachtungen? Jonah schrieb: > Oft hat es noch mehr Störungen, wie in diesem Bild Das sind Störungen eines Schaltreglers mit ca. 90 kHz. Es erklärt aber nicht die Abweichungen, die du hast. Du jagst Geister. > Oft hat es noch mehr Störungen, wie in diesem Bild Wie wurden die in deiner Schaltung wo gemessen? Du weißt schon, dass du bei solchen Signalen mit einer Massefeder messen musst? Jonah schrieb: > Screenshot_2024-09-26_111459.png Das ist kein **Screenshot**, sondern ein **Foto** von einem Bildschirm. Und das beste komprimierende Format für Fotos schlechthin ist JPEG. Ein Screenshot wäre es, wenn du einen USB-Stick in dein Oszi stecken und auf die passende Taste drücken würdest. Dafür wären GIF und PNG wieder die richtigen Formate. So gut muss man seine "Werkzeuge" schon kennen. Niklas G. schrieb: > Wenn Vref eine größere Welligkeit hat als deine ADC-Ergebnisse Da wellt sich Vref doch nur um 7mV, aber ich tippe sowieso auf "Messfehler, weil mit Masseclip gemessen"...
:
Bearbeitet durch Moderator
Jonah schrieb: > Screenshot_2024-09-26_103741.png > 1,4 MB Jonah schrieb: > Screenshot_2024-09-26_111459.png > 1,1 MB Ein "Screenshot" im Dateinamen macht aus einem Photo noch lange keinen Screenshot im Sinne des Artikels über die Bildformate. Den Hinweis hast du gelesen und inhaltlich verstanden? Jonah schrieb: > Ja die spannungen kommen alle von einem Spannungteiler. Meist mit 100k > und 12k. Bei einer so hochohmigen Quelle darfst du dich über komische Effekte nicht wundern (z.B. Kanalübersprechen). Kondensatoren an den Eingängen hast du aber schon, oder?
:
Bearbeitet durch User
Lothar M. schrieb: > Wie wurden die in deiner Schaltung wo gemessen? Du weißt schon, dass du > bei solchen Signalen mit einer Massefeder messen musst? Über C150. habe mir eine neue Messsonde zukommen lassen und siehe da. Die alte hatte anscheinend irgendwelche Probleme. Lothar M. schrieb: > Das ist kein **Screenshot**, sondern ein **Foto** von einem Bildschirm. Hab das Bild mit dem Handy gemacht, da mein USB Stick nicht erkannt wurde. Habes dan per Mail auf den PC geschickt und dan einen Screenshot davon gemacht. Wurde dan Automatisch so gespeichert. (-_-)
Rainer W. schrieb: > Bei einer so hochohmigen Quelle darfst du dich über komische Effekte > nicht wundern (z.B. Kanalübersprechen). Kondensatoren an den Eingängen > hast du aber schon, oder? Ja, habe in einer früheren Nachricht ein Bild von der Eingangsschaltung geschickt. Mit 2 Kondensatoren.
:
Bearbeitet durch User
Jonah schrieb: > Über C150. habe mir eine neue Messsonde zukommen lassen und siehe da. Also damit war gemeint, dass das Signal jetzt Stöhrungsfreier ist, nicht das mein Problem gelöst wurde. Aber gibt es nun irgendwelche Software Anpassungen die ich machen kann, um die Genauigkeit zu verbessern. Jetzt abgesehen von der Sampling-Time?
Du betreibst den ADC bzw. den ganzen STM32 ja außerhalb der Spezifikation. Heißt also dass die Infos aus dem Datasheet und somit auch das Wissen der Leute hier nicht helfen, weil sich das natürlich alles auf das Verhalten innerhalb der Spezifikation bezieht. Daher hilft nur: Den STM32 selbst characterisieren: Mache eine große Versuchsreihe (viele Millionen Messwerte) von allen möglichen Eingangsspannungen, bei allen möglichen Temperaturen, allen möglichen Variationen der Störungen der Versorgungs&Referenz-Spannung (schwierig zu quantifizieren - je nachdem wie der Rest der Schaltung sich verhält wird es vermutlich viele mögliche Zustände geben), allen möglichen Alterungszuständen des STM32, und natürlich Bauteilstreuung über viele einzelne STM32-Exemplare. Dann kannst du ein mathematisches Modell aufstellen, wie die Abweichung von all diesen Variablen abhängt. Du muss statistisch prüfen, ob dieser Zusammenhang auch konsistent ist, oder ob es große Zufalls-Streuungen gibt. Du musst mit ST klären, ob die mal das Design des STM32 ändern, weil du dann diese Aufstellung natürlich wieder von vorne machen musst. Das werden die dir vermutlich nur verraten wenn du dein paar Millionen im Jahr kaufst. Vielleicht kannst du dann eine Funktion schreiben, die in Abhängigkeit der Temperatur, Betriebsstunden des STM32, Zustand der Gesamtschaltung, und einer Initial-Kalibrierung den richtigen Wert aus dem Messwert herausrechnet. Insbesondere die Abhängigkeit von den Störungen dürfte sehr komplex sein; je nachdem wie viel Strom der Rest der Schaltung aus dem Schaltregler zieht könnte das Störspektrum verändern und somit deine Messwerte beeinflussen. Diesen Strom müsstest du also auch irgendwie messen. Das könnte vom Umfang her in Richtung einer Doktorarbeit gehen. Aber sicherlich billiger als die Schaltung zu korrigieren.
Niklas G. schrieb: > Du betreibst den ADC bzw. den ganzen STM32 ja außerhalb der > Spezifikation. Warum meinst du? Wo bin ich ausserhalb der Specs?
Jonah schrieb: > Wo bin ich ausserhalb der Specs? Weil du ziemliche Störungen auf Vref und Vdda hast. Kein ADC dürfte darauf ausgelegt sein, da noch vernünftig zu funktionieren.
Es wurde schon x mal vorgeschlagen, die interne Spannungsreferenz zu messen, ich sehe aber nirgends ein Ergebnis. Dazu vielleicht auch mal einen ADC-Pin mit GND verbinden und den messen, ob das Ergebnis dann auch einen Offset hat. Wenn der STM32 einen großen Offsetfehler hat (was ich eigentlich nicht glaube), könnte der "verrechnet" werden. Sowas musste ich mal bei einem PIC mit bekanntem (erratum) üblen Offsetfehler machen. Hat der STM32 ADC zufällig auch einen differenziellen Modus, der ausversehen aktiviert wurde?
Martin H. schrieb: > Wenn der STM32 einen großen Offsetfehler hat (was ich eigentlich nicht > glaube) Hat er nicht, der ADC ist normalerweise out-of-the-box schon viel besser. Der ADC ist einer der Punkte, wo ST (noch) die Nase vorn hat vor ESP32 & Co. Martin H. schrieb: > Hat der STM32 ADC zufällig auch einen differenziellen Modus Nicht die normalen SAR-ADCs, das können nur die Sigma-Delta-ADCs.
Niklas G. schrieb: > Martin H. schrieb: ... > Nicht die normalen SAR-ADCs, das können nur die Sigma-Delta-ADCs. Bei den nicht so ganz alten STM32 Typen gibt es viele Typen mit differentiellen Eingang. Allerdings muss die Gleichtaktspannung nahe bei VREF/2 liegen. Ziemlich unpraktisch...
Niklas G. schrieb: > Martin H. schrieb: >> Wenn der STM32 einen großen Offsetfehler hat (was ich eigentlich nicht >> glaube) > > Hat er nicht, der ADC ist normalerweise out-of-the-box schon viel > besser. Die haben aber einen halbautomatischen Offsetabgleich. Den muss man (nur) starten.
Wie bauformb schon zweimal gesagt hat, führe die interne Kalibierungsfunktion aus, so wie es im Datenblatt geraten ist und dann ist der falsche Offset weg und der adc ist fortan genau.
Silvio K. schrieb: > führe die interne > Kalibierungsfunktion aus Den ADC habe ich bereits kalibriert. In einer vorherigen Nachricht habe ich meinen Code-Aufbau als screenshot angehängt.
Jonah schrieb: > Dies ist die aktuelle Schaltung. > Schutzdioden habe ich weggelassen Wo ich das lese... Hast du separate Schutzdioden platziert? Ich hatte einmal das Problem, dass ich dem STM am Analogeingang eine eigene Schutzdiode gegen VDDA spendiert habe, da dieser von einem opamp mit 10V Versorgung gespeist wurde und ich im Fehlerfall ein Abrauchen des Eingangs verhindern wollte. Waren also 1 kOhm in Reihe zum Signal und dann die Diode nach VDDA. Ich habe damals nicht nachgedacht und tatsächlich hat mir der Leckstrom der Diode (bei Schottky noch viel größer als bei normaler Si/Si Diode) den Eingang so verzogen, dass eine sinnvolle Messung nicht mehr möglich war und sich auch über Temperatur stark ändert.
M. N. schrieb: > ... Hier ein Bild der Eingangsschaltung mit den 2 Schottky dioden welche wir benutzen. => BAS40DW-04
:
Bearbeitet durch User
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.