Hi@all, ich möchte einen 16Bit Wert seriell von einem ADC -AD7790- einlesen ( hängt ein DMS mit OPAMP dran), den eingelesen Wert möchte ich erst mal zweipunk kalibrieren und ggf noch 3 oder 5 punkt linearisieren. Das ganze mit ATMega. Hat jemand C Beispielcode oder Infos für mich? THX
Was verstehst du unter 2-Punkt kalibrierung? Ich denke mal du meinst damit, dass du für 2 gemessene ADC Werte die korrekten Werte kennst. Du kannst ja mal annehmen, dass es da einen linearen Zusammenhang gibt: Wert = ADC_Wert * k + d gibt. Weiters kennst du für einen best, ADC_Wert1 den zugehörigen Wert1 bzw. für einen ADC_Wert2 den zugehörigen Wert2 Also mal einsetzen: Wert1 = ADC_Wert1 * k + d Wert2 = ADC_Wert2 * k + d Du hast also 2 Gleichungen mit den Unbekannten k und d. Das sollte sich doch lösen lassen. Sobald du k und d kennst ist der Rest trivial: Den nimmst den Wert vom ADC, stopfst ihn in die Gleichung ADC_Werft * k + d und kriegst den korrigierten Wert heraus. (mit dem gleichen Verfahren könnte man zb. ADC Werte in Temperatur umrechnen. Alles was man braucht sind 2 ADC Werte und die zugehörigen Temperaturen. k und d ausrechnen und schon hast du die Umrechnungs- gleichung). Oder wolltest du ganz was anderes wissen?
Danke @ Karl Heinz Buchegger hat mir schon geholfen, 000F soll z.B. 0Kg werden und FDE8 10KG. Angeblich ist der DMS linear, der OP Amp sollte es auch sein. Wüsste nur noch gerne wie ich das ganze über drei oder fünf Punkte linearisiere, wenn es nötig sein sollte.
Was genau meinst du mit "über drei oder fünf Punkte" linearisieren? Wenn du z.B. fünf Wertepaare (Wert, ADC_Wert) hast, kannst du daran verschiedene Modelle angleichen. Etwa: -Zwischen je zwei Referenzpunkte wird eine Gerade gelegt. -Für den gesamten Wertebereich wird ein Polynom (hier 4. Grades) angesetzt. -Splines: Zwischen je zwei Referenzpunkten kommt ein Polynom (etwa 3. Grades), wobei an den Schnittstellen Stetigkeit, Differenzierbarkeit, etc. vorausgesetzt werden -... Im ersten Fall rechnest du genauso wie es Karl Heinz Buchegger beschrieben hat, nur dass du nicht einen Wert für k und d hast, sondern jeweils 4. Im zweiten Fall geht es ähnlich. Aus dem Ansatz wert = a*x^4+b*x^3+c*x^2+d*x+e bekommst du mit den fünf Punkten ein lineares Gleichungssystem mit 5 Unbekannten. (Das könnte unschön zu lösen werden). Auch im dritten Fall ergibt sich ein lineares Gleichungssystem, welches noch mehr Unbekannte haben dürfte.
beispiel angehängt, ich messe die blaue Kurve, möchte sie aber wie die rote haben. Zu erst 0 und 100% justieren. Dann über drei Punkte zwischen null und hundert Prozent, ev. da wo die Abweichungen am größten sind (oder bei 25, 50 und 75%) die Kurve in richtung Optimal bringen. Hatte früher sowas in H&B Analysatoren, das war aber alles analog gemacht, und an die Daten komm ich auch nicht mehr.
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.