P21 Projet bras déformable antagoniste : Différence entre versions
(→Tâches à réaliser) |
(→Semaine 7) |
||
(48 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 3 : | Ligne 3 : | ||
− | ==Cahier des charges== | + | =='''Cahier des charges'''== |
===Présentation générale du Projet=== | ===Présentation générale du Projet=== | ||
====Contexte==== | ====Contexte==== | ||
Ligne 16 : | Ligne 16 : | ||
====Description==== | ====Description==== | ||
− | + | [[Fichier:BigMomma2.jpg|300px|thumb|right|Robot déformable BigMomma]] | |
Le projet que j'ai choisi d'effectuer a été proposé par l'Institut National de Recherche en Informatique et Automatique (Inria) de Lille, et plus précisément au sein de l'équipe DEFROST (DEFormable RObot SofTware) qui s’intéresse à l’étude des robots | Le projet que j'ai choisi d'effectuer a été proposé par l'Institut National de Recherche en Informatique et Automatique (Inria) de Lille, et plus précisément au sein de l'équipe DEFROST (DEFormable RObot SofTware) qui s’intéresse à l’étude des robots | ||
déformables. | déformables. | ||
Cette équipe de chercheurs s'intéressent à un certain nombre de défis posés par les robots déformables, notamment le contrôle, le design ou la fabrication de ceux-ci. Ils possèdent pour cela plusieurs prototypes ayant différents aspects, objectifs, fonctionnements et donc différentes contraintes. | Cette équipe de chercheurs s'intéressent à un certain nombre de défis posés par les robots déformables, notamment le contrôle, le design ou la fabrication de ceux-ci. Ils possèdent pour cela plusieurs prototypes ayant différents aspects, objectifs, fonctionnements et donc différentes contraintes. | ||
Le prototype sur lequel je vais travailler est celui d'un bras articulé surnommé BigMomma (Big Mou Manipulator), actionné par câbles et cavités pneumatiques. Il est inspiré de différents modèles existants, mais est plus de dix fois plus grand que ceux-ci ce qui posent de nouveaux enjeux et de nouvelles problématiques. | Le prototype sur lequel je vais travailler est celui d'un bras articulé surnommé BigMomma (Big Mou Manipulator), actionné par câbles et cavités pneumatiques. Il est inspiré de différents modèles existants, mais est plus de dix fois plus grand que ceux-ci ce qui posent de nouveaux enjeux et de nouvelles problématiques. | ||
− | |||
− | |||
====Objectif==== | ====Objectif==== | ||
− | L'objectif global est d'améliorer le modèle actuel du corps du robot, et de mettre en place l'intégralité du système de contrôle pneumatique développé, ainsi que les moyens d'actionnement des câbles, à travers de la conception de cartes PCB en forme des modules. Également, il sera nécessaire de mettre en place un système embarqué de contrôle et pilotage des actionneurs, avec le développement du code pour la communication. | + | L'objectif global est d'améliorer le modèle actuel du corps du robot, et de mettre en place l'intégralité du système de contrôle pneumatique développé, ainsi que les moyens d'actionnement des câbles, à travers de la conception de cartes PCB en forme des modules. Également, il sera nécessaire de mettre en place un système embarqué de contrôle et pilotage des actionneurs, avec le développement du code pour la communication. La conception de certaines parties du robot et la planification du système d'actionnement est faite à l'aide du simulateur SOFA, notamment concernant le passage des câbles à travers la structure. La prise en main du logiciel étant trop longue, elle n'entrera pas dans les objectifs du projet, mais une étude pourra être réalisée pour une conception ultérieure. |
− | |||
===Tâches à réaliser=== | ===Tâches à réaliser=== | ||
Ligne 50 : | Ligne 47 : | ||
''<span style="color:red">18/09/17 - 22/09/17</span>'' | ''<span style="color:red">18/09/17 - 22/09/17</span>'' | ||
− | *Rendez-vous de | + | *Rendez-vous de présentation du projet avec les encadrants/intervenants (M. MORALES BIEZE Thor et M. SANZ-LOPEZ Mario) |
*Elaboration du cahier des charges | *Elaboration du cahier des charges | ||
*Elaboration de la page Wiki (préparation de la mise en page et présentation du sujet) | *Elaboration de la page Wiki (préparation de la mise en page et présentation du sujet) | ||
Ligne 58 : | Ligne 55 : | ||
''<span style="color:red">25/09/17 - 29/09/17</span>'' | ''<span style="color:red">25/09/17 - 29/09/17</span>'' | ||
*Revue du Cahier des Charges avec les encadrants | *Revue du Cahier des Charges avec les encadrants | ||
− | + | *Etude des documents mis à disposition sur l'état du projet | |
− | |||
==='''Semaine 2'''=== | ==='''Semaine 2'''=== | ||
Ligne 65 : | Ligne 61 : | ||
''<span style="color:red">02/10/17 - 06/10/17</span>'' | ''<span style="color:red">02/10/17 - 06/10/17</span>'' | ||
*Précisions sur le cahier des charges | *Précisions sur le cahier des charges | ||
− | * | + | *Etude de l'état du robot (électronique, programmes et données mesurées) |
− | *Recherche et | + | *Recherche de solutions d'amélioration pour la carte de contrôle pneumatique |
+ | |||
+ | ==='''Semaine 3'''=== | ||
+ | |||
+ | ''<span style="color:red">09/10/17 - 13/10/17</span>'' | ||
+ | *Réalisation de programmes de tests | ||
+ | *Choix des composants | ||
+ | *Réalisation des schématiques et du PCB de la carte de contrôle | ||
+ | |||
+ | ==='''Semaine 4'''=== | ||
+ | |||
+ | ''<span style="color:red">16/10/17 - 20/10/17</span>'' | ||
+ | *Réalisation des tests sur Arduino Uno | ||
+ | *Choix des composants | ||
+ | *Réalisation des schématiques de la carte de contrôle | ||
+ | |||
+ | ==='''Semaine 5'''=== | ||
+ | |||
+ | ''<span style="color:red">23/10/17 - 27/10/17</span>'' | ||
+ | *Commande des composants | ||
+ | *Réalisation du PCB de la carte de contrôle | ||
+ | |||
+ | ==='''Semaine 6'''=== | ||
+ | |||
+ | ''<span style="color:red">06/11/17 - 10/11/17</span>'' | ||
+ | *Commande des composants (retard) | ||
+ | *Réalisation du PCB de la carte de contrôle | ||
+ | |||
+ | ==='''Semaine 7'''=== | ||
+ | |||
+ | ''<span style="color:red">13/11/17 - 17/11/17</span>'' | ||
+ | *Commande des composants (retard) | ||
+ | *Corrections sur le PCB de la carte de contrôle et demande d'impression | ||
+ | *Analyse du programme de contrôle | ||
+ | |||
+ | =='''Présentation du travail effectué'''== | ||
+ | |||
+ | ==='''Amélioration du système de contrôle pneumatique'''=== | ||
+ | [[Fichier:controle_pneumatique2.png|600px|thumb|Schéma du circuit de contrôle pneumatique]] | ||
+ | ====Système actuel==== | ||
+ | Le système de contrôle pneumatique a été défini et réalisé par de précédentes recherches sur le sujet. Néanmoins, des pistes d'amélioration sont encore à trouver et le premier prototype de carte de contrôle a été réalisé à la main. Le premier travail à réaliser est donc d'étudier le système actuel, de dépouiller les données mesurées sur celui-ci et de proposer des améliorations afin d'accroître la performance du contrôle pneumatique. | ||
+ | |||
+ | |||
+ | Le système actuel qui a été défini est celui-ci : | ||
+ | |||
+ | |||
+ | La première sortie de l'Arduino correspond au signal PWM de contrôle de la valve. Il est suivi d'un filtre permettant d'avoir un signal analogique, qui est ensuite amplifié à l'aide d'un montage en amplificateur non-inverseur afin d'avoir les bonnes tensions de commande de la valve (0-10V). | ||
+ | |||
+ | La valve envoie en retour les valeurs mesurées de pression qu'elle a fourni au robot. Ce signal passe par un diviseur de tension et un filtre de façon à fournir un signal lisible et interprêtable par l'Arduino. | ||
+ | |||
+ | Enfin, l'Arduino contrôle un système d'interrupteur composé de 2 MOSFET en parallèle pour connecter ou déconnecter la valve pneumatique en fonction des besoins. | ||
+ | |||
+ | Les données mesurées sur ce système montrent qu'il y a néanmoins des possibilités d'amélioration, notamment au niveau de la propreté et la précision des signaux échangés ainsi que de la rapidité d'exécution. | ||
+ | [[Fichier:circuit_controlepneu.png|900px|thumb|left|Circuit de contrôle pneumatique]] | ||
+ | |||
+ | ====Amplificateur opérationnel==== | ||
+ | Les premières perspectives d'amélioration se sont portées sur l'amplificateur opérationel. J'ai effectué plusieurs recherches afin de vérifier que celui utilisé (LM324N) était le mieux adapté à l'application voulue. Il s'est avéré qu'il était difficile de trouver un meilleur AOP. En effet, le circuit demande tout d'abord une alimentation assez importante (24V) ce qui restreint le choix des AOP qui demandent généralement moins (~5-10V). L'utilisation d'un régulateur pourrait être envisagée, mais dans notre cas ce n'était pas pertinant. | ||
+ | Un aspect important du régulateur est sa tension de sortie à l'état bas. L'objectif est d'avoir la valeur la plus proche de 0 possible pour envoyer les commandes à la valve (celle-ci attend du 0-10V). Dans notre cas, le composant utilisé est de type rail-to-rail et cette valeur est de 5 à 10mV ce qui est suffisamment proche. | ||
+ | Enfin, il est nécessaire d'avoir 4 AOP pour contrôler, à terme, les 4 cavités du robot. Les recherches effectuées n'ont donc pas permis de trouver un meilleur composant pour nos attentes, ou en tous cas pas suffisamment pour envisager un changement peu utile. | ||
+ | |||
+ | ====Filtres et programmes de tests==== | ||
+ | D'autres perspectives d'amélioration se sont ensuite portées sur les filtres d'entrée et de sortie. Ceux-ci n'étaient pas optimum et pouvaient être améliorés afin d'avoir des signaux plus propres et donc plus de précision. | ||
+ | Afin d'avoir une idée du meilleur filtre à utiliser pour le circuit, j'ai dû me lancer dans la réalisation d'un code de test pour simuler les signaux de commande PWM et de retour de la valve pneumatique. Ces signaux seront générés par un Arduino Uno et on pourra donc, à l'aide d'un oscilloscope, visualiser le contenu harmonique et déterminer le filtre le mieux adapté. | ||
+ | |||
+ | |||
+ | Le programme ainsi réalisé crée un signal PWM qui effectue un balayage sur une certaine gamme de fréquence. On utilise pour cela le Timer1 de l'Arduino UNO qui permet plusieurs modes de PWM (Fast, Phase Correct, Phase and Frequency Correct...). Dans un premier temps nous utilisons le Phase Correct PWM Mode qui est suffisant pour notre application. Initialement, le balayage se fait entre 20 et 30kHz, mais l'utilisateur peut utiliser la console de l'IDE Arduino pour modifier la valeur des registres OCR1A et OCR1B de façon à modifier la gamme de fréquence du balayage et ainsi observer la réaction du filtre. | ||
+ | |||
+ | |||
+ | Le programme de tests a fonctionné correctement, en revanche il a été impossible d'exploiter le résultat et la réaction du filtre car la carte avait des défauts. En effet, il s'est avéré qu'il y avait des faux contacts et même certaines pistes involontairement reliées, ce qui risquait d'endommager certains composants. Ces défauts viendraient de l'âge du circuit ou des dernières modifications de la carte (réalisées par une précédente stagiaire) qui n'avaient pas été correctement réalisées ni testées. J'ai tenté de corriger ces défauts en refaisant certaines soudures, mais il y avait toujours des problèmes de faux contacts, notamment au niveau de l'amplificateur opérationnel (probablement déjà endommagé). Nous avons donc abandonné l'idée des tests par simulation de signaux. | ||
+ | |||
+ | |||
+ | A l'aide des données que j'ai pu retrouver dans les archives et les spécifications des composants, j'ai néanmoins changé les valeurs pour le filtre de sortie de façon à mettre une résistance R7 plus importante (R7 >> R5//R6), et fixer le filtre à une fréquence de coupure f0~=100Hz pour améliorer le filtrage. | ||
+ | Nous avons envisagé l'idée d'utiliser un filtre du 2nd ordre de type Sallen & Key pour améliorer encore le signal de retour, mais la carte étant déjà très chargée, nous avons décidé de rester sur un filtre du 1er ordre pour l'instant et tenter éventuellement un 2nd ordre plus tard. | ||
+ | |||
+ | |||
+ | ====Capteurs de pression==== | ||
+ | Actuellement, comme le montre le schéma ci-dessus, la valeur de retour utilisée par la carte de contrôle est celle fournie par la valve pneumatique. Or cette valeur est très bruitée et peu représentative de la pression réelle à l'intérieur des cavités car elle est mesurée par la valve, mais il y a des pertes et des pressions sensiblement différentes à cause des tuyaux et autres imperfections. Une autre approche qui a été envisagée est d'utiliser un capteur installé à l'intérieur de chaque valve et qui permettrait donc d'obtenir une valeur plus proche de la réalité. Des premiers essais ont été réalisés avec un capteur de pression absolue étant le capteur le plus facile à installer. Cependant ce capteur pose quelques problèmes au niveau de l'offset et de la précision. En effet, dans le cas où l'on arrête et redémarre le robot, la pression dans les cavités peut changer et il est donc difficile de régler un offset universel, une référence, qui prenne en compte ces changements, sans risquer d'endommager le robot (sur-pression, sous-pression...). L'environnement pose également problème (pression extérieur, poids futurs que le robot devra porter...). | ||
+ | |||
+ | Nous avons donc envisagé l'utilisation des capteurs de pression relative (différentielle) qui peut utiliser la pression atmosphérique comme référence et sa pression interne pour se calibrer au démarrage. Ce type de capteur est donc plus fiable, bien que plus difficile à intaller (2 tuyaux traversants les cavités à installer, ce qui peut engendrer des pertes). L'installation de ceux-ci ne sera donc probablement pas possible d'ici la fin de mon projet, mais leur utilisation future a été prévue et intégrée à la carte de contrôle. | ||
+ | |||
+ | ==='''Réalisation de la carte de contrôle'''=== | ||
+ | L'objectif de cette nouvelle carte de contrôle est d'être la plus polyvalente possible pour que les applications futures puissent être testées sans qu'il soit nécessaire de refaire une carte. | ||
+ | La carte réalisée initialement et présentée ci-dessus ne permet de contrôler qu'une seule cavité du robot. Or, à terme, le système de contrôle devra être capable de contrôler les 4 cavités. Il faut donc prendre cet aspect en compte pour la nouvelle carte et le schéma présenté ci-dessus doit être répété 4 fois pour contrôler les 4 valves pneumatiques. | ||
+ | |||
+ | |||
+ | Nous avons également ajouté 2 rangés de 4 commutateurs. La première rangée permettra de by-passer les résistances R3 (cf schéma) des amplificateurs du circuit dans le cas où nous voudrions utiliser un gain de 1 au lieu de 2 (dans le cas d'un éventuel changement de valve pneumatique, d'AOP, ou d'alimentation). La deuxième rangée de commutateurs permettra de by-passer le diviseur de tension (R5//R6) dans le cas de l'utilisation d'un capteur de pression interne comme valeur de retour. En effet, comme expliqué précédemment, la valeur de retour est actuellement transmise par la valve pneumatique, mais une autre option envisagée est d'utiliser des capteurs de pression dans les cavités afin d'avoir plus de précision. | ||
+ | |||
+ | |||
+ | Le schématique complet de la nouvelle carte, réalisé sur Kicad, est disponible ici ou dans les livrables en version PDF pour une meilleure qualité : | ||
+ | |||
+ | [[Fichier:controle_pneu_ki.png|thumb|left|600px|Schéma de la nouvelle carte de contrôle pneumatique]] | ||
+ | [[Fichier:controle_pneu_pcb.png|thumb|right|600px|PCB de la nouvelle carte de contrôle pneumatique]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | . | ||
+ | |||
+ | ==Livrables== | ||
+ | ===Détails composants=== | ||
+ | |||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Quantité !! Description !! Vendeur !! Fabricant !! Référence Fabricant !! URL | ||
+ | |- | ||
+ | | 28 | ||
+ | | Résistances (4x10kΩ / 16x39kΩ / 4x130kΩ / 4x1MΩ) | ||
+ | | Farnell | ||
+ | | Multicomp | ||
+ | | MF25 130K | ||
+ | | http://fr.farnell.com/multicomp/mf25-130k/resistance-0-25w-1-130k/dp/9341293 | ||
+ | |- | ||
+ | | 8 | ||
+ | | Condensateurs céramiques (4x22nF / 4x12nF) | ||
+ | | Farnell | ||
+ | | Vishay | ||
+ | | D223Z39Z5UH63L2R | ||
+ | | http://fr.farnell.com/vishay/d223z39z5uh63l2r/condensateur-ceramique-z5u-22nf/dp/1835027 | ||
+ | |- | ||
+ | | 2 | ||
+ | | Commutateurs 4 circuits CMS | ||
+ | | Farnell | ||
+ | | Multicomp | ||
+ | | MCEMR-04-T | ||
+ | | http://fr.farnell.com/multicomp/mcemr-04-t/commutateur-dil-smd-4-voies/dp/1524007 | ||
+ | |- | ||
+ | | 4 | ||
+ | | Fusibles réarmables | ||
+ | | Farnell | ||
+ | | Multicomp | ||
+ | | MC36192 | ||
+ | | http://fr.farnell.com/multicomp/mc36192/resettable-fusible-60v-0-5a/dp/1861126 | ||
+ | |- | ||
+ | | 8 | ||
+ | | Transistors MOSFET | ||
+ | | Farnell | ||
+ | | STMicroelectronics | ||
+ | | STP36NF06 | ||
+ | | http://fr.farnell.com/stmicroelectronics/stp36nf06/mosfet-canal-n-60v-30a-to-220/dp/2098320 | ||
+ | |- | ||
+ | | 1 | ||
+ | | AOP quadruple | ||
+ | | Farnell | ||
+ | | Texas Instruments | ||
+ | | LM324N | ||
+ | | http://fr.farnell.com/texas-instruments/lm324n/ic-op-amp-quadruple/dp/1564884 | ||
+ | |- | ||
+ | | 2 | ||
+ | | Connecteurs fil-à-carte 16 broches | ||
+ | | Farnell | ||
+ | | 3M | ||
+ | | 929974-01-16 | ||
+ | | http://fr.farnell.com/3m/929974-01-16/connect-femelle-16-voies-1-rang/dp/2672440 | ||
+ | |- | ||
+ | | 4 | ||
+ | | Borniers vis 6 voies | ||
+ | | Farnell | ||
+ | | Molex | ||
+ | | 39543-0006 | ||
+ | | http://fr.farnell.com/molex/39543-0006/terminal-block-eurostyle-6-position/dp/1368505 | ||
+ | |- | ||
+ | | 1 | ||
+ | | Connecteur alimentation 24V | ||
+ | | Farnell | ||
+ | | Wurth Elektronik | ||
+ | | 694106301002 | ||
+ | | http://fr.farnell.com/wurth-elektronik/694106301002/connecteur-entree-puiss-jack-3a/dp/2472149 | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ===Schématiques et PCB=== | ||
+ | |||
+ | Schéma de la carte de contrôle (réalisé sur Kicad) : | ||
+ | [[Fichier:controle_pneumatique_ki.pdf|Schéma de la nouvelle carte contrôle pneumatique]] | ||
+ | |||
+ | ===Rapport=== | ||
+ | |||
+ | |||
+ | |||
+ | ===Fichiers de programmation=== |
Version actuelle datée du 16 novembre 2017 à 13:40
- Etudiant : Florian Giovannangeli
- Encadrants : Thor MORALES BIEZE & Mario SANZ-LOPEZ (INRIA Lille)
Cahier des charges
Présentation générale du Projet
Contexte
En robotique, la majorité des machines sont composées d’éléments mécaniques, avec des structures rigides. Le mouvement s’effectue grâce à un nombre fini d’actionneurs permettant d’agir à un endroit particulier avec un degré de liberté spécifique. Ils sont donc limités sur certaines capacités comme notamment s’adapter à leur environnement, se déformer pour franchir des obstacles, manier des objets fragiles sans les abîmer ou ne pas heurter le matériel et les individus environnants.
Constitués de matériaux souples capables de se déformer pour produire un mouvement, les robots déformables peuvent posséder un degré de liberté infini ce qui offre un grand nombre de possibilités comme celles sus-citées.
Les champs d’applications seraient bien plus vastes et les robots déformables pourraient être présents dans tous les aspects actuels de la robotique. Mais actuellement ces robots posent encore un certain nombre de défis scientifiques que la recherche doit relever.
Description
Le projet que j'ai choisi d'effectuer a été proposé par l'Institut National de Recherche en Informatique et Automatique (Inria) de Lille, et plus précisément au sein de l'équipe DEFROST (DEFormable RObot SofTware) qui s’intéresse à l’étude des robots déformables. Cette équipe de chercheurs s'intéressent à un certain nombre de défis posés par les robots déformables, notamment le contrôle, le design ou la fabrication de ceux-ci. Ils possèdent pour cela plusieurs prototypes ayant différents aspects, objectifs, fonctionnements et donc différentes contraintes. Le prototype sur lequel je vais travailler est celui d'un bras articulé surnommé BigMomma (Big Mou Manipulator), actionné par câbles et cavités pneumatiques. Il est inspiré de différents modèles existants, mais est plus de dix fois plus grand que ceux-ci ce qui posent de nouveaux enjeux et de nouvelles problématiques.
Objectif
L'objectif global est d'améliorer le modèle actuel du corps du robot, et de mettre en place l'intégralité du système de contrôle pneumatique développé, ainsi que les moyens d'actionnement des câbles, à travers de la conception de cartes PCB en forme des modules. Également, il sera nécessaire de mettre en place un système embarqué de contrôle et pilotage des actionneurs, avec le développement du code pour la communication. La conception de certaines parties du robot et la planification du système d'actionnement est faite à l'aide du simulateur SOFA, notamment concernant le passage des câbles à travers la structure. La prise en main du logiciel étant trop longue, elle n'entrera pas dans les objectifs du projet, mais une étude pourra être réalisée pour une conception ultérieure.
Tâches à réaliser
- Etudes préalables
- les robots déformables
- le robot, son fonctionnement et son but
- travaux réalisés, état actuel du projet
- Carte de contrôle pneumatique
- recherche de solution d'amélioration
- choix des composants
- réalisation du schématique et PCB
- tests et optimisation
- Programme de contrôle pneumatique
- recherche de solutions d'amélioration
- implémentation
- tests et optimisation
Avancement du Projet
Phase préparatoire
18/09/17 - 22/09/17
- Rendez-vous de présentation du projet avec les encadrants/intervenants (M. MORALES BIEZE Thor et M. SANZ-LOPEZ Mario)
- Elaboration du cahier des charges
- Elaboration de la page Wiki (préparation de la mise en page et présentation du sujet)
Semaine 1
25/09/17 - 29/09/17
- Revue du Cahier des Charges avec les encadrants
- Etude des documents mis à disposition sur l'état du projet
Semaine 2
02/10/17 - 06/10/17
- Précisions sur le cahier des charges
- Etude de l'état du robot (électronique, programmes et données mesurées)
- Recherche de solutions d'amélioration pour la carte de contrôle pneumatique
Semaine 3
09/10/17 - 13/10/17
- Réalisation de programmes de tests
- Choix des composants
- Réalisation des schématiques et du PCB de la carte de contrôle
Semaine 4
16/10/17 - 20/10/17
- Réalisation des tests sur Arduino Uno
- Choix des composants
- Réalisation des schématiques de la carte de contrôle
Semaine 5
23/10/17 - 27/10/17
- Commande des composants
- Réalisation du PCB de la carte de contrôle
Semaine 6
06/11/17 - 10/11/17
- Commande des composants (retard)
- Réalisation du PCB de la carte de contrôle
Semaine 7
13/11/17 - 17/11/17
- Commande des composants (retard)
- Corrections sur le PCB de la carte de contrôle et demande d'impression
- Analyse du programme de contrôle
Présentation du travail effectué
Amélioration du système de contrôle pneumatique
Système actuel
Le système de contrôle pneumatique a été défini et réalisé par de précédentes recherches sur le sujet. Néanmoins, des pistes d'amélioration sont encore à trouver et le premier prototype de carte de contrôle a été réalisé à la main. Le premier travail à réaliser est donc d'étudier le système actuel, de dépouiller les données mesurées sur celui-ci et de proposer des améliorations afin d'accroître la performance du contrôle pneumatique.
Le système actuel qui a été défini est celui-ci :
La première sortie de l'Arduino correspond au signal PWM de contrôle de la valve. Il est suivi d'un filtre permettant d'avoir un signal analogique, qui est ensuite amplifié à l'aide d'un montage en amplificateur non-inverseur afin d'avoir les bonnes tensions de commande de la valve (0-10V).
La valve envoie en retour les valeurs mesurées de pression qu'elle a fourni au robot. Ce signal passe par un diviseur de tension et un filtre de façon à fournir un signal lisible et interprêtable par l'Arduino.
Enfin, l'Arduino contrôle un système d'interrupteur composé de 2 MOSFET en parallèle pour connecter ou déconnecter la valve pneumatique en fonction des besoins.
Les données mesurées sur ce système montrent qu'il y a néanmoins des possibilités d'amélioration, notamment au niveau de la propreté et la précision des signaux échangés ainsi que de la rapidité d'exécution.
Amplificateur opérationnel
Les premières perspectives d'amélioration se sont portées sur l'amplificateur opérationel. J'ai effectué plusieurs recherches afin de vérifier que celui utilisé (LM324N) était le mieux adapté à l'application voulue. Il s'est avéré qu'il était difficile de trouver un meilleur AOP. En effet, le circuit demande tout d'abord une alimentation assez importante (24V) ce qui restreint le choix des AOP qui demandent généralement moins (~5-10V). L'utilisation d'un régulateur pourrait être envisagée, mais dans notre cas ce n'était pas pertinant. Un aspect important du régulateur est sa tension de sortie à l'état bas. L'objectif est d'avoir la valeur la plus proche de 0 possible pour envoyer les commandes à la valve (celle-ci attend du 0-10V). Dans notre cas, le composant utilisé est de type rail-to-rail et cette valeur est de 5 à 10mV ce qui est suffisamment proche. Enfin, il est nécessaire d'avoir 4 AOP pour contrôler, à terme, les 4 cavités du robot. Les recherches effectuées n'ont donc pas permis de trouver un meilleur composant pour nos attentes, ou en tous cas pas suffisamment pour envisager un changement peu utile.
Filtres et programmes de tests
D'autres perspectives d'amélioration se sont ensuite portées sur les filtres d'entrée et de sortie. Ceux-ci n'étaient pas optimum et pouvaient être améliorés afin d'avoir des signaux plus propres et donc plus de précision. Afin d'avoir une idée du meilleur filtre à utiliser pour le circuit, j'ai dû me lancer dans la réalisation d'un code de test pour simuler les signaux de commande PWM et de retour de la valve pneumatique. Ces signaux seront générés par un Arduino Uno et on pourra donc, à l'aide d'un oscilloscope, visualiser le contenu harmonique et déterminer le filtre le mieux adapté.
Le programme ainsi réalisé crée un signal PWM qui effectue un balayage sur une certaine gamme de fréquence. On utilise pour cela le Timer1 de l'Arduino UNO qui permet plusieurs modes de PWM (Fast, Phase Correct, Phase and Frequency Correct...). Dans un premier temps nous utilisons le Phase Correct PWM Mode qui est suffisant pour notre application. Initialement, le balayage se fait entre 20 et 30kHz, mais l'utilisateur peut utiliser la console de l'IDE Arduino pour modifier la valeur des registres OCR1A et OCR1B de façon à modifier la gamme de fréquence du balayage et ainsi observer la réaction du filtre.
Le programme de tests a fonctionné correctement, en revanche il a été impossible d'exploiter le résultat et la réaction du filtre car la carte avait des défauts. En effet, il s'est avéré qu'il y avait des faux contacts et même certaines pistes involontairement reliées, ce qui risquait d'endommager certains composants. Ces défauts viendraient de l'âge du circuit ou des dernières modifications de la carte (réalisées par une précédente stagiaire) qui n'avaient pas été correctement réalisées ni testées. J'ai tenté de corriger ces défauts en refaisant certaines soudures, mais il y avait toujours des problèmes de faux contacts, notamment au niveau de l'amplificateur opérationnel (probablement déjà endommagé). Nous avons donc abandonné l'idée des tests par simulation de signaux.
A l'aide des données que j'ai pu retrouver dans les archives et les spécifications des composants, j'ai néanmoins changé les valeurs pour le filtre de sortie de façon à mettre une résistance R7 plus importante (R7 >> R5//R6), et fixer le filtre à une fréquence de coupure f0~=100Hz pour améliorer le filtrage.
Nous avons envisagé l'idée d'utiliser un filtre du 2nd ordre de type Sallen & Key pour améliorer encore le signal de retour, mais la carte étant déjà très chargée, nous avons décidé de rester sur un filtre du 1er ordre pour l'instant et tenter éventuellement un 2nd ordre plus tard.
Capteurs de pression
Actuellement, comme le montre le schéma ci-dessus, la valeur de retour utilisée par la carte de contrôle est celle fournie par la valve pneumatique. Or cette valeur est très bruitée et peu représentative de la pression réelle à l'intérieur des cavités car elle est mesurée par la valve, mais il y a des pertes et des pressions sensiblement différentes à cause des tuyaux et autres imperfections. Une autre approche qui a été envisagée est d'utiliser un capteur installé à l'intérieur de chaque valve et qui permettrait donc d'obtenir une valeur plus proche de la réalité. Des premiers essais ont été réalisés avec un capteur de pression absolue étant le capteur le plus facile à installer. Cependant ce capteur pose quelques problèmes au niveau de l'offset et de la précision. En effet, dans le cas où l'on arrête et redémarre le robot, la pression dans les cavités peut changer et il est donc difficile de régler un offset universel, une référence, qui prenne en compte ces changements, sans risquer d'endommager le robot (sur-pression, sous-pression...). L'environnement pose également problème (pression extérieur, poids futurs que le robot devra porter...).
Nous avons donc envisagé l'utilisation des capteurs de pression relative (différentielle) qui peut utiliser la pression atmosphérique comme référence et sa pression interne pour se calibrer au démarrage. Ce type de capteur est donc plus fiable, bien que plus difficile à intaller (2 tuyaux traversants les cavités à installer, ce qui peut engendrer des pertes). L'installation de ceux-ci ne sera donc probablement pas possible d'ici la fin de mon projet, mais leur utilisation future a été prévue et intégrée à la carte de contrôle.
Réalisation de la carte de contrôle
L'objectif de cette nouvelle carte de contrôle est d'être la plus polyvalente possible pour que les applications futures puissent être testées sans qu'il soit nécessaire de refaire une carte. La carte réalisée initialement et présentée ci-dessus ne permet de contrôler qu'une seule cavité du robot. Or, à terme, le système de contrôle devra être capable de contrôler les 4 cavités. Il faut donc prendre cet aspect en compte pour la nouvelle carte et le schéma présenté ci-dessus doit être répété 4 fois pour contrôler les 4 valves pneumatiques.
Nous avons également ajouté 2 rangés de 4 commutateurs. La première rangée permettra de by-passer les résistances R3 (cf schéma) des amplificateurs du circuit dans le cas où nous voudrions utiliser un gain de 1 au lieu de 2 (dans le cas d'un éventuel changement de valve pneumatique, d'AOP, ou d'alimentation). La deuxième rangée de commutateurs permettra de by-passer le diviseur de tension (R5//R6) dans le cas de l'utilisation d'un capteur de pression interne comme valeur de retour. En effet, comme expliqué précédemment, la valeur de retour est actuellement transmise par la valve pneumatique, mais une autre option envisagée est d'utiliser des capteurs de pression dans les cavités afin d'avoir plus de précision.
Le schématique complet de la nouvelle carte, réalisé sur Kicad, est disponible ici ou dans les livrables en version PDF pour une meilleure qualité :
.
Livrables
Détails composants
Schématiques et PCB
Schéma de la carte de contrôle (réalisé sur Kicad) : Fichier:Controle pneumatique ki.pdf