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

De Wiki de Projets IMA
(Evaluation informatique et électronique)
 
(33 révisions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== Evaluation informatique ==
+
== Evaluation informatique et électronique ==
  
 
=== Gestion de projet / rédaction Wiki ===
 
=== Gestion de projet / rédaction Wiki ===
  
Wiki mal tenu; rien sur la dernière séance ou les séances supplémentaires, très peu de chose sur l'électronique. Rédaction approximative avec des fautes d'orthographe et des phrases fumeuses (note 25%).
+
* Informatique : Wiki mal tenu; rien sur la dernière séance ou les séances supplémentaires, très peu de chose sur l'électronique. Rédaction approximative avec des fautes d'orthographe et des phrases fumeuses. Note 25%.
 +
* Electronique : Remise en retard. Le wiki contient trop de fautes d'orthographe, un effort est nécessaire. En revanche, les explications sont relativement judicieuses et les schémas intéressants. Note 60% (-10% pour le retard => 50%).
  
 
=== Test fonctionnels ===
 
=== Test fonctionnels ===
  
* Sous-système : Fonctionnel après avoir lancé le démon sur la FoxBoard (note 90%).  
+
* Sous-système informatique : Fonctionnel après avoir lancé le démon sur la FoxBoard. Note 90%.  
* Système : Non abordé (note 0%).
+
* Sous-système électronique : Tests en partie effectués, manquent des copies d'écran. Note 70%.
  
 
=== Qualité de la réalisation ===
 
=== Qualité de la réalisation ===
Ligne 16 : Ligne 17 :
 
* Scripts PHP ou programmes C : Indentation un peu limite, pas mal d'aide (note 75%).  
 
* Scripts PHP ou programmes C : Indentation un peu limite, pas mal d'aide (note 75%).  
 
* Installation sur FoxBoard : Installation propre pour les fichiers mais incomplète car le démon ne démarre pas à l'initialisation, de l'aide (note 80%).
 
* Installation sur FoxBoard : Installation propre pour les fichiers mais incomplète car le démon ne démarre pas à l'initialisation, de l'aide (note 80%).
 +
* Implémentation électronique : Implémentation minimale mais correct. Le multiplexeur / démultiplexeur ne sert à rien si vous n'utilisez pas les signaux entre les deux portes. Il manque la partie mémorisation. L'arrêt du compteur n'est pas prévu, ce qui rend le système non fonctionnel (note 60 %).
 +
* Tests électronique : Les tests qui ont été effectués ne sont pas bien renseignés sur le wiki (note 60%).
  
 
=== Bilan ===
 
=== Bilan ===
  
Tous les points ont un poids équivalent (sauf "système" qui est un bonus).
+
Note finale : 60% (12/20).
 +
 
 +
== '''Projet accéléromètre''' ==
  
Note finale : 60% (12/20).
 
  
  
== Projet accéléromètre ==
+
'''Objectifs :''' Réaliser un sous-système d'acquisition pour accéléromètre plus une interface Web permettant à l'utilisateur de suivre les accélérations suivant les trois axes.
  
  
Objectifs : Réaliser un sous-système d'acquisition pour accéléromètre plus une interface Web permettant à l'utilisateur de suivre les accélérations suivant les trois axes.
+
'''Objectif de la partie électronique :''' Réaliser la conversion  analogique-numérique des signaux correspondant aux accélérations des trois axes.
  
  
Objectif de la partie électronique : Réaliser la conversion  analogique-numérique des signaux correspondant aux accélérations des trois axes.
+
== '''1ère séance''' ==
  
  
== 1ère séance ==
 
  
 +
== == '''Partie informatique''' == ==
  
== Partie informatique ==
 
  
  
Au cours de la 1ère séance, nous avons cherché à comprendre le but du projet. L'objectif principal du projet est de pouvoir mesurer l'accéleration de l'accelerometre et de l'afficher grâce à un sous-système d'acquisiton.
+
Au cours de la 1ère séance, nous avons cherché à comprendre le but du projet. L'objectif principal du projet est de pouvoir mesurer l'accélération de l'accéléromètre et de l'afficher grâce à un sous-système d'acquisition.
De ce fait, nous avons créé une page web nommée "projet_accelerometre.html" afin d'afficher la valeur de l'accéleration. Nous nous sommes aidé de prototype.js qui était un exemple de système de messagerie instantanée primitive.
+
De ce fait, nous avons créé une page web nommée "projet_accelerometre.html" afin d'afficher la valeur de l'accélération. Nous nous sommes aidé de prototype.js qui était un exemple de système de messagerie instantanée primitive.
 
Pour relier la page web aux programmes, nous devons utiliser une requête. Nous avons modifié l'exemple fourni de la page web utilisant JavaScript.
 
Pour relier la page web aux programmes, nous devons utiliser une requête. Nous avons modifié l'exemple fourni de la page web utilisant JavaScript.
 
Par ailleurs, nous avons ensuite lu les programmes cgi-bin.c ainsi que demon.c pour comprendre leurs fonctions.
 
Par ailleurs, nous avons ensuite lu les programmes cgi-bin.c ainsi que demon.c pour comprendre leurs fonctions.
 
Nous avons compris que:  
 
Nous avons compris que:  
- cgi-bin.c est un programme utilisant le démon série -> envoie 1 octet nul au port série via le démon série puis récupère 8 octets nuls au port série.  
+
- cgi-bin.c est un programme utilisant le démon série -> envoie 1 octet au port série via le démon série puis réception de 8 octets sur port série.  
 
- demon.c gère le port série de la Foxboard.
 
- demon.c gère le port série de la Foxboard.
  
 +
Commentaires (XR pour l'info) :
 +
* formattage non correct (les items par exemples) ;
 +
* "récupère 8 octets nuls au port série" => ce n'est pas du français ;
 +
* pourquoi affirmer que les octets sont nuls ?
 +
 +
== == '''Partie électronique''' == ==
  
== Partie électronique ==
 
  
  
 
Dans un premier temps on a conçût le schéma général du CAN.
 
Dans un premier temps on a conçût le schéma général du CAN.
  
[[Fichier:CAN TILT.png]]
+
                      [[Fichier:CAN TILT.png]]  
  
 +
''Convertisseur Analogique numérique du système TILT''
  
----
+
Pour réaliser un convertisseur analogique numérique, on utilise souvent la modulation de largeur d'impulsions (PWM).
Convertisseur Analogique numérique du système TILT
+
Le but est de créer un signal logique (0 ou 1) avec une fréquence constante mais un rapport cyclique variable.
  
Durant cette séance, nous avons réalisé le schéma de câblage de la PWM sur le logiciel altium. Ce montage permettra de créer un signal carré de rapport cyclique variable à partir d'un mot de commande de 6 bits.
+
L’accélération d'un axe étant codé sur 6 bits, on a utilisé alors un compteur comptant de 1 à 64 pour réaliser la PWM (par exemple, la valeur 32 représente un rapport cyclique d’environ 0,5).
  
 +
L'ajout d'un filtre passe bas (filtre RC) a permis d’obtenir la valeur moyenne du signal logique avec un rapport cyclique variable. Cette valeur moyenne correspond à la valeur du rapport cyclique.
 +
Ainsi en sortie du filtre, on a un signal en dent de scie avec une fréquence 64 fois plus petite que celle du signal de la PWM.
  
== 2ième séance ==
+
Ensuite, la valeur moyenne de la PWM est comparée avec la valeur de l'accélération de l'un des axes. C'est-à-dire qu'un comparateur renvoi 1 (5V) si la valeur moyenne de la PWM est supérieure à la valeur mesurée et 0 (0V) pour l'inverse.
  
 +
Le principe de conversion de chaque axe étant le même, on a donc travaillé que sur un axe. Le schéma joint à ''la séance 3'' (créé sous ALTIUM) doit fonctionner pour les 3 axes.
 +
 +
Durant la deuxième partie de séance, on a créé le schéma de la PWM sous ALTIUM.
 +
 +
== '''2ième séance''' ==
 +
 +
 +
 +
== == '''Partie informatique''' == ==
  
== Partie informatique ==
 
  
  
 
Pour créer le programme principale, on s'est aidé de l'exemple du script CGI-BIN.c.
 
Pour créer le programme principale, on s'est aidé de l'exemple du script CGI-BIN.c.
On a tout d'abord tester le script CGI-BIN.c fourni sur le site après avoir remplacer l'URL fileaccess.php dans les constructeurs Ajax.Request dans la page  par l'URL /cgi-bin/fileaccess. On a en particulier utiliser la bibliothèque cgilib et certaines fonctions appartenant à la biblitohèque cgilib dans le programme principal telles que: cgiInit pour initialiser la bibliothèque, cgiFree...
+
On a tout d'abord testé le script CGI-BIN.c fourni sur le site après avoir remplacé l'URL fileaccess.php dans les constructeurs Ajax.Request dans la page  par l'URL /cgi-bin/fileaccess. On a en particulier utilisé la bibliothèque cgilib et certaines fonctions appartenant à la bibliothèque cgilib dans le programme principal telles que: cgiInit pour initialiser la bibliothèque, cgiFree...
 
Ensuite, on utilise les fonctions du démon série afin de gérer la connexion au port série de la Foxboard.
 
Ensuite, on utilise les fonctions du démon série afin de gérer la connexion au port série de la Foxboard.
Dans le programme principal, c'est la fonction "read(sl,&c,sizeof(char))" qui va permettre de lire sur la connexion au serveur sl 1 caractère.
+
Dans le programme principal, c'est la fonction "read(sl,&c,sizeof(char))" qui va permettre de lire sur la connexion au serveur 1 caractère. "Sl" est un descripteur de la connexion au serveur.
 
Nous avons taper "man select" dans le terminal afin de récupérer les fonctions qui vont permettre de créer des descripteurs de fichiers et de lire la donnée du port série s'il y en a et de faire un "break" s'il y en a pas.
 
Nous avons taper "man select" dans le terminal afin de récupérer les fonctions qui vont permettre de créer des descripteurs de fichiers et de lire la donnée du port série s'il y en a et de faire un "break" s'il y en a pas.
  
 
On a par ailleurs installé l'exécutable dans /usr/lib/cgi-bin.
 
On a par ailleurs installé l'exécutable dans /usr/lib/cgi-bin.
  
On a alors relié la pièce sur lequelle il y a l'accelerometre à l'ordinateur, puis on constate que après avoir exécuter démon.c on peut lire sur la page web projet_accelerometre.html l'accéleration de la pièce. Nous avons modifié dans le programme de la page web 'setTimeout("charger()",500)'  afin de récuperer des données toutes les 5 ms.
+
On a alors relié la pièce sur laquelle il y a l'accéléromètre à l'ordinateur, puis on constate que après avoir exécuter démon.c on peut lire sur la page web projet_accelerometre.html l'accélération de la pièce. Nous avons modifié dans le programme de la page web 'setTimeout("charger()",500)'  afin de récupérer des données toutes les 5 ms.
  
L'objectif de la dernière séance a été de copier tous les programmes sur la nanoboard.  
+
L'objectif de la dernière séance a été de copier tous les programmes sur la foxboard.  
Le soucis rencontré a été de télecharger la bibliothèque cgilib que l'on ne trouvait pas. La solution a été de télecharger une bibliothèque presque similaire puis de changer le nom de certaines fonctions du programme dans cgi-bin.c .
+
Le soucis rencontré a été de télécharger la bibliothèque cgilib que l'on ne trouvait pas. La solution a été de télécharger une bibliothèque presque similaire puis de changer le nom de certaines fonctions du programme cgi-bin.c .
  
 +
Commentaires (XR pour l'info) :
 +
* orthographe défaillante (principale, tester, utiliser, biblitohèque, taper, copier, soucis) ;
 +
* seconde phrase incompréhensible (mélange entre les scripts PHP et le code javascript) ;
 +
* répétitions dans la troisième phrase qui conduisent à une expression confuse ;
 +
* vous n'utilisez jamais les fonctions du démon série ;
 +
* <tt>sl</tt> n'est pas le serveur mais un descripteur de la connexion au serveur ;
 +
* le passage sur <tt>select</tt> est totalement fantaisiste, <tt>select</tt> ne fait pas de "création de descripteur", "faire un break" est une expression très maladroite ;
 +
* vous parlez d'"une pièce", c'est trop imprécis ;
 +
* vous ne copiez pas sur un nanoboard mais sur une foxboard ;
 +
* "fonction du programme dans cgi-bin.c" ; expression non correcte.
  
== Partie électronique ==
+
== == '''Partie électronique''' == ==
  
  
On a consacré cette séance à la finalisation de la PWM et la création du filtrage afin de récupérer la valeur moyenne du signal de la PWM. Tout d'abord, nous avons testé le schéma de câblage de la PWM (créé durant la séance 1) sur la nanoboard et vérifié le bon fonctionnement à partir d'un oscilloscope.
 
En modifiant le mot de commande de 6 bits, nous obtenions bien un signal carré avec un rapport cyclique variable. Ensuite, on a réalisé le filtre RC ( R=1kohms C=220nF) permettant d'obtenir la valeur moyenne de la PWM.
 
  
 +
On a consacré cette séance à la finalisation de la PWM et la création du filtrage afin de récupérer la valeur moyenne du signal de la PWM.
 +
Tout d'abord, nous avons testé le schéma de câblage de la PWM (créé durant la séance 1) sur la nanoboard et vérifié son fonctionnement à partir d'un oscilloscope.
  
== 3ième séance ==
+
En modifiant le mot de commande de 6 bits, nous obtenions bien un signal carré avec un rapport cyclique variable.
  
 +
Ensuite, on a réalisé le filtre RC ( R=1kohms C=220nF) permettant d'obtenir la valeur moyenne de la PWM.
 +
 +
                                        [[Fichier:Filtre comp tilt.png]]
 +
 +
== '''3ième séance''' ==
 +
 +
 +
 +
== == '''Partie électronique''' == ==
  
== Partie électronique ==
 
  
  
 
Afin de comparer la tension  provenant de l'accéléromètre avec la valeur moyenne du signal PWM on a utilisé un AOP LM324N.
 
Afin de comparer la tension  provenant de l'accéléromètre avec la valeur moyenne du signal PWM on a utilisé un AOP LM324N.
 +
 +
Voici le schéma complet de la partie "PWM" pour les 3 accélérations. Pour réaliser 3 fois la PWM, on a fait un multiplexage.
 +
 +
Par manque de temps, nous n'avons pas testé son fonctionnement.
 +
 +
[[Fichier:PWM ALTIUM.png]]

Version actuelle datée du 22 juin 2012 à 14:57

Evaluation informatique et électronique

Gestion de projet / rédaction Wiki

  • Informatique : Wiki mal tenu; rien sur la dernière séance ou les séances supplémentaires, très peu de chose sur l'électronique. Rédaction approximative avec des fautes d'orthographe et des phrases fumeuses. Note 25%.
  • Electronique : Remise en retard. Le wiki contient trop de fautes d'orthographe, un effort est nécessaire. En revanche, les explications sont relativement judicieuses et les schémas intéressants. Note 60% (-10% pour le retard => 50%).

Test fonctionnels

  • Sous-système informatique : Fonctionnel après avoir lancé le démon sur la FoxBoard. Note 90%.
  • Sous-système électronique : Tests en partie effectués, manquent des copies d'écran. Note 70%.

Qualité de la réalisation

  • Procédure rédigée sur le Wiki : Rien sur la FoxBoard, rien sur le Wiki (note 0%).
  • Pages HTML et Javascript : Correct, de l'aide mais le résultat est fonctionnel bien que primitif (note 80%).
  • Scripts PHP ou programmes C : Indentation un peu limite, pas mal d'aide (note 75%).
  • Installation sur FoxBoard : Installation propre pour les fichiers mais incomplète car le démon ne démarre pas à l'initialisation, de l'aide (note 80%).
  • Implémentation électronique : Implémentation minimale mais correct. Le multiplexeur / démultiplexeur ne sert à rien si vous n'utilisez pas les signaux entre les deux portes. Il manque la partie mémorisation. L'arrêt du compteur n'est pas prévu, ce qui rend le système non fonctionnel (note 60 %).
  • Tests électronique : Les tests qui ont été effectués ne sont pas bien renseignés sur le wiki (note 60%).

Bilan

Note finale : 60% (12/20).

Projet accéléromètre

Objectifs : Réaliser un sous-système d'acquisition pour accéléromètre plus une interface Web permettant à l'utilisateur de suivre les accélérations suivant les trois axes.


Objectif de la partie électronique : Réaliser la conversion analogique-numérique des signaux correspondant aux accélérations des trois axes.


1ère séance

== Partie informatique ==

Au cours de la 1ère séance, nous avons cherché à comprendre le but du projet. L'objectif principal du projet est de pouvoir mesurer l'accélération de l'accéléromètre et de l'afficher grâce à un sous-système d'acquisition. De ce fait, nous avons créé une page web nommée "projet_accelerometre.html" afin d'afficher la valeur de l'accélération. Nous nous sommes aidé de prototype.js qui était un exemple de système de messagerie instantanée primitive. Pour relier la page web aux programmes, nous devons utiliser une requête. Nous avons modifié l'exemple fourni de la page web utilisant JavaScript. Par ailleurs, nous avons ensuite lu les programmes cgi-bin.c ainsi que demon.c pour comprendre leurs fonctions. Nous avons compris que: - cgi-bin.c est un programme utilisant le démon série -> envoie 1 octet au port série via le démon série puis réception de 8 octets sur port série. - demon.c gère le port série de la Foxboard.

Commentaires (XR pour l'info) :

  • formattage non correct (les items par exemples) ;
  • "récupère 8 octets nuls au port série" => ce n'est pas du français ;
  • pourquoi affirmer que les octets sont nuls ?

== Partie électronique ==

Dans un premier temps on a conçût le schéma général du CAN.

                     CAN TILT.png 

Convertisseur Analogique numérique du système TILT

Pour réaliser un convertisseur analogique numérique, on utilise souvent la modulation de largeur d'impulsions (PWM). Le but est de créer un signal logique (0 ou 1) avec une fréquence constante mais un rapport cyclique variable.

L’accélération d'un axe étant codé sur 6 bits, on a utilisé alors un compteur comptant de 1 à 64 pour réaliser la PWM (par exemple, la valeur 32 représente un rapport cyclique d’environ 0,5).

L'ajout d'un filtre passe bas (filtre RC) a permis d’obtenir la valeur moyenne du signal logique avec un rapport cyclique variable. Cette valeur moyenne correspond à la valeur du rapport cyclique. Ainsi en sortie du filtre, on a un signal en dent de scie avec une fréquence 64 fois plus petite que celle du signal de la PWM.

Ensuite, la valeur moyenne de la PWM est comparée avec la valeur de l'accélération de l'un des axes. C'est-à-dire qu'un comparateur renvoi 1 (5V) si la valeur moyenne de la PWM est supérieure à la valeur mesurée et 0 (0V) pour l'inverse.

Le principe de conversion de chaque axe étant le même, on a donc travaillé que sur un axe. Le schéma joint à la séance 3 (créé sous ALTIUM) doit fonctionner pour les 3 axes.

Durant la deuxième partie de séance, on a créé le schéma de la PWM sous ALTIUM.

2ième séance

== Partie informatique ==

Pour créer le programme principale, on s'est aidé de l'exemple du script CGI-BIN.c. On a tout d'abord testé le script CGI-BIN.c fourni sur le site après avoir remplacé l'URL fileaccess.php dans les constructeurs Ajax.Request dans la page par l'URL /cgi-bin/fileaccess. On a en particulier utilisé la bibliothèque cgilib et certaines fonctions appartenant à la bibliothèque cgilib dans le programme principal telles que: cgiInit pour initialiser la bibliothèque, cgiFree... Ensuite, on utilise les fonctions du démon série afin de gérer la connexion au port série de la Foxboard. Dans le programme principal, c'est la fonction "read(sl,&c,sizeof(char))" qui va permettre de lire sur la connexion au serveur 1 caractère. "Sl" est un descripteur de la connexion au serveur. Nous avons taper "man select" dans le terminal afin de récupérer les fonctions qui vont permettre de créer des descripteurs de fichiers et de lire la donnée du port série s'il y en a et de faire un "break" s'il y en a pas.

On a par ailleurs installé l'exécutable dans /usr/lib/cgi-bin.

On a alors relié la pièce sur laquelle il y a l'accéléromètre à l'ordinateur, puis on constate que après avoir exécuter démon.c on peut lire sur la page web projet_accelerometre.html l'accélération de la pièce. Nous avons modifié dans le programme de la page web 'setTimeout("charger()",500)' afin de récupérer des données toutes les 5 ms.

L'objectif de la dernière séance a été de copier tous les programmes sur la foxboard. Le soucis rencontré a été de télécharger la bibliothèque cgilib que l'on ne trouvait pas. La solution a été de télécharger une bibliothèque presque similaire puis de changer le nom de certaines fonctions du programme cgi-bin.c .

Commentaires (XR pour l'info) :

  • orthographe défaillante (principale, tester, utiliser, biblitohèque, taper, copier, soucis) ;
  • seconde phrase incompréhensible (mélange entre les scripts PHP et le code javascript) ;
  • répétitions dans la troisième phrase qui conduisent à une expression confuse ;
  •  vous n'utilisez jamais les fonctions du démon série ;
  • sl n'est pas le serveur mais un descripteur de la connexion au serveur ;
  • le passage sur select est totalement fantaisiste, select ne fait pas de "création de descripteur", "faire un break" est une expression très maladroite ;
  • vous parlez d'"une pièce", c'est trop imprécis ;
  • vous ne copiez pas sur un nanoboard mais sur une foxboard ;
  • "fonction du programme dans cgi-bin.c" ; expression non correcte.

== Partie électronique ==

On a consacré cette séance à la finalisation de la PWM et la création du filtrage afin de récupérer la valeur moyenne du signal de la PWM. Tout d'abord, nous avons testé le schéma de câblage de la PWM (créé durant la séance 1) sur la nanoboard et vérifié son fonctionnement à partir d'un oscilloscope.

En modifiant le mot de commande de 6 bits, nous obtenions bien un signal carré avec un rapport cyclique variable.

Ensuite, on a réalisé le filtre RC ( R=1kohms C=220nF) permettant d'obtenir la valeur moyenne de la PWM.

                                        Filtre comp tilt.png

3ième séance

== Partie électronique ==

Afin de comparer la tension provenant de l'accéléromètre avec la valeur moyenne du signal PWM on a utilisé un AOP LM324N.

Voici le schéma complet de la partie "PWM" pour les 3 accélérations. Pour réaliser 3 fois la PWM, on a fait un multiplexage.

Par manque de temps, nous n'avons pas testé son fonctionnement.

PWM ALTIUM.png