Contrôle de sonar, 2012/2013, TD3

De Wiki de Projets IMA

Evaluation informatique et électronique

Gestion de projet / rédaction Wiki

  • Informatique : Rapport sur le Wiki minimal, retouché par la suite. Jaoui ne semble pas avoir participé à la réalisation informatique. Note 50%.
  • Electronique : le rapport est bien détaillé, un schéma plus général en début de rapport aurait cependant permis une meilleure compréhension du design, quelques erreurs dans la rédaction, pas de chronogrammes permettant de valider certaines parties du design. Note : 80%.

Note : 65%.

Test fonctionnels

  • Sous-système. Note : 65%.
    • Sous-système informatique : Une page Web quasi-vierge, le servo-moteur est difficile à faire fonctionner (pas de test des limites, ne tourne pas franchement), la distance est bien affichée de façon dynamique avec une barre. Note 50%.
    • Sous-système électronique : A ma connaissance, le sous-système n’a pas été testé entièrement. Les différents blocs constituant le design pour la partie numérique avaient été testés (dommage qu’il n’y ait pas de chronogrammes de l’analyseur logique dans le rapport). Note : 80%.

Qualité de la réalisation

  • Informatique : Note 40%.
    • procédure de test : Pas de fichier LisezMoi, rien sur le Wiki. Pas de test effectué par les élèves devant l'enseignant. Le test par l'enseignant est moyen (du Web 1.0 pour faire tourner le servo). Note 50%.
    • pages HTML et Javascript : Pas de fichier remis, plusieurs versions obtenues au fur et a mesure jusqu'a un mois après la fin du projet. En définitive la page principale est vaguement fonctionnelle pour l'affichage de la distance avec une barre (graduée en mètres alors que la distance est donnée en centimètres). Le servo-moteur est contrôlé par un formulaire HTML bien classique. L'affichage de la barre de distance se fait sans la bibliothèque JQuery (appel ajax à la main). Note 50%.
    • scripts PHP ou programmes C : Un fichier de récupération de valeurs du sonar dist.php délirant. Un fichier C mv.c retrouvé au hasard sur zabeth12 implantant un cgi-bin capable de bouger le servo. Note 50%.
    • installation sur FoxBoard : Rien, aucune FoxBoard au nom des élèves, rien à ce sujet dans le Wiki. Note 0%.
  • Electronique : Note 75%.
    • qualité de la réalisation :Le design de la partie numérique est correcte et bien détaillé dans le wiki. Certaines parties auraient pu toutefois être simplifiées

Côté analogique, amplificateur non-inverseur est sous-alimenté (VCC=5V) entraînant un signal de sortie d’amplitude max 5V ce qui est trop faible pour attaquer l’émetteur. Le comparateur (partie P3) est alimenté de manière incorrecte (+5V / -5V) entraînant un signal de sortie de valeur -5V ou +5V ce qui est incompatible avec les entrées de la nanoboard. Le principe de fonctionnement de la partie analogique est cependant valable. Note : 75%.

    • tests autonomes :Utilisation analyseur logique et instrument virtuel. Note : 75%.

Bilan

Note finale : 65% => 13/20.

Rapports des élèves

1ère séance

    • Partie Electronique

Nous avons mis en place un plan de travail en décomposant le système en deux parties. Une partie numérique, ayant comme rôle la conception et la réception du signal, intégrant à celui-ci un compteur afin de mesurer la distance parcourue. La deuxième partie est numérique et s’occupe de l’amplification du signal reçu et émis.

La partie numérique est composée de deux sous-systèmes, l’un s’occupant de générer le signal grâce à une horloge qu’on lie à un compteur s’incrémentant à chaque front montant de l’horloge auquel on ajoute un comparateur afin de comparer avec trois afin d’arrêter l’émission après trois impulsion. D’un autre côté on pose une autre horloge avec une fréquence plus faible afin d’avoir une période plus grande et d’espacer les fronts montants et ainsi incrémenter plus longuement afin de pouvoir calculer une durée de 1 secondes et ainsi pouvoir emmètre à nouveau.


    • Partie Informatique

Durant cette première séance on a essayé de comprendre le fonctionnement du sonar, en le contrôlant grâce à une liaison série, qui est un câble USB contrôlé par l’ordinateur. Un programme C nous a permis de comprendre les différentes commandes permettant de pivoter le sonar, et d’acquérir la position actuelle. Pour faire cela on a installé la bibliothèque de programmation Phidget . Ensuite on a crée une page web dynamique en PHP et en JavaScript qui permet de changer la position du sonar grâce à la fonction onblur de la bibliothèque « Jquery ».

