Table des matières:

Contrôleur de réseau de capteur de température tolérant aux pannes : 8 étapes
Contrôleur de réseau de capteur de température tolérant aux pannes : 8 étapes

Vidéo: Contrôleur de réseau de capteur de température tolérant aux pannes : 8 étapes

Vidéo: Contrôleur de réseau de capteur de température tolérant aux pannes : 8 étapes
Vidéo: Capteurs Industriels 4- Capteurs de température 2024, Novembre
Anonim
Contrôleur de réseau de capteur de température à tolérance de panne
Contrôleur de réseau de capteur de température à tolérance de panne

Ce Instructable vous montre comment convertir une carte Arduino Uno en un contrôleur à usage unique pour un ensemble de capteurs de température DS18B20 capables d'isoler automatiquement les capteurs défectueux.

Le contrôleur peut gérer jusqu'à 8 capteurs avec Arduino Uno. (Et bien plus avec Arduino Mega ou avec une légère modification logicielle.)

Étape 1: Histoire derrière…

Il y a quelques années, j'ai installé un réseau de capteurs de température DS18B20 dans la serre de mon père pour mon contrôleur de chauffage basé sur pi. Malheureusement, la fiabilité du contrôleur était médiocre, principalement en raison de pannes fréquentes des capteurs. J'ai essayé plusieurs configurations - alimentation parasite, alimentation directe, connexion du réseau à pi ainsi que connexion à une carte personnalisée basée sur Atmega (dont le but principal était de piloter des moteurs de vanne).

Pire, la fiabilité du réseau de capteurs a baissé principalement pendant les nuits d'hiver alors qu'il n'y avait quasiment aucun problème en été ! Mais qu'est ce qu'il se passe ici?

Pour déterminer quel capteur est à l'origine du problème, il est apparu nécessaire de les activer/désactiver un par un ou d'activer n'importe quelle combinaison d'entre eux.

Étape 2: Comment ça marche

DS18B20 (le capteur de température) utilise un protocole propriétaire à 1 fil qui permet à plusieurs capteurs de partager une liaison de données commune (ce fil). Cette liaison de données commune est connectée à l'une des broches GPIO d'Arduino et à + 5 V via une résistance de rappel - rien de rare, de nombreux instructables couvrent cette configuration.

L'astuce est que les fils d'alimentation de chaque capteur sont connectés à leurs propres broches GPIO (dédiées), de sorte qu'ils peuvent être allumés et éteints séparément. Par exemple, si un capteur a un fil Vcc connecté à la broche #3 et GND à la broche #2, le réglage de la broche #3 sur HIGH alimente le capteur (pas de surprise) tandis que le réglage de la broche #2 sur LOW fournit la masse (une petite surprise pour moi). Le réglage des deux broches en mode d'entrée isolera (presque) complètement le capteur et son câblage - quelle que soit la panne (par exemple un raccourci) qui se produit à l'intérieur, cela n'interférera pas avec les autres.

(Il est juste de dire que connecter le fil de données à quelque chose d'autre connecté d'une manière ou d'une autre à Arduino provoquera effectivement des interférences, mais c'est presque impossible dans ma configuration).

Notez que le DS18B20 consomme jusqu'à 1, 5 mA tandis qu'une broche Arduino peut générer / absorber jusqu'à 40 mA, il est donc parfaitement sûr d'alimenter les capteurs directement par les broches GPIO.

Étape 3: Matériel et outils

