Digitale Steuerung elektromechanischer Messgeräte

Ich habe genau das gleiche Szenario wie eine vorherige Frage zur digitalen Steuerung der analogen Anzeige, habe aber immer noch Probleme bei der Lösung.

Ich habe zwei (Kraftstoff und Temperatur) alte (ca. 1973) elektromechanische analoge Messgeräte von VDO, die ich gerne digital steuern möchte. Es handelt sich um 3-Draht-Messgeräte (12 V, Masse und Signal), bei denen das Signal ursprünglich mit einer Sendeeinheit (Kraftstoffschwimmer oder Temperaturgeber) verbunden war.

Ich habe eine Reihe von Schaltungen erstellt und hatte einige Erfolge mit der unten gezeigten (mit einem Tiefpassfilter, einem Operationsverstärker und einem MOSFET), aber ich habe sie noch nicht gut zum Laufen gebracht.

Digital-zu-Analog-Gauge-SchaltungGeben Sie hier die Bildbeschreibung ein

Da die ursprünglichen Messgeräte eine Art logarithmische Skala verwenden, habe ich eine Karte im Code gemessen und erstellt, die die PWM-Ausgabe basierend auf dem von mir gewünschten Prozentsatz von Voll (oder heiß) variiert. Der Bereich der verwendeten PWM ist eng, aber es funktioniert gut mit nur einem Messgerät und einer konstanten Spannung von der 12-V-Stromversorgung. Jede geringfügige Änderung der Spannung oder des Widerstands im System, wie z. B. das Variieren der Eingangsspannung von der 12-V-Stromversorgung, das Einschalten der Instrumentenbeleuchtung oder das Hinzufügen des zweiten Messgeräts, ändert die Kalibrierung und bewirkt, dass sich die Nadel mehr oder weniger bewegt als bisher. Ich verwende ein einzelnes 12-V-Netzteil zum Testen. Ich habe einen 12-V-zu-Micro-USB-Abwärtswandler angeschlossen, um den Arduino mit Strom zu versorgen. Ich teile die Masse von der Stromversorgung zum Erdungsstift des Arduino.

Beispielvideos, die sich durch 5 oder 6 verschiedene (kalt, normal, halb, 3/4, heiß oder leer, Reserve 1/4, halb, 3/4, voll) Schritte bewegen: https://youtu.be/VGjDCAPXvEQ https : / /youtu.be/2KRYqxt8-eU

Irgendwelche Vorschläge, wie man das zuverlässig macht?

Verwendete Komponenten: Arduino MKR Zero mit 12-Bit-DAC, LM358 Operationsverstärker, 2N7000 MOSFET

Ich denke nicht, dass der Arduino-Code besonders relevant ist, aber ich werde ihn der Vollständigkeit halber hier einfügen. Offensichtlich wird dies schließlich Kraftstoff- und Temperaturinformationen von meinem CANbus verwenden, um die entsprechende PWM-Ausgabe zu schreiben, aber im Moment versuche ich nur, die Ausgabe mit festen Schritten zu kalibrieren.

int tempStep = 0;
int fuelStep = 0;
int tempIncrement = 1;
int fuelIncrement = 1;

int tempGaugeMap[] = {
  2500, // bottom of cold
  2560, // top of cold
  2600, // quarter
  2635, // half
  2655, // three quarters
  2680, // bottom of hot
  2695 // top of hot
};
unsigned int tempSteps = 6;

int fuelGaugeMap[] = {
  2710, // reserve
  2730, // empty
  2760, // 1/4
  2820, // half
  2900, // 3/4
  3500, //full
};
unsigned int fuelSteps = 5;

void setup() {
  // open a serial connection
  Serial.begin(9600);
  // make our DAC pin an output
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
  // 12-bit DAC resolution
  analogWriteResolution(12);
}

void loop() {
  int tempVal = tempGaugeMap[tempStep];
  int fuelVal = fuelGaugeMap[fuelStep];
  
  analogWrite(0, tempVal);
  analogWrite(1, fuelVal);
  
  if(tempStep >= tempSteps) { tempIncrement = -1; }
  if(tempStep == 0) { tempIncrement = 1; }
  tempStep = tempStep + tempIncrement;
 
  if(fuelStep >= fuelSteps) { fuelIncrement = -1; }
  if(fuelStep == 0) { fuelIncrement = 1; }
  fuelStep = fuelStep + fuelIncrement;
 
  delay(1000);
}

Ich habe einige Messungen der Messgeräte selbst wie folgt vorgenommen:

Messungen der Temperaturanzeige

Messungen der Tankanzeige

Diese „kleinen Veränderungen“ scheinen mir „große Veränderungen“ zu sein.

Antworten (1)

