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. Ω
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+RX−RMINRMIN+RX)=0
Das nach ergibt RX
RX=RMIN⋅RMAX−−−−−−−−−−−√
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.