Wie würde ich von einem Drucksensor einen Messwert für die gesamte Reichweite erhalten?

10

Ich mache eine Anwendung mit dem DIY Force Sensitive Resistor (FSR) aus dieser Anleitung . Der Widerstand dieses Sensors reicht normalerweise von 20 kOhm im Ruhezustand bis 9 kOhm beim Drücken.

Wie würde ich diese Widerstandswerte in ein Signal umwandeln, bei dem 0 V der Ruhebedingung und 5 V der "gedrückten" Bedingung entsprechen, damit ich es mit einem Arduino lesen kann?

bpijls
quelle

Antworten:

14

Sie möchten einen Signalbereich von 0V bis 5V. Haben wir nicht alle :-)? Lassen Sie uns einen anderen Ansatz wählen und sehen, wohin uns das führt.

Ausgangspunkt: billigste und einfachste Lösung.

Das wäre ein Vorwiderstand, um einen Spannungsteiler zu erzeugen. Das ist das absolute Minimum. Mir ist aufgefallen, dass die Leute nicht viel über diesen Widerstand nachdenken, sondern nur einen schönen runden Wert wie 10k wählen . Aber ich fand, dass es dafür einen optimalen Wert gibt. Ω

Geben Sie hier die Bildbeschreibung ein

Die Kurve zeigt die Spannungsdifferenz zwischen dem minimalen und dem maximalen Messwert (9k bzw. 20k ) als Funktion des Vorwiderstands (in k ). Sehen Sie, es hat tatsächlich ein Maximum. Das ist leicht zu finden, wenn Sie sich daran erinnern ΩΩΩ

(f(x)g(x))=f(x)g(x)f(x)g(x)g2(x)

Die Differenz - hat ein Extremum für VMAXVMIN

ddRX(RMAXRMAX+RXRMINRMIN+RX)=0

Das nach ergibt RX

RX=RMINRMAX

Eine Schönheit!

In unserem Fall beträgt der Vorwiderstand also 13,42 k . Sie können dies in der Grafik überprüfen. Wenn Sie die Widerstände zwischen 0 V und + 5 V platzieren, erhalten Sie einen Ausgangsbereich von [2 V, 3 V]. Das ist die maximale Reichweite, die Sie mit 1 Widerstand (*) erreichen können. Ω

Reicht das? Der Arduino verfügt über einen 10-Bit-ADC, sodass Sie in diesem Bereich einen Bereich von 200 diskreten Pegeln erhalten. Dies sollte eine ausreichende Genauigkeit für einen DIY-Sensor ergeben. Es werden also keine weiteren Komponenten wie Opamps benötigt.


(*) Die akzeptierte Antwort gibt einen Bereich von 1,9 V an, hat aber die falschen Gleichungen . Es ist unmöglich, mit 1 Widerstand und nur einer + 5V-Versorgung einen höheren Bereich als 1 V zu erreichen.

stevenvh
quelle
2
+1. Dies sollte mehr positive Stimmen bekommen. Jeder braucht ab und zu einen Widerstandsteiler für einen variablen Widerstand, und warum nicht den optimalen Bereich anstelle dieses albernen Widerstands der 10k-Serie verwenden?
Federico Russo
5

Sie benötigen eine negative Spannung, um einen Widerstandsspannungsteiler auf 0 V stellen zu können. Ich gehe davon aus, dass Sie + 5V und -5V zur Verfügung haben.
Platzieren Sie Ihren variablen Widerstand zwischen + 5V und GND. Jetzt müssen Sie den Wert für einen Pulldown-Widerstand zwischen GND und -5 V ermitteln. Das ist einfach. Sie möchten 0 V aus, wenn der variable Widerstand 20k beträgt , daher muss der Pulldown auch 20k betragen, da das Ganze symmetrisch ist. Als nächstes müssen wir herausfinden, wie die Ausgangsspannung des Teilers sein wird, wenn 9k . Wir stellen fest, dass der Strom durch der gleiche Strom ist wie der Strom durch den Pulldown-Widerstand RXΩΩ
RXΩRX

5VVO9kΩ=VO(5V)20kΩ

Diese aus Arbeit gibt uns . Jetzt müssen Sie nur noch die 0V..1.9V auf 0V..5V skalieren. Hierzu verwenden wir einen RRIO - Opamp (Rail-to-Rail I / O) als nicht invertierenden Verstärker VO=1.9V

Geben Sie hier die Bildbeschreibung ein

Wenn Sie und auswählen, erhalten Sie einen Ausgangsspannungsbereich von 0V..5V für von 20k ..9k .R1=18kΩR2=47kΩRXΩΩ

stevenvh
quelle
1

Ich denke, der einfachste Weg wäre ein Spannungsteiler, der 5 V bei 9 k liefert und mit zunehmendem Widerstand abnimmt. In diesem Spannungsteiler-Rechner können Sie mit verschiedenen Widerstandskombinationen spielen . Es wird jedoch ein linearer Verlauf sein.

Blalor
quelle
2
Sie können keinen Teiler herstellen, der Ihnen 5 V gibt, wenn Sie nur 5 V haben.
Federico Russo