Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Capteur d'eau haute sensibilité sur MCP3008

Utiliser le Phantom YoYo haute sensibilité Capteur d'eau sur le CAN MCP3008 8 canaux 10 bits avec interface SPI.

Introduction

Contexte

Dans un projet à venir, j'utilise le MCP3008 pour surveiller plusieurs capteurs. Dans ce projet, je souhaite couvrir les détails de l'utilisation du capteur d'eau à haute sensibilité Phantom YoYo sur le CAN MCP3008 8 canaux 10 bits avec interface SPI avec Raspberry Pi 2, Windows 10 IoT Core et C#.

Utilisation du MCP3008

Un CAN est un convertisseur analogique-numérique. Un signal analogique est converti en un nombre et lu dans votre application. Le MCP3008 est un CAN 10 bits, ce qui signifie qu'il utilise 10 bits pour représenter la valeur sur le canal. La valeur sera représentée par un nombre de 0 à 1023 (pour un total de 1024 valeurs possibles). Ce nombre est ensuite converti en une valeur significative. Par exemple, disons que je veux mesurer une tension sur l'un des canaux et que la valeur lue sur le canal est de 523. Je sais que la tension maximale est de 3,3V. La tension sur le canal est calculée à l'aide de la formule

Valeur / Valeur Max * Vref

résolution de ma tension que j'obtiens

523 / 1023 * 3.3

qui donne une valeur de 1.687V . J'ai calculé cette valeur en normalisant d'abord la lecture, puis en multipliant la valeur de lecture normalisée par la valeur maximale connue de 3,3 V.

Lorsqu'il est important d'obtenir une mesure de tension précise, je recommande fortement de mesurer la tension réelle du Raspberry Pi et d'utiliser cette valeur dans vos calculs pour obtenir une conversion plus précise de l'ADC. Lorsque j'ai mesuré le mien, j'ai trouvé que la sortie était de 3,301 V (la valeur trouvée dans le code source). Non loin de la réalité, cependant, d'autres types de planches peuvent varier davantage.

Bien sûr, cela a du sens lorsque je veux calculer la tension, mais chaque capteur a une signification différente. Pour chaque capteur connecté à un canal sur le MCP3008, j'ai besoin de connaître les détails spécifiques et d'interpréter la lecture de manière appropriée.

Le câblage du MCP3008 est simple. La puce elle-même est marquée d'une encoche à une extrémité qui représente les broches 1 et 16 (voir la fiche technique ici).

Les broches 1 à 8 sont les huit broches d'entrée et sont appelées canaux 0 à 7. Le canal 0 est la broche 1. La broche 16 est Vdd et se connecte à la source de tension (soit 3,3 V ou 5 V sur le Raspberry Pi). La broche 9 se connecte à la broche de terre du Raspberry Pi. Les broches 15 et 14 sont utilisées pour référencer le circuit analogique. La broche 15 est Vref et est utilisée par le MCP3008 pour déterminer quelle serait la tension maximale sur l'un des canaux. Dans mon exemple, j'ai connecté cette broche à la source 3,3 V du Raspberry Pi. Lorsqu'une tension est appliquée à l'un des canaux, le MCP ajuste la lecture de sorte que 1023 représente 3,3 V et 0 représente 0 V. Cela permet au calcul que j'ai utilisé ci-dessus de fonctionner. La broche 14 est la broche de masse analogique. Dans mon exemple, je l'ai connecté à la broche de masse du Raspberry Pi. S'il est nécessaire de garder le circuit analogique isolé du circuit numérique, cette broche sera connectée à la terre sur le circuit analogique. Les quatre broches restantes, 10 à 13, sont les broches de l'interface série SPI utilisées pour communiquer avec le Raspberry Pi. Le schéma de câblage que j'ai inclus avec ce projet montre comment connecter ces broches au Raspberry Pi.

Dans ce projet, j'ai inclus une mesure de tension simple pour démontrer ce concept. La lecture du capteur d'eau démontrera une interprétation alternative de la valeur lue à partir du canal.

Présentation du projet

Le capteur

Dans ce projet, j'ai connecté deux circuits en un. Le premier est un simple potentiomètre qui permettra de faire varier une tension sur l'une des broches du MCP3008 (canal 0). Ceci est simplement pour montrer comment fonctionne le MCP3008. Le deuxième circuit est le capteur d'eau connecté à un deuxième canal (canal 1) sur le MCP3008.

