Contrôle de bras robotique, 2014/2015, TD1

De Wiki d'activités IMA

Personnes participant au projet

ROJ Thomas
PIEKACZ Geoffrey
CASIER Corentin

Introduction

Ce projet SC a pour but de manipuler un bras robotique via une interface web afin de faire bouger des blocs.
Au travers de ce projet, nous utiliserons des appareils tels que des accéléromètres, la NANOBOARD (FPGA), la FOXBOARD (système embarqué) ou encore de l'ARDUINO (Microcontrôleur).
Le projet est composé d'une partie informatique et d'une partie électronique.

La partie informatique sera composée de l'interface web maniée par l'utilisateur, d'un serveur websocket sur la foxboard qui assurera le contrôle des moteurs à partir de l'interface web et l'envoi des informations des capteurs vers cette interface.

La partie électronique a pour but de récupérer et de traiter en partie les informations des capteurs avant de les envoyer à la foxboard. Cette partie est censé être assurée par la nanoboard et de l'électronique analogique, mais en pratique nous utiliserons une carte Arduino Mega.

Schema 2015.jpg

Séance 1 : 13/02/2015


Partie Informatique

Pour cette partie, nous avons fortement étudié le cahier des charges et le fonctionnement des différents code sources mis à notre disposition. Nous avons réfléchis à la manière dont nous allons traiter les informations issus de l'ARDUINO. Nous avons décidés de créer dans notre code un vecteur qui serait utilisé pour stocker les différentes positions que pourrait atteindre le bras. A l'aide de ces positions de référence, nous pourrons ainsi déterminer les mouvements simples que devrait effectuer le bras pour attraper la pièce et aller la positionner à un autre endroit.

La séance suivante, nous essaierons de manipuler manuellement le bras en compilant le code source du démon et en y utilisant la fonction de contrôle manuel que nous avons repérés en l'étudiant.

Partie électronique


Dans un premier temps, nous avons longement étudié le cahier des charges, afin de bien comprendre ce qui nous était demandé.
Puis, nous avons commencé à réfléchir sur l'architecture de notre générateur de signaux MLI (Modulation à Largeur d'Impulsion ou PWM). Nous avons penser mettre en place l'architecture suivante :

Mli1 m.jpg

Il se présente sous la forme d'un amplificateur opérationnel utilisé en mode comparateur. Nous comparons un signal triangulaire à une constante. Si le signal triangulaire dépasse la constante, le signal de sortie Vm passe à +Vcc (ou 1 logique), sinon le signal passe à 0. Nous remarquons que si nous faisons varier la constante, les largeurs du signal de sortie grandissent, faisant varier le rapport cyclique et la valeur moyenne. Finalement, le comportement serait le suivant :

Mli2 m.jpg

Nous comptons créer le signal triangulaire à l'aide de VHDL s'il nous est impossible d'implémenter un générateur de signal triangulaire à l'aide du logiciel Altium Designer.

Par la suite, nous avons réfléchis à la partie analogique, c'est-à-dire la comparaison de nos signaux aux valeurs réelles des capteurs pour réaliser l'asservissement du bras. Nous pensons réaliser l'architecture suivante :

Ets m.jpg

Le filtre RC est utilisé ici comme intégrateur. A sa sortie, nous récupérons la valeur moyenne du signal de MLI. En faisant varier le signal de MLI, nous modifions son rapport cyclique donc sa valeur moyenne. Nous comparons ensuite cette tension à la tension issu de capteur pour récupérer un nouveau signal MLI.