ProjetAutomatisme

De troyesGEII
Révision datée du 10 avril 2021 à 15:19 par Vachette (discussion | contributions) (étude sur les capteurs)
Aller à : navigation, rechercher

contacts

Ce projet a été réalisé par MABONA Anthony et DOS SANTOS Fresnel. Pour toute question concernant cette page, vous pourrez contacter:
- Sur Discord : Anthony Mabona
- par mail : mabonatelcywilliam@gmail.com

Présentation du projet

vue d'ensemble de la machine

Objectif : Restauration et décentralisation du traitement des informations d’une ancienne machine de transfert “Vachette”

L’objectif de notre projet était de remettre en état une ancienne machine de chaîne d'automatisme de la marque "Vachette", et de décentraliser le traitements des différentes informations qui étaient initialement reçues et traitées par un seul automate. A l'origine, Cette machine était supposément prévu pour de la serrurerie, avec un poste centrale automatique et trois postes manuels (voir photo)

le convoyeur auto et ses 3 postes manuels

Cependant, la machine a été modifié afin de convenir à une utilisation plus éducative, afin que des étudiants puissent réaliser leur projet.Toute la machinerie a été retiré, à l'exception des postes et leur différents capteurs/actionneurs.

Le but de notre projet était donc de créer plusieurs cartes électroniques qui traiteront les informations des capteurs et actionneurs situés sur les différents postes, et éventuellement ces cartes devront communiquer entre elles les différentes informations pour une éventuelle automatisation de la machine.
Durant notre période de projet, nous avons réalisé les cartes électroniques ainsi que le réseau qui permet la communication entre les cartes et également l'usage manuel des différents actionneurs grâce à une interface graphique. Et c'est à travers cette page que nous allons vous expliquer les différentes grandes étapes qui nous a emmenés à la finalité qu'on a atteint:
Contrôler manuellement les moteurs du convoyeur principal,du poste manuel 3, ainsi que certains actionneurs depuis l'interface graphique

Un système de carte électroniques alimentées par des cartes nanoPI et tout le système géré à distance, en réseau grâce à "MQTT" et Node-RED, par une raspberryPI avec interface graphique réalisé sur Qt creator. Sur cette page nous allons expliquer comment nous avons réalisés les cartes et comment nous avons mis en place le réseau capable de faire fonctionner la machine.

Etudes préliminaires

Avant de commencer concrètement le projet, la 1ère étape était de comprendre comment fonctionnait les différentes parties qui nous permettront de faire fonctionner le convoyeur via les cartes électroniques.

étude sur les capteurs

Ce sont les composants qui permettront de comprendre les actions que l'on devra réaliser avec les actionneurs lorsqu'un capteur détecte une palette. En clair, Ils nous permettront de savoir où seront placés les différentes palettes sur le convoyeur principale ainsi que les postes.

capteur indcutif pour détection palette

capteur indcutif pour détection passage palette

les capteurs sont des capteurs dit inductifs, c'est à dire qu'ils produisent un champ magnétique qui permet de détecter toute objet conducteur à leur proximité(ce qui tombe bien car la palette est composé de métaux conducteur). Les capteurs se comportent comme des interrupteurs. Étant alimenté en 24V:
- lorsqu'il n'y a pas d'objet conducteur à proximité => 0V
- lorsqu'il y a un objet conducteur à proximité => 24V

Le but sera donc d'utiliser cette particularité et l'accommoder à une commande électronique, c'est à dire récuperer le 24V comme un 1 logique et le 0V comme un 0 logique au près des broches de la carte électronique.

solution technique

Le composant permettant de réaliser une connexion entre le capteur 24V et la carte électronique dont les broches peuvent recevoir une tension maximum de 3,3V est un optocoupleur.

optocoupleur

L'optocoupleur est un composant électronique permettant de réaliser une isolation galvanique entre les deux tensions. Elle fonctionne de cette manière :
- Du côté gauche du schéma, il y'aura la tension +24V
- Du côté droit la tension +3,3V apporté par la NanoPi pour ses broches
- Lorsque le capteur est fermé, à l'interieur de l'optocoupleur, il y a une led qui éclaire un phototransistor qui permet au côté droit de l'optocoupleur de laisser passer la tension de +3,3V de la nanoPi.
Pour ce projet on utilisera l'optocoupleur de référence SFH620A

