Anschließen eines Automobil-Drucksensors an eine Mikrocontroller-Schaltung

Dies ist eine Fortsetzung von Messung des Wasserdrucks in einem Tank . Ich habe beschlossen, es zu versuchen und eine andere Richtung einzuschlagen, also stelle ich eine neue Frage.

Ich habe eine Anwendung, in der ich den Druck in einem Poolfilter elektronisch messen muss. Da der Sensor Chlorwasser ausgesetzt wird, kann ich keinen einfachen Drucksensor wie den MPX5700 von Freescale verwenden.

Ich habe bei Ebay einen günstigen 150 PSI Druckmessumformer mit folgenden technischen Daten bekommen:

Eingang: 0-150 psi. Ausgang: 0,5 V – 4,5 V linearer Spannungsausgang. 0 psi gibt 0,5 V aus, 75 psi gibt 2,5 V aus, 150 psi gibt 4,5 V aus.

Funktioniert für Öl, Kraftstoff, Wasser oder Luftdruck. Kann in Öltanks, Gastanks usw. verwendet werden.

Genauigkeit: innerhalb von 2 % des Messwerts (Vollausschlag).

Gewinde: 1/8”-27 NPT.

Kabelverbinder: wasserdichter Schnelltrenner. Gegenstecker ist im Lieferumfang enthalten.

Verdrahtung: Rot für +5V. Schwarz für Boden. Blau für Signalausgang.

Ich habe es auf der Werkbank mit einem Oszilloskop und Multimeter getestet und folgendes gemessen:

  1. Wenn kein Druck ausgeübt wird, erzeugt es etwa 418 mV. Dies scheint auf der Grundlage des oben Gesagten richtig zu sein.
  2. Wenn ich mit meinem Mund etwas Luft hineindrücke, steigt die Spannung wie erwartet.
  3. Der Widerstand zwischen 5V und GND beträgt 42,7K Ohm
  4. Der Widerstand zwischen 5V und Signal AUSGANG beträgt 120K Ohm
  5. Der Widerstand zwischen GND und Signal OUTPUT beträgt 69K Ohm

Ich habe das Sensorsignalkabel an meinen LPC1768-Mikrocontroller an P17 (analog in) angeschlossen, das rote Sensorkabel an +5 V und das Sensormassekabel direkt an Masse.

Als ich die Ausgabe des 12-Bit-AD-Wandlers las, sah ich stark variierende Ausgaben wie die folgenden in der Druckspalte:

Cycle   Level        Pressure
================================
[211]   W:[184]     F:[2200]
[212]   W:[184]     F:[2071]
[213]   W:[185]     F:[1279]
[214]   W:[184]     F:[418]
[215]   W:[184]     F:[1514]
[216]   W:[184]     F:[3002]
[217]   W:[185]     F:[1499]
[218]   W:[185]     F:[0]
[219]   W:[183]     F:[1430]
[220]   W:[184]     F:[2501]
[221]   W:[184]     F:[1965]
[222]   W:[185]     F:[1311]
[223]   W:[184]     F:[263]
[224]   W:[184]     F:[1509]
[225]   W:[183]     F:[3195]
[226]   W:[186]     F:[1518]
[227]   W:[184]     F:[74]
[228]   W:[185]     F:[1306]
[229]   W:[184]     F:[2037]
[230]   W:[184]     F:[2409]
[231]   W:[184]     F:[1478]
[232]   W:[184]     F:[30]
[233]   W:[184]     F:[1503]
[234]   W:[185]     F:[3254]
[235]   W:[184]     F:[1549]
[236]   W:[184]     F:[433]
[237]   W:[185]     F:[1025]
[238]   W:[184]     F:[1714]
[239]   W:[184]     F:[2691]
[240]   W:[185]     F:[1479]
[241]   W:[184]     F:[0]

Ich verwende dieselbe Softwareroutine, um sowohl die Füllstands- als auch die Druckspalte zu lesen. Die Level-Säule ist im Gegensatz zur Pressure-Säule sehr stabil.