Le capteur d'eau Phantom YoYo a trois broches. La première broche est la terre (étiquetée "-" sur l'appareil) qui sera connectée à la broche de terre du Raspberry Pi. La broche suivante est l'alimentation (étiquetée « + » sur l'appareil) et elle sera connectée à la broche 3,3 V du Raspberry Pi (l'appareil peut également être connecté à 5 V). La troisième et dernière broche est le signal (étiqueté 's' sur l'appareil. Cette broche a le signal de tension qui varie en fonction de la quantité d'eau sur l'appareil. Notez que cet appareil n'est PAS un capteur de niveau d'eau. Il détecte simplement les variations quantités d'eau qui entrent en contact avec l'appareil. La broche source sera connectée à l'une des entrées du MCP3008.

Le Circuit

Le circuit pour supporter le capteur est vraiment simple. L'appareil se connecte directement à la carte Raspberry Pi sans avoir besoin de composants supplémentaires.


Logiciel de projet

L'Application

L'application que j'ai créée pour ce projet est une Application Windows universelle et montre deux mètres dans la vue principale. Le premier compteur indique la tension actuelle mesurée sur le circuit du potentiomètre. La seconde montre une lecture du capteur d'eau qui est normalisée à une valeur de 0 à 100. Le logiciel permet également un étalonnage du capteur d'eau. Le lien vers le code source se trouve près du bas de la page.

La bibliothèque MCP3008

Le projet logiciel contient également un projet séparé pour interagir avec le MCP3008. Ce code peut être utilisé dans votre application pour intégrer facilement la puce MCP3008 dans vos projets.

Pour l'utiliser, déclarez d'abord un objet de classe comme suit :

privé Mcp3008 _mcp3008 =null ;

Dans le OnNavigatedTo événement ajouter le code suivant :

_mcp3008 =nouveau Mcp3008(0) ;

await_mcp3008.Initialize();

Pour lire la tension du canal 0, utilisez la ligne de code suivante :

tension flottante =_mcp3008.Read(Mcp3008.Channels.Single0).AsScaledValue(3.3f);

Notez l'utilisation de Channel.Single0 qui indique que la valeur est lue à partir d'un canal. Il est possible de spécifier que l'appareil lit la différence entre deux broches. Cela pourrait être spécifié comme Mcp3008.Channels.Differential0 qui indiquerait que la mesure doit être prise comme étant la différence entre le canal 0 et le canal 1, où le canal 0 est positif et le canal 1 est négatif. Le code source est un document et fournira des info-bulles expliquant chaque valeur.

Lorsque vous avez fini d'utiliser l'objet, généralement dans votre OnNavigatedFrom l'événement dispose de l'objet.

_mcp3008.Dispose();

_mcp3008 =null ;

Mise en route

Assembler le circuit

Utilisez ce guide pour assembler le circuit en utilisant le schéma situé près du bas de la page comme guide (notez que la couleur des fils est facultative et a été sélectionnée pour rendre le circuit facile à suivre quand il est construit).

Remarque : ce projet utilise un multimètre en option pour mesurer la tension aux bornes du potentiomètre. Ceci est fait pour comparer la valeur à la valeur lue par le MCP3008. Notez que ceci est facultatif. Si vous n'avez pas de multimètre, vous ne pourrez pas comparer cette tension. Ceci est fait pour montrer que la valeur lue par le MCP3008 est la même que la valeur lue par le multimètre. Réglez le multimètre pour mesurer la tension continue comme indiqué dans l'image ci-dessous (votre multimètre peut sembler différent).

Multimètre Fluke 87


Démarrage de l'application

Choisissez DéboguerARM  configuration et Machine distante . Faites maintenant un clic droit sur le projet et sélectionnez Propriété, puis  cliquez sur Déboguer étiqueter. Ensuite, placez l'adresse IP du Raspberry Pi 2 dans le champ Machine distante et décochez Utiliser l'authentification .

Appuyez sur F5 . L'application se déploiera sur l'appareil, ce qui peut prendre quelques minutes la première fois.

La vidéo ci-dessous est une démonstration de l'application :

Remarque : L'application utilise une jauge linéaire à 360° pour afficher la quantité d'eau. Je dois noter que ce capteur n'a aucune corrélation linéaire ou aucune autre corrélation à ma connaissance entre la quantité d'eau et la lecture du capteur. Il produit des valeurs plus petites lorsqu'il y a quelques gouttes par rapport à des valeurs plus élevées lorsqu'il y a plus d'eau. J'utilise davantage la jauge linéaire pour aider à comprendre le concept de l'ADC. Il est possible de câbler le capteur d'eau de la même manière que j'ai câblé mon capteur de tension alternative opto-isolé pour produire un signal haut ou bas qui pourrait être capté par une broche GPIO. Cet appareil peut être câblé pour fournir un signal humide ou sec. Cela dit, j'attache ce capteur d'eau à un CAN parce que je veux détecter la différence entre un peu d'eau et beaucoup d'eau et l'approche décrite dans ce projet atteint cet objectif.

Source :   Capteur d'eau haute sensibilité sur MCP3008


Processus de fabrication

  1. arroseur de pelouse
  2. Le capteur d'image est doté d'une faible consommation et d'une fréquence d'images élevée
  3. Capteur de thermomètre numérique Raspberry Pi à 1 fil (DS18B20)
  4. Entrée de capteur analogique raspberry pi utilisant un MCP3008 :câblage/installation/programme de base
  5. Capteur d'eau haute sensibilité sur MCP3008
  6. Le capteur souple augmente la sensibilité du bout des doigts pour les robots
  7. Tube ToughMet® 3TS TS105 (C72900)
  8. Pompes à haute pression d'eau pour l'irrigation
  9. Qu'est-ce qu'une pompe à eau automatique ?