Hochempfindlicher Wassersensor am MCP3008
Verwenden Sie den Phantom YoYo High Sensitivity Wassersensor am MCP3008 8-Kanal 10-Bit ADC mit SPI-Schnittstelle.
Einführung
Hintergrund
In einem bevorstehenden Projekt verwende ich den MCP3008, um mehrere Sensoren zu überwachen. In diesem Projekt möchte ich die Details zur Verwendung des Phantom YoYo High Sensitivity Water Sensors auf dem MCP3008 8-Kanal-10-Bit-ADC mit SPI-Schnittstelle mit Raspberry Pi 2, Windows 10 IoT Core und C# behandeln.
Verwendung des MCP3008
Ein ADC ist ein Analog-Digital-Wandler. Ein analoges Signal wird in eine Zahl umgewandelt und in Ihre Anwendung eingelesen. Der MCP3008 ist ein 10-Bit-ADC, was bedeutet, dass er 10 Bit verwendet, um den Wert auf dem Kanal darzustellen. Der Wert wird als Zahl von 0 bis 1023 dargestellt (für insgesamt 1024 mögliche Werte). Diese Zahl wird dann in einen sinnvollen Wert umgewandelt. Nehmen wir zum Beispiel an, ich möchte eine Spannung an einem der Kanäle messen und der aus dem Kanal gelesene Wert ist 523. Ich weiß, dass die maximale Spannung 3,3 V beträgt. Die Spannung am Kanal wird mit der Formel berechnet
Wert / Maximalwert * Vref
Auflösung für meine Spannung, die ich bekomme
523 / 1023 * 3.3
was einen Wert von 1,687 V ergibt . Ich habe diesen Wert berechnet, indem ich zuerst den Messwert normalisiert und dann den normalisierten Messwert mit dem bekannten Maximalwert von 3,3 V multipliziert habe.
Wenn eine genaue Spannungsmessung wichtig ist, empfehle ich dringend, die tatsächliche Spannung des Raspberry Pi zu messen und diesen Wert in Ihren Berechnungen zu verwenden, um eine genauere Umrechnung vom ADC zu erhalten. Als ich meinen gemessen habe, stellte ich fest, dass der Ausgang 3,301 V betrug (der Wert, der im Quellcode gefunden wurde). Nicht weit von der Realität entfernt können jedoch andere Arten von Boards mehr variieren.
Natürlich macht das Sinn, wenn ich Spannung berechnen möchte, aber jeder Sensor hat eine andere Bedeutung. Für jeden an einen Kanal des MCP3008 angeschlossenen Sensor muss ich die spezifischen Details kennen und den Messwert entsprechend interpretieren.
Die Verkabelung des MCP3008 ist unkompliziert. Der Chip selbst ist an einem Ende mit einer Kerbe gekennzeichnet, die die Pins 1 und 16 darstellt (siehe Datenblatt hier).
Pins 1 bis 8 sind die acht Eingangspins und werden als Kanäle 0 bis 7 bezeichnet. Kanal 0 ist Pin 1. Pin 16 ist Vdd und wird mit der Spannungsquelle verbunden (entweder 3,3 V oder 5 V an der Raspberry Pi). Pin 9 ist mit dem Massepin des Raspberry Pi verbunden. Die Pins 15 und 14 werden verwendet, um die analoge Schaltung zu referenzieren. Pin 15 ist Vref und wird vom MCP3008 verwendet, um die maximale Spannung an einem der Kanäle zu bestimmen. In meinem Beispiel habe ich diesen Pin mit der 3.3V-Quelle auf dem Raspberry Pi verbunden. Wenn an einen der Kanäle eine Spannung angelegt wird, passt der MCP den Messwert so an, dass 1023 3,3 V und 0 0 V darstellt. Dies ermöglicht die Berechnung, die ich oben verwendet habe. Pin 14 ist der analoge Massepin. In meinem Beispiel habe ich es mit dem Massepin des Raspberry Pi verbunden. Wenn die analoge Schaltung von der digitalen Schaltung isoliert bleiben muss, wird dieser Pin mit Masse auf der analogen Schaltung verbunden. Die verbleibenden vier Pins, 10 bis 13, sind die Pins der seriellen SPI-Schnittstelle, die für die Kommunikation mit dem Raspberry Pi verwendet werden. Der Schaltplan, den ich diesem Projekt beigefügt habe, zeigt, wie man diese Pins mit dem Raspberry Pi verbindet.
In diesem Projekt habe ich eine einfache Spannungsmessung aufgenommen, um dieses Konzept zu demonstrieren. Der Messwert des Wassersensors zeigt eine alternative Interpretation des aus dem Kanal gelesenen Werts.
Projektübersicht
Der Sensor
In diesem Projekt habe ich zwei Stromkreise in einem verbunden. Das erste ist ein einfaches Potentiometer, mit dem eine Spannung an einem der MCP3008-Pins (Kanal 0) variiert werden kann. Dies dient lediglich dazu, die Funktionsweise des MCP3008 zu demonstrieren. Der zweite Kreis ist der Wassersensor, der an einen zweiten Kanal (Kanal 1) des MCP3008 angeschlossen ist.
Der Phantom YoYo Wassersensor hat drei Pins. Der erste Pin ist Masse (auf dem Gerät mit „-“ gekennzeichnet), die mit dem Massepin des Raspberry Pi verbunden wird. Der nächste Pin ist die Stromversorgung (beschriftet mit „+“ auf dem Gerät) und wird mit dem 3.3V-Pin des Raspberry Pi verbunden (das Gerät kann auch an 5V angeschlossen werden). Der dritte und letzte Pin ist das Signal (beschriftet mit 's' auf dem Gerät. Dieser Pin hat das Spannungssignal, das je nach Wassermenge auf dem Gerät variiert. Beachten Sie, dass dieses Gerät KEIN Wasserstandssensor ist. Es erkennt lediglich Schwankungen Wassermengen, die mit dem Gerät in Kontakt kommen. Der Quellen-Pin wird mit einem der Eingänge am MCP3008 verbunden.
Die Rennstrecke
Die Schaltung zur Unterstützung des Sensors ist wirklich einfach. Das Gerät wird direkt mit dem Raspberry Pi verbunden, ohne dass zusätzliche Komponenten erforderlich sind.
Projektsoftware
Die Anwendung
Die Anwendung, die ich für dieses Projekt erstellt habe, ist eine Universelle Windows-Anwendung und zeigt in der Hauptansicht zwei Meter an. Das erste Messgerät zeigt die aktuelle Spannung an, die an der Potentiometerschaltung gemessen wird. Die zweite zeigt einen Messwert des Wassersensors, der auf einen Wert von 0 bis 100 normiert ist. Die Software ermöglicht auch eine Kalibrierung des Wassersensors. Den Link zum Quellcode finden Sie unten auf der Seite.
Die MCP3008-Bibliothek
Das Softwareprojekt enthält auch ein separates Projekt für die Interaktion mit dem MCP3008. Dieser Code kann in Ihrer Anwendung verwendet werden, um den MCP3008-Chip einfach in Ihre Projekte zu integrieren.
Um es zu verwenden, deklarieren Sie zuerst ein Klassenobjekt wie folgt:
privater Mcp3008 _mcp3008 =null;
Im OnNavigatedTo Event folgenden Code hinzufügen:
_mcp3008 =neuer Mcp3008(0);
await_mcp3008.Initialize();
Um die Spannung von Kanal 0 zu lesen, verwenden Sie die folgende Codezeile:
Erhaltungsspannung =_mcp3008.Read(Mcp3008.Channels.Single0).AsScaledValue(3.3f);
Beachten Sie die Verwendung von Channel.Single0, die angibt, dass der Wert von einem Kanal gelesen wird. Es kann festgelegt werden, dass das Gerät die Differenz zwischen zwei Pins liest. Dies könnte als Mcp3008.Channels.Differential0 angegeben werden, was bedeutet, dass die Messung als Unterschied zwischen Kanal 0 und Kanal 1 genommen werden sollte, wobei Kanal 0 positiv und Kanal 1 negativ ist. Der Quellcode ist ein Dokument und bietet Tooltips, die jeden Wert erklären.
Wenn Sie mit der Verwendung des Objekts fertig sind, normalerweise in Ihrem OnNavigatedFrom Event das Objekt entsorgen.
_mcp3008.Dispose();
_mcp3008 =null;
Erste Schritte
Bauen Sie die Schaltung zusammen
Verwenden Sie diese Anleitung, um die Schaltung zusammenzubauen, und verwenden Sie das Diagramm unten auf der Seite als Richtlinie (beachten Sie, dass die Farbe der Drähte optional ist und ausgewählt wurde, um die Schaltung leicht zu verfolgen wenn es gebaut wird).
Hinweis: Dieses Projekt verwendet ein optionales Multimeter, um die Spannung am Potentiometer zu messen. Dies geschieht, um den Wert mit dem vom MCP3008 gelesenen Wert zu vergleichen. Beachten Sie, dass dies optional ist. Wenn Sie kein Multimeter haben, können Sie diese Spannung nicht vergleichen. Dies geschieht, um zu zeigen, dass der vom MCP3008 abgelesene Wert mit dem vom Multimeter abgelesenen Wert übereinstimmt. Stellen Sie das Multimeter so ein, dass es die Gleichspannung misst, wie in der Abbildung unten gezeigt (Ihr Multimeter sieht möglicherweise anders aus).
Fluke 87 Multimeter
- Platziere den T-förmigen Schuster am linken Ende der Barde (wo die Zahlen bei 1 beginnen). Die beiden Pins ganz links befinden sich in E3 und F3 auf der Tafel. Die beiden Pins ganz rechts befinden sich bei E22 und F22
- Platzieren Sie das 50K Ω Potentiometer an den Positionen J56, J58 und J60, wobei der Einstellknopf zur 5 V-Seite des Steckbretts zeigt
- Platzieren Sie den 10 K-Widerstand zwischen I58 und I53
- Setzen Sie den MCP3008 in E31 . ein zu E38 und F31 zu F38 (die Ecke des Chips mit dem eingerückten Kreis wird bei E31 platziert )
- Optional: Platzieren Sie ein Ende eines schwarzen Pullovers von Mann zu Mann an Position G60 (Wenn Sie ein Multimeter verwenden, schließen Sie das schwarze Kabel an dieses Kabel an)
- Optional: Platzieren Sie ein Ende eines roten Pullovers von Mann zu Mann an Position G58 (Wenn Sie ein Multimeter verwenden, schließen Sie das rote Kabel an dieses Kabel an.)
- Schließen Sie ein blaues Stecker-zu-Stecker-Überbrückungskabel zwischen F60 . an und Boden
- Schließen Sie ein orangefarbenes Stecker-zu-Stecker-Überbrückungskabel zwischen F58 . an und C31 (Kanal 1 des MCP3008)
- Schließen Sie ein orangefarbenes Stecker-zu-Stecker-Überbrückungskabel zwischen F53 . an und 3,3 V+
- Schließen Sie ein rotes Stecker-zu-Stecker-Überbrückungskabel zwischen J31 . an und 3,3 V
- Schließen Sie ein rotes Stecker-zu-Stecker-Überbrückungskabel zwischen J32 . an und 3,3 V
- Schließen Sie ein schwarzes Stecker-zu-Stecker-Überbrückungskabel zwischen J33 . an und Boden
- Schließen Sie ein grünes Stecker-zu-Stecker-Überbrückungskabel zwischen J34 . an und A14
- Verbinden Sie ein gelbes Stecker-zu-Stecker-Überbrückungskabel zwischen J35 und A13
- Schließen Sie ein weißes Stecker-zu-Stecker-Überbrückungskabel zwischen J36 . an und A12
- Schließen Sie ein grünes Stecker-zu-Stecker-Überbrückungskabel zwischen J37 . an und J14
- Schließen Sie ein schwarzes Stecker-zu-Stecker-Überbrückungskabel zwischen J38 . an und Boden
- Verbinde das weibliche Ende eines blauen Pullovers von weiblich zu männlich mit dem S auf den Wassersensor stecken. Verbinden Sie das männliche Ende mit C32 (Kanal 1 am MCP3008)
- Verbinden Sie das weibliche Ende einer roten Steckbrücke von Buchse zu Stecker mit dem Stift am Wassersensor. Verbinden Sie das männliche Ende mit 3,3 V
- Verbinden Sie das weibliche Ende eines schwarzen Pullovers mit weiblicher zu männlicher Verbindung mit dem – auf den Wassersensor stecken. Verbinden Sie das männliche Ende mit Masse
- Optional: Schließen Sie das schwarze Kabel aus Schritt 5 an den gemeinsamen Anschluss Ihres Multimeters an (verwenden Sie einen Haken-Clip-Stecker für beste Ergebnisse)
- Optional: Schließen Sie das rote Kabel aus Schritt 6 an den Spannungsanschluss Ihres Multimeters an (verwenden Sie einen Hakenklemmentyp für beste Ergebnisse)
- Schließe das Flachbandkabel zwischen dem Raspberry Pi und dem Schuster an
Starten der Anwendung
Wählen Sie Debuggen , ARM Konfiguration und Remote-Computer . Klicken Sie nun mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaft und dann Klicken Sie auf Debuggen Schild. Geben Sie als Nächstes die IP-Adresse des Raspberry Pi 2 in das Feld Remote-Computer ein und deaktivieren Sie Authentifizierung verwenden .
Drücken Sie F5 . Die Anwendung wird auf dem Gerät bereitgestellt, was beim ersten Mal einige Minuten dauern kann.
Das folgende Video zeigt die Anwendung:
Hinweis: Die Anwendung verwendet ein lineares 360°-Messgerät, um die Wassermenge anzuzeigen. Ich muss beachten, dass dieser Sensor keine lineare Korrelation oder eine andere mir bekannte Korrelation zwischen der Wassermenge und dem Messwert des Sensors hat. Es erzeugt kleinere Werte, wenn es einige Tropfen gibt, im Vergleich zu höheren Werten, wenn mehr Wasser vorhanden ist. Ich verwende das lineare Messgerät eher, um das Konzept des ADC zu verstehen. Es ist möglich, den Wassersensor ähnlich wie meinen optoisolierten Wechselspannungssensor zu verdrahten, um entweder ein hohes oder ein niedriges Signal zu erzeugen, das von einem GPIO-Pin aufgenommen werden könnte. Dieses Gerät kann so verdrahtet werden, dass es ein nasses oder trockenes Signal liefert. Trotzdem schließe ich diesen Wassersensor an einen ADC an, weil ich den Unterschied zwischen wenig Wasser und viel Wasser erkennen möchte und der in diesem Projekt beschriebene Ansatz dieses Ziel erreicht.
Quelle: Hochempfindlicher Wassersensor am MCP3008
Herstellungsprozess
- Rasenregner
- Nudelholz
- Bildsensor mit geringer Leistung und hoher Bildrate
- Raspberry Pi 1-Draht digitaler Thermometersensor (DS18B20)
- Analoger Sensoreingang Raspberry Pi mit einem MCP3008:Verkabelung/Installation/Basisprogramm
- Hochempfindlicher Wassersensor am MCP3008
- Weicher Sensor erhöht die Fingerspitzenempfindlichkeit für Roboter
- ToughMet® 3TS-Röhre TS105 (C72900)
- Hochdruckpumpen für die Bewässerung
- Was ist eine automatische Wasserpumpe?