ich versuche mit dem ATXMEGA384C3-AU eine Spannung am ADC PORT_A zu messen.
Als Referenzspannung ist "AREFA" ausgewählt, an diesem liegt einfach die Spannungsversorgung von 3,3V an. Die Spannungsversorgung AVCC und den die AREF Beschaltung habe ich wie in "Schematic-Checklist_Application-Note" ausgeführt.
Nun ist es aber so das ich einen ansteigenden Messfehler feststellen kann. Der ermittelte Wert weicht von dem erwarteten ab, und ist immer zu hoch. Ab ca. 2,6V ist der Wertebereich am Maximum angekommen. Spannungen zwischen 2,6V und 3,3V kann ich überhaupt nicht messen, das der Wert 4095 beträgt. Ein Screenshot aus dem Excel ist anbei um dies anschaulich zu machen.
Es sind insgesamt 6 Analogeingänge beschaltet, 4x ein Poti und 2x eine Batteriespannungsmessung über einen 2:1 Spannungsteiler (9k76/3k24). Es werden alle nacheinander 15mal gemessen und danach wird ein Mittelwert in der Hauptschleife gebildet.
Ich kann den Fehler nicht finden, und bitte euch um Hilfestellung.
Vielen Dank schon mal vorab.
Die Inititialisierung des ADC ist wie folgt ausgeführt:
1
voidADCA_CH0_INI(void)
2
{
3
ADCA.CTRLB=ADC_RESOLUTION_12BIT_gc;//12 Bit Auflösung, rechts anschlag / convmode 0 unsigned
4
ADCA.REFCTRL=ADC_REFSEL_AREFA_gc;//External reference on PORT A
5
ADCA.PRESCALER=ADC_PRESCALER_DIV256_gc;//eine Messung aller 0,11ms (15x Mittelwert auf 6 Pins = 10ms Total) [ 1000ms / ((32.000.000Mhz/256PRESCALER)/14TakteProMessung) ]
Nun ist es aber so das ich einen ansteigenden Messfehler feststellen
kann. Der ermittelte Wert weicht von dem erwarteten ab, und ist immer zu
hoch.
Deine Referenzspannung besitzt einen anderen Wert, als du angenommen hast. Dein "ansteigender Messfehler" ist ganz wesentlich ein Skalierungsfaktor und beim letzten Wert (3V) wohl eine Übersteuerung.
Deine Messdaten in Form einer Pixelmatrix laden jetzt allerdings nicht dazu ein, nachzurechnen.
Hast du die Referenzspannung und die Eingangsspannungen direkt am µC gemessen oder woher kommen die Werte?
Vielen Dank für deine schnelle Antwort.
Mit dem DMM kann ich 3,29V messen.
Meist du ich sollte diese Spannung mit dem Oszi überprüfen?
Die Kritik mit der Pixelmatrix kann ich nicht ganz verstehen, bei mir am Handy lädt das Bild ganz sauber. Eine Tabelle mit dem Messwerten ist auch dabei. Oder meinst du etwas anderes?
Die Kuve in der Steilheit mathematisch anzupassen konnte realisieren, aber Messwerte über 2,6V kann ich damit auch nicht erfassen.
Die Kritik mit der Pixelmatrix kann ich nicht ganz verstehen, bei mir am
Handy lädt das Bild ganz sauber.
Eben - ein Bild.
Um mit den Daten rechnen zu können, ist ein PNG-Bild ein relativ ungünstiges Format. OCR tue ich mir jetzt nicht an und abtippen mag ich die Werte auch nicht ;-)
Mit dem DMM kann ich 3,29V messen.
Meist du ich sollte diese Spannung mit dem Oszi überprüfen?
Wer von den beiden (DMM oder Oszi) besser misst, kannst du den technischen Daten im Handbuch entnehmen. Das Oszi verrät dir, ob es sich um eine saubere Gleichspannung handelt.
Thomas W. schrieb im Beitrag #8039298:
Eben - ein Bild.
Um mit den Daten rechnen zu können, ist ein PNG-Bild ein relativ
ungünstiges Format. OCR tue ich mir jetzt nicht an und abtippen mag ich
die Werte auch nicht ;-)
Und ich dachte mir das Niemand eine fremde Excelsheet öffnen möchte, und wollte der verbale Prügel aus dem Weg gehen.
Wer von den beiden (DMM oder Oszi) besser misst, kannst du den
technischen Daten im Handbuch entnehmen. Das Oszi verrät dir, ob es sich
um eine saubere Gleichspannung handelt.
Ich dachte jetzt an einen Spannungsabfall während der Wandlung. Aber scheinbar hat es sich erledigt, mit dem Hinnweis Aref MAX = AVCC-0,6V.
Das werde ich als nächstes prüfen.
Nachdem ich mir mal etwas 6MB Großes, welches Microchip allen Ernstes als Datasheet bezeichnet, herunter geladen haben, stimme ich S.L. zu.
Hätte nicht gedacht, dass die Dinger kein ›normales‹ Aref vertragen.
Aber man kann ›Internal AVCC/2‹ selektieren und dann die Eingänge wohl durch einen 1:2 Abschwächer laufen lassen. Obwohl das nur für ›differential input with gain‹ gilt, vielleicht hilft's ja wenn nur wenige Eingänge gebraucht werden.
Bevor ich's vergesse, das was der Norbert oben zur Mittelwertbildung geschrieben hat ist natürlich kolossaler Unsinn. Keine Ahnung welcher Dämon ihn da heimgesucht hat.
Wenn man 2^n Werte sammelt, dann muss man selbstverständlich zur Rundung 2^(n-1) addieren und anschließend um n nach rechts schieben.
Aber man kann ›Internal AVCC/2‹ selektieren und dann die Eingänge wohl
durch einen 1:2 Abschwächer laufen lassen.
Möchtest du ratiometrisch messen oder absolute Spannungswerte?
Für Absolutmessungen ist es eine halb gute Idee, die Versorgungsspannung als Referenz zu verwenden, weil du damit von deren Spannungsregler und der Belastung abhängig bist.
Für Absolutmessungen ist es eine halb gute Idee, die Versorgungsspannung
als Referenz zu verwenden, weil du damit von deren Spannungsregler und
der Belastung abhängig bist.
Ich will das nicht, Thomas will das.
Als Referenzspannung ist "AREFA" ausgewählt, an diesem liegt
einfach die Spannungsversorgung von 3,3V an.
Und genau das (die volle Vcc) geht ja wohl mit dem XMEGA Teil aus unerfindlichen Gründen nicht. Daher der Würgaround mit halber Vcc und halbierter Eingangsempfindlichkeit.
Bräuchte man's genau, dann externe Referenz (TL431 scheint ein netter 2.5V Kandidat zu sein)
Es werden alle nacheinander 15mal gemessen und danach wird ein
Mittelwert in der Hauptschleife gebildet.
Ich würde statt dieses starren "16 Werte einsammeln und dann Dividieren" eine exponentielle Mittelwertbildung nehmen, die ähnlich wie ein RC-Glied dem Eingangswert folgt. Und wenn man die schlau aufsetzt, dann kann die direkt in der ISR laufen, ohne dass sie mehr Rechenzeit als die jetztige "Einsammelfunktion" benötigt:
Weil dein "ADC_Mittelwert" keinen Mittelwert, sondern die Summe von Messwerten enthält, ist der der Variablenname "ADC_Mittelwert" falsch.
Deine ISR sähe bei mir dann so aus:
1
ISR(ADCA_CH0_vect)
2
{
3
ADCA.CH0.INTFLAGS=ADC_CH_CHIF_bm;
4
if(ADCA.CH0.RES>ADCA_CH0_Offset){
5
ADC_Buffer[ADC_CH0_PIN-1]-=ADC_Mittelwert[ADC_CH0_PIN-1];// alten Mittelwert abziehen
6
ADC_Buffer[ADC_CH0_PIN-1]+=ADCA.CH0.RES;// neuen ADC-Wert aufaddieren
7
ADC_Mittelwert[ADC_CH0_PIN-1]=ADC_Buffer[ADC_CH0_PIN-1]>>4;// neuen Mittelwert übernehmen
8
}
9
// Mux weiterschalten
10
if(ADC_CH0_PIN>ADCA_CH_PIN_Anzahl)ADC_CH0_PIN=1;
11
elseADC_CH0_PIN++;
12
// Messung starten
13
ADCA.CH0.MUXCTRL=(ADC_CH0_PIN&0x0F)<<3;
14
}
Beim jedem Zugriff auf ADC_Mittelwert könnte dann in der Hauptschleife ein gültiger Wert gelesen werden, statt wie bisher noch das Ende des Einsammelns abzuwarten und dann durch 16 zu dividieren.
BTW:
ADC_CH0_PIN --> Ein Tipp: nimm GROSSBUCHSTABEN nur für konstante Werte wie z.B. Defines.
BTW2:
diese Zeile
1
if(ADC_CH0_PIN>=(ADCA_CH_PIN_Anzahl+1))...
wäre so leichter les- und verstehbar:
1
if(ADC_CH0_PIN>ADCA_CH_PIN_Anzahl)...
BTW3:
Dieser Kommentar sieht mir recht dubios nach einem hingebastelten Workaround aus:
1
//nur wenn größer Offsetwert um echten O Wert bekommen zu können
Weil dein "ADC_Mittelwert" keinen Mittelwert, sondern die Summe von
Messwerten enthält, ist der der Variablenname "ADC_Mittelwert" falsch.
So aus dem Zusammenhang gerissen hast du recht, die Variable speichert nur die Summe aller Messwerte. Später in der Hauptschleife wird daraus ein Mittelwert, aber auch mit anderer Variable
Ein gleitenden Mittelwert hat auch seine Vorzüge, dass steht außer Frage. Ich habe es mir gespeichert (Danke dafür) und probiere es später aus. Da ich Laie bin ist mir der Trick mit ">>4" nicht in den Sinn gekommen, und Divisionen in der ISR wollte ich vermeiden.
BTW: & BTW2: ...
ACK
BTW3:
Dieser Kommentar sieht mir recht dubios nach einem hingebastelten
Workaround aus://nur wenn größer Offsetwert um echten O Wert bekommen zu
können
Den Hinweis "Vref_max=AVCC-0,6V" bin ich nachgegangen.
Der Aref wurde auf interne VCC/1,6V geändert. Die Referenzspannung beträgt somit 3,29V/1,6V=2,05625V. Der Offset laut Datenblatt (Vref*0,05) beträgt 0,1028125V.
Mittels Poti habe ich die Spannung an einem Eingangspin angelegt, und mit dem DMM gemessen.
Falls ich mich nicht verrechnet habe dann habe ich weiterhin einen Skalierungsfaktor, diesmal aber abfallen mit ansteigender Messspannung. Dieser ist bei weitem nicht mehr so groß.
Anbei ein Screenshot aus einem EXCELsheet. [Wenn jemand unbedingt eine .xlsx] haben möchte, dann reiche ich diese nach.]
Und der Offset ist auch noch vorhanden.
Ich dachte ich kann meine Potis einfach auswerten wenn ich diese als Spannungsteiler über die Betriebsspannung (3,3V) laufen lasse, und den Mittelabgriff direkt an den µC anschließe. Da nun feststeht das ich mit dem ATXMega analoge Spannungen nur bis 2,7V messen kann, frage ich mich wie ich am elegantesten die Potis auswerten kann. Spannungsteiler vor das Poti? Spannungsteiler nach dem Mittelabgriff? Externe Referenzspannungsquelle (2,5V) diese auch die Potis mit versorgen?
Externe
Referenzspannungsquelle (2,5V) diese auch die Potis mit versorgen?
Exakt! Ratiometrische Messung. In anderen Worten, wenn Vref wackelt, wackelt proportional auch die ADC Eingangsspannung. Und die Messung ist stabil und alles iss' gut.
Falls ich mich nicht verrechnet habe dann habe ich weiterhin einen
Skalierungsfaktor, diesmal aber abfallen mit ansteigender Messspannung.
Du hast Offset und Skalierungsfaktor vermischt. Außerdem leidet dein letzter Wert immer noch an irgendeiner Übersteuerung. Der Knick fällt doch sofort ins Auge. Wieso hat aber deine CNT_Soll-Kurve auch so einen Knick?
Dieser ist bei weitem nicht mehr so groß.
Anbei ein Screenshot aus einem EXCELsheet. [Wenn jemand unbedingt eine
.xlsx] haben möchte, dann reiche ich diese nach.]
Warum hängst du nicht direkt die Daten als CSV-Datei an - kein Problem mit irgendwelchen Hinterhalten, kein proprietäres Dateiformat.
Und der Offset ist auch noch vorhanden.
Darum bekommst du einen falschen Skalierungsfaktor.
Mittels Poti habe ich die Spannung an einem Eingangspin angelegt, und
mit dem DMM gemessen.
Wie ist denn die Eingangsschaltung? Welchen Wert hat das Poti und ist am Eingang ein Kondensator?
Denn zum Wandeln muss der Sample&Hold Kondensator des A/D-Wanlers geladen werden. Das kann einen Fehler bewirken, wenn die Signalquelle zu hochohmig ist.
Der Knick am letzten Messwert entsteht da ich im Intervall von 0,25V gemessen habe. Aber bei dem letzten Messwert habe ich (fast) einen Überlauf bei 0,2V mehr als der vorhergehende Messintervall. Wenn ich den Wert auf 2V änder dann ist auch der Knick weg.
Kannst du mir bitte auf die Sprünge helfen wo ich Offset und Skalierungsfaktor vermische. Die Differenz (SOLL/IST) beträgt anfänglich 185 und sinkt dann auf 25 ab. Wäre Quasi ein Offset von ~25. Aber wenn ich 0V am Pin anlege dann werden am ADC 185 ermittelt.
Laut Datenblatt muss ich noch einen "offset" beachten (Vref*0,05) = 0,1028125V
Für diese Messreihe habe ich nur ein Poti an den Pin gelötet, da ist also kein C verbaut.
In keiner der Datenreihen ist eine Skalierung verrechnet. "Spannung IST" und "CNT IST" wurden von DMM bzw. Display am µC abgelesen.
Nur "CNT SOLL" ist der Theoretische Wert den ich in "CNT" laut der Spannung am PIN erwarten würde ((1,94V100/1,95V)/1004095)=4068. Vref habe ich anhand der Formel aus dem Datenblatt errechnet (1,95V=((4095/(4095+1))*2,056125V)-0,1028125V).
getroffen, wenn man von dem 1,94V-Wert absieht. Der liegt um 9 zu
niedrig. Der 0,75V-Wert liegt auch etwas niedrig (-5).
Interessant finde ich die "+182" (bei 0V am Pin misst der ADC 185) und "2020,5" (Vref = 3,29V/1,6V = 2,056V).
Ich habe mal dein Skalierungsfaktor und meine Zahlen in ein Diagramm gestellt.
Den ADC auf interne Referenz konfigurieren wurde schon erwähnt. Ich mache das immer, wenn es genauer sein soll als mit Vcc.
Prüfe den ADC Takt. Wenn die Taktfrequenz des ADC durch den falschen prescaler zu hoch eingestellt ist kann man sich ebenfalls Abweichungen von der Proportionalität einhandeln.
Nachtrag
Was für eine Impedanz sieht der ADC-Pin? Die sollte
im Rahmen drr Angaben im Datenblatt liegen und nicht zu hochohmig sein.
das Poti? Spannungsteiler nach dem Mittelabgriff? Externe
Referenzspannungsquelle (2,5V) diese auch die Potis mit versorgen?
Nimm das:
MCP1703AT-2052E/CB
Der liefert 2.048V am Ausgang (gerundet auf 2.05V). Und wenn Du Dir den Wert 2.048V genau anschaust und dabei Zweierpotenzen im Blick hast, dann kannst Du mit dieser Referenzspannung sehr einfach einen ADC-Count in einen Spannungswert umrechnen. Bei einem 10 Bit ADC mit 1024 Counts reicht eine Multiplikation mit 2, um den Spannungswert in mV zu erhalten.
Bei 5V-Systemen werden auch 4.096V (gerundet auf 4.10V) als Referenzspannung sehr gerne genommen.
Es gibt genauere Referenzspannungsquellen. Die können aber nur sehr wenig Strom liefern - maximal 1 oder 2 mA. Der hier schafft 200mA, also mehr als genug für die meisten Zwecke.
Wenn du in einer ISR eine unsigned Variable durch eine Zweierpotenz teilst, dann wird die vom Compiler durch Schiebeoperationen ersetzt.
Dieser Kommentar sieht mir recht dubios nach einem hingebastelten
Workaround aus://nur wenn größer Offsetwert um echten O Wert bekommen zu
können
Ist es auch.
Wäre es dann nicht sinnvoll, diesen Offset jedesmal vom ADC-Wert abzuziehen? Oder andersrum: wie sehen die Rohwerte aus? Haben alle Kanäle den gleichen Offset?
4x ein Poti und 2x eine Batteriespannungsmessung über einen 2:1
Spannungsteiler (9k76/3k24).
Zumindest der Spannungsteiler für die Batteriespannung ist mit einer Impedanz von 9k76||3k24 = 2k4 niederohmig genug. Und wenn die Potis 10k haben, dann auch die, denn die höchste Impedanz wäre dann bei 5k||5k = 2k5.
Aber am einfachsten wäre es, die Impedanz mit jeweils einem 100nF Kondensator am ADC Pin zu reduzieren.
Man kann sich das Leben auch unnötig schwer machen...
Woher weiß ich, dass der Knick im CNT_Soll-Graphen nicht auch ein Verschreiber ist?
Es mutet schon sehr merkwürdig an, wenn in einer Kurve, die angeblich auf einer linearen Gleichung basiert, ein Knick auftritt. Das Bedarf zumindest einer Erklärung. Mit einer "Gleichung", die keine ist, ist es da nicht getan, zumal CNT_SOLL eine Kurve und kein einzelner Punkt ist.
Wäre es dann nicht sinnvoll, diesen Offset jedesmal vom ADC-Wert
abzuziehen? Oder andersrum: wie sehen die Rohwerte aus? Haben alle
Kanäle den gleichen Offset?
Ja alle Kanäle haben in etwa den gleichen Offset
Zumindest der Spannungsteiler für die Batteriespannung ist mit einer
Impedanz von 9k76||3k24 = 2k4 niederohmig genug. Und wenn die Potis 10k
haben, dann auch die, denn die höchste Impedanz wäre dann bei 5k||5k =
2k5.
Batterie 1 hat eine Impedanz von 4K8 und Batterie 2 den Wert den du errechnet hast (2K4). Potis sind 10K
Woher nimmst du den Wert ob die Impedanz noch O.K.ist? Ist es diese Zeile aus dem Datenblatt?
"Rin Input resistance Switched 4.5 k" (35.6 ADC Characteristics S. 71)
Aber am einfachsten wäre es, die Impedanz mit jeweils einem 100nF
Kondensator am ADC Pin zu reduzieren.
Für die Batteriespannung habe ich "nur" 1nF Kondensatoren an den Eingängen, für die Potis nicht. Das sollte ich ändern.
Der Knick am letzten Messwert entsteht da ich im Intervall von 0,25V
gemessen habe. Aber bei dem letzten Messwert habe ich (fast) einen
Überlauf bei 0,2V mehr als der vorhergehende Messintervall. Wenn ich den
Wert auf 2V änder dann ist auch der Knick weg.
Und damit es auch sichtbar wird habe ich in der Messreihe den letzten Punkt auf der X-Achse auf 2V geändert, somit wir die Kurve "CNT SOLL" (fast) linear. Den Wert "CNT IST" habe ich nicht angepasst da es ab 4095 einen Überlauf gibt.
Zusammengefasst lässt sich behaupten, das ich eine externe Spannungsreferenz (z.B. MCP1703AT-2052E/CB) benötige. Die Impedanz an allen ADC-Eingängen soll mittels Kondensator reduziert werden. Es ist auf die maximale Eingangsimpedanz zu achten, deren Höhe ich noch nicht kenne. Die Auswertung eines gleitenden Mittelwerts kann direkt in der ISR durchgeführt werden, da Bitoperationen wenig Rechenzeit benötigen.
Ist der nach wie vor vorhanden Skalierungsfaktor üblich?
Vielen Dank bei allen Hilfestellern. Es gab auch Nörgler aber "Salamitaktik" wurde mir (noch) nicht unterstellt. Dies macht mich schon ein wenig froh. ;-)
Woher nimmst du den Wert ob die Impedanz noch O.K.ist? Ist es diese
Zeile aus dem Datenblatt?
"Rin Input resistance Switched 4.5 k" (35.6 ADC Characteristics S. 71)
Aus Erfahrung
Aus diesem DB-Wert, der das Thema sehr, sehr vereinfacht darstellt
ist auf die maximale Eingangsimpedanz zu achten, deren Höhe ich noch
nicht kenne.
Diese Werte stehen im Datenblatt Deines Prozessors und dürften im "einige 10kOhm Bereich" liegen. Damit hast Du mit Deiner HW also kein Problem, nichtmal ohne Kondensatoren, wobei es gute Praxis ist, sie zu verwenden.
Die Auswertung eines gleitenden Mittelwerts kann direkt in der ISR
durchgeführt werden, da Bitoperationen wenig Rechenzeit benötigen.
Wenn Du 2^n Messwerte aufaddierst und dann (mittelwert>>n) machst, dann ja, ansonsten lieber flag setzen und im H auptprog rechnen. Wenn du n=4 nimmst, also 16 Messungen aufaddierst, wird uint16_t mittelwert<0xFFFF bleiben. Sofern Du die gemessenen Mittelwerte nur für Vergleiche nutzt, dann brauchst Du nicht dividieren. Dadurch bekommst Du noch mehr Genauigkeit (so als hättest Du eine höhere ADC Auflösung).
Benutze das 10k Poti als Teil des Spannungteilers.
VCC --[6k]--[10k]-- GND
1
\_____ ADC
Wenn Du sehr genau messen willst, ist eine Kalibrierung Deiner ADC-Kanäle sinnvoll bzw Unumgänglich. Genaue Multimeter hast Du ja. Und solltest Du auch nach Überprüfung Deiner ADC Konfiguration den Knick nicht wegbekommen, dann hilft Dir der Trick von Hans aus der Patsche, was Dich aber etwas an Genauigkeit kostet, weil Du den Wertebereich des ADC nicht mehr voll ausschöpfst. Es gibt zum Thema ADC Kalibrierung sehr interessante Application Notes, die Du Dir mal ansehen kannst, wenn Du das vertiefen willst.
Hast Du irgendwo gelesen, dass der Wandler besser würde? Das steht da nicht. Nicht mal zwischen den Zeilen.
@Thomas W: noch eine letzte Idee, konfiguriere Deinen ADC einfach mal mit einer geringeren Auflösung, z.B. 10bit und schaue, ob der Knick immer noch auftritt. Zumindest zur Auswertung der Potentiometer würden 10bit völlig ausreichen;-)
@Thomas W: noch eine letzte Idee, konfiguriere Deinen ADC einfach mal
mit einer geringeren Auflösung, z.B. 10bit und schaue, ob der Knick
immer noch auftritt. Zumindest zur Auswertung der Potentiometer würden
10bit völlig ausreichen;-)
Ich hab es jetzt nicht genau in Kopf aber ich glaube es gibt nur die Wahl zwischen 8bit und 12bit.
Es gibt keinen Knick. Das ist nur ein Darstellungsfehler.
Es gibt keinen Knick. Das ist nur ein Darstellungsfehler.
Verzerrungen beim Screenshot oder Allergie von Excel gegen den letzten Wert einer Kurve ;-(
Das wäre wohl etwas weit hergeholt.
Oder schiebst du das auf die JPG-Kompression deiner Screenshots, für die PNG als verlustfreies Format angesagt wäre.
Was für einen Darstellungsfehler meinst du konkret?
Was für einen Darstellungsfehler meinst du konkret?
Schau dir bitte die Abstände der Skale auf der X-Achse an. Speziell der letzte Abstand ist nur 0,2V statt 0,25V. Im Bild "Knicklos" habe ich es korrigiert, aber nicht den Wert "CNT IST" angepasst Sondern nur "CNT SOLL". Daher bitte in diesem Bild die "Kurve" "CNT IST" Ignorieren. Es gibt keinen Messeert für "CNT IST" da der ADC bereits an 1,95V überläuft.
ich hatte mit dem ADC vom ATXMega auch Probleme. Aber der funktioniert einwandfrei!
Was bei deinem Code auffällt:
Du hast den ADC als Single-ended konfiguriert. Wenn du im Datenblatt genau schaust, macht der ADC dann einen Offset (siehe Bild ADC1). Das ist dafür, dass man auch Wert um 0V herum noch messen kann.
Dazu musst du aber, bevor deine Anwendung läuft, diesen Offset abgleichen.
Dazu kannst du im Eingangmultiplexer die Eingänge intern auf Masse ziehen.
Für den Gain-Error gibt es die Calibrierwerte (siehe Bild ADC2), die du erst in die Calibrierregister vom ADC laden muss, damit die Kennlinie stimmt.
Alles was du in der Mathematik versuchst über Mittelung und so weiter, bringt die nichts, da dein Input schon falsch ist. Das kannst du maximal auf einen Arbeitspunkt hintrimmen. Aber toll ist das nicht.
Was für einen Darstellungsfehler meinst du konkret?
Schau dir bitte die Abstände der Skale auf der X-Achse an. Speziell der
letzte Abstand ist nur 0,2V statt 0,25V.
Dann ist der Plot als ganzes ein Darstellungsfehler. Es macht wenig Sinn und ist irreführend bei so einem Graphen, eine Achse erratisch zu teilen, d.h. irgendwo irgendwelche Werte einzutragen, sorry.
Dann ist der Plot als ganzes ein Darstellungsfehler. Es macht wenig Sinn
und ist irreführend bei so einem Graphen, eine Achse erratisch zu
teilen, d.h. irgendwo irgendwelche Werte einzutragen, sorry.
Deshalb nimmt man für so etwas ja extra X-Y Plots.
Un' da isses nun gar kein Problem, wie man unschwer nur etwas weiter oben sehen kann.