test réalisable

Matériel :

- carte arduino
- platine d'essai
- résistance de 100k
- résistance de 15k
- résistance de 1k
- résistance de 300 Ohms
- 1 led
- optocoupleur SFH620A
- 1 capteur inductif (présent dans la salle de la machine, avec 3 câbles à nu : 1 bleu, 1 marron et 1 noir)
- 1 alimentaion 24V pour alimenter le capteur inductif

Schéma:

schéma test capteur

Intitulé:

Il suffit tout simplement de coder un test permettant d'observer l'état du capteur, d'où la LED qui va servir de voyant lumineux pour prouver qu'il est possible d'établir une connexion entre le capteur de la machine et une carte électronique.

NE PAS OUBLIER DE RELIER LA MASSE DE LA CARTE ARDUINO AVEC CELLE DU GÉNÉRATEUR POUR ÉTABLIR UNE MASSE COMMUNE.
Ce même principe sera utilisé pour la conception des cartes électroniques.

étude sur les actionneurs

Pour pouvoir piloter un actionneur à l’aide d’une carte électronique , nous avons procéder à la solution suivante : il nous faut une tension de sortie d’environ 3,3 volt que nous obtenons à partir de la tension 24 V .

solution technique

Afin de convertir les signaux, nous avons dû réaliser des cartes électroniques. Cependant, afin d’optimiser et de simplifier l'utilisation ainsi que la complexité de cette dite carte, nous avons réalisé 3 modèles différents :

Un adaptateur pour faire fonctionner le protocole I2C (avec récupération du signal 24V). Une carte dédiée à la captation de signaux analogiques: 24v -> 3.3v

Une carte dédiée à l’activation d'actionneurs (relais par exemples) : 3.3v -> 24V : Lors de la réalisation de cette carte nous avons utilisé un composant appelé optocoupleur : Il s'agit d'un composant électronique capable de transmettre un signal d'un circuit électrique à un autre, sans qu'il y ait de contact galvanique entre eux.

OPTOCOUPLEUR.png

test réalisable

Au debut de notre projet , nous avons commencé avec un composant electronique appélé transistor nmos Irf540, mais en testant notre schema, on se rend compte que cela ne fonctionnait pas totalement on avait pas vraiment ce qu'on voulait , et nous avons donc voulu tester avec l'optocoupleur 4N33 et ceci fonctionnait bien.Nous avons donc gardé cette solution ensuite nous avons procédé à la réalisation du schema sur le logiciel Eagle

Test optocoupleur.png


Matériel :

- Platine d'essaie

- résistance 180 ohm

- Optocoupleur 4N33

- diode de roue libre

- Mcp230008

- Nanopi

- Une Alimentation 24 V

- Des fils mâle mâle et mâle femelle

- Un relais

- Bouton poussoir

- Un câble ethernet

- un multimètre

Schéma:

Fichier:Dos santos(1).sch Fichier:Dos santos.brd


Intitulé:

il s'agit de brancher une carte actionneur avec le Mcp23008 puis on active la led de l'optocoupleur qui par la suite active l'actionneur .

Réalisation des cartes

présentation

Pour réaliser la carte électronique et le traitement des informations, contrairement aux tests précédents où c'est une carte arduino qui a été utilisé, pour la suite c'est la carte NanoPi NEO 2 qui sera utilisé ainsi que l'extention de port MCP23008

NanoPi NEO 2

NanoPi NEO2

schéma des broches de la NanoPi





Cette carte, tout comme la carte arduino utilisée dans les phases test, sera utilisé pour recevoir et agir en conséquence sur les actionneurs et moteurs des convoyeurs par rapport aux informations renvoyées par les capteurs. On utilisera le 3,3V fournit par la carte lorsqu'elle est alimenté. Il y a également la particularité d'avoir un port Ethernet, ce qui est essentiel pour mettre en oeuvre le système de communication de notre projet. C'est pour cela que cette carte est préféré à Arduino.

