Hallo Forum, ich bin neu mit dem STM32 Discovery F4 zugange. Ich versuche gerade einen Temperatur-Sensor (0-250°C, 4 bis 20mA) über einen Widerstand auszulesen. Der ADC liefert mir ja für 12bit = 4096. 3,256V ist die Spannung welche am ADC hängt (Vref). So ergibt sich: Ue = Xd * Uref / 2^n Ue = ADC Spannung Xd = ADCWert Uref = Vref = 3,256 2^n = 4096 Dann hab ich doch bspw beim ADC wert 512 : 512 * 3,256V ------------- = 0,407V 4096 Wenn ich jetzt die Temperatur haben möchte vom mA Strom Signal des Sensor: 0°C 250°C ADC 0mA 4mA 10mA 20mA ADC1 0,000V 0,653V 1,608V 3,206V ADC2 0,000V 0,618V 1,538V 3,066V dann muss ich doch so normieren: y = (y1-y0) / (x1-x0) * (x-x0) + y0 hierbei ist x: = aktueller Wert in V x0:= 0,653V = untergrenze ADC = 4mA y0:= 0 = untergrenze Einheit = 0,0 °C x1:= 3,206V = obegrenze ADC = 20mA y1:= 250 = obegrenze Einheit = 250,0°C y:= Sklaiertes Ergebnis Beispiel 10mA entspricht 0,653V (müsste 125°C sein theoretisch): (250-0) ----------------------------------------- (3,206V-0,653V) * (1,608V-0,653V) + 0 250 ------------------- 2,553 * 0,955 +0 = 102,538°C es kommen keine 125°C raus. Wo ist denn mein Fehler? Ist die Formel so wie ich dachte falsch oder rechnet man anders die einheiten raus? Viele Grüße Tristan
Ohne alle deine Gedanken zu überprüfen würde ich jetzt mal sagen, dass das daran liegt, dass 125°C nicht 10mA sondern 12mA entsprechen ;)
oops! 4mA = 0°C 10mA = 93,75°C 12mA = 125°C 20mA = 250°C Strom-gemessen(10mA) -4mA Temperatur(°C) = -------------------------- * 250(°C) max Wert des Sensors 16mA = 93,75°C ... also ist die abweichung 9°C zu den errechneten 102,x°C oben. ...
Hi. Her past doch was nicht zusammen: ≥ ADC 0mA 4mA 10mA 20mA ≥ ADC1 0,000V 0,653V 1,608V 3,206V ≥ ADC2 0,000V 0,618V 1,538V 3,066V Beim fünffachen Strom solltest du doch die fünffache Spannung bekommen, das ist aber nicht der Fall. Irgend was ist da ziemlich nichtlinear, deine Rechnung setzt aber Linearität voraus. Grüße Flo
ne der eingang ist 0..20ma der ausgang 0...3,3v 10ma = 3,3v/2 idealerweise
Die Steigung (y1-y0) / (x1-x0) mit (x-x0) multipizieren, dann stimmts (nicht in den Nenner). Bei 10mA kommen eben 93,... Grad raus. (250C-0C)/(10mA-4mA) * (10mA-4mA) = 15.625C/mA * 6mA= 93.75C.
Tristan schrieb: > Der ADC liefert mir ja für 12bit = 4096. Pedanterie: Das tut er nicht. Ein 12-Bit ADC liefert Werte im Intervall von 0 bis 4095. Der Wert 4096 aber ist mit 12 Bit nicht darstellbar.
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.