2eme séance

    • Partie électronique

Nous avons terminé la partie numérique (compilé)mais nous n'avons pas eu le temps de réaliser les tests.

  • Les modifications mise en place:

->Mise en place du système de réception: Ajout d'un compteur calculant la durée du trajet de l'onde, liée avec la partie d’émission afin de permettre l'initialisation de l’envoie mais aussi avec le capteur de réception afin d’arrêter le compteur et d'envoyer la valeur.

->Ajout d'un compteur et un comparateur a la sortie qui nous permet de bloquer la réception pendant l’émission du signal.

->Ajout d'un compteur/comparateur a l’entrée de la réception afin de détecter l’arrivée du signal et permettre l’arrêt de l’incrémentation du compteur et l'envoie de la valeur.

    • Partie informatique

Nous avons mis en place une interface web capable d’interagir avec le sonar, à savoir le faire tourner vers un angle que l'utilisateur peut changer à partir de la page web. Nous avons aussi mis en place une barre interactif réalisé en Javascript qui permet de changer de taille et de couleur proportionnellement à la distance envoyée par le sonar. Il faut préciser que l'interface web permet de commander le servomoteur à travers un script CGI-BIN écrit en C.

3eme séance

    • Partie électronique

La partie Numérique a été finie et testée(fonctionne comme souhaité):

-Envoie de 7 impulsion et enregistrement de la valeur du compteur a la réception d'une impulsion en entrée, le test a été fait en simulant le signal reçu grâce a un interrupteur.

La partie Analogique finie mais non testé:

-Utilisation de quatre amplificateur, deux d'entre eux pour amplifier le signal reçu et émis, un autre comme suiveur afin de protéger la Partie numérique et un en tant que comparateur afin de transformé le signal reçu en un signal numérique.

    • Partie informatique

Lors de cette 3ème séance on a confectionné notre page web en y rajoutant une représentation graphique des distances retournées par le sonar, en utilisant le système canvas intégré à HTML5. On stocke les valeurs retournées par le sonar dans un tableau Javascript en fonction de l'angle. Ensuite on construit le dessin grâce à une fonction d'affichage qui utilise canvas en fonctions des valeurs stockées dans le tableau.

Bilan du Projet:

Partie informatique:

Texte alternatif pour l'image
Page web

La page web permettant de contrôler le sonar est composée : - Un champ qui permet d’envoyer la valeur de l’angle désirée à un script CGI. Ce dernier fait tourner le servomoteur suivant la valeur qui lui a été transmise. - La distance envoyée par le sonar est récupérée par ce même script, ensuite récupérée par notre script PHP et affichée sur la page, et ce de façon périodique. - Une barre interagit avec la distance renvoyée par le sonar et change de taille proportionnellement à la distance maximale qui peut être envoyée par le sonar.


    • Rotation du sonar :

Grâce à la partie 1 de la page web, qui est un champ de saisie fonctionnant sur onclick, la valeur saisie est envoyée au script CGI une fois que l’utilisateur ait enlevé le curseur du champ de saisie. Ce script CGI se charge de traiter la valeur qui lui a été transmise et entraîne ensuite la rotation du sonar vers l’angle initialement donné par l’utilisateur.


    • Récupération de la distance :

L’algorithme implanté dans la page distance.php se charge d’abord d’interroger le port USB correspondant au sonar par la commande : $f=fopen(SERIAL_DEVICE,'r+'). Serial_DEVICE, dans notre cas le USB0, qu’on définit comme suit : define('SERIAL_DEVICE','/dev/ttyUSB0'). Ensuite, on récupère la valeur envoyée par le sonar en faisant un simple « fread ». Il est impératif de lancer le script de configuration du port série avant de procéder à cette opération, sinon la récupération de la distance échouera.


    • Affichage de la distance :

Dans un fichier de script JScript, écrit séparément. On a implémenté une fonction qui permet de rafraîchir la valeur renvoyée par le sonar à intervalles réguliers. Ce script est inclus dans index.php, et la fonction de rafraîchissement est appelée au sein de cette même page. Le résultat est affiché dans la partie 2 de la page web.


    • La barre interactive :

La barre interactive change de taille proportionnellement à la valeur de la distance renvoyée par le sonar et la distance maximale que ce dernier peut envoyer. Cette barre est visible dans la partie 3 de la page.

Partie électronique:

Le but du système électronique mise en place est de calculer la distance entre celui-ci et un objet et cela en mesurant le temps de parcours d’une onde ultrasonore émise puis reçu par un capteur après réflexion sur un obstacle. Le système est composé d’une partie numérique mise en place grâce a une carte FPGA de la NanoBoard et une partie analogique.