Matériel

  • 1 carte Arduino UNO
  • 3 en-têtes à broches femelles: 1 × 4, 1 × 6 et 1 × 6 (ou plus long - je les ai coupés d'un en-tête 1 × 40)
  • une colle
  • un morceau de fil de cuivre nu (au moins 10 cm)
  • un ruban isolant
  • consommables de soudure (fil, flux…)

Outils

  • matériel de soudure (fer, supports, …)
  • petite pince coupante

Étape 4: Réparez les choses ensemble

Réparez les choses ensemble
Réparez les choses ensemble

Collez les en-têtes de broches femelles sur les en-têtes de la carte Arduino:

  1. En-tête 1 × 4 à côté de l'en-tête de broche "analogique", côte à côte avec les broches A0-A4
  2. En-tête 1 × 6 à côté du premier en-tête de broche numérique, côte à côte avec les broches 2 à 7
  3. En-tête 1 × 6 à côté du deuxième en-tête de broche numérique, côte à côte avec les broches 8 à 13

Notez que mes en-têtes sont un peu plus longs… cela n'a ni contre ni pour, je suppose.

Étape 5: câbler les choses ensemble

Câbler les choses ensemble
Câbler les choses ensemble
Câbler les choses ensemble
Câbler les choses ensemble

Câblage de la ligne de bus 1 fil:

  1. Connectez tous les fils des en-têtes collés du côté « numérique » (à côté des broches 2 à 13) en leur soudant un morceau de fil nu
  2. Soudez l'extrémité de ce fil au fil à broche SCL (connecté en interne à A5)
  3. Connectez tous les fils de l'en-tête collé du côté « analogique » (broches A0-A3) en y soudant un morceau de fil nu
  4. Soudez l'extrémité de ce fil aux fils A4 et A5 (j'ai utilisé A5 et A6 car j'ai une carte qui a A6 et A7)
  5. Soudez une résistance 4k7 entre l'autre extrémité de ce fil et la broche +5 V

Remarques:

  • Les broches A0 à A5, bien qu'étant marquées « analogiques », peuvent également être utilisées comme broches numériques GPIO.
  • La broche SCL du côté « numérique » est connectée en interne à A5 du côté « analogique »; connecté aux en-têtes, cela forme la ligne de bus à 1 fil
  • A4 (utilisé comme entrée analogique) mesure la tension du bus à des fins de diagnostic. C'est la raison pour laquelle il est directement connecté au bus.
  • J'ai utilisé A6 au lieu de A4 car j'ai une carte qui a A6 et A7; à l'origine, je voulais utiliser A7 comme maître de bus à 1 fil, mais ces deux broches ne peuvent pas être configurées pour être des GPIO numériques.
  • Pour éviter une mauvaise connexion des connecteurs du capteur, vous pouvez omettre / couper le contact inutilisé (non connecté à un fil) de chaque connecteur mâle et l'insérer dans le trou correspondant de l'embase à broche collée.

Étape 6: Connexion des capteurs

Connexion des capteurs
Connexion des capteurs

Vous venez de créer un tableau de huit sockets 2×2. Vous pouvez souder et assembler des connecteurs 2×2 Dupont aux câbles des capteurs et les connecter à ces prises. Le logiciel configure les broches de sorte que les broches paires soient des broches GND et les broches impaires soient des broches Vcc. Pour chaque capteur, la broche Vcc est juste la broche GND + 1. L'une des deux autres broches de la prise 2 × 2 (l'une de ces deux dans l'en-tête collé et soudé) est destinée au fil de données du capteur. Peu importe ce que vous utilisez.

Étape 7: Logiciel du contrôleur

Logiciel de contrôleur
Logiciel de contrôleur

L'esquisse SerialThermometer exécute le contrôleur. Vous pouvez le trouver sur github. Ouvrez et téléchargez à l'aide d'Arduino IDE.

Pas à pas:

  1. Ouvrez votre IDE Arduino et installez la bibliothèque DallasTemperature et toutes ses dépendances via Sketch | Inclure la bibliothèque | Gérer les bibliothèques.
  2. Cloner le dépôt git. Si vous n'êtes pas familier avec git, téléchargez et décompressez ce zip n'importe où sur votre ordinateur.
  3. Ouvrez le croquis SerialThermometer dans votre IDE Arduino.
  4. Connectez votre carte Arduino modifiée à votre ordinateur par câble USB (voie standard)
  5. Téléchargez le croquis à l'aide de votre IDE Arduino
  6. Ouvrir Serial Monitor via Outils | Moniteur série
  7. Vous devriez voir une sortie de diagnostic contenant plusieurs mesures physiques suivies de lectures de température - chaque prise de capteur sur une seule ligne. Si le nombre de capteurs diffère lorsqu'ils sont allumés séparément et lorsqu'ils sont tous allumés ensemble), le diagnostic boucle jusqu'à ce qu'il soit résolu. Mais ne vous inquiétez pas, le diagnostic fournit également des mesures de température !

Voir l'image annotée pour plus de détails sur la sortie de diagnostic.

Étape 8: Conclusion

J'ai le fort sentiment que les pannes de mon réseau de capteurs ont été causées par la capacité élevée de mon long câblage - environ 10 m de câble LIYY 314 (3 × 0, 14 mm²) pour chaque capteur. Mes expériences ont montré que la communication se rompt s'il y a une capacité supérieure ou égale à 0,01 F entre le bus 1 fil et la terre, je pense que la résistance de rappel 4k7 n'est pas capable de tirer le bus à + 5 V assez rapidement pour se conformer aux limites du protocole.

Dans ma configuration, cela se produit lorsque plus de 3 capteurs sont connectés ensemble. Ensuite, le contrôleur boucle en cycle de diagnostic, mesurant la température capteur par capteur (ce qui est cool aussi…)

Mais aussi le 5ème capteur (28:ff:f2:41:51:17:04:31) a l'air assez malade (peut-être une mauvaise soudure), donc je peux approfondir mes recherches !

Conseillé: