Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

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


Starten der Anwendung

Wählen Sie DebuggenARM  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

  1. Rasenregner
  2. Nudelholz
  3. Bildsensor mit geringer Leistung und hoher Bildrate
  4. Raspberry Pi 1-Draht digitaler Thermometersensor (DS18B20)
  5. Analoger Sensoreingang Raspberry Pi mit einem MCP3008:Verkabelung/Installation/Basisprogramm
  6. Hochempfindlicher Wassersensor am MCP3008
  7. Weicher Sensor erhöht die Fingerspitzenempfindlichkeit für Roboter
  8. ToughMet® 3TS-Röhre TS105 (C72900)
  9. Hochdruckpumpen für die Bewässerung
  10. Was ist eine automatische Wasserpumpe?