Contrôle d'accéléromètre, 2013/2014, TD1 : Différence entre versions

De Wiki de Projets IMA
(Séance 1 : Familiarisation avec l'accéléromètre et communication série)
Ligne 95 : Ligne 95 :
  
 
=== Séance 1 : Familiarisation avec l'accéléromètre et communication série===
 
=== Séance 1 : Familiarisation avec l'accéléromètre et communication série===
 
+
Lors de la première séance, nous avons essayé dans un premier temps de faire fonctionner le port série en récupérant les données de l'accéléromètre par un programme C. Nous nous sommes aidés de l'[http://rex.plil.fr/Enseignement/Systeme/Projet.IMA3/systeme017.html exemple fournis].
Ecriture des fichiers serial.h et serial.c<br>
+
Voici ce que fais l'exécutable créé :
Compilation de serial.c<br>
+
* On envoie un octet nul au port série. Notre système sans fil équipé de l'accéléromètre reçoit cet octet.<br>  
Exécution de l'exécutable<br>
+
* Le système sans fil envoie 4 octets au port série qui correspondent à :<br>
-> On envoie un octet nul au port série. Notre système sans fil équipé de l'accéléromètre reçoit cet octet.<br>  
+
** octet 1 : accélération horizontale<br>
-> Le système sans fil envoie 4 octets au port série qui correspondent à :<br>
+
** octet 2 : accélération verticale<br>
octet 1 : position en x<br>
+
** octet 3 : accélération en profondeur<br>
octet 2 : position en y<br>
+
** octet 3 : état des 2 boutons (00 : 2 boutons non enfoncés, 01 : 1er bouton enfoncé, 02 : 2ème bouton enfoncé, 03 : les 2 boutons enfoncés)<br>
octet 3 : position en z<br>
+
* Affichage de ces 4 octets en hexadécimal dans le terminal
octet 3 : état des 2 boutons (00 : 2 boutons non enfoncés, 01 : 1er bouton enfoncé, 02 : 2ème bouton enfoncé, 03 : les 2 boutons enfoncés)<br>
 
-> Affichage de ces 4 octets en hexadécimal dans le terminal
 
  
 
=== Séance 2 ===
 
=== Séance 2 ===

Version du 28 mai 2014 à 13:59

Introduction

L'objectif de ce projet est de réaliser un sous-système d'acquisition pour accéléromètre. L'interface Web associée permet à l'utilisateur de suivre les accélérations et de sélectionner une couleur.

Cahier des charges

Sur la carte NanoBoard

Ce module a pour but de mesurer l'accélération selon trois axes de la carte. La mesure se base sur l'utilisation d'un accéléromètre trois axes et sur la conversion analogique-numérique de signaux. La conversion analogique-numérique développée dans ce projet est basée sur la génération de signaux PWM (Pulse Width Modulation, ou Modulation de Largeur d'Impulsions) puis par leur filtrage (filtre passe-bas) permettant d'obtenir une tension continue variable représentant la valeur numérique. L’accéléromètre donne, pour chaque axe, une tension continue proportionnelle à la valeur de l’accélération mesurée. Ce module est composé de deux parties : une partie implémentée dans la carte FPGA de la NanoBoard et une partie analogique réalisée sur une plaque d'essais.

  • Partie FPGA

La partie implantée dans le FPGA a pour fonction de générer 3 signaux PWM (1 signal par axe) dont la tension moyenne (après filtrage) varie de zéro volt jusque la tension maximale de l’accéléromètre. Le signal PWM est un signal de fréquence constante mais dont on change le rapport cyclique grâce à une donnée de commande codée sur cinq bits. Ainsi, la donnée de commande correspond indirectement à la valeur moyenne du signal PWM.

  • Partie analogique

La partie analogique permet de comparer la valeur moyenne du signal PWM (signal issu de la NanoBoard) avec la tension provenant de l'accéléromètre. Tant que la valeur moyenne du signal PWM (réglée par la donnée de commande) est inférieure à la tension provenant de l'accéléromètre, la sortie du comparateur est à 0V. Lorsque la valeur moyenne du signal PWM devient supérieure ou égale à la tension de l’accéléromètre, la sortie du comparateur passe à +Vcc. A ce moment là, la donnée de commande correspond à la représentation numérique de la tension de l'accéléromètre (conversion analogique- numérique). L’écriture dans la mémoire ne se faisant que sur un seul octet, il conviendra donc d’effectuer un multiplexage pour envoyer les trois octets correspondant aux 3 axes vers la mémoire. Afin de simplifier la vérification du fonctionnement, l'utilisation de l'analyseur logique est fortement recommandée.
Entrées : pas d'entrée.
Sorties : un octet représentant la tension délivrée par l'accéléromètre suivant l’un des trois axes, un bit indiquant la fin de la conversion analogique-numérique

Sur la FoxBoard

L'interface devra être du type Web 2.0 avec utilisation de la bibliothèque JavaScript jquery.js (voir l'exemple d'utilisation E.1 en annexe). Cette interface Web sera constituée de six carrés de couleur disposés symétriquement sur la page. Une télécommande munie d'un accéléromètre est utilisée pour désigner un carré. D'un point de vue technique, un minuteur JavaScript se déclenche périodiquement pour effectuer les actions suivantes.

  • une requête Ajax est effectuée vers un programme C CGI-BIN de scrutation pour récupérer les accélérations sur les trois axes, ce programme peut être basé sur le programme C de communication sur le port série donné en annexe (voir C.4) ;
  • un calcul est effectué, en fonction des valeurs d'accélération sur les axes x et y, pour sélectionner l'un des 6 blocs en l'entourant d'un cadre noir.


Pour l'évaluation de la partie informatique, en cas de réalisation tardive sur la NanoBoard, un accéléromètre fixé à une télécommande en balsa et géré par un micro-contrôleur LilyPad est disponible. Les données acquises peuvent être lues via une liaison série sans fil (protocole ZigBee). Utilisez la télécommande dans le mode blanc (sélection avec le bouton de gauche et validation avec le bouton de droite).

Avancement du projet

Partie Electronique

Séance 1 : Découverte de la NanoBoard & d'Altium

N'ayant aucune notion de projets FPGA sous Altium, il nous a d'abord fallu nous familiariser avec cette interface.
Nous avons donc suivi le tutoriel nous permettant d'apprendre à programmer la NanoBoard.
Nous avons alors réalisé avec succès notre premier compteur 4 bits sous Altium.

Séance 2

Conversion Analogique Numérique : Principe

La NanoBoard ne travaillant qu'en signaux numériques, il est nécessaire de convertir le signal analogique émis par l'accéléromètre (de 0 à 5 V).
Elle envoie soit 0V, soit 5V. Nous utilisons donc une PWM (Pulse Width Modulation, ou Modulation de Largeur d'Impulsions).

On utilise un compteur qui fixe la fréquence du signal à générer.
On compare en permanence la valeur du compteur à une valeur fixe qui permet de définir le rapport cyclique

Nous obtenons ceci :

MLI filtree.png

Pour obtenir la valeur moyenne du signal de sortie de la NanoBoard (comme montré ci-dessus), nous utiliserons un filtre passe bas afin d'éliminer toutes les harmoniques qui ne nous intéressent pas.

Passe-bas.gif

Un comparateur AOP de type TL081 nous permettra de comparer notre signal ainsi filtré avec la sortie de l'accéléromètre :
Traits en pointillés : Valeur de l'accéléromètre

PWM Principe.png

Schéma résumant notre système de conversion Analogique Numérique :

Schema recap.png


Partie FPGA
[Texte à venir]


Partie Analogique
Conception du programme de conversion analogique numérique sous Altium Designer

Altium1.jpg


Séance 3 : Mise en pratique

Compilation sur la NanoBoard et Câblage
[Texte à venir]

Principaux problèmes rencontrés
[Texte à venir]


Partie Informatique

Séance 1 : Familiarisation avec l'accéléromètre et communication série

Lors de la première séance, nous avons essayé dans un premier temps de faire fonctionner le port série en récupérant les données de l'accéléromètre par un programme C. Nous nous sommes aidés de l'exemple fournis. Voici ce que fais l'exécutable créé :

  • On envoie un octet nul au port série. Notre système sans fil équipé de l'accéléromètre reçoit cet octet.
  • Le système sans fil envoie 4 octets au port série qui correspondent à :
    • octet 1 : accélération horizontale
    • octet 2 : accélération verticale
    • octet 3 : accélération en profondeur
    • octet 3 : état des 2 boutons (00 : 2 boutons non enfoncés, 01 : 1er bouton enfoncé, 02 : 2ème bouton enfoncé, 03 : les 2 boutons enfoncés)
  • Affichage de ces 4 octets en hexadécimal dans le terminal

Séance 2


[Texte à venir]


Séance 3


[Texte à venir]


Annexes

Acteurs du projet

Projet réalisé par Julien Hérin, Shuai He et Jérémie Denéchaud

Liens externes

Sujet disponible à l'adresse suivante :

Lien