kein absoluter Nullpunkt Dehnmessstreifen

Hallo,
ich bräuchte Hilfe bei einer Regelung. Ich will mit Hilfe durch die Messung in den Griffen die Geschwindigkeit eines Wagens regeln. Dazu habe ich in die Griff Dehnmessstreifen eingebaut.
Bei der Regelung vergleiche ich die gemessenen Werte der Dehnmessstreifen mit dem Wert, den sie haben, wenn sie in Ruhe sind. Allerdings ist dies nicht immer der selbe Wert. Beispielsweise ist er zu Beginn 512 nach einer kurzen Fahrt werden die Griffe wieder losgelassen und der Wert beträgt dann beispielsweise 480 oder 530. Nun die Frage wie kann ich diesen Fehler umgehen beziehungsweise in meinem Code ausgleichen.
Ich habe euch mal den Code angehängt

Vielen Danke für die Hilfe

void Regelung() 
  {

  double vtest = 25 + 1.9+ v_base;
  v_l = vtest- 0.3 * diffDMS;
  v_r = vtest+ 0.3 * diffDMS;
}


void loop(){
  
  Timer1.initialize(TimerRegelung);
  Timer1.attachInterrupt(Regelung);
 //DMS_L_O unf DMS_R_O sind die Werte wenn der DMS in der Ausgangsposotion ist
  DMS_L = - DMS_L_0 + analogRead (DMS1); 
  DMS_R = DMS_R_0 - analogRead (DMS2);
    double DMS_L_last, DMS_R_last; 
  DMS_L = 0.8 * DMS_L + 0.2*DMS_L_last;
  DMS_R = 0.8 * DMS_R + 0.2*DMS_R_last;
  DMS_L_last = DMS_L;
  DMS_R_last = DMS_R;
  gesDMS = (DMS_L + DMS_R*1.5)/2;
  diffDMS = DMS_L - DMS_R*1.5; //psotive im uhrzeiger sinn drehen
  v_base =1.5 * gesDMS;
 
if (v_r <0)
  {
  PORTL&=~_BV(PL7);//digitalWrite(InA2, LOW);
  PORTB|=_BV(PL1);//digitalWrite(InB2, HIGH); 
   }else
  {
  PORTL|=_BV(PL7);//digitalWrite(InA2, HIGH);
  PORTB&=~_BV(PL1);//digitalWrite(InB2, LOW); 
  }
  if (v_l<0)
  {
  PORTL|=_BV(PL6); //digitalWrite(InA1, HIGH);
  PORTB&=~_BV(PB0);//digitalWrite(InB1, LOW);
   }
   else
  {
  PORTL&=~_BV(PL6); //digitalWrite(InA1, LOW);
  PORTB|=_BV(PB0);//digitalWrite(InB1, HIGH);
  }
  
  analogWrite(PWM1,abs(v_l)); 
  analogWrite(PWM2,abs(v_r)); 
}

Hallo,

DMS haben sehr geringe Widerstandsänderungen, und die äqivalenten Spannungen bewegen sich im unteren mV Bereich. Das setzt natürlich eine hochwertige Auswerteelektronik voraus.
Ein 0815 OPV hat bereits eine Drift in der gleichen Größenordnung!
Deswegen greift man da zu aufwendigen schaltungstechnischen Tricks, wie Instrumentenverstärker oder Chopperverstärker. Darum zuerst die Frage nach deiner Eingangsschaltung. Außerdem müssen die Kabel zur Auswerteelektonik qualitativ hochwertig (geschirmt) und nicht zu lang sein. Greife doch zum selben schaltungstechnischen Trick, wie bei billigen Digitalwagen. Beim Einschalten wird ein Autozero durchgeführt. Also wenn das Auto angelassen wird, wird der gerade aktuelle Wert der Türgriffe als Null angenommen :wink:

Auch ich würde der Verstärkungselektronik die Schuld geben. Hast Du den Differenzverstärker (Instrumentverstärker) diskret afgebaut (OP und Widerstände) oder einen fertigen genommen? Grüße Uwe

Hallo
Danke schon mal für die schnelle Antwort.
Die DMS sind in einer Wheatstone’schen Brücke verschaltet und ein Operationsverstärker TLC2274 wie in dem angehängten Bild mit einem Temperaturdrift von 2µV/Grad.
In der Setupschleife frage ich zuerst den Ausgangswert ab. Allerdings ändert sich dieser während dem Ablauf des Programmes. Lässt man daher die Griffe dann los so kann es sein, dass dennoch den Wagen beschleunige.
Hast du noch eine Idee wie man das im Code umgehen kann?

Instrumentenverstärker.JPG

Hier nocheinmal ds genaue schaltbild

Instrumentenverstärker.JPG

Nee, nee, da schlägt mal wieder Murphys Gesetz zu, welches besagt, das der Unterschied zwischen Theorie und Praxis theoretisch kleiner ist, als praktisch erwiesen :P

Zwei Vorschläge: 1. sieh dir mal dieses IC für Digitalwaagen zur Anbindung an µC an: http://www.ebay.de/itm/370951051864?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649 oder googele mal nach HX711 - Beispielcode dazu findest du im Netz. Variante 2 - sieh dir mal fertige Instrumentenverstärker als IC's an. Die heißen fast alle INA1xx - xx steht für 2 weitere Ziffern. Vom Preis her ist Lösung 1. eindeutig zu bevorzugen.

Gruß Gerald

Ein Grund weshalb Instrumentenverstärker so teuer sind, sind die hoch-präzisen Laser-gravierten Widerstände. Wenn man das so per Hand aufbaut, hast du neben der fehlenden thermischen Kopplung die ganzen Widerstandstoleranzen drin. Deshalb macht man das nicht.

Es gibt aber auch billige Instrumentenverstärker: http://www.reichelt.de/AD-620-AN/3/index.html?&ACTION=3&LA=446&ARTICLE=39280&artnr=AD+620+AN&SEARCH=AD+620 http://www.reichelt.de/AD-623-AR/3/index.html?&ACTION=3&LA=446&ARTICLE=107915&artnr=AD+623+AR&SEARCH=AD+623

Achtung, da gibt es einen Unterschied: Der AD620 braucht eine symmetrische Versorgungsspannung (z.B. +/-5V)!! Der AD623 macht dagegen Single Supply und Rail-to-Rail (+Ub - 0,5V und GND + 0,15V).

Wobei die wie gesagt mit dem fertigen Wäge-IC wahrscheinlich mehr Freude haben wirst. :)

Ich hab mal einen mittels OP aufgebauten Instrumentverstärker ausgebaut. Die Widerstände waren 0,1% Grüße Uwe

Oh, die sind ja noch recht preiswert! :) Und der Preisunterschied zwischen beiden Typen ist eher marginal. Wärs schlimmer, hätte ich dir bei günstigerem Preis zur pos./neg. Betriebsspannung geraten. Der ICL7660 erzeugt dir mit lediglich 2 weiteren 10µF Elkos eine neg. Hilfsspannung, die mit ein paar mA belastbar ist. Das funktioniert von 1,5-10V Ub. Habe ich erfolgreich mit einem ICL7117 als DVM getestet :)

Gruß Gerald

Danke für die Hilfe. Ich hab rausgefunden dass es nicht an der Elektronik liegt sondern an der Mechanik, die allerdings nicht mehr umgebaut werden kann. Kann man dieses Problem also Softeware technisch lösen?

falls jemand einmal das selbe Problem hat... hier meine Lösung die Werte, mit denen der Sensor um den Nullpunkt hat aus der Kurve rausschneiden und einen PT1 Regler drüberlaufen lassen das funktioniert ganz gut