Lesen und Kalibrieren analoger Sensoren

Ich habe eine meiner Meinung nach einfache Frage zur Verwendung und Datenkalibrierung variabler analoger Sensoren (z. B. eines Kraftmesswiderstands). Wenn mehr Druck auf diesen Sensor ausgeübt wird, ändert sich sein Widerstand. Dieser Wert kann von einem Arduino-Gerät mit der Funktion analogRead() erfasst werden, die einen Wert von 0-1024 ausgibt, wobei 1024 kein Druck und 0 der größte Druck ist. Ich gehe davon aus, dass analogRead die Spannung misst, aber ich könnte mich irren.

Meine Frage lautet: Wenn ich diese Geräte von einer Batterie mit Strom versorge, wenn die Spannung der Batterie mit der Verwendung abfällt, wirkt sich dies auf den von einem Arduino oder einem anderen Gerät gelesenen Wert aus? Der Wert scheint sich nicht linear zu ändern, wenn mehr Druck ausgeübt wird. Würde also die Multiplikation des abgelesenen Werts mit der Batteriespannung eine konstante Arbeit ergeben, wenn sich der Wert mit der Batteriespannung ändert?

Vielen Dank für Ihre Hilfe!

Wenn Sie eine Batterie verwenden, sollten Sie die Spannung regulieren. Dies löst alle Probleme, die Sie beunruhigen, und garantiert, dass Ihre Schaltung gut läuft.
@vini_i Einige Sensoren sind absolut, einige Sensoren sind ratiometrisch. Wenn ein Sensor bezüglich der Versorgungsspannung ratiometrisch ist und der A/D auf dieselbe Versorgungsspannung bezogen ist, dann ist der Messwert eines bestimmten Stimulus unabhängig von der Versorgungsspannung gleich. (Die nichtlineare Natur des Sensorreizes ist ein ganz anderer Aspekt.)

Antworten (1)

Sie haben Recht: analogRead() gibt einen Wert zurück, der die proportionale Spannung des Eingangs zur analogen Referenzspannung angibt, die entweder die Versorgungsspannung, 5 V oder 3,3 V, oder ein anderer Wert ist, abhängig vom verwendeten Arduino und Ihren Einstellungen.

Wenn Sie den Arduino mit der gleichen Batterie wie Ihren Sensor versorgen, wenn die Spannung Ihrer Batterie unter die geregelte Spannung des Arduino fällt, wenn sie immer noch hoch genug ist, um den Arduino mit Strom zu versorgen, gibt die Funktion analogRead() weiterhin eine proportionale Spannung zwischen 0 V und zurück deine Batteriespannung. Es ist also nicht nötig, das Ergebnis mit einer Konstanten zu multiplizieren, da dies "automatisch" ist.

Wenn Sie jedoch den Sensor von einer Batterie und Ihr Arduino von einer anderen Quelle mit Strom versorgen, müssen Sie die Batteriespannung kennen und Ihren analogRead () -Wert proportional anpassen.

Verwenden Sie ein Multimeter, um sicherzustellen, dass sich die in den Arduino eingespeiste Spannung tatsächlich wie erwartet ändert.

Bitte zeigen Sie auch ein Diagramm Ihrer Schaltung, wenn möglich.

Danke, tolle Antwort. Ich wusste nicht, dass analogRead von der Eingangsspannung referenziert wird! Ich verwende einen 3,7-V-Lipo-Akku mit einem 3-V-System (er wird aufgeladen, bevor er 3,7 V erreicht), daher sollte die Batteriespannung immer hoch genug sein, um das von mir verwendete Arduino-Board mit Strom zu versorgen.
Denken Sie daran, dass die Eingangsspannung durch den eingebauten Regler des Arduino geht, es sei denn, Sie speisen direkt den 3,3-V- (oder 5-V-) Pin des Arduino.
Angenommen, ich versorge die Platine mit der Batteriespannung und versorge die Sensoren mit der geregelten Spannung - wird analogRead von der geregelten Spannung oder der Eingangsspannung referenziert?
Die analoge Referenz wäre die Spannung, die Ihr Arduino-Board versorgt, ODER Sie können eine andere Referenz am AREF-Pin eingeben. Siehe den oben genannten Artikel ( arduino.cc/en/Reference/AnalogReference ). Beachten Sie jedoch, dass externe Referenzen und analoge Eingänge innerhalb von 0-5 V liegen müssen.