Ihre Annäherung ist äußerst sensibel, da Sie die Spurweite im offenen Regelkreis fahren. Die Opamp-Schaltung hat eine feste Verstärkung, treibt aber einen FET an, der weit offen läuft. Seine Transkonduktanz ändert sich mit der Temperatur, der Spannung von Drain zu Source, der Mondphase usw., was alles zu keiner wirklichen Stabilität führt.

Es gibt mehrere Möglichkeiten, Dinge zu verbessern. Eine besteht darin, den FET in die Steuerschleife des Operationsverstärkers zu bringen. Sie können dies tun, indem Sie die rechte Seite von R2 vom U1-Ausgang trennen und ihn mit dem Q1-Drain verbinden. <> Q1 ist ein Inverter, daher müssen Sie die beiden Opamp-Eingänge tauschen, um die zusätzliche Signalinversion zu kompensieren. Außerdem müssen wir die Teilenummer des Operationsverstärkers kennen, da nicht alle Geräte den Ausgangsspannungsbereich haben, um das zu tun, was Sie wollen.

Unabhängig davon können die Werte von R2 und R3 um das 10-fache oder sogar 100-fache erhöht werden, um den Endstufenstrom zu senken.

Ein anderer Ansatz besteht darin, das Messgerät mit einer Stromquelle statt mit einer Spannungsquelle anzusteuern. Bestimmen Sie mit der 12-V-Quelle und einem Widerstand den Strom durch das Messgerät bei den minimalen und maximalen Anzeigen. Diese können verwendet werden, um U1 als spannungsgesteuerte Stromquelle (eigentlich Stromsenke) neu zu konfigurieren.

Aktualisierung 1:

Ein anderer Ansatz besteht darin, die Opamp-Eingänge in Ruhe zu lassen, Q1 in einen Bipolartransistor als Emitterfolger umzuwandeln, den Kollektor mit +12 zu verbinden, R2 mit dem Emitter zu verbinden und das Messgerät zwischen Emitter und GND zu verschieben. Die Spannung über dem Messgerät ist die Spannung an C1 multipliziert mit der Verstärkung der Operationsverstärkerschaltung. Der Transistor ist nur ein Stromverstärker und fügt der Schleife keine Spannungsverstärkung hinzu. Wenn Sie die minimalen und maximalen Widerstandswerte des Senders kennen, sollte die Verstärkung des Operationsverstärkers einfach zu berechnen sein. Hinweis: Je nach Messgerät müssen Sie möglicherweise einen DC-Offset hinzufügen.

Aktualisierung 2:

Je mehr ich darüber nachdenke, desto mehr bevorzuge ich die Idee von Update 1. Es beseitigt jegliche Empfindlichkeit gegenüber dem Absolutwert der 12-V-Quelle. Sowohl das gefilterte PWM-Signal als auch das Signal zum Messgerät sind nur auf GND bezogen. Ich vermute, dass sowohl die Verstärkung der Operationsverstärkerschaltung als auch die Nachschlagetabellen angepasst werden müssen, aber dies ist wahrscheinlich der zweitbeste Weg. Am besten wäre die gleiche Schaltung, die als Stromquelle modifiziert wurde, aber Sie benötigen diese Komplexität möglicherweise nicht.

Siehe Aktualisierung ...
Ich schätze Ihre Antwort sehr. Ich muss ein paar Dinge klarstellen, von denen ich denke, dass sie Ihre Antwort beeinflussen. Erstens verwende ich LM258-Operationsverstärker. Noch wichtiger ist, dass das Messgerät eine interne Spannung und einen Widerstand hat, die auf dem Signalkabel erscheinen. Dafür stehen R4 und V3. Ich habe den Ansatz von Update 1 ausprobiert, aber das Problem war, dass Sie keinen Widerstand auf der Kollektor- oder Emitterseite des Transistors haben können, da die Signalleitung vollständig kurzgeschlossen werden muss, um die volle Reichweite (voll heiß) der Nadel zu erhalten. Mit diesem Setup konnte ich die Anzeige nur auf 3/4s oder so bringen.
Ich kann den Kollektor nicht an 12 V anschließen, da die 5,74 Volt (v3) die interne Spannung auf der Signalleitung sind. Ich kann keine externe Spannungsquelle hinzufügen, da dieser eine Draht mit dem Kollektor verbunden ist.
Ich verstehe Ihren ursprünglichen Kommentar nicht wirklich, wenn es darum geht, den FET in den Regelkreis des Operationsverstärkers zu bringen. Ich habe versucht zu simulieren, was ich glaube, Sie meinten, aber es tut nichts. Die Idee, die ich mit der zweiten Stufe in meiner Schaltung versuchte, ist nur ein Spannungsverstärker. Könnten Sie eine Schaltung zeichnen oder näher erklären, was Sie meinen? Ich verstehe auch nicht die Idee, eine Stromquelle gegen eine Spannungsquelle zu verwenden?