MCP23008

extension des port GPIO

schéma port MCP23008





Etant donné que le nombre de broche qu'il y a sur la nanoPi ne sont pas suffisant, on utilise alors ce composant qui sert d'extension de port GPIO. le composant communiquera avec la NanoPi via la communication I2C. Pour faire court, grâce aux ports SDA (qui sert à transmettre les données) et SCL (pour que la carte NanoPi et le MCP23008 communiquent avec une vitesse de transmission similaire), la NanoPi et le MCP23008 pourront communiquer entre eux. Et donc, initialement on n'avait que 16 ports disponibles sur la NanoPi, et grâce à l'extension, il y a maintenant 24 ports disponibles pour connecter les capteurs/actionneurs.

Pour savoir comment paramétrer la liaison entre le MCP23008 et la NanoPi, tout sera détailler dans la partie mise en place de la communication entre NanoPi et MCP23008.

Mise en oeuvre

carte capteurs

carte capteur face haut
carte capteur face bas




vous pouvez voir le fichier eagle du routage de la carte électronique des capteurs: Fichier:ShieldCapteurs.sch
Fichier:ShieldCapteurs.brd

carte actionneurs

carte actionneur

vous pouvez voir le fichier eagle du routage de la carte électronique des actionneurs: Fichier:ShieldActioneurs.sch
Fichier:ShieldActioneurs.brd

Mise en place du système de communication

Pour permettre dans la finalité, l'échange de données entre les différentes cartes électroniques qui gèreront la machine, on a utilisé un protocole marchant par liaison Ethernet : le protocole MQTT ainsi que l'outil de progammation node-RED.

protocole MQTT

Introduction au protocole MQTT

Le protocole MQTT est un protocole de messagerie marchant sur le principe de souscription/publication. Pour faire plus simple, visualisez ce schéma :

réseau mqtt

Imaginez 4 clients et un relais qui s'occupera d'envoyer les différents colis contenant des messages qu'un ou des clients veulent distribuer à un ou à tous les autres clients :

- les clients peuvent être différents appareils électroniques (dans ce projet, ca sera nos cartes électroniques) ayant un système de communication ethernet
- Le facteur est appelé dans le bon terme un broker. Pour notre projet, on utilisera le broker mosquitto
- les colis contenant les messages sont appelés topic

Pour un exemple de fonctionnement, imaginez un client 1 abonné au topic nommé objet. Si le client 2 qui publie sur le topic objet un certain message, le client 1 recoit ce message. Cela fonctionne aussi si les clients 1,3 et 4 sont abonnés au même topic, ils recevront également ce message.
Pour résumer, vous devez savoir qu'il est possible qu'un ou plusieurs clients soient abonnés ou publient sur un ou plusieur topic.Ce protocole a été choisi car il simplifie la communication des données de notre projet.

Pour plus de renseignement, vous pouvez aller sur ces pages suivantes : [1] et [2]

Intoduction à Node-RED et application à notre projet

Node-RED est un logiciel en ligne de programmation grpahique, ce qui rend plus simple la partie code car il suffit d'utiliser les différentes fonctions que possèdent le logiciel.

interface node-RED

Comme vous pouvez le voir ci-dessus, l'interface node-RED ressemble à cela. A droite vous avez les différentes fonctions que le logiciel a à sa disposition (certaines fonctions peuvent être téléchargées).Ce qui est dans la barre de recherche sera expliqué plus bas.
L'essentiel est de savoir que node-RED nous sera utile pour la configuration du MCP23008 qui sera relié à différents topic. Dans la prochaine section, il y a un test réalisable pour comprendre comment les cartes électroniques fonctionneront d'une manière générale.

mise en place de la communication entre NanoPi et MCP23008

Cette section est une manipulation pour comprendre comment fonctionne ces logiciels ensemble.

Matériel:
- 2 cartes NanoPi
- 2 MCP23008 traversant
- une platine d'essai
- fils Mâle-mâle
- fils Mâle-Femelle
- 3 résistances de 10k
- 1 bouton poussoir (simule le capteur)
- 1 LED (simule l'actionneur)
- 1 résistance de 330 Ohms

Etape 1: branchement

- Connecter la nanoPi au réseau ethernet de l'IUT puis l'allumer (en la branchant à l'ordinateur) - Il faut alimenter la platine d'essai en 3,3V et connecter le GND venant de la nanoPi
- Placer le MCP23008 et mettre sur les broches SDA et SCL 1 résistance de tirage de 10k relié au +3,3V sur la platine d'essai.
- Connecter la broche RESET au +3,3V et les broches A0,A1 et A2 à la masse (ces broches définissent l'adresse du MCP23008, ici on a l'adresse 000)
- Reliez Vss du MCP23008 à la masse et Vdd au 3,3V de la platine d'essai
- Reliez le SDA et SCL de la nanoPI avec ceux du MCP23008

Si vous avez besoin d'aide, vous pouvez vous aidez du schéma ci-dessous:

(mettre photo schéma)

Etape 2: configuration liaison I2C

- Ouvrez une fenêtre de terminal puis rentrez ssh root@10.98.9.xx. A la place du xx, vous devez rentrer l'addition de 49+ le numéro de série affiché sur votre nanoPI (l'étiquette qui est posé sur la nanoPI). - Il y aura un message vous demandant yes/no?, tapez yes puis rentrez le code geii quand on vous demandera de rentrer le code.

ecran terminal 1ère connexion au réseau

Vous aurez par la suite l'image suivante:

accueil

- tapez ensuite i2cdetect -y x, à la place du x il peut y avoir 0,1,2 ou 3 qui correspond à tous les bus différents i2C que possèdent la nanoPI. Il faudra vérifier sur lequel est connecté le MCP23008. Généralement c'est le 0.
Ci-dessous vous avez une image qui montre ce que vous devez voir :

terminal montrant l'adresse i2C choisi pour la communication entre la nanoPI et le MCP23008

Lorsqu'un numéro apparait, on sait qu'il y a une connexion entre le MCP23008 et la nanoPI

Etape 3: configuration du MCP23008 sur node-RED

- Pour accéder à node-RED, ouvrez une page sur un navigateur internet, et dans la barre de recherhe, rentrez 10.98.9.xx:1880, le xx correspondant au même que dans l'étape 2 (il s'agit de l'adresse IP de votre nanoPI).
- Il faudra ensuite télécharger le bloc de fonction MCP23008 car il n'existe pas de base sur node-RED
- Après téléchargement, il faut configurer le node MCP23008:

configuration node MCP23008
configuration node MCP23008













il faudra configurer dans Device Address la liaison I2C puis ne pas cocher les A0 A1 et A2 (car comme expliqué plus haut dans branchement, ils ont été reliés à la masse, mais ils peuvent être changés si on désire donner une autre adresse au composant).
Ensuite il faut cocher Output all channels ce qui met les channel 1 à 7 (correspondant aux GPIO0 à GPIO8) en sortie, fixer l'intervalle de communication (vous pouvez mettre 100). Et en appuyant sur Deploy, votre composant, si tout est bien connecté, devrait apparaitre comme cela:

MCP23008 correctement configuré

le connected est le signe que le MCP23008 soit bel et bien configuré. Toutefois si vous avez des problèmes de configuration, vous pouvez vous aider de cette vidéo : [3]

Une fois que tout cela est fait, on met maintenant en place les deux tests qui montrent qu'il y a bien une communication entre le MCP23008 et la NanoPi: c'est là où intervient node-RED

test 1: bouton relié à la nanoPi | led relié au MCP23008

sur node-RED
Vous devez prendre les nodes suivants :

les différents node et connexion permettant de faire le 1er test

- En violet sont les nodes mqtt input (publication) et output (souscription). Configurez le node en rentrant dans la rubrique Server l'adresse IP suivante 10.98.9.20 ainsi que le numéro de port 1883. Il s'agit de l'adresse du broker mosquitto (comme j'ai expliqué plus haut il faudra un trader entre les deux clients qui seront la nanoPI et le MCP23008).Choisissez le nom de votre topic (ici on avait prit switch comme nom, vous pouvez changer)
- En jaune il y a le node permettant de mettre le pin correct de la NanoPi où est relié le bouton (pull-up ou pull-down c'est vous qui decidez). il faut configurer le bon type de carte qu'on utilise (ici nanopi), puis la broche où est le bouton
- En vert sont des nodes utilisés pour débuger, pour vérifier si il y a bien quelque chose qui se passe
- En bleu le node MCP23008; Ici la LED qui remplace l'actionneur sera relié sur le GPIO de votre choix

Le node du pin de la nanoPi est donc relié au node mqtt input => publication sur le topic switch
le mqtt output est relié au MCP23008 => abonné au topic switch

A chaque appui, si tout est bien câblé, la LED branchée sur le MCP23008 s'allumera, ce qui est une preuve qu'il y a bien une communication entre les deux composants. Vous pouvez même vérifier en utilisant un terminal de la manière suivante :
- Ouvrez un terminal et rentrez la commande mosquitto_pub -h 10.8.9.20 -t [topic] -m [message à publier] pour publier un topic ou mosquitto_sub -h 10.98.9.20 -t [topic auquel s’abonner] pour s'abonner à un topic. Cela peur servir pour verifier si il y'a bien un envoi de message lorsque vous appuyez sur le bouton.

En example, sur node-RED en faisant le simple test ci-dessous et en ecrivant la ligne ci-dessous dans un terminal, on pourra observer qu'en appuyant sur 1 ou 0, il y a bien reception de ces messages au niveau du terminal :

Capture d’écran 2021-04-10 à 01.05.10.png

Vous pouvez regarder les autres commandes disponible en tapant mosquitto_pub --help ou mosquitto_sub --help
Ce 1er test prouve que lorsqu'on reliera un capteur au MCP23008, le changement d'état de la broche concerné permettra d'agir en conséquence au niveau de la nanoPi. Ce principe est celui appliqué sur la carte capteur, à la place du bouton il y aura les capteurs ainsi que l'optocoupleur pour l'isolation galvanique entre le 3,3V de la nanoPi et le 24V qui alimente la carte

test 2: LED relié à la nanoPi |bouton relié au MCP23008

A contrario du 1er test, ici on aura le bouton qui est relié au MCP23008. Et donc la configuration sur node-RED sera différente :

Capture d’écran 2021-04-10 à 01.23.25.png

cette fois-ci au niveau du MCP23008, il y a le bloc change (en jaune) qui se rajoute, dont un bout relié à l'entrée du MCP23008 et l'autre relié à la broche où est relié le bouton poussoir. il faut le configurer de cette manière :

configuration node change

- la channel_7 (GPIO8) correspond à là où est relié le bouton poussoir.
Une autre configuration qu'il faut faire est au niveau du MCP23008:

configuration MCP23008

Il faut décocher les GPIO qui ne serviront pas en sortie. Par exemple, au dessus les channel 5 à 7 sont pour des entrées et le reste sont en sortie.
Il faut ensuite relié au channel_1 (qui est en sortie) le mqtt input (publication) avec le topic led (vous pourrez choisir le nom de votre choix) et relier le pin où est relié la LED sur la nanoPi au mqtt output (souscription) avec le même nom de topic.
Et lorsqu'on appuie sur le bouton, le changement d'état au niveau de la broche du MCP23008 allumera ou non la LED avec soit un 1 logique ou un 0 (tout dépend de comment le bouton poussoir est branché PULL-UP ou PULL-DOWN).
Ce 2ème test prouve que lorsqu'il y aura un changement d'état détecté au niveau de la nanoPi, la LED relié à la broche concerné concerné s'allumera. Ce principe est celui appliqué sur la carte actionneur, à la place de la led il y aura l'optocoupleur ainsi que les composants permettant de piloter les différents actionneurs de la machine

Réalisation de l'interface graphique via RaspBerry Pi et QT creator

création du code

Code distance

 
hi

création de l'interface graphique

communication entre Raspberry - NanoPi