Partie FPGA :

Cette partie a pour rôle d’envoyer 7 impulsions d’un signal carrée à une fréquence de 40 KHz tout en lançant un compteur qui s’arrêtera à la réception du signal ou se remettra à zéro à l’envoie d’un nouveau signal. La valeur obtenue par le compteur lors de la réception du signal nous donnera la distance parcouru ainsi la distance qui sépare le sonar de l’obstacle.

Texte alternatif pour l'image
Schéma de la partie Numérique

Afin de mieux comprendre le fonctionnement du système celui-ci a été décomposé en plusieurs sous partie dans le schéma ci-contre.


    • Émission du signal :


Partie 1 : Compteur d’une seconde

L’utilisation d’un compteur 8 bit nous permet d’incrémenter 255 fois (1111 1111 en binaire). Additionner ce compteur avec une horloge émettant un signal carré d’une fréquence de 255 Hz nous permet de compter une seconde et d’envoyer grâce à un comparateur un signal à la 255eme incrémentation. Et cela car avec une fréquence de 255Hz permet d’avoir une impulsion toute les T=1/255 ce qui nous fait un total de t=255*T=1s

Partie 2 : Contrôle du signal émis

Une horloge nous permet de régler le signal d’émission à 40KHz et une porte logique et nous permet d’envoyer le signal à l’arrivée du compteur de la partie une a 255. Celui-ci restant pendant T=3.921 ms sur la valeur binaire 1111 1111 l’horloge arrive à envoyer pendant cette période 156 impulsion car sa fréquence est de 40 KHz. Avec une telle fréquence, elle arrive à envoyer une impulsion toute les 0.025ms alors que le front montant du premier compteur dure 3.921ms.

Partie 3 : Contrôle du nombre d’impulsion envoyé

Un deuxième compteur nous permet de compter 7 impulsions avant d’envoyer un signal qui permet d’arrêter l’envoie. Un comparateur permet d’envoie un signal continue dès que la valeur dépasse 7. Une porte logique et dotée d’une entrée inverses permettant de transformer le signal reçu du comparateur en un nul qui permet d’annuler le signal émis. Problème : La réinitialisation du compteur n’est pas faite à chaque envoie mais cela n’engendre qu’une attente d’une autre seconde avant un nouveau envoie. Cela conduit à l’attente d’une durée de deux secondes au lieu d’une avant l’envoi d’une nouvelle série d’impulsion.

Partie 4 : Confirmation d’envoi du signal

Un compteur et un comparateur 3 bit permettent d’envoyer un signal après l’envoi de la série d’impulsion afin de réinitialiser tous les compteurs de la partie réception et de recommencer une nouvelle réception, mais aussi d’annuler toute réception avant envoie total du signal et ainsi éviter la réception du signal tout juste envoyer.


    • Réception du signal :


Partie 5 :

Le système mise en place a pour limite de mesurer une distance de deux mètre, pour cela on utilise un compteur 8 bit alimenté par un signal d’une fréquence de 22Khz : Avec cette fréquence on a une impulsion toutes les 0.045ms ce qui nous donne une durée maximum de 255x0.045=0.12ms. Etant donné que la vitesse de propagation d’une onde dans l’air est de 340m/s cela nous donne donc une distance parcouru de d=3.9m, ce qui nous permet d’avoir approximativement une distance limite de 2m entre l’émetteur et l’obstacle. La faible distance maximum parcourue nous permet en contre partit d’avoir une plus grande précision (+ou-0.153cm)

Partie 6 :

Le compteur utiliser dans cette partie nous permet une fois un front montant reçu d’envoyer grâce à un comparateur (comparant avec la valeur1) un signal, mise à zéro à l’aide d’un inverseur, puis envoyer vers l’entrée CE du compteur de la partie 5 afin d’enregistrer la valeur obtenue lors de la réception du signal.


Partie Analogique
Texte alternatif pour l'image
Schéma de la partie Analogique


Le circuit analogique comprend deux parties (émission/réception) permettant d’amplifier le signal émis mais aussi de transformer celui reçu en un signal numérique (0-5v).

Le bloc P1 du schéma ci-contre est un suiveur ayant pour rôle de protéger la partie numérique du système, alors que le P2 permet d’amplifier le signal émis et reçu avec un coefficient de 10. Le bloc P3 quand à lui est un comparateur nous permettant de transformer le signal en sortie du premier AO en un signal numérique.

Texte alternatif pour l'image
circuit de la partie Analogique