Contrôle de bras robotique, 2012/2013, TD2
Sommaire
Evaluation informatique et électronique
Gestion de projet / rédaction Wiki
- Informatique :
- Electronique :
Présentation
Dans notre projet, l' électronique a pour but de récupérer la valeur d'un capteur de pression. En effet celui-ci se comporte comme une résistance variable, la valeur que l'on récupérera sera donc une valeur analogique (tension). Nous aurons donc pour but de créer un convertisseur analogique vers numérique. De cette manière, la transmission pourra se faire via une communication série.
Partie numérique
Partie analogique
La partie analogique se compose d'un amplificateur opérationnelle monté en comparateur, de résistances, de capacité et d'un capteur de pression. L'AOp nous permet de comparer la tension issue du capteur avec la tension de la PWM filtrée. Lorsque la tension de la PWM est supérieur à la tension du capteur la sortie de l'AOp est à 1 logique (5V). Afin de pouvoir comparer la tension de la PWM nous avons du la filtrer à l'aide d'un filtre passe-bas pour obtenir une rampe de tension (Rappel : le signal d'une PWM est un signal carré de rapport cyclique variable).
Note .
Test fonctionnels
- Sous-système.
- Sous-système informatique :
- Sous-système électronique :
Qualité de la réalisation
- Informatique : Note .
- procédure de test :
- pages HTML et Javascript :
- scripts PHP ou programmes C :
- installation sur FoxBoard :
- Electronique : Note .
- qualité de la réalisation :
- tests autonomes :
Bilan
Note finale :
Rapports des élèves
Objectif du projet :
- Réaliser une interface Web de pilotage de bras robotique permettant de commander les différents moteurs du bras.
- Afficher la position du bras ainsi que des objets placés sur les capteurs de position.
Le projet se compose de trois parties :
- Partie électronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de connaître la valeur d’un capteur de pression. Pour la réalisation du CAN, nous avions besoin d’un mélange d’électronique numérique (NanoBoard) et d’électronique analogique (comparateurs, résistances…).
- Partie Informatique : Réalisation d’un fichier html comprenant du Javascript , du Php ainsi qu’un programme en langage C. Les programmes sont ensuite stockés sur une FoxBoard, serveur relié au bras robotique, ce qui permet de commander le bras n’importe où lorsqu’on est connecté à la FoxBoard.
- Partie permettant de rendre compatibles les systèmes informatiques et électroniques afin de pouvoir faire une bonne liaison série.
PARTIE INFORMATIQUE
PARTIE ELECTRONIQUE
- Séance 1 :
La première séance a servi à comprendre le lien entre le logiciel Altium et la NanoBoard. Sur Altium, des composants sont mis à disposition (bascules RS, D, des compteurs…). Le but est, à partir de ces composants, de les relier pour concevoir le système désiré (ici un CAN). Ensuite, le système ainsi réalisé est adapté pour fonctionner sur la NanoBoard.
Schéma de principe :
Le Convertisseur analogique numérique), à partir d’une Modulation à Largeur d'Impulsions (MLI) aussi appelée PWM , permet de comparer la valeur de la PWM avec la tension du capteur de pression afin de connaître la valeur de ce dernier. Pour cela, nous avons du adapter les tensions du capteur et de la PWM pour que les résultats puissent correspondre. C’est-à-dire que lorsque le capteur ne reçoit aucune pression, la valeur de la tension est par exemple de 3.3V alors la PWM doit être au maximum à 3.3V.
La PWM sera crée par la Nanoboard. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.
schéma de déroulement :
La valeur du capteur de pression sera donnée par la PWM, lorsque la la tension de la PWM sera supérieure à la valeur du capteur, le comparateur enverra un 1 logique ou 5V (0 sinon) au fpga qui enregistrera la valeur de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.
Lorsque le sujet était clair, des tests sur Altium ont été effectués. Le bloc PWM était mis à notre disposition afin de voir comment cela fonctionner. Nous avons fait des tests et nous sommes arrivés à cela :
Dans ce schéma, il y a deux compteurs. Le premier, qui compte jusqu'à 256, représente la période de la PWM et le second quant à lui permet de faire varier la rapport cyclique. Plus le rapport cyclique du signal est grand, plus la valeur de la tension de la PWM sera grande.
Le deuxième compteur servant à générer le rapport cyclique doit varier à chaque nouveau comptage de la PWM. Par exemple, le compteur U5 est initialement à 0, le compteur U4 compte jusqu'à 256, puis retombe à 0. Lorsqu'il est égal à 0, il incrémente le compteur U5 grâce à la broche CEO et passe ainsi à 1, ainsi de suite jusqu'à son maximum qui est T, la période de la PWM.
La fréquence de l'horloge est celle de la Nanoboard 50MHz. Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.
Nous n'avons pas fini sur le fpga, il reste seulement la gestion de la mémorisation car on ne veut mémoriser la valeur de la PWM seulement quand nous avons la réelle valeur du capteur de pression.
- Séance 2 :
Nous avons rajouté un registre 8 bits afin de mémoriser la valeur du capteur de pression lorsque l'on obtient une valeur du capteur.
Pour les tests, nous avons mis en sortie un panneau de 8 leds ainsi qu'un afficheur digital afin de visualiser le résultat et de pouvoir comparer le résultat par rapport au vrai.
La partie analogique a été également faite:
Pour le capteur de pression, nous avons ajouté des diviseurs de tension. Un pour réduire la tension d'entrée de 3.3V à 3V car le signal de la PWM va seulement jusqu'à 3V. Or, si le capteur présente une tension de 3.3V, nous ne pouvons trouver aucun résultat. Ensuite, le deuxième sert à avoir un équivalent en tension de la pression exercé sur le capteur. Lorsque le capteur est mis fortement sous pression, l'équivalent en tension est de 0V, alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V. Le comparateur a pour valeur de référence 0V et 5V afin de pouvoir communiquer correctement avec la Nanoboard qui peut recevoir 0V, ce qui correspond à un 0 logique et 5V, ce qui correspond à un 1 logique.
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.
Définition des valeurs des composants:
- Composants du filtre passe bas :
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).
=> fn < fs (fréquence du système)
fn < 3KHz
Or on sait que : fn = 1/(2piRC)
=> C = 330nF R = 2K ohms
- Composants du diviseur de tension avec capteur de pression
Il suffisait seulement ici d'avoir une à compléter
- Composants du premier diviseur de tension
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et celle en entrée, la valeur est de 100 ohms.
- Séance 3 :
Voici les tests effectués lors de la troisième séance :
Dans ce schéma, nous pouvons voir en vert, l'image en tension du capteur de tension, en jaune, la valeur de la PWM filtrée. Ensuite, le signal en bleu est la sortie du comparateur. On peut voir sur ce signal que lorsque la valeur du capteur de pression est égale à la valeur de la PWM filtrée, la sortie du comparateur passe de 0 logique à 1 logique. Cependant, on peut voir lors du passage de 0 à 1, le signal change d'état beaucoup de fois. Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.
Comme, on peut le voir sur le schéma 2, le signal étant en dent de scie, on peut voir que le signal bleu correspondant à la valeur du capteur est égal plusieurs fois à la valeur de la PWM filtrée. Ceci explique donc pourquoi dans le schéma 1, le signal bleu change d'état plusieurs fois.
Pour corriger cette erreur, c'est-à-dire de nous avons créer un système qui permet, à partir de la première égalité entre la PWM filtrée et la valeur en tension du capteur de pression, d'avoir un 1 logique jusqu'à la fin de la période de PWM.
Voici le système de correction des changements d'états :
Le système est constitué d'une bascule RS, qui permet lorsque pour la première fois la sortie du comparateur passe à 1, de mettre la sortie de la bascule à 1, ensuite quelque soit la valeur de la sortie du comparateur, le résultat de la bascule RS reste inchangé, puis lorsque l'on arrive en fin de la période de la PWM, la donnée de la bascule RS passe à 0. Le signal corrigé est le signal rose du schéma 1.
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.
- Séance bonus :
Voici le schéma complet d'Altium :
Nous avons utilisé des blocs déjà utilisés pour la liaison série (émission et réception). Ils fonctionnent à la fréquence de la NanoBoard, c'est-à-dire 50MHz
De plus, nous avons crée un bloc pour simuler 4 capteurs :
Lorsque une donnée valide est reçu sur le bloc émission (déjà fourni sur Altium), le compteur U13 compte afin de choisir les voies où se situent les données à envoyer. la première donnée où la valeur est nulle sert d'indicateur afin d'envoyer correctement et dans l'ordre les données par liaison série. Le fait d'avoir ajouté un 0 en début permet que les informations reçues sur l'ordinateur ne soient pas décalées, soit faussées.
PARTIE COMMUNICATION
Cette partie a été la plus dure, car il fallait connaître les attentes des parties informatiques et électroniques. Il a fallu corriger quelques détails afin que la communication par liaison série (RS232) se fasse correctement.
CONCLUSION
Ce projet nous a permis de découvrir le monde des systèmes communicants (SC) ainsi que de travailler sur deux domaines différents : l'électronique et l'informatique. Nous avons pu collaborer ensembles. Les idées ont été discutées, argumentées et sélectionnées afin d'en garder les plus importantes. La partie informatique nous a permis de nous familiariser avec les protocoles Web, de nouveaux langages ont été acquis durant ces séances comme le Php, Jquery, JavaScript... Pour ce qui est partie Electronique, nous avons travaillé sur l'électronique numérique et l'électronique analogique et fait marcher ensemble ces deux systèmes pour ainsi créer un Convertisseur Analogique Numérique. Le plus dur a été de faire la liaison entre la partie informatique et électronique. Cela nous a montré à quel point il était important de définir un cahier des charges précis car dans le cas contraire, les deux parties peuvent marcher mais ne sont pas compatibles.