Meine Fragen lauten wie folgt:

  • Wenn der Sensor 0,5 V ohne Druck ausgeben soll, wie kommt es, dass ich 0 lese?
  • Warum solche Variationen zwischen den einzelnen ADC-Lesungen?
  • Muss ich der Schaltungsschnittstelle wegen des oben in den Punkten 3, 4 und 5 genannten Widerstands einige Komponenten hinzufügen, z. B. einen Unity-Gain-Puffer? Wenn ja, welchen Operationsverstärker würdet ihr empfehlen? Beachten Sie, dass ich kein Elektroingenieur bin, sondern nur ein Bastler, der sich mit Operationsverstärkern noch nicht auskennt. Danke Joe Hass für die Idee des Unity Gain Buffers.

Einheitsverstärkungspuffer

Hinweis: Dies ist sowohl eine Elektronik- als auch eine Softwarefrage. Im Moment arbeite ich an der elektrischen Schnittstelle.

Update: Die Dinge scheinen im Moment gelöst zu sein. Ich hatte das Sensorsignal an den LPC1768 P18 angeschlossen, der als Analog In und Analog Out geteilt wird. Das Sensorsignal wird nun an P17 (nur Analog In) angeschlossen. Diese Änderung und das Hinzufügen einer 0,1-uF-Kappe zum Filtern des Sensorausgangs haben dazu geführt, dass der Ausgang bei 0 PSI korrekt erscheint. Ich muss es nur mit einem Luftkompressor und bestimmten PSI-Einstellungen testen, um sicherzustellen, dass die ADC-Messwerte korrekt bleiben.

Ich würde vorschlagen, dass Sie das Datenblatt des Herstellers konsultieren, um zu sehen, welche Verbindungen erforderlich sind - aber da das eBay-Angebot weder den Herstellernamen noch die Teilenummer enthält, ist dies möglicherweise nicht möglich, es sei denn, die Informationen wurden mit dem Gerät geliefert. Ohne diese Daten würde ich die Ausgabe mit einem Multimeter messen und versuchen, die Zählerstände mit Ihren ADC-Messwerten in Beziehung zu setzen.
Sie haben die Masse der 5-V-Versorgung mit der Masse des Mikrocontrollers verbunden, oder? Ich weiß, es klingt albern, aber es wird oft übersehen.
@JoeHass Sicher schon. :-)
Das normale Verfahren hier ist, dass Sie diese Antwort offiziell akzeptieren, wenn Sie feststellen, dass eine bestimmte Antwort Ihnen bei der Lösung Ihres Problems geholfen hat. Es hilft späteren Lesern zu verstehen, was los war, und verhindert, dass diese Frage immer wieder als unbeantwortet hochsprudelt. Und natürlich steigert es den Ruf der Person, die Ihnen die hilfreiche Antwort gegeben hat.
@JoeHass Danke Joe. Mir ist bewusst, wie das System hier funktioniert. Ich werde eine Antwort akzeptieren, wenn ich mit meinen Tests fertig bin. Ich akzeptiere immer die beste Antwort in diesem Forum sowie in den anderen, an denen ich beim Stack-Austausch beteiligt bin. Ich habe meine Frage aktualisiert, um gründlich zu sein.
Beachten Sie, dass ein Einheitsverstärkungspuffer im elektrischen Sinne überhaupt nicht "isoliert". Es bietet jedoch eine hohe Eingangsimpedanz und eine niedrige Ausgangsimpedanz, was als Impedanzanpassung bezeichnet wird.

Antworten (2)

Diese Probleme sind schwer zu diagnostizieren. Als erstes würde ich die Pegel- und Druck-ADC-Eingänge tauschen, um sicherzustellen, dass kein Softwareproblem vorliegt. Selbst wenn Sie sich den Code tausendmal angesehen haben, würde ich dies tun.

Die Impedanz Ihres Sensors ist ziemlich hoch, um direkt in den ADC-Eingang eingespeist zu werden. Ich denke, Sie sollten einen nicht invertierenden Puffer mit Einheitsverstärkung zwischen dem Sensor und dem ADC-Eingang hinzufügen.

Eventuell sind Bypass-Kondensatoren erforderlich. Es gibt nicht genügend Informationen, um zu sagen, wo sie hinzugefügt werden sollten oder was ihre Werte sein sollten. Ich würde auf jeden Fall die 5V-Versorgung für den Sensor umgehen. Sie könnten dem Ausgang des Sensors auch einen kleinen Kondensator hinzufügen, vorausgesetzt, der Druck ändert sich nicht schnell.

Sie können auch versuchen, die ADC-Taktrate zu verlangsamen, um dem Sample-and-Hold mehr Zeit zum Aufladen zu geben. Manchmal kann es auch helfen, den Prozessor während einer Konvertierung in den Ruhezustand zu versetzen, um das Rauschen zu reduzieren.

Danke Joe, ich schätze deinen Beitrag. Sie denken also, dass vielleicht ein einfacher Unity-Gain-Operationsverstärker helfen könnte? Ich denke, ich muss das LPC1768-Datenblatt durchgehen und sehen, ob ich herausfinden kann, welchen Impedanzbereich die analogen Eingänge verarbeiten können.
Ich habe einen Operationsverstärker mit Einheitsverstärkung vorgeschlagen, unter der Annahme, dass der Druck in Ihrem Poolfilter niedrig genug ist, dass die Sensorspannung unter 3,3 V bleiben würde. Ich arbeite mit den Serien LPC13xx und LPC11xx und sie empfehlen eine maximale Quellenimpedanz von 40 Kiloohm für die ADC-Eingänge, wenn ich mich richtig erinnere.
Im Ernst, tauschen Sie die analogen Eingänge aus, bevor Sie sich Gedanken über Bypass-Kondensatoren und dergleichen machen. Wenn das zu schwierig ist, ersetzen Sie den Drucksensor durch einen niederohmigen Spannungsteiler, sagen wir zwei 1-kOhm-Widerstände, und versuchen Sie, diese Spannung zuverlässig zu messen. Sie müssen sicherstellen, dass kein Softwareproblem vorliegt.
Danke Joe. Heute werde ich die Eingänge tauschen, um ein Softwareproblem auszuschließen.

Aufgrund der Tatsache, dass der Ausgangsbereich Ihres Sensors den zulässigen Eingangsbereich des LPC1768 ADC-Eingangskanals, maximal Vdda/Vrefp von 3,3 V, überschreitet, ist es möglicherweise besser, den Operationsverstärker zu verwenden, um den Ausgangsbereich der Quelle/des Sensors zu skalieren und den Ausgangsbereich zu reduzieren Quelle/Sensor-Ausgangsimpedanz.

Referenz: NXP AN10974 LPC176x/175x 12-Bit-ADC-Designrichtlinien Erläutert effektive Netzteilfilterung, Verwendung von Bypass-/Entkopplungskondensatoren

Referenz: NXP LPC1769/68/67/66/65/64/63 Datenblatt, Seite 62 und Abb. 27, Seite 65

Max. Ausgangswiderstand der Quelle ~ Rvsi (Spannungsquellen-Schnittstellenwiderstand) maximal 7,5 kOhm

Max. Ausgangskapazität der Quelle ~ Cia analoge Eingangskapazität) maximal 15 pF

Danke BigDogGuru. Ich freue mich über die Referenzen! Tatsächlich liegt der PSI-Bereich, den ich zu messen erwarte, zwischen 0 und höchstens 60. Ich brauche nicht die Fähigkeit, den vollen Spannungsbereich zu lesen, den der Sensor ausgeben kann. Ich habe es nur ausgewählt, weil es billig war und die Reichweite abdeckte.
Versorgen Sie den Sensor mit +5 V und hoffen, dass er niemals versucht, ein Signal mit mehr als 3,3 V auszugeben?