Ich würde gerne Meßwerte eines druckempfindlichen Widerstands
digitalisieren. Der Widerstand liegt mit einem Pin an +4.3V, der andere
Pin steht mir zur freien Verfügung.
Mein erster Versuch war, einen 1KOhm-Widerstand an den Pin und Masse zu
legen, und aus dem Spannungsteiler resultierende Spannung einem
Arduino-A/D-Wandler zuzuführen.
Grundsätzlich ok, aber so konnte ich dann feststellen, daß das
Druck-Widerstand-Diagramm sehr unregelmäßig verläuft:
Bei keinem bis ganz geringem Druck ist der Widerstand unendlich (mein
A/-Wandler liefert 0). Bei weiter steigendem Druck ergibt sich plötzlich
ein Widerstand von etwa 20kOhm, der dann mit nur geringfügig
weitersteigendem Druck sehr schnell kleiner wird.
Das Kleinerwerden verlangsamt sich mit zunehmendem Druck, so daß er bei
mittlerem Druck etwa bei 1kOhm liegt. Nun muß der Druck schon deutlich
zunehmen, damit der Widerstand geringer wird, bei starkem Druck sind es
nur noch 400 Ohm, bei maximalem Druck dann 258Ohm.
So ergibt sich am Spannungsteiler maximal 3.43V, die ich daher als
konstante Referenzspannung dem Wandler biete, so daß er sein Maximum
liefert.
Problem ist nun, daß ein wichtiger Bereich großer Drucke auf die letzten
20% gestaucht wird, während der Bereich kleiner Drucke auf die unteren
60% gedehnt wird.
Ich hatte überlegt, einen Potenzierer
(http://www.jens-wesemann.de/op9.htm) zwischenzuschalten, der die 20%
dehnen und die 60% stauchen soll. Ich scheine ja nur einen Widerstand,
eine Diode und einen OP zu brauchen.
Aber echte Analogtechnik mit allen Finessen war nie meine Stärke, daher
würde ich mich über Hilfe freuen.
Als OPs hab ich rumliegen: LM741CN, TL072CP, TL081CDP, NE5534N, NE5532P
und RC4558P. Als Diode nur 1N4148. Bei der Auswahl des OP dürfte sicher
relevant sein, daß das Drucksignal sich so schnell ändert, daß etwa
10-20.000 Abtastungen pro Sekunde nötig sind.
Interessant ist auch, ob es eine Potenziererschaltung gibt, die einen
unteren Offset-Abgleich zuläßt, damit bei einen Widerstand von unendlich
bis 20kOhm der Wandler auf 0 gebracht werden kann?
AnaLogExp schrieb:> so konnte ich dann feststellen, daß das> Druck-Widerstand-Diagramm sehr unregelmäßig verläuft
Dann solltest du erst einmal feststellen, ob die Wertepaare
reproduzierbar sind.
Wenn das nicht der Fall ist, lohnt sich der Aufwand für eine
Linearisierung nicht, denn dann ist das Teil wohl nur als Schalter
brauchbar.
Perfekt reproduzierbar, hab ich sehr aufwendig überprüft, damit ich
nicht umsonst arbeite. Klar könnte ich auch einen Wandler mit 12 oder
mehr Bit nehmen und dannn tabellarisch entzerren, aber wenn es ein
einfacher OP mit wenigen Bauelementen auch annähernd tut?
Mir geht es ja nur um eine ungefähre Dimensionierung von R und welchen
OP und eben, ob es noch eine Modifikation für den Offset gibt oder einen
anderen Anfang als nen Spannungsteiler?
AnaLogExp schrieb:> Klar könnte ich auch einen Wandler mit 12 oder> mehr Bit nehmen und dannn tabellarisch entzerren, aber wenn es ein> einfacher OP mit wenigen Bauelementen auch annähernd tut?
Das ist die eindeutig bessere Lösung. Bist du einen analoge
Linearisierung stabil und genau hast (falls das Möglich ist) bist du mit
dem 12 Bit ADC schon fertig.
AnaLogExp schrieb:> Bei keinem bis ganz geringem Druck ist der Widerstand unendlich (mein> A/-Wandler liefert 0). Bei weiter steigendem Druck ergibt sich plötzlich> ein Widerstand von etwa 20kOhm
Wenn sich plötzlich etwas ändert, spricht das für eine Unstetigkeit der
Kennlinie. Das solltest du erstmal klären.
> Ich hatte überlegt, einen Potenzierer> (http://www.jens-wesemann.de/op9.htm) zwischenzuschalten, der die 20%> dehnen und die 60% stauchen soll. Ich scheine ja nur einen Widerstand,> eine Diode und einen OP zu brauchen.
Das hört sich im Prinzip einfach an. Im wahren Leben macht dir z.B. die
Temperaturabhängigkeit der Diodenkennlinie heftig Ärger.
Die erwähnte Diskontinuität beim Übergang von keinem zu geringem Druck
ist eine "Spezialität" des Druckwandlers und liegt am
Konstruktionsprinzip.
Da extrem geringe Drucke nicht auftreten, darf ich den Bereich
ignorieren und mich nur auf den Bereich 20kOhm bis 258Ohm konzentrieren.
Der OP würde übrigens mit +5V versorgt werden.
Vielen Dank für die bisherigen Antworten. Ich fasse mal zusammen:
1) "Schreib doch einfach eine Simulation mit dem Compiler deiner Wahl,
oder
einem Mathematikprogramm." schrieb Siebzehn Zu Fuenfzehn
Und wie? Das habe ich noch nicht gemacht. Könntest Du mir z.B. in MatLab
da mal auf die Sprünge helfen, damit ich alleine weitermachen kann?
2) "Bis du eine analoge Linearisierung stabil und genau hast (falls das
Möglich ist) bist du mit dem 12 Bit ADC schon fertig." schrieb Helmut
Lenzen
Der Schaltungsaufwand ist zu groß. Hab auch keinen 12-Bit-Wandler da,
und welchen sollte ich nutzen, der 12 Bit zuverlässig schafft und nicht
viel Aufwand mit analoger und digitaler Versorgungsspannung braucht und
sich einfach z.B. an den Arduino Uno anschließen läßt, ohne viele Pins
zu verbrauchen?
3) "Die groesste Aufloesung gibt's wenn der Seriewiderstand gleich dem
Widerstand des Sensors in der Mitte des Anwendungsbereichs hat." schrieb
Siebzehn Zu Fuenfzehn
Dann müßte ich von 1kOhm auf ca. 470-510Ohm verringern. Da steigt der
Strom durch den Drucksensor dann schon mal auf über 5mA. Weiß nicht, ob
das nicht langfristig negative Auswirkungen hat.
4) "Im wahren Leben macht dir z.B. die Temperaturabhängigkeit der
Diodenkennlinie heftig Ärger." schrieb Wolfgang
Größere Schwankungen der Umgebungstemperatur als 15-30 Grad sind nie zu
erwarten, typischerweise eher 18-26 Grad. Ist das relevant? Oder meinst
Du die Schwankungen durch die variable Stronstärke durch die Diode?
Meine Frage bleibt: Wie sieht eine Potenziererschaltung aus, bei der ich
den Grad der Biegung in der Steigung ändern kann und ggf. den
Nulloffset, so daß Eingangsspannungen von 0.2V bis 3.43V auf
Ausgangsspannungen von 0V bis z.B. 3.5V abgebildet werden, wobei z.B.
1.5V eher zu 0.5V bis 1V werden sollten?
AnaLogExp schrieb:> Meine Frage bleibt: Wie sieht eine Potenziererschaltung aus, bei der ich> den Grad der Biegung in der Steigung ändern kann und ggf. den> Nulloffset, so daß Eingangsspannungen von 0.2V bis 3.43V auf> Ausgangsspannungen von 0V bis z.B. 3.5V abgebildet werden, wobei z.B.> 1.5V eher zu 0.5V bis 1V werden sollten?http://www.google.com/patents/EP0388622A1?cl=en
Figure 3 sollte das sein was du suchst.
Die Schaltung hat eher eine Logarithmier-Funktion, soweit ich das
überblicke. Ich brauche ja das Gegenteil: Mit zunehmender
Eingangsspannung soll die Ausgangsspannung überproportional anwachsen.
Hab auch schon gedacht, ob es nicht eine Strom-basierte Lösung gibt,
anstatt einen simplen Spannungsteiler zu nehmen. Dann könnte der OP die
Strom-Spannungswandlung auch übernehmen.
Hab im Datenblatt nachgesehen und mehr als 5mA sind definiv nicht
erlaubt.
AnaLogExp schrieb:> Die erwähnte Diskontinuität beim Übergang von keinem zu geringem Druck> ist eine "Spezialität" des Druckwandlers und liegt am> Konstruktionsprinzip.
Ok, das ist beruhigend.
> Da extrem geringe Drucke nicht auftreten, darf ich den Bereich> ignorieren und mich nur auf den Bereich 20kOhm bis 258Ohm konzentrieren.
Prima. Wenn du jetzt einen Widerstand, z.B. 2,2kΩ parallel zu deinem
Sensor schaltest, bewegt sich der Gesamtwiderstand in einem Bereich
zwischen 1,98kΩ und 231Ω. Das macht die Sache für einen 10Bit-Wandler
evtl. schon attraktiver.
AnaLogExp schrieb:> Die Schaltung hat eher eine Logarithmier-Funktion, soweit ich das> überblicke.
Die Schaltung macht die Kurvenform die du haben willst, je nach dem wie
die Widerstaende und die Knickpunkte eingestellt werden. Aber alle diese
Schaltungen setzt man schon seit Jahren nicht mehr in der Praxis ein
weil sie sehr viele unzulaenglichkeiten haben. Deshalb kann man auch
kaum noch Analogmultiplizierer kaufen.
Wie gesagt mach es Digital mit einem 12 Bit Wandler.
AnaLogExp schrieb:> Hab auch keinen 12-Bit-Wandler da,> und welchen sollte ich nutzen, der 12 Bit zuverlässig schafft und nicht> viel Aufwand mit analoger und digitaler Versorgungsspannung braucht und> sich einfach z.B. an den Arduino Uno anschließen läßt, ohne viele Pins> zu verbrauchen?
12 Bit sind nun keine Raketentechnik. Das ist einfacher und schneller im
Griff zu bekommen also so eine krumme Analogschaltung. Die meisten ADC
haben heute ein serielles Interface (SPI). Da brauchst du 3 ..4 Leitung
zum ADC.
Der Aufwand in der Versorung haelt sich in Grenzen, ein Filter in die
Analoge Versorungspannung und das wars. Aktuelle uC haben heute meistens
einen 12 Bit Wandler an Board.
AnaLogExp schrieb:> Aber echte Analogtechnik mit allen Finessen war nie meine Stärke
Erster Schritt: Deine Steinzeoit-OpAmps wegwerfen, denn die benötige
eine Versorgungsspannung von unter 0V (so -5V) und über 5V (so 10V)
damit sie deine Signale verstärken können, und solche Spannungen extra
zur Verfügung stellen zu müssen ist teuer und aufwändig.
Besorge dir gelegentlich TS912 oder ähnlich moderne Rail-To-Rail OpAmps,
die sich eher so verhalten, wie man es erwartet.
Aber zurück zum Problem:
AnaLogExp schrieb:> Interessant ist auch, ob es eine Potenziererschaltung gibt, die einen> unteren Offset-Abgleich zuläßt, damit bei einen Widerstand von unendlich> bis 20kOhm der Wandler auf 0 gebracht werden kann?
Wenn der Widerstand PLÖTZLICH 20k beträgt, ist da nichts zu
linearisieren zwischen unendlich und 20k, und JEDE Schaltung produziert
0V bei den Werten dazwischen.
Also konzentriere dich auf den Bereich zwischen 20k und 258 Ohm.
Eine Linearisierung per Potenzierung per Diode ist vor allem eines: Ein
Thermometer. Denn die Diode hat eine stark temperaturabhängige
Kennlinie. Solche Schaltungen kannst du also auch vergessen. Ganz
allgemein sind analoge logarithmierer/potenzieren so schlecht, daß man
nicht mehr von Messen sprechen kann. Vergiss das also.
Wählöe deinen Vorwiderstand so, daß der Bereich besser gedehnt wird,
beispielsweise mit 256 Ohm und die ARef auf 2.5V, oder nimm einen höher
auflösenden A/D-Wandler wie MCP3221
AnaLogExp schrieb:
Für einen Analogexperten sollteeine solche Schaltung
doch eine Kleinigkeit sein. :-)
> 1) "Schreib doch einfach eine Simulation
Wenn Du eine Kurve mit Wertepaaren in Excel einliesst, kannst
Du Dir direkt die Formel für eine Kurvenanpassung n-ten Grades
ausgeben lassen. Ob Dir diese Formel allerdings weiterhilft,
ist eine andere Frage.
> Der Schaltungsaufwand ist zu groß. Hab auch keinen 12-Bit-Wandler da,> und welchen sollte ich nutzen, der 12 Bit zuverlässig schafft und nicht> viel Aufwand mit analoger und digitaler Versorgungsspannung braucht und> sich einfach z.B. an den Arduino Uno anschließen läßt, ohne viele Pins> zu verbrauchen?
12-Bit-Wandler sind Standard, da gibts Tausende. Wenn Dir ein "Pi mal
Daumen Wert" reicht, gehts natürlich auch mit weniger Bit.
> 3) "Die groesste Aufloesung gibt's wenn der Seriewiderstand gleich dem> Widerstand des Sensors in der Mitte des Anwendungsbereichs hat." schrieb> Siebzehn Zu Fuenfzehn>> Dann müßte ich von 1kOhm auf ca. 470-510Ohm verringern. Da steigt der> Strom durch den Drucksensor dann schon mal auf über 5mA.
Dann musst Du eben die Betriebsspannung für Deinen Sensor verringern.
Das ist für eine höhere Genauigkeit ohne Temperaturfehler sowieso
sinnvoll.
Weiß nicht, ob
> das nicht langfristig negative Auswirkungen hat.>>> 4) "Im wahren Leben macht dir z.B. die Temperaturabhängigkeit der> Diodenkennlinie heftig Ärger." schrieb Wolfgang>> Größere Schwankungen der Umgebungstemperatur als 15-30 Grad sind nie zu> erwarten, typischerweise eher 18-26 Grad. Ist das relevant? Oder meinst> Du die Schwankungen durch die variable Stronstärke durch die Diode?
Beides. Der Tk einer Diode beträgt ca. 1,7mV pro Grad. Wie sich das
auf Deine Schaltung auswirkt, darfst Du selbst ausrechnen.
Gruss
Harald
Du möchtest also mittels Analogtechnik eine irgendwie geartete
mathematische Funktion nachbilden. richtig?
Und dahinter steht dann ein µC, der rechnen kann.
Was spricht dagegen, diese mathematische Operation im µC durchzuführen?
Geschwindigkeit?
MaWin schrieb:> Wenn der Widerstand PLÖTZLICH 20k beträgt, ist da nichts zu> linearisieren zwischen unendlich und 20k, und JEDE Schaltung produziert> 0V bei den Werten dazwischen.
Das war schon geklärt, i.e. der Bereich ist nicht weiter von Interesse.
AnaLogExp schrieb:> Da extrem geringe Drucke nicht auftreten, darf ich den Bereich> ignorieren und mich nur auf den Bereich 20kOhm bis 258Ohm konzentrieren.
Aber natürlich hast du Recht. Im wahren, makroskopischen Leben gibt es
keine Unstetigkeiten.
Helmut Lenzen schrieb:> Sein ADC hat mit 10 Bit zuwenig Aufloesung.
Dann wäre es doch jetzt an der Zeit, wenn mal die Daten zum Wandler,
i.e. die R(p)-Kennlinie zusammen mit den Genauigkeitsanforderungen auf
den Tisch kommt ;-)
0815 schrieb:> Dann wäre es doch jetzt an der Zeit, wenn mal die Daten zum Wandler,> i.e. die R(p)-Kennlinie zusammen mit den Genauigkeitsanforderungen auf> den Tisch kommt ;-)
Tja, das ist wieder Aera 51
Helmut Lenzen schrieb:> Sein ADC hat mit 10 Bit zuwenig Aufloesung.
Vielleicht ist das garnicht so, weil sein Sensor sowieso mehrere
Prozent Fehler hat.
Es ist der 10-Bit-Wandler eines ATmega328.
Irgendwie ist doch klar, daß ich keinen 12-Bit-Wandler verwenden werde,
wenn ich das Problem näherungsweise mit 2 Widerständen in den Griff
bekommen und dabei sogar auf den OP-Amp verzichten kann.
Nochmal, es kommt nicht auf Genauigkeit an, nur auf ein wenig Strecken
des Bereichs mit großen Drucken (Widerstand variiert hier von ca. 500Ohm
bis minimal 258Ohm) und im Gegenzug Stauchen des Bereichs mit geringen
Drucken (20kOhm bis etwa 1kOhm).
Wir sind hier eher im 10%-5%-Bereich als <1%. Man muß zwei Dinge
auseinanderhalten, Reproduzierbarkeit der Meßwerte und ihre Skala: Der
Sensor ist sehr gut in seiner Reproduzierbarkeit, aber die Skala ist
sehr verzerrt und außer der Diskontinuität gibt es natürlich auch noch
die Sätigung bei 258Ohm, wo ein weiteres Erhöhen des Drucks keine
Widerstandsveränderung mehr bewirkt. Eine grobe Korrektur wäre schon
gut, eine besser einstellbare Korrektur wäre ein Traum. Eine linearer
Spannungsverlauf vor dem Wandler wäre absoluter Overkill.
Der Vorschlag von @Wolfgang ist doch prima, einfach ein weiterer
Widerstand parallel zum Sensor und schon hab ichs fast. Muß ich jetzt
allerdings erstmal ausrechnen ...
@MaWin: Meine "Steinzeit"-OP-Amps schmeiße ich ungern weg. Hab auch noch
den BB OPA27GP, auch in den Müll?
AnaLogExp schrieb:> Der Vorschlag von @Wolfgang ist doch prima, einfach ein weiterer> Widerstand parallel zum Sensor und schon hab ichs fast. Muß ich jetzt> allerdings erstmal ausrechnen ...
Bitte, bitte.
Wenn du die Kennliniendaten auf den Tisch legst, würden dich bei der
Rechnung und Optimierung auch einige unterstützen ;-)
Gerne! Die Kennlinie hab ich nicht, ich hatte sie mühsam an einigen
Stützstellen gemessen, um dabei festzustellen, daß sie näherungsweise
logarithmisch verlauft. Daher habe ich mir nur Anfangs- und Endwert
gemerkt:
20kOhm, 258Ohm.
Ich habe mal eine MatLab-Programm geschrieben, mit dem ich den Einfluß
von Serien- und Parallelwiderstand ansehen kann:
1
% Parallel zum Sensor ist R_parallel, zu beiden in Serie ist R_serie
2
clear
3
4
% Dem Drucksensor 201 logarithmisch gestufte Widerstandswerte unterstellen:
5
lo = log(258); % min. R
6
hi = log(20000); % max. R
7
stp = (hi-lo) / 200;
8
R = exp(lo:stp:hi);
9
10
% Ausgangswerte (zum Probieren):
11
R_serie = 560; % Ohm
12
R_parallel = 2000; % Ohm
13
U_in = 4.3; % Volt
14
15
% Resultierende Spannung über dem R_serie berechnen, die an den A/D-Wandler geht:
Leider ist der Einfluß des Parallel-Widerstands nicht wie erhofft. Mein
Wandler verteilt seine Stufen ja immer bei 0Volt beginnend bis zur
Referenzspannung, die ich auf das Maximum von U_out stellen kann.
Aber durch den Parallel-Widerstand wird vor allem der Bereich von 0Volt
bis zum Minimum von U_out vergrößert und damit der gesamte nutzbare
Bereich gestaucht.
AnaLogExp schrieb:> Leider ist der Einfluß des Parallel-Widerstands nicht wie erhofft.
Das könntest du ihm abgewöhnen, indem du einen Offset abziehst, so dass
der Wertebereich vernünftig auf deinem Wandlerbereich liegt. Es bleibt
natürlich die Frage, ob ein hochauflösender Wandler, angebunden über SPI
nicht die einfachere Lösung ist.
Hi
>Ja genau, von dieser Bauart.
Und für die gibt es auch Datenblätter mit den Widerstandskurven. Ist
wesentlich aussagekräftiger als diese Prosaerläuterungen.
MfG Spess
Danke, @Wolfgang, für den konstruktiven Beitrag. Wie ziehe ich den
Offset ab? Ich habe keine nagativen Spannungen. Transistor würde auch
gehen, aber wie (ich habe hier BC237B, BC307B, BC416A, BC413C)?
Klar, @Spess, und ich würde auch nicht 1000 Worte machen, wenn ich den
Typen wüßte, sondern einfach das Datenblatt liefern.
@Helmut Lenzen, vielen Dank für den Link. Die dortige Schaltung mit
Offsetabzug benötigt aber die eine Seite des Druckwiderstands nicht an
+4.3V wie bei mir unveränderlich gegeben, sondern an 0V, daher leider
ungeeignet.
@Wolfgang, danke für den Tip. Aber jetzt, nachdem mir @MaWin sagte, daß
die von mir aufgezählten OPs nicht an 0V-5V betreibbar sind, frage ich
mich, ob ich damit die Differenzverstärkerschaltung tatsächlich aufbauen
sollte, oder eben lieber transistorbasiert.
AnaLogExp schrieb:> Die dortige Schaltung mit> Offsetabzug benötigt aber die eine Seite des Druckwiderstands nicht an> +4.3V wie bei mir unveränderlich gegeben, sondern an 0V, daher leider> ungeeignet.
Die sollte auch mit 4.3V am Sensor funktionieren. Das einzige was dann
passiert ist das die Spannung am OP Ausgang kleiner wird anstatt
groesser wird wenn der Sensor an GND liegt. Das macht aber nix weil man
es in der Software beruecksichtigen kann. Dann ist halt nicht der Wert 0
vom ADC dein 0 sondern der Fullscale vom ADC dein Nullpunkt.
AnaLogExp schrieb:> frage ich> mich, ob ich damit die Differenzverstärkerschaltung tatsächlich aufbauen> sollte, oder eben lieber transistorbasiert.
Das wirst du nicht hinbekommen. Der OP der dabei rauskommt ist noch
schlechter als was du in der Kiste hast. Rail To Rail OPs haben meistens
FETs drin. Du wirst also nicht darum kommen einen besseren OP dir zu
besorgen. TS912/914 wurde ja bereits erwaehnt.
Helmut Lenzen schrieb:> Schlumpf schrieb:>> Was spricht dagegen, diese mathematische Operation im µC durchzuführen?>> Sein ADC hat mit 10 Bit zuwenig Aufloesung.
Dann hoffen wir mal, dass seine 4,3V und die Referenz am AD-Wandler auch
so genau und Temperaturstabil sind, dass er den Vorteil einer
12Bit-Wandlung überhaupt ausspielen kann.
Irgendwie kapiere ich den Zusammenhang zwischen den Aussagen wie: "es
muss nur so ganz grob linearisiert werden" und "ich benötige aber 12Bit"
noch nicht so ganz
Schlumpf schrieb:> Dann hoffen wir mal, dass seine 4,3V und die Referenz am AD-Wandler auch> so genau und Temperaturstabil sind, dass er den Vorteil einer> 12Bit-Wandlung überhaupt ausspielen kann.
Die Spannungsteiler sollte man schon mit der gleichen Spannung füttern,
die auch als Referenz für den µC dient, damit man rein ratiometrisch
arbeitet.
Schlumpf schrieb:> Irgendwie kapiere ich den Zusammenhang zwischen den Aussagen wie: "es> muss nur so ganz grob linearisiert werden" und "ich benötige aber 12Bit"> noch nicht so ganz
Wenn die Kennlinie des Sensors bei hohen kräften zu flach wird, hat man
bei zu niedriger Auflösung der Rohdaten keine Möglichkeit, um
rechnerisch die Kennlinie glatt zu kriegen, weil das Bitrauschen zu hoch
wird.
Wolfgang schrieb:> Die Spannungsteiler sollte man schon mit der gleichen Spannung füttern,> die auch als Referenz für den µC dient, damit man rein ratiometrisch> arbeitet.
richtig
Wolfgang schrieb:> Wenn die Kennlinie des Sensors bei hohen kräften zu flach wird, hat man> bei zu niedriger Auflösung der Rohdaten keine Möglichkeit, um> rechnerisch die Kennlinie glatt zu kriegen, weil das Bitrauschen zu hoch> wird.
auch richtig..
aber bei 12 Bit Wandlung von 0...4V beträgt die Auflösung 1mV
bei 10 Bit Wandlung beträgt sie 4mV
Stell sich dann halt die Frage, ob die Referenz bzw Versorgung so gut
ist, dass sich dieser Vorteil noch bemerkbar macht.
Ein Schaltregler rippelt z.B. immer ein bisschen.
Ich vermisse hier einfach bis jetzt eine Kennlinie des Drucksensors und
eine Angabe darüber, welche Genauigkeit in Bar gefordert ist.
Oder habe ich diese Angabe irgendwo überlesen?
Erst dann kann nach einer Lösung gesucht werden.
Schlumpf schrieb:> Ich vermisse hier einfach bis jetzt eine Kennlinie des Drucksensors und> eine Angabe darüber, welche Genauigkeit in Bar gefordert ist.
Die vermissen wir alle:
Also ein Tabelle:
Druck [bar] | Widerstandswert [Ohm] | Ausgangsspannung an ADC [V]
------------------------------------------------------------------------
-
| |
| |
Bitte ausfuellen.
Schlumpf schrieb:> Ich vermisse hier einfach bis jetzt eine Kennlinie des Drucksensors und> eine Angabe darüber, welche Genauigkeit in Bar gefordert ist.> Oder habe ich diese Angabe irgendwo überlesen?
Ich habe mir mal das Datenblatt eines solchen Sensors von Conrad
angesehen. Das steht u.a. , das die Genauigkeit des Sensors eher
im zweistelligen Prozentbereich anzusiedeln ist. Da reicht zur
Erstellung einer passenden Wertetabelle sicherlich auch ein
10-Bit-Wandler.
Gruss
Harald
Druck [bar] | Widerstandswert [Ohm]
--------------------------------------
|
|
Sowas würde auch schon reichen.
Dann kann man ermitteln, in welcher Beschaltung der Sensor
sinnvollerweise betrieben wird. (z.B. Brücke o.ä.)
Harald Wilhelms schrieb:> das die Genauigkeit des Sensors eher> im zweistelligen Prozentbereich anzusiedeln ist.
gut, dass wir das dann mit 250ppm Genauigkeit erfassen wollen ;-)
Schon alleine der Widerstand in einem Spannungsteiler ist üblicherweise
ein 1%er + Temperaturdrift von +-100ppm/K...
Oh @Schlumpf, immer nur auf der Suche nach dem Wurm im Apfel. Alles
wurde schon beantwortet, ist nur mittlerweile durch die ganzen
Wurm-im-Apfel-Fragen so viel Text geworden, daß man es nicht mehr lesen
mag. Ich möchte lieber den Apfel probieren.
KURZFORM: Ein druckempfindlicher R ohne Typangabe und Datenblatt, der an
einer Seite mit 4.3V verbunden ist, soll mit dem 10-Bit-Wandler im
ATmega328P digitalisiert werden (der übrigens realistisch eher 9 Bit
hat, da das letzte Bit hauptsächlich Rauschen ist).
Er hat eine quasi-logarithmische Kennlinie, die soll vor dem Wandeln
grob ausgeglichen werden, damit die paar Stufen des Wandlers auch voll
zur Geltung kommen und nicht der gesamte Bereich hohen Drucks sich in
nur 20 Digit abspielt. Genauigkeit ist zweitrangig. Auch eine
mittelfristige Temperaturdrift ist unproblematisch, es kommt
hauptsächlich darauf an, kurzfristige Zu- und Abnahmen zu quantisieren.
Und da brauche ich später noch eine Tabelle, aber die soll nicht größer
als 1kByte sein, daher nützt mir ein 12-Bit-Wandler wiederum nichts.
Der Serienwiderstand darf nicht kleiner als 560 Ohm sein, da sonst der
Strom durch den Drucksensor zu hoch wird. Sein kleinstes R bei höchstem
Druck von 258Ohm führt dann dazu, daß die Auflösung der größten Drucke
doch sehr grobstufig wird, da er auch noch in den Sättigungsbereich
kommt.
Ich hätte übrigens auch den LF356DP und ich werde jetzt im
Probierstadium keinen neuen OP-Amp besorgen. Einer der genannten wird es
erträglich hinbekommen müssen und ich hatte natürlich gehofft, daß einer
von Euch mir sagen könnte, welcher davon statt mit +-12V eben auch mit 0
und 4.8V einen brauchbaren Differenzverstärker hergibt, denn durch den
Parallel-R liegen die Eingangsspannungen zwischen 1.1 und 3.2V. Eine
Ausgangsspannung nahe an 0 wäre natürlich schön.
AnaLogExp schrieb:> Oh @Schlumpf, immer nur auf der Suche nach dem Wurm im Apfel.
Wenn es dir schmeckt, dann will ich dich nicht daran hindern, deinen
Apfel auch mit Wurm zu verspeißen.
AnaLogExp schrieb:> Alles> wurde schon beantwortet
Wirklich, dann ist es wohl in dem(deinem?) Geschwafel untergegangen.
Ich habe jedenfalls noch keine Kennlinie gesehen. Nur eine Angabe in
Textform dass sie so ein bisschen logarithmisch sei.
Außerdem habe ich noch keine Angabe darüber gefunden, wie groß die
maximale Abweichung des gemessenen Drucks vom Tatsächlichen Druck sein
darf.
Beides grundlegende Punkte, die man zuerst klärt, bevor man sich über
einen Lösungsansatz her macht.
Ich würde das Problem so angehen. Aber ich bevorzuge es auch, Äpfel ohne
Wurm zu essen.
Guten Appetit :-)
Schlumpf schrieb:> Ich habe jedenfalls noch keine Kennlinie gesehen.
Nun, hier findest Du einige Angaben einschliesslich grobe Kennlinie:
www.produktinfo.conrad.com/datenblaetter/500000-524999/503370-in-01-de-D
RUCKSENSOR_FSR_406.pdf
Für eine zuverlässige und reproduzierbare Druckmessung erscheint mir
dieser Sensor jedenfalls nicht besonders gut geeignet zu sein.
Gruss
Harald
Ich habe hier nun schon massenweise Kennlinien gesehen, die meiner
ähnlich sind. Schlumpf, lerne auch Lösungen zu suchen und zu finden,
wenn nicht alle Variablen dieser Welt Dir bekannt gemacht wurden.
Ebenfalls guten Appetit, und schwafel dabei nicht zuviel.
Vermutlich brauche ich tatsächlich einen besseren OP und habe ja auch
schon Tipps bekommen. Vielen Dank dafür.
AnaLogExp schrieb:> lerne auch Lösungen zu suchen und zu finden,> wenn nicht alle Variablen dieser Welt Dir bekannt gemacht wurden.
Nein, das lerne ich nicht.. denn das ist absoluter Unsinn, so
vorzugehen.
Das ist wie: "Ich suche ein Lösung für ein Problem, das ich nicht
kenne."
Aber wenn das deine Art zu Arbeiten ist, dann sei dir das gegönnt.
Und wenn du nicht fähig bist, für deinen Sensor 10 Stützpunkte R über
Druck zu messen und hier zu posten, und dann noch festzulegen, welche
maximale Abweichung zwischen gemessenem Druck und tatsächlichem Druck
deine Anwendung erfordert, dann hast du einfach keine Ahung, wie man ein
Problem einigermaßen geordnet angeht.
Tut mir leid, dass ich dir zeigen wollte, dass du einen prinzipiellen
Fehler in deiner Herangehensweise an das Thema hast. Du hast dich auf
einen Lösungsweg eingeschossen und ignorierst die Rahmenparameter, die
es dabei unbedingt zu beachten gibt.
Harald Wilhelms schrieb:> Für eine zuverlässige und reproduzierbare Druckmessung erscheint mir> dieser Sensor jedenfalls nicht besonders gut geeignet zu sein.
doch klar, mit nem "besseren" OP geht das ;-)
AnaLogExp schrieb:> Ich hätte übrigens auch den LF356DP und ich werde jetzt im> Probierstadium keinen neuen OP-Amp besorgen.
Da ist auch ein alter Hund der hoehere Spannungen bevorzugt und mit 5V
nix anfangen kann.
Stimmt leider. Von meiner anfänglichen Idee des Potenzierers bin ich
abgekommen, Wolfgangs Parallelwiderstand läßt mich den unteren Bereich
stauchen, ein moderner Differenzverstärker würde meinen Offset
beseitigen. Ich glaube, das funktioniert so.
Besten Dank an alle.
AnaLogExp schrieb:> Perfekt reproduzierbar, hab ich sehr aufwendig überprüft, damit ich> nicht umsonst arbeite.
Wo liegt dann das Problem, eine solche Tabelle zu veröffentlichen:
Schlumpf schrieb:> Druck [bar] | Widerstandswert [Ohm]> --------------------------------------> |> |
Dann könnte man sehen, durch welche einfach zu realisierende Funktion
man die Messwerte grob linearisieren kann.
Ach so, hier hast du das Problem genannt:
AnaLogExp schrieb:> Die Kennlinie hab ich nicht, ich hatte sie mühsam an einigen> Stützstellen gemessen, um dabei festzustellen, daß sie näherungsweise> logarithmisch verlauft. Daher habe ich mir nur Anfangs- und Endwert> gemerkt: 20kOhm, 258Ohm.
Und alle anderen der mühsam ermittelten Messwerte hast du vergessen?
Also wenn ich mühsame Messungen mache, dann schreibe ich mir die
Ergebnisse immer auf. Es könnte ja sein, dass ich sie kurze Zeit später
noch einmal brauche ;-)
Eine Logarithmusfunktion ist das, was du in deinem ersten Beitrag
beschreibst, jedenfalls ganz und gar nicht, denn die sieht so aus:
http://upload.wikimedia.org/wikipedia/commons/a/ae/Log4.svg
Schon eher ist es eine Kehrwertfunktion. Das würde sich auch ganz gut
mit der Kennline auf Seite 3 des von Wolfgang verlinkten Datenblatt
decken:
http://media.digikey.com/pdf/Data%20Sheets/Interlink%20Electronics.PDF/FSR400_Series.pdf
Sieht dein Sensor denn wenigstens so ähnlich aus, wie die im Datenblatt
beschriebenen? Dann könnte man auf ein ähnliches Funktionsprinzip und
damit auch auf eine ähnliche Kennlinie hoffen.
Und eine Funktion die den Widerstandswert des Sensors in eine umgekehrt
proportionale Spannung umsetzt und dabei sogar noch den Offset
berücksichtigt, kannst du sehr einfach mit einem Opamp und ein paar
wenigen Widerständen (und ohne die Verwendung temperaturempfindlicher
Dioden) realisieren. Kommst du drauf, wie?
Ich hatte im ersten Post noch eine Stützstelle genannt. Vergessen habe
ich die Werte nicht, sondern sie haben meine Vermutung gestützt, daß die
Kennlinie in etwa logarithmisch verläuft, also habe ich sie nicht
aufgeschrieben, sonst hätte ich sie ja leicht posten können oder mir
genauso gut Werte ausdenken können.
Auch hatte ich gesagt, daß der Sensor den von Wolfgang genannten ähnlich
ist und eine sehr ähnliche Kennlinie hat.
Und natürlich suche ich bestenfalls die Umkehrfunktion und dachte, ein
Potenzierer würde das in etwa leisten.
Und ich würde sehr gerne drauf kommen, aber dafür reichen meine
Fähigkeiten und Wissen eben nicht, weswegen ich mich an dieses Forum
gewendet hatte.
AnaLogExp schrieb:> Auch hatte ich gesagt, daß der Sensor den von Wolfgang genannten ähnlich> ist und eine sehr ähnliche Kennlinie hat.
Sorry, das habe ich übersehen. Damit lässt sich ja schon mal etwas
anfangen:
Diese Kennlinie (erstes Bild im Anhang) verläuft im interessierenden
Bereich in der doppeltlogarithmischen Darstellung fast gerade, d.h.
Mehr noch: Die Gerade fällt ganz grob geschätzt mit 1 Dekade pro Dekade,
d.h. m ist ungefähr -1.
Damit ist
Das ist die Kehrwertfunktion, von der ich oben schrieb.
Ersetzt man x durch die Kraft F und y durch den Sensorwiderstand Rs,
ergibt sich
Die gesuchte Linearisierungschaltung soll idealerweise in Abhängigkeit
von der Kraft die Ausgangsspannung
liefern, wobei über die Parameter k und U0 der Bereich, in dem sich die
Ausgangsspannung bewegt, festgelegt wird. Setz man obige Näherungsformel
für F ein, ergibt sich
Es ist also eine Schaltung gesucht, die genau diese Gleichung für den
variablen Widerstand Rs umsetzt.
Der mit einem Opamp aufgebaute nichtinvertierende Verstärker
http://www.elektronik-kompendium.de/sites/slt/0210151.htm
hat die Verstärkung
d.h. seine Ausgangsspannung ist
Diese Gleichung sieht der gesuchten doch schon sehr ähnlich. Man muss
nur noch R2·Ue=k·c, R1=Rs und Ue=U0 setzen, dann hat man das Ziel
erreicht.
Die gesuchte Linearisierungschaltung ist also ein nichtinvertierender
Verstärker mit konstanter Eingangsspannung, bei dem der untere der
beiden Gegenkopplungswiderstände der Sensor ist.
Durch geeignete Wahl der Eingangsspannung und des oberen Widerstands
lässt sich der Ausgangsspannungsbereich so festlegen, dass sie den
Messbereich des ADCs möglichst vollständig abdeckt. Dazu wird die
Eingangsspannung recht klein gewählt, bspw. 0,1V. Das ist die Spannung,
die bei Rs = ∞ auch am Ausgang erscheint. R2 wählt man so, dass beim
kleinsten interessierenden Wert von Rs ein Eingangsspannug auf knapp 5V
verstärkt wird.
Das Ganze würde jetzt schon funktionieren, wenn nicht noch folgende
Einschränkung gegeben wäre:
AnaLogExp schrieb:> Ein druckempfindlicher R […], der an einer Seite mit 4.3V verbunden> ist
Beim nichtinvertierenden Verstärker liegt der untere Widerstand
normalerweise auf Masse. Man kann ihn aber auch mit 4,3V verbinden, muss
dann aber Ue und R2 entsprechend anpassen. Für Ue wählt man einen Wert,
der geringfügig unterhalb der 4,3V, also bspw. bei 4,2V liegt. Leider
ist die maximale Ausgangsspannung dann aber ebenfalls auf 4,2V begrenzt.
Besser wären knapp 5V.
Man kann die Ausgangsspannung dadurch anheben, dass man einen weiteren
Widerstand vom invertierenden Eingang des Opamp nach Masse schaltet.
Die obere Hälfte des zweiten Bilds im Anhang zeigt die aus diesen
Überlegungen heraus entstandene Linearisierungschaltung.
Um die Schaltung simulieren zu können, braucht man ein Modell für den
Kraftsensor. Da Spice nicht mit Kräften, sondern nur mit elektrischen
Größen umgehen kann, habe ich die Kraftquelle durch die Spannungsquelle
VKraft ersetzt, bei der 1 Volt der Gewichtskraft von 1 Gramm entspricht
Anmerkung: Da im Datenblatt das Gramm bzw. g als Krafteinheit genutzt
wird, steht g im nachfolgenden Text ebenfalls für ein "Kraftgramm".
Da die Kennlinie bis 2000g geht, liefert die Spannungsquelle also bis zu
2000V. Die nichtlineare Kennlinie des Sensors habe ich durch einen
Polygonzug mit 5 Stützstellen angenähert, zwischen denen in der
doppeltlogarithmischen Darstellung linear interpoliert wird:
1
F/g bzw. U/V R/kΩ
2
————————————————————————
3
26 200
4
28 75
5
60 30
6
70 20
7
2000 1.5
8
————————————————————————
Das dritte Bild im Anhang zeigt, dass diese Näherung ganz gut mit dem
Diagramm im Datenblatt übereinstimmt.
Das Simulationsergebnis ist in der unteren Hälfte des zweiten Bilds zu
sehen: Auf der x-Achse ist die Kraft von 0 bis 2000g aufgetragen. Die
blaue Kurve ist der Widerstand Rs (hier nichtlogarithmisch dargestellt).
Die Grüne Kurve ist die Ausgangsspannung der Schaltung, also das, was
der ADC zu sehen bekommt. Man sieht, dass fast der vollständige
Messbereich des ADCs (0-5V) genutzt wird und die Kurve über den gesamten
interessierenden Bereich ziemlich geradlinig verläuft. Die verbleibende
Nichtlinearität kann problemlos per Software korrigiert werden.
Um bei einer Versorgungsspannung von +5V mit der Ausgangsspannung einen
möglichst großen Bereich innerhalb von 0-5V abzudecken, braucht man
einen Rail-to-Rail-Opamp. Die Typen die du herumliegen hast (LM741CN,
TL072CP, TL081CDP, NE5534N, NE5532P und RC4558P) sind für den Betrieb an
5V leider denkbar ungeeignet, da für diese niedrige Versorgungsspannung
entweder gar nicht spezifiziert sind oder dabei nur einen sehr kleinen
Ausgangsspannungsbereich von etwa 2-3V haben.
Da dein Sensor andere Parameter als der hier betrachtete hat, müssen die
Widerstände in der Schaltung entsprechend angepasst werden.
In der Schaltung ist die gewünschte Abtastrate von 20kHz noch nicht
berücksichtigt. Mit einem sehr schnellen Opamp kann man sie vermutlich
erreichen, evtl. können aber auch die Widerstände so dimensioniert
werden, dass man auch mit einem langsameren Opamp auskommt.
Eine so ausführliche Antwort ist etwas ganz besonderes. Vielen Dank!
Hinsichtlich des Typs des OP wurde der TS912 vorgeschlagen. Ist das eine
gute Wahl? Dann werde ich mir den jetzt erstmal besorgen.
AnaLogExp schrieb:> Hinsichtlich des Typs des OP wurde der TS912 vorgeschlagen. Ist das eine> gute Wahl?
Ja.
Der TS912 hat eine GBW von 0,8MHz und ein Aol von 80dB.
Damit habe ich mal das Frequenzverhalten simuliert (frequenzgang1.png).
Die Grenzfrequenz liegt bei 34kHz, und bei 20kHz ist die Dämpfung
-1,27dB (13,6%), was nicht sehr berauschend ist.
Da die Grenzfrequenz des Verstärkers umgekehrt proportional zur
genutzten Verstärkung ist, kann man das Frequenzverhalten verbessern,
wenn man die Verstärkung reduziert und zum Ausgleich die konstante
Eingangsspannung erhöht. In kraftsensor2.png ist die geänderte
Dimensionierung der Widerstände gezeigt.
Die Grenzfrequenz liegt jeztzt bei 190kHz, und bei 20kHz ist die
Dämpfung nur noch 0,05dB (0,57%), was schon ziemlich gut ist
(frequenzgang2.png).
Beliebig weit kann man dieses Spiel aber nicht treiben, da dabei auch
der Strom durch den Sensor steigt. In der gezeigten Dimensionierung
liegt er mit 1,3mA aber noch im akzeptablen Bereich.
Der von Helmut vorgeschlagene OPA2340 (GBW=5,5MHz, Aol=124dB) kann
natürlich alles noch ein ganzes Stück besser. Da der Kraftsensor aber
kein Präzisionsinstrumentist, dürfte auch der billige TS912 ausreichen.
Man koennte sich nun Fragen was ein Drucksensor mit 20kHz soll.
Schallwellen messen? Was ist denn die spezifizierte Bandbreite des
Sensors, was ist die Bandbreite der Anwendung ?