<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vvergez</id>
		<title>Wiki d'activités IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vvergez"/>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php/Sp%C3%A9cial:Contributions/Vvergez"/>
		<updated>2026-05-13T07:50:17Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=18163</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=18163"/>
				<updated>2015-03-03T23:15:33Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Ajout lien via fichier wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapports finaux&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P1 Modélisation et commande de l'auto-ignition d'un moteur HCCI]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moulé Alexandre / Taché Clément &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Anne-Lise Gehin / Jean-Yves Dieulot &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier:Rapport decembre moule tache.pdf]]  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier: RapportFinPFE.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P5 Filtrage des indicateurs numériques de diagnostic]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; ZIOU Ismaïl / HAMZAOUI Oussama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_Z.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE ZIOU HAMZAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P6 Gestion des flux thermiques du bâtiment Polytech]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Florian Royer / Zohour Assaieb &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_Royer_Assaieb.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[Fichier:Rapport_Final_PFE_ProjetP6.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P7 Utilisation d'un Robot Nao pour les enfants autistes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rodriguez Loïc/Ismaïl Tahry&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Projetpfenaomi.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE RodriguezTahry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport decembre PFE pilulier mercier pinet.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE Pinet Mercier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_MiSoutenance_DESPREZ_HADDAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:RapportFinal_Desprez-Haddaoui.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_PFE_GAPAS_Rose_Tixier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier: Rapport_PFE_Rose_Tixier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P12 Automatiser à l'aide d'une interface LabView la procédure de mesure de conductivité électrique d'un alternateur à griffes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Hugo FONDU &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Abdelkader Benabou &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_presoutenance.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport soutenance Fondu.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Video projet Fondu.avi]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P13 Construction d'un support motorisé pour la réalisation des essais de décharges électrostatique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; JEBBARI Zineb / BEKRAOUI Oumaima &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Nathalie Rolland &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapportJebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapport-final-jebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P19 Contrôle et synchronisation d'instruments en microscopie]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Simon Duthoit&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Samuel Hym &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:RapportPFESimonDuthoit.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[ Fichier:ProjetBLE 1 pdf.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Bis Prototypage d'interactions localisées et contextualisées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Olivier Tailliez&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Vantroys / Yvan Peter &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier: PFE_Olivier_Tailliez.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P22 Google Glass en logistique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémy Gondry / Vincent Meunier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_intermediaire_Gondry_Meunier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_final_PFE_Meunier_Gondry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_P24_Deltombe.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P25 SmartMeter]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Ederlé / Sylvain Fossaert&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Guillaume Renault / Xavier Redon / Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportFossaertEderle.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportEderleFossaert.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P26 Vehicule Electrique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Smain Labdouni / Adnane Jaoui &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Arnaud Chielens / Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:RAPPORT_VE_DEC.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_pfe_Jaoui_Labdouni_Fevrier.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P27 Controle Direct de Puissance d'un Convertisseur Matriciel ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Quentin Pesqueux / Nicolas Alexandre &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:PFE_IMA5_MATRIX_CONVERTER_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_PFE_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Charlotte BRICOUT / Nathan MARTIN &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémie DEQUIDT&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:-BRICOUT MARTIN--Rapport PFE.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport PFE VF.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P33 Ligthing contactless / &amp;quot;wireless&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benjamin Lafit &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Benjamin_Lafit.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Final_Benjamin_Lafit.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P35 Hack-a-Wii : Emulation de wiimote pour rendre la Wii accessibles aux personnes handicapées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Fabien Violier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P37 Creation d'un composant d'audit des accès cache mémoire sur un microprocesseur LEON3 simulé en FPGA ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérôme Vaessen &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Julien Cartigny / Pierrick Buret &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_VAESSEN_presoutenance.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_PFE_P37_VAESSEN_finale.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P44 Création d'un systeme domotique sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benoit MALIAR / Thomas MAURICE&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierrick BURET / Thomas VANTROYS  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportMaliarMauriceDecembre.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_final_Maliar_Maurice.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_Mi-PFE_Apperce_Pierre.pdf|alt=Rapport intermédiaire du PFE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_Appercé_Pierre.pdf|alt=Rapport du PFE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Video_PFE_wiki.avi‎|alt=Video de présentation de PFE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[https://drive.google.com/file/d/0BzEs72ClJBLRTVBfZ09RYmpWYnM/view?usp=sharing Rapport intermédiaire]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[https://drive.google.com/file/d/0BzEs72ClJBLRTHVwZ2RrQmdwNkU/view?usp=sharing Rapport final]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:VidPFE_ValentinVERGEZ_web.mp4]] OU [https://drive.google.com/file/d/0BzEs72ClJBLRWnNELVZ1MEtIRzQ/view?usp=sharing Video (via Google Drive)]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P57 CHRU Lille : Smart Picking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu Bossennec / Florian Caron&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Gwénaëlle Maton / Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport-PFE-SmartPicking-Intermediaire.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport-PFE-BOSSENNEC_CARON-SmartPicking.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P58 Transformation des spectateurs d’un concert en afficheur géant interactif]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hautecoeur Mélanie &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier : PFE_Rapport_Hautecoeur_Melanie.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_projet_intermediaire_GERIER_LY.pdf]]‎&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_projet_GERIER_LY.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:VidPFE_ValentinVERGEZ_web.mp4&amp;diff=18162</id>
		<title>Fichier:VidPFE ValentinVERGEZ web.mp4</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:VidPFE_ValentinVERGEZ_web.mp4&amp;diff=18162"/>
				<updated>2015-03-03T23:10:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Video de PFE IMA5 2015 - Valentin VERGEZ
Simulateur Temps Réel d'un Environement de Robots Autonomes Logisticiens&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Video de PFE IMA5 2015 - Valentin VERGEZ&lt;br /&gt;
Simulateur Temps Réel d'un Environement de Robots Autonomes Logisticiens&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=18161</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=18161"/>
				<updated>2015-03-03T23:06:24Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Ajouts des liens de rapports et de vidéo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapports finaux&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P1 Modélisation et commande de l'auto-ignition d'un moteur HCCI]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moulé Alexandre / Taché Clément &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Anne-Lise Gehin / Jean-Yves Dieulot &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier:Rapport decembre moule tache.pdf]]  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier: RapportFinPFE.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P5 Filtrage des indicateurs numériques de diagnostic]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; ZIOU Ismaïl / HAMZAOUI Oussama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_Z.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE ZIOU HAMZAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P6 Gestion des flux thermiques du bâtiment Polytech]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Florian Royer / Zohour Assaieb &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_Royer_Assaieb.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[Fichier:Rapport_Final_PFE_ProjetP6.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P7 Utilisation d'un Robot Nao pour les enfants autistes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rodriguez Loïc/Ismaïl Tahry&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Projetpfenaomi.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE RodriguezTahry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport decembre PFE pilulier mercier pinet.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE Pinet Mercier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_MiSoutenance_DESPREZ_HADDAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:RapportFinal_Desprez-Haddaoui.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_PFE_GAPAS_Rose_Tixier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier: Rapport_PFE_Rose_Tixier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P12 Automatiser à l'aide d'une interface LabView la procédure de mesure de conductivité électrique d'un alternateur à griffes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Hugo FONDU &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Abdelkader Benabou &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_presoutenance.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport soutenance Fondu.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Video projet Fondu.avi]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P13 Construction d'un support motorisé pour la réalisation des essais de décharges électrostatique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; JEBBARI Zineb / BEKRAOUI Oumaima &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Nathalie Rolland &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapportJebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapport-final-jebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P19 Contrôle et synchronisation d'instruments en microscopie]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Simon Duthoit&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Samuel Hym &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:RapportPFESimonDuthoit.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[ Fichier:ProjetBLE 1 pdf.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Bis Prototypage d'interactions localisées et contextualisées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Olivier Tailliez&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Vantroys / Yvan Peter &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier: PFE_Olivier_Tailliez.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P22 Google Glass en logistique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémy Gondry / Vincent Meunier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_intermediaire_Gondry_Meunier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_final_PFE_Meunier_Gondry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_P24_Deltombe.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P25 SmartMeter]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Ederlé / Sylvain Fossaert&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Guillaume Renault / Xavier Redon / Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportFossaertEderle.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportEderleFossaert.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P26 Vehicule Electrique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Smain Labdouni / Adnane Jaoui &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Arnaud Chielens / Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:RAPPORT_VE_DEC.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_pfe_Jaoui_Labdouni_Fevrier.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P27 Controle Direct de Puissance d'un Convertisseur Matriciel ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Quentin Pesqueux / Nicolas Alexandre &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:PFE_IMA5_MATRIX_CONVERTER_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_PFE_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Charlotte BRICOUT / Nathan MARTIN &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémie DEQUIDT&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:-BRICOUT MARTIN--Rapport PFE.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport PFE VF.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P33 Ligthing contactless / &amp;quot;wireless&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benjamin Lafit &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Benjamin_Lafit.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Final_Benjamin_Lafit.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P35 Hack-a-Wii : Emulation de wiimote pour rendre la Wii accessibles aux personnes handicapées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Fabien Violier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P37 Creation d'un composant d'audit des accès cache mémoire sur un microprocesseur LEON3 simulé en FPGA ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérôme Vaessen &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Julien Cartigny / Pierrick Buret &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_VAESSEN_presoutenance.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_PFE_P37_VAESSEN_finale.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P44 Création d'un systeme domotique sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benoit MALIAR / Thomas MAURICE&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierrick BURET / Thomas VANTROYS  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportMaliarMauriceDecembre.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_final_Maliar_Maurice.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_Mi-PFE_Apperce_Pierre.pdf|alt=Rapport intermédiaire du PFE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_Appercé_Pierre.pdf|alt=Rapport du PFE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Video_PFE_wiki.avi‎|alt=Video de présentation de PFE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[https://drive.google.com/file/d/0BzEs72ClJBLRTVBfZ09RYmpWYnM/view?usp=sharing Rapport intermédiaire]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[https://drive.google.com/file/d/0BzEs72ClJBLRTHVwZ2RrQmdwNkU/view?usp=sharing Rapport final]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[https://drive.google.com/file/d/0BzEs72ClJBLRWnNELVZ1MEtIRzQ/view?usp=sharing Vidéo]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P57 CHRU Lille : Smart Picking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu Bossennec / Florian Caron&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Gwénaëlle Maton / Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport-PFE-SmartPicking-Intermediaire.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport-PFE-BOSSENNEC_CARON-SmartPicking.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P58 Transformation des spectateurs d’un concert en afficheur géant interactif]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hautecoeur Mélanie &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier : PFE_Rapport_Hautecoeur_Melanie.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_projet_intermediaire_GERIER_LY.pdf]]‎&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_projet_GERIER_LY.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=17603</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=17603"/>
				<updated>2015-02-24T09:00:03Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Downloads ==&lt;br /&gt;
[https://drive.google.com/file/d/0BzEs72ClJBLRTVBfZ09RYmpWYnM/view?usp=sharing Rapport intermédiaire]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://drive.google.com/open?id=0BzEs72ClJBLRTHVwZ2RrQmdwNkU&amp;amp;authuser=0 Rapport final]&lt;br /&gt;
&lt;br /&gt;
== Présentation du projet ==&lt;br /&gt;
Pour bien comprendre l'objet de ce projet, il faut savoir où sont nés les besoins.&lt;br /&gt;
Depuis l'année scolaire 2013/2014, des membres de Polytech Lille ont entrepris de participer à la Logistic League de la Robocup.&amp;lt;br /&amp;gt;&lt;br /&gt;
La Robocup est une compétition internationale de Robotique, ayant pour but d'encourager le développement des robots autonomes. Historiquement la Robocup présente des compétitions de robots footballeurs, l'objectif initial étant d'obtenir une équipe de robots capable de rivaliser avec une équipe humaine.&amp;lt;br /&amp;gt;&lt;br /&gt;
Depuis sa création, la Robocup a pris beaucoup d'ampleur et héberge maintenant - en plus de ses différentes leagues de football - des leagues orientés autour du secours, de la maison ou encore de la logistique.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C'est cette league logistique qui nous intéresse. Créée et supportée par l'entreprise Festo, elle vise à représenter un environnement logistique de plus en plus autonome.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le travail se concentre principalement sur les Robotinos de Festo, des robots mobiles holonomes. Ces robots doivent évoluer par équipes de trois, deux équipes adverses à la fois, sur un terrain représentant un environnement de production.&amp;lt;br /&amp;gt;&lt;br /&gt;
Leur rôle est d'optimiser la production du site en gérant les différentes machines de fabrication de produits et en s'adaptant à leur environnement.&amp;lt;br /&amp;gt;&lt;br /&gt;
L'utilisation des machines est très simplifié, la majeure partie du travail se concentre finalement autour de la compréhension de l'environnement et de la stratégie de production.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une grande partie de l'appréhension de l'environnement par les robots est faite par vision. La vision par ordinateur est une chose complexe, l'un des besoin est donc d'obtenir un traitement d'image efficace et robuste.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La stratégie elle, nécessite un nombre important de tests.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est très coûteux de reproduire l’environnement de compétition complet, il faut avoir l'espace nécessaire pour l'installer. Il faudrait aussi deux fois plus de robots pour représenter l'équipe adverse et le matériel s'userait rapidement à cause de l'utilisation intense.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est assez évident qu'un outil de simulation, sans être absolument nécessaire, serait un grand avantage.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Présentation des outils ==&lt;br /&gt;
Pour répondre à ces besoins, plusieurs outils sont utilisés. Les trois principaux sont ROS, V-REP et OpenCV.&lt;br /&gt;
=== ROS (Robot Operating System) - Framework pour applications de robotique ===&lt;br /&gt;
ROS, est une collection d'outils permettant le développement efficace et surtout rapide d'application de robotique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Partant du constat que les applications de robotique sont souvent similaires et que l'on y retrouve les même besoins, Open Source Robotics Foundation a lancé ROS, un projet open source qui permettrait aux roboticiens de développer leur logiciels de robotique à partir d'une base solide et standard.&amp;lt;br /&amp;gt;&lt;br /&gt;
Depuis l'idée de départ jusqu'à aujourd'hui, ROS a rencontré un franc succès au point d'être pour ainsi dire une référence dans le domaine.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Son concept de base est très intéressant car il permet de concevoir son système logiciel sous forme de plusieurs petits nœuds &amp;quot;indépendants&amp;quot;. Indépendants ne veux pas dire isolés, les nœuds peuvent communiquer entre eux par plusieurs moyens de communications très complets. Mais leur développement lui peut-être réalisé indépendamment du reste de l'application.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C'est très satisfaisant d'un point de vue du travail collaboratif premièrement, mais aussi pour le diagnostique d'erreur. Un système découpé en sous-systèmes est bien plus facile à maintenir.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mais c'est surtout très intéressant pour la partie qui va suivre, la simulation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ROS est l'environnement utilisé pour tout l'applicatif embarqué sur les Robotinos de l'équipe de Polytech Lille. Il sera donc un outil incontournable pour ce projet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Rep - Simulateur de robotique temps réel ===&lt;br /&gt;
V-REP, le simulateur de Coppelia Robotics, se définit comme le couteau suisse de la simulation robotique. C'est un logiciel Open Source, gratuit pour une utilisation non commerciale et assez récent.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est toutefois déjà très abouti et a comme grand intérêt d'être très facilement interconnectable avec d'autres applicatif et notamment avec ROS.&amp;lt;br /&amp;gt;&lt;br /&gt;
Autre intérêt, V-REP propose un mode de fonctionnement en temps-réel. Cela signifie que la simulation est optimisée pour respecter des contraintes de temps-réel et permet d'avoir une simulation fidèle à la réalité, utilisable en combinaison avec un système réel.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme dit précédemment, ROS fonctionne avec des nœuds indépendants. Dans le système commandant les Robotinos de l'équipe, un paquets de nœuds sont en charge de l'interfaçage entre le logiciel et le matériel. D'un point de vue des nœuds ROS, il importe peu de savoir quels nœuds fonctionnent, tant que nos messages d'informations sont reçus et que les informations nécessaires nous sont émises.&amp;lt;br /&amp;gt;&lt;br /&gt;
Partant de ce principe, si c'est V-REP qui reçoit tout les ordres de mouvements et qui renvoi, à la place des nœuds habituels, les informations des capteurs, le flux caméra, etc, l'application fonctionnera sans problème.&amp;lt;br /&amp;gt;&lt;br /&gt;
L'utilisation de la simulation sera alors totalement transparente, aucune modification de l'application ne sera nécessaire et c'est là toute la force de cette combinaison V-REP/ROS.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenCV - Bibliothèque Open Source de vision par ordinateur ===&lt;br /&gt;
S'agissant d'un rapport intermédiaire, le travail effectué jusqu'ici n'utilise pas OpenCV. Il est toutefois intéressant d'en parler pour présenter le projet dans sa globalité.&amp;lt;br /&amp;gt;&lt;br /&gt;
OpenCV est une bibliothèque, open-source elle aussi, de Computer Vision (vision par ordinateur, ou encore traitement d'images). Elle sera utilisée dans la seconde partie du projet qui consiste à fiabiliser le traitement d'images et le rendre plus efficace.&amp;lt;br /&amp;gt;&lt;br /&gt;
La encore, cette bibliothèque est complètement intégrée à ROS, ce qui est bien-sûr un grand avantage. Elle permettra de traiter tant les flux vidéos réels que ceux en provenance de la simulation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je précise ici, qu'à ce stade du projet, du code OpenCV est déjà fonctionnel sur un flux vidéo en provenance du robotino. C'est une source de problèmes en moins pour cette partie du projet, il ne reste plus qu'à s'occuper des algorithmes.&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Modélisation de la roue omnidirectionnelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 1 : Pure shape sphérique motorisé sur un axe et laissée libre sur un second axe. Pour garder l'axe libre à l'horizontale, même après rotation de la roue, un script viens replacer l'axe à chaque itération de la simulation. Cette méthode semble avoir des effets secondaires indésirables. Un couple apparaît sur l'axe &amp;quot;libre&amp;quot; de la roue, au point de pouvoir maintenir le robot à l'oblique. L'origine de ce couple n'est pas encore claire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 2 : Modélisation complète de la roue omnidirectionnelle avec des galets ovoïdes &amp;quot;non pure&amp;quot;. Cela complexifie la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 (à tester) : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques.&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 (à tester) : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques. Il faut plusieurs sphères pure pour remplacer un seul galet (ovoïdes &amp;quot;non pure&amp;quot;). Le gain obtenu par simplification des éléments est perdu par la multiplication des éléments libres. Cela complexifie aussi la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti sévèrement la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet. Ces textures fonctionnent avec le moteur physique Vortex. Il a pour inconvénient d'être payant et de ne proposer que 20 secondes de simulation dans sa version gratuite. Néanmoins, les résultats sont époustouflants et correspondent aux besoins (avec respect des contraintes temps réel dans la simulation).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces quatre solutions sont toutes les solutions que j'ai trouvées à ce jour. Je pense garder celle du moteur physique Vortex pour des tests cours et tenter d'améliorer les résultats de la première méthode en m'attardant sur les manipulation scriptées pour éviter ou réduire les effets secondaires lors de simulations longues (plus de 20sec).&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Abandon définitif de la modélisation dynamique (modélisation des roues omnidirectionnelles).&amp;lt;br /&amp;gt;&lt;br /&gt;
La modélisation sera uniquement cinématique.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;br /&gt;
Site de Coppeliarobotics (simulateur V-Rep)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/]&lt;br /&gt;
&lt;br /&gt;
Site et wiki de ROS (Robot Operating System)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ros.org/ http://www.ros.org/]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://wiki.ros.org/ http://wiki.ros.org/]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=17602</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=17602"/>
				<updated>2015-02-24T08:59:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Downloads ==&lt;br /&gt;
[https://drive.google.com/file/d/0BzEs72ClJBLRTVBfZ09RYmpWYnM/view?usp=sharing Rapport intermédiaire]&lt;br /&gt;
[https://drive.google.com/open?id=0BzEs72ClJBLRTHVwZ2RrQmdwNkU&amp;amp;authuser=0 Rapport final]&lt;br /&gt;
&lt;br /&gt;
== Présentation du projet ==&lt;br /&gt;
Pour bien comprendre l'objet de ce projet, il faut savoir où sont nés les besoins.&lt;br /&gt;
Depuis l'année scolaire 2013/2014, des membres de Polytech Lille ont entrepris de participer à la Logistic League de la Robocup.&amp;lt;br /&amp;gt;&lt;br /&gt;
La Robocup est une compétition internationale de Robotique, ayant pour but d'encourager le développement des robots autonomes. Historiquement la Robocup présente des compétitions de robots footballeurs, l'objectif initial étant d'obtenir une équipe de robots capable de rivaliser avec une équipe humaine.&amp;lt;br /&amp;gt;&lt;br /&gt;
Depuis sa création, la Robocup a pris beaucoup d'ampleur et héberge maintenant - en plus de ses différentes leagues de football - des leagues orientés autour du secours, de la maison ou encore de la logistique.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C'est cette league logistique qui nous intéresse. Créée et supportée par l'entreprise Festo, elle vise à représenter un environnement logistique de plus en plus autonome.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le travail se concentre principalement sur les Robotinos de Festo, des robots mobiles holonomes. Ces robots doivent évoluer par équipes de trois, deux équipes adverses à la fois, sur un terrain représentant un environnement de production.&amp;lt;br /&amp;gt;&lt;br /&gt;
Leur rôle est d'optimiser la production du site en gérant les différentes machines de fabrication de produits et en s'adaptant à leur environnement.&amp;lt;br /&amp;gt;&lt;br /&gt;
L'utilisation des machines est très simplifié, la majeure partie du travail se concentre finalement autour de la compréhension de l'environnement et de la stratégie de production.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une grande partie de l'appréhension de l'environnement par les robots est faite par vision. La vision par ordinateur est une chose complexe, l'un des besoin est donc d'obtenir un traitement d'image efficace et robuste.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La stratégie elle, nécessite un nombre important de tests.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est très coûteux de reproduire l’environnement de compétition complet, il faut avoir l'espace nécessaire pour l'installer. Il faudrait aussi deux fois plus de robots pour représenter l'équipe adverse et le matériel s'userait rapidement à cause de l'utilisation intense.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est assez évident qu'un outil de simulation, sans être absolument nécessaire, serait un grand avantage.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Présentation des outils ==&lt;br /&gt;
Pour répondre à ces besoins, plusieurs outils sont utilisés. Les trois principaux sont ROS, V-REP et OpenCV.&lt;br /&gt;
=== ROS (Robot Operating System) - Framework pour applications de robotique ===&lt;br /&gt;
ROS, est une collection d'outils permettant le développement efficace et surtout rapide d'application de robotique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Partant du constat que les applications de robotique sont souvent similaires et que l'on y retrouve les même besoins, Open Source Robotics Foundation a lancé ROS, un projet open source qui permettrait aux roboticiens de développer leur logiciels de robotique à partir d'une base solide et standard.&amp;lt;br /&amp;gt;&lt;br /&gt;
Depuis l'idée de départ jusqu'à aujourd'hui, ROS a rencontré un franc succès au point d'être pour ainsi dire une référence dans le domaine.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Son concept de base est très intéressant car il permet de concevoir son système logiciel sous forme de plusieurs petits nœuds &amp;quot;indépendants&amp;quot;. Indépendants ne veux pas dire isolés, les nœuds peuvent communiquer entre eux par plusieurs moyens de communications très complets. Mais leur développement lui peut-être réalisé indépendamment du reste de l'application.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C'est très satisfaisant d'un point de vue du travail collaboratif premièrement, mais aussi pour le diagnostique d'erreur. Un système découpé en sous-systèmes est bien plus facile à maintenir.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mais c'est surtout très intéressant pour la partie qui va suivre, la simulation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ROS est l'environnement utilisé pour tout l'applicatif embarqué sur les Robotinos de l'équipe de Polytech Lille. Il sera donc un outil incontournable pour ce projet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Rep - Simulateur de robotique temps réel ===&lt;br /&gt;
V-REP, le simulateur de Coppelia Robotics, se définit comme le couteau suisse de la simulation robotique. C'est un logiciel Open Source, gratuit pour une utilisation non commerciale et assez récent.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est toutefois déjà très abouti et a comme grand intérêt d'être très facilement interconnectable avec d'autres applicatif et notamment avec ROS.&amp;lt;br /&amp;gt;&lt;br /&gt;
Autre intérêt, V-REP propose un mode de fonctionnement en temps-réel. Cela signifie que la simulation est optimisée pour respecter des contraintes de temps-réel et permet d'avoir une simulation fidèle à la réalité, utilisable en combinaison avec un système réel.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme dit précédemment, ROS fonctionne avec des nœuds indépendants. Dans le système commandant les Robotinos de l'équipe, un paquets de nœuds sont en charge de l'interfaçage entre le logiciel et le matériel. D'un point de vue des nœuds ROS, il importe peu de savoir quels nœuds fonctionnent, tant que nos messages d'informations sont reçus et que les informations nécessaires nous sont émises.&amp;lt;br /&amp;gt;&lt;br /&gt;
Partant de ce principe, si c'est V-REP qui reçoit tout les ordres de mouvements et qui renvoi, à la place des nœuds habituels, les informations des capteurs, le flux caméra, etc, l'application fonctionnera sans problème.&amp;lt;br /&amp;gt;&lt;br /&gt;
L'utilisation de la simulation sera alors totalement transparente, aucune modification de l'application ne sera nécessaire et c'est là toute la force de cette combinaison V-REP/ROS.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenCV - Bibliothèque Open Source de vision par ordinateur ===&lt;br /&gt;
S'agissant d'un rapport intermédiaire, le travail effectué jusqu'ici n'utilise pas OpenCV. Il est toutefois intéressant d'en parler pour présenter le projet dans sa globalité.&amp;lt;br /&amp;gt;&lt;br /&gt;
OpenCV est une bibliothèque, open-source elle aussi, de Computer Vision (vision par ordinateur, ou encore traitement d'images). Elle sera utilisée dans la seconde partie du projet qui consiste à fiabiliser le traitement d'images et le rendre plus efficace.&amp;lt;br /&amp;gt;&lt;br /&gt;
La encore, cette bibliothèque est complètement intégrée à ROS, ce qui est bien-sûr un grand avantage. Elle permettra de traiter tant les flux vidéos réels que ceux en provenance de la simulation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je précise ici, qu'à ce stade du projet, du code OpenCV est déjà fonctionnel sur un flux vidéo en provenance du robotino. C'est une source de problèmes en moins pour cette partie du projet, il ne reste plus qu'à s'occuper des algorithmes.&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Modélisation de la roue omnidirectionnelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 1 : Pure shape sphérique motorisé sur un axe et laissée libre sur un second axe. Pour garder l'axe libre à l'horizontale, même après rotation de la roue, un script viens replacer l'axe à chaque itération de la simulation. Cette méthode semble avoir des effets secondaires indésirables. Un couple apparaît sur l'axe &amp;quot;libre&amp;quot; de la roue, au point de pouvoir maintenir le robot à l'oblique. L'origine de ce couple n'est pas encore claire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 2 : Modélisation complète de la roue omnidirectionnelle avec des galets ovoïdes &amp;quot;non pure&amp;quot;. Cela complexifie la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 (à tester) : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques.&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 (à tester) : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques. Il faut plusieurs sphères pure pour remplacer un seul galet (ovoïdes &amp;quot;non pure&amp;quot;). Le gain obtenu par simplification des éléments est perdu par la multiplication des éléments libres. Cela complexifie aussi la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti sévèrement la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet. Ces textures fonctionnent avec le moteur physique Vortex. Il a pour inconvénient d'être payant et de ne proposer que 20 secondes de simulation dans sa version gratuite. Néanmoins, les résultats sont époustouflants et correspondent aux besoins (avec respect des contraintes temps réel dans la simulation).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces quatre solutions sont toutes les solutions que j'ai trouvées à ce jour. Je pense garder celle du moteur physique Vortex pour des tests cours et tenter d'améliorer les résultats de la première méthode en m'attardant sur les manipulation scriptées pour éviter ou réduire les effets secondaires lors de simulations longues (plus de 20sec).&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Abandon définitif de la modélisation dynamique (modélisation des roues omnidirectionnelles).&amp;lt;br /&amp;gt;&lt;br /&gt;
La modélisation sera uniquement cinématique.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;br /&gt;
Site de Coppeliarobotics (simulateur V-Rep)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/]&lt;br /&gt;
&lt;br /&gt;
Site et wiki de ROS (Robot Operating System)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ros.org/ http://www.ros.org/]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://wiki.ros.org/ http://wiki.ros.org/]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=15129</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=15129"/>
				<updated>2014-12-17T09:14:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Lien vers rapport&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Downloads ==&lt;br /&gt;
[https://drive.google.com/file/d/0BzEs72ClJBLRTVBfZ09RYmpWYnM/view?usp=sharing Rapport intermédiaire]&lt;br /&gt;
&lt;br /&gt;
== Présentation du projet ==&lt;br /&gt;
Pour bien comprendre l'objet de ce projet, il faut savoir où sont nés les besoins.&lt;br /&gt;
Depuis l'année scolaire 2013/2014, des membres de Polytech Lille ont entrepris de participer à la Logistic League de la Robocup.&amp;lt;br /&amp;gt;&lt;br /&gt;
La Robocup est une compétition internationale de Robotique, ayant pour but d'encourager le développement des robots autonomes. Historiquement la Robocup présente des compétitions de robots footballeurs, l'objectif initial étant d'obtenir une équipe de robots capable de rivaliser avec une équipe humaine.&amp;lt;br /&amp;gt;&lt;br /&gt;
Depuis sa création, la Robocup a pris beaucoup d'ampleur et héberge maintenant - en plus de ses différentes leagues de football - des leagues orientés autour du secours, de la maison ou encore de la logistique.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C'est cette league logistique qui nous intéresse. Créée et supportée par l'entreprise Festo, elle vise à représenter un environnement logistique de plus en plus autonome.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le travail se concentre principalement sur les Robotinos de Festo, des robots mobiles holonomes. Ces robots doivent évoluer par équipes de trois, deux équipes adverses à la fois, sur un terrain représentant un environnement de production.&amp;lt;br /&amp;gt;&lt;br /&gt;
Leur rôle est d'optimiser la production du site en gérant les différentes machines de fabrication de produits et en s'adaptant à leur environnement.&amp;lt;br /&amp;gt;&lt;br /&gt;
L'utilisation des machines est très simplifié, la majeure partie du travail se concentre finalement autour de la compréhension de l'environnement et de la stratégie de production.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une grande partie de l'appréhension de l'environnement par les robots est faite par vision. La vision par ordinateur est une chose complexe, l'un des besoin est donc d'obtenir un traitement d'image efficace et robuste.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La stratégie elle, nécessite un nombre important de tests.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est très coûteux de reproduire l’environnement de compétition complet, il faut avoir l'espace nécessaire pour l'installer. Il faudrait aussi deux fois plus de robots pour représenter l'équipe adverse et le matériel s'userait rapidement à cause de l'utilisation intense.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est assez évident qu'un outil de simulation, sans être absolument nécessaire, serait un grand avantage.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Présentation des outils ==&lt;br /&gt;
Pour répondre à ces besoins, plusieurs outils sont utilisés. Les trois principaux sont ROS, V-REP et OpenCV.&lt;br /&gt;
=== ROS (Robot Operating System) - Framework pour applications de robotique ===&lt;br /&gt;
ROS, est une collection d'outils permettant le développement efficace et surtout rapide d'application de robotique.&amp;lt;br /&amp;gt;&lt;br /&gt;
Partant du constat que les applications de robotique sont souvent similaires et que l'on y retrouve les même besoins, Open Source Robotics Foundation a lancé ROS, un projet open source qui permettrait aux roboticiens de développer leur logiciels de robotique à partir d'une base solide et standard.&amp;lt;br /&amp;gt;&lt;br /&gt;
Depuis l'idée de départ jusqu'à aujourd'hui, ROS a rencontré un franc succès au point d'être pour ainsi dire une référence dans le domaine.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Son concept de base est très intéressant car il permet de concevoir son système logiciel sous forme de plusieurs petits nœuds &amp;quot;indépendants&amp;quot;. Indépendants ne veux pas dire isolés, les nœuds peuvent communiquer entre eux par plusieurs moyens de communications très complets. Mais leur développement lui peut-être réalisé indépendamment du reste de l'application.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C'est très satisfaisant d'un point de vue du travail collaboratif premièrement, mais aussi pour le diagnostique d'erreur. Un système découpé en sous-systèmes est bien plus facile à maintenir.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mais c'est surtout très intéressant pour la partie qui va suivre, la simulation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ROS est l'environnement utilisé pour tout l'applicatif embarqué sur les Robotinos de l'équipe de Polytech Lille. Il sera donc un outil incontournable pour ce projet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== V-Rep - Simulateur de robotique temps réel ===&lt;br /&gt;
V-REP, le simulateur de Coppelia Robotics, se définit comme le couteau suisse de la simulation robotique. C'est un logiciel Open Source, gratuit pour une utilisation non commerciale et assez récent.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il est toutefois déjà très abouti et a comme grand intérêt d'être très facilement interconnectable avec d'autres applicatif et notamment avec ROS.&amp;lt;br /&amp;gt;&lt;br /&gt;
Autre intérêt, V-REP propose un mode de fonctionnement en temps-réel. Cela signifie que la simulation est optimisée pour respecter des contraintes de temps-réel et permet d'avoir une simulation fidèle à la réalité, utilisable en combinaison avec un système réel.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme dit précédemment, ROS fonctionne avec des nœuds indépendants. Dans le système commandant les Robotinos de l'équipe, un paquets de nœuds sont en charge de l'interfaçage entre le logiciel et le matériel. D'un point de vue des nœuds ROS, il importe peu de savoir quels nœuds fonctionnent, tant que nos messages d'informations sont reçus et que les informations nécessaires nous sont émises.&amp;lt;br /&amp;gt;&lt;br /&gt;
Partant de ce principe, si c'est V-REP qui reçoit tout les ordres de mouvements et qui renvoi, à la place des nœuds habituels, les informations des capteurs, le flux caméra, etc, l'application fonctionnera sans problème.&amp;lt;br /&amp;gt;&lt;br /&gt;
L'utilisation de la simulation sera alors totalement transparente, aucune modification de l'application ne sera nécessaire et c'est là toute la force de cette combinaison V-REP/ROS.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenCV - Bibliothèque Open Source de vision par ordinateur ===&lt;br /&gt;
S'agissant d'un rapport intermédiaire, le travail effectué jusqu'ici n'utilise pas OpenCV. Il est toutefois intéressant d'en parler pour présenter le projet dans sa globalité.&amp;lt;br /&amp;gt;&lt;br /&gt;
OpenCV est une bibliothèque, open-source elle aussi, de Computer Vision (vision par ordinateur, ou encore traitement d'images). Elle sera utilisée dans la seconde partie du projet qui consiste à fiabiliser le traitement d'images et le rendre plus efficace.&amp;lt;br /&amp;gt;&lt;br /&gt;
La encore, cette bibliothèque est complètement intégrée à ROS, ce qui est bien-sûr un grand avantage. Elle permettra de traiter tant les flux vidéos réels que ceux en provenance de la simulation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Je précise ici, qu'à ce stade du projet, du code OpenCV est déjà fonctionnel sur un flux vidéo en provenance du robotino. C'est une source de problèmes en moins pour cette partie du projet, il ne reste plus qu'à s'occuper des algorithmes.&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Modélisation de la roue omnidirectionnelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 1 : Pure shape sphérique motorisé sur un axe et laissée libre sur un second axe. Pour garder l'axe libre à l'horizontale, même après rotation de la roue, un script viens replacer l'axe à chaque itération de la simulation. Cette méthode semble avoir des effets secondaires indésirables. Un couple apparaît sur l'axe &amp;quot;libre&amp;quot; de la roue, au point de pouvoir maintenir le robot à l'oblique. L'origine de ce couple n'est pas encore claire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 2 : Modélisation complète de la roue omnidirectionnelle avec des galets ovoïdes &amp;quot;non pure&amp;quot;. Cela complexifie la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 (à tester) : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques.&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 (à tester) : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques. Il faut plusieurs sphères pure pour remplacer un seul galet (ovoïdes &amp;quot;non pure&amp;quot;). Le gain obtenu par simplification des éléments est perdu par la multiplication des éléments libres. Cela complexifie aussi la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti sévèrement la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet. Ces textures fonctionnent avec le moteur physique Vortex. Il a pour inconvénient d'être payant et de ne proposer que 20 secondes de simulation dans sa version gratuite. Néanmoins, les résultats sont époustouflants et correspondent aux besoins (avec respect des contraintes temps réel dans la simulation).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces quatre solutions sont toutes les solutions que j'ai trouvées à ce jour. Je pense garder celle du moteur physique Vortex pour des tests cours et tenter d'améliorer les résultats de la première méthode en m'attardant sur les manipulation scriptées pour éviter ou réduire les effets secondaires lors de simulations longues (plus de 20sec).&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Abandon définitif de la modélisation dynamique (modélisation des roues omnidirectionnelles).&amp;lt;br /&amp;gt;&lt;br /&gt;
La modélisation sera uniquement cinématique.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;br /&gt;
Site de Coppeliarobotics (simulateur V-Rep)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/]&lt;br /&gt;
&lt;br /&gt;
Site et wiki de ROS (Robot Operating System)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ros.org/ http://www.ros.org/]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://wiki.ros.org/ http://wiki.ros.org/]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=14822</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=14822"/>
				<updated>2014-11-26T15:55:34Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Semaine 10 | 24/11 - 30/11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
=== Contexte ===&lt;br /&gt;
&lt;br /&gt;
=== Cahier des charges ===&lt;br /&gt;
&lt;br /&gt;
== Présentation des outils ==&lt;br /&gt;
=== ROS (Robot Operating System) - Framework pour applications de robotique ===&lt;br /&gt;
=== V-Rep - Simulateur de robotique temps réel ===&lt;br /&gt;
=== OpenCV - Bibliothèque Open Source de vision par ordinateur ===&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Modélisation de la roue omnidirectionnelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 1 : Pure shape sphérique motorisé sur un axe et laissée libre sur un second axe. Pour garder l'axe libre à l'horizontale, même après rotation de la roue, un script viens replacer l'axe à chaque itération de la simulation. Cette méthode semble avoir des effets secondaires indésirables. Un couple apparaît sur l'axe &amp;quot;libre&amp;quot; de la roue, au point de pouvoir maintenir le robot à l'oblique. L'origine de ce couple n'est pas encore claire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 2 : Modélisation complète de la roue omnidirectionnelle avec des galets ovoïdes &amp;quot;non pure&amp;quot;. Cela complexifie la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 (à tester) : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques.&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 (à tester) : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques. Il faut plusieurs sphères pure pour remplacer un seul galet (ovoïdes &amp;quot;non pure&amp;quot;). Le gain obtenu par simplification des éléments est perdu par la multiplication des éléments libres. Cela complexifie aussi la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti sévèrement la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet. Ces textures fonctionnent avec le moteur physique Vortex. Il a pour inconvénient d'être payant et de ne proposer que 20 secondes de simulation dans sa version gratuite. Néanmoins, les résultats sont époustouflants et correspondent aux besoins (avec respect des contraintes temps réel dans la simulation).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces quatre solutions sont toutes les solutions que j'ai trouvées à ce jour. Je pense garder celle du moteur physique Vortex pour des tests cours et tenter d'améliorer les résultats de la première méthode en m'attardant sur les manipulation scriptées pour éviter ou réduire les effets secondaires lors de simulations longues (plus de 20sec).&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Abandon définitif de la modélisation dynamique (modélisation des roues omnidirectionnelles).&amp;lt;br /&amp;gt;&lt;br /&gt;
La modélisation sera uniquement cinématique.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;br /&gt;
Site de Coppeliarobotics (simulateur V-Rep)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/]&lt;br /&gt;
&lt;br /&gt;
Site et wiki de ROS (Robot Operating System)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ros.org/ http://www.ros.org/]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://wiki.ros.org/ http://wiki.ros.org/]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=14198</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=14198"/>
				<updated>2014-10-12T17:54:55Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Semaine 03&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
=== Contexte ===&lt;br /&gt;
&lt;br /&gt;
=== Cahier des charges ===&lt;br /&gt;
&lt;br /&gt;
== Présentation des outils ==&lt;br /&gt;
=== ROS (Robot Operating System) - Framework pour applications de robotique ===&lt;br /&gt;
=== V-Rep - Simulateur de robotique temps réel ===&lt;br /&gt;
=== OpenCV - Bibliothèque Open Source de vision par ordinateur ===&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Modélisation de la roue omnidirectionnelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 1 : Pure shape sphérique motorisé sur un axe et laissée libre sur un second axe. Pour garder l'axe libre à l'horizontale, même après rotation de la roue, un script viens replacer l'axe à chaque itération de la simulation. Cette méthode semble avoir des effets secondaires indésirables. Un couple apparaît sur l'axe &amp;quot;libre&amp;quot; de la roue, au point de pouvoir maintenir le robot à l'oblique. L'origine de ce couple n'est pas encore claire.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 2 : Modélisation complète de la roue omnidirectionnelle avec des galets ovoïdes &amp;quot;non pure&amp;quot;. Cela complexifie la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 (à tester) : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques.&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 (à tester) : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Méthode 3 : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques. Il faut plusieurs sphères pure pour remplacer un seul galet (ovoïdes &amp;quot;non pure&amp;quot;). Le gain obtenu par simplification des éléments est perdu par la multiplication des éléments libres. Cela complexifie aussi la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti sévèrement la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
* Méthode 4 : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet. Ces textures fonctionnent avec le moteur physique Vortex. Il a pour inconvénient d'être payant et de ne proposer que 20 secondes de simulation dans sa version gratuite. Néanmoins, les résultats sont époustouflants et correspondent aux besoins (avec respect des contraintes temps réel dans la simulation).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ces quatre solutions sont toutes les solutions que j'ai trouvées à ce jour. Je pense garder celle du moteur physique Vortex pour des tests cours et tenter d'améliorer les résultats de la première méthode en m'attardant sur les manipulation scriptées pour éviter ou réduire les effets secondaires lors de simulations longues (plus de 20sec).&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;br /&gt;
Site de Coppeliarobotics (simulateur V-Rep)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/]&lt;br /&gt;
&lt;br /&gt;
Site et wiki de ROS (Robot Operating System)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ros.org/ http://www.ros.org/]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://wiki.ros.org/ http://wiki.ros.org/]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=14084</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=14084"/>
				<updated>2014-10-01T19:38:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Semaine 02 | 29/09 - 05/10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
=== Contexte ===&lt;br /&gt;
&lt;br /&gt;
=== Cahier des charges ===&lt;br /&gt;
&lt;br /&gt;
== Présentation des outils ==&lt;br /&gt;
=== ROS (Robot Operating System) - Framework pour applications de robotique ===&lt;br /&gt;
=== V-Rep - Simulateur de robotique temps réel ===&lt;br /&gt;
=== OpenCV - Bibliothèque Open Source de vision par ordinateur ===&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
Modélisation de la roue omnidirectionnelle.&amp;lt;br /&amp;gt;&lt;br /&gt;
Méthode 1 : Pure shape sphérique motorisé sur un axe et laissée libre sur un second axe.&amp;lt;br /&amp;gt;&lt;br /&gt;
Pour garder l'axe libre à l'horizontale, un script viens replacer l'axe à chaque itération de la simulation.&lt;br /&gt;
&lt;br /&gt;
Cette méthode semble avoir des effets secondaires indésirables.&lt;br /&gt;
&lt;br /&gt;
Méthode 2 : Modélisation complète de la roue omnidirectionnelle avec des galets ovoïdes &amp;quot;non pure&amp;quot; et &amp;quot;non convex&amp;quot;. Cela complexifie la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti la simulation (la simulation ne respecte plus les contraintes temps réel).&lt;br /&gt;
&lt;br /&gt;
Méthode 3 (à tester) : Remplacer les galets par des &amp;quot;convex shape&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Méthode 4 (à tester) : Remplacer les galets par plusieurs &amp;quot;pure shape&amp;quot; sphériques.&lt;br /&gt;
&lt;br /&gt;
Méthode 5 (à tester) : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;br /&gt;
Site de Coppeliarobotics (simulateur V-Rep)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/]&lt;br /&gt;
&lt;br /&gt;
Site et wiki de ROS (Robot Operating System)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ros.org/ http://www.ros.org/]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://wiki.ros.org/ http://wiki.ros.org/]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=13982</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=13982"/>
				<updated>2014-09-28T16:41:37Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Ajout du squelette de section &amp;quot;Présentation des outils&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
=== Contexte ===&lt;br /&gt;
&lt;br /&gt;
=== Cahier des charges ===&lt;br /&gt;
&lt;br /&gt;
== Présentation des outils ==&lt;br /&gt;
=== ROS (Robot Operating System) - Framework pour applications de robotique ===&lt;br /&gt;
=== V-Rep - Simulateur de robotique temps réel ===&lt;br /&gt;
=== OpenCV - Bibliothèque Open Source de vision par ordinateur ===&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;br /&gt;
Site de Coppeliarobotics (simulateur V-Rep)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/]&lt;br /&gt;
&lt;br /&gt;
Site et wiki de ROS (Robot Operating System)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ros.org/ http://www.ros.org/]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://wiki.ros.org/ http://wiki.ros.org/]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=13981</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=13981"/>
				<updated>2014-09-28T16:34:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Médiagraphie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
=== Contexte ===&lt;br /&gt;
&lt;br /&gt;
=== Cahier des charges ===&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;br /&gt;
Site de Coppeliarobotics (simulateur V-Rep)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.coppeliarobotics.com/ http://www.coppeliarobotics.com/]&lt;br /&gt;
&lt;br /&gt;
Site et wiki de ROS (Robot Operating System)&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.ros.org/ http://www.ros.org/]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://wiki.ros.org/ http://wiki.ros.org/]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=13980</id>
		<title>P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P46_Simulation_Temps_R%C3%A9el_d%27un_Environnement_de_Robots_Autonomes_Logisticiens&amp;diff=13980"/>
				<updated>2014-09-28T16:14:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Squelette de la page (avec suivi du projet) - Objectifs jusqu'à décembre - Résumé semaine 01&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
=== Contexte ===&lt;br /&gt;
&lt;br /&gt;
=== Cahier des charges ===&lt;br /&gt;
&lt;br /&gt;
== Résultats ==&lt;br /&gt;
&lt;br /&gt;
== Avancement du projet ==&lt;br /&gt;
=== Partie Simulateur ===&lt;br /&gt;
==== Semaine 01 | 22/09 - 28/09 ====&lt;br /&gt;
'''Objectif :''' ''Planification du projet''&amp;lt;br /&amp;gt;&lt;br /&gt;
Découverte du simulateur V-Rep via les tutoriels.&amp;lt;br \&amp;gt;&lt;br /&gt;
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.&amp;lt;br /&amp;gt;&lt;br /&gt;
Rédaction de la base de la page Wiki.&lt;br /&gt;
&lt;br /&gt;
==== Semaine 02 | 29/09 - 05/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 03 | 06/10 - 12/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 04 | 13/10 - 19/10  ====&lt;br /&gt;
'''Objectif :''' '' Modélisation Robotino 3 ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 05 | 20/10 - 26/10  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 06 | 27/10 - 02/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 07 | 03/11 - 09/11  ====&lt;br /&gt;
'''Objectif :''' '' Interfaçage ROS et V-REP ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 08 | 10/11 - 16/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 09 | 17/11 - 23/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 10 | 24/11 - 30/11  ====&lt;br /&gt;
'''Objectif :''' '' Tests et correction de la modélisation ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 11 | 01/12 - 07/12  ====&lt;br /&gt;
'''Objectif :''' '' Définition des besoins pour la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 12 | 08/12 - 14/12  ====&lt;br /&gt;
'''Objectif :''' '' Préparation de la soutenance ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Semaine 13 | 15/12 - 21/12  ====&lt;br /&gt;
'''Objectif :''' '' Soutenance de projet ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie Reconnaissance vidéo ===&lt;br /&gt;
==== Semaine 14 | 22/12 - 28/12  ====&lt;br /&gt;
'''Objectif :''' '' Planification de la partie reconnaissance vidéo ''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Médiagraphie ==&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=13979</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=13979"/>
				<updated>2014-09-28T14:42:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=12431</id>
		<title>FPGA et roues codeuses</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=12431"/>
				<updated>2014-04-16T02:29:32Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Déplacement du lien vers le Rapport (trop peu visible et non conforme au placement choisi sur les autres Wiki) - Suppression du WIP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
== Aperçu ==&lt;br /&gt;
Le sujet propose de réaliser un système simple sur cible FPGA permettant de :&lt;br /&gt;
* Lire et décoder une ou plusieurs roues codeuses ;&lt;br /&gt;
* Asservir un ou plusieurs moteurs, soit pas-à-pas soir à courant continu.&lt;br /&gt;
&lt;br /&gt;
La cible visée sera un FPGA de chez Xilinx (carte de développement). En parallèle, une carte d'interface de puissance sera réalisée (interface entre FPGA et moteurs).&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges étendu ==&lt;br /&gt;
=== Description ===&lt;br /&gt;
Ce projet s'inscrit dans le cadre de la réalisation d'un robot mobile autonome, capable de se déplacer avec précision grâce au retour de ses capteurs.&lt;br /&gt;
La propulsion du robot est effectuée par deux moteurs à courant-continu, chacun couplé à une roue motrice tandis que le retour sur le déplacement est lui obtenu par deux codeurs à quadratures de phases couplés à des roues de mesures.&lt;br /&gt;
Il est aussi possible de récupérer l'information de vitesse des moteurs grâce à des dynamos tachymétriques ou par le biais d'autres codeurs à quadratures de phases directement couplés au moteur.&lt;br /&gt;
&lt;br /&gt;
Pour approcher ce fonctionnement, on travaillera initialement sur un seul codeur et un seul moteur. L'objectif est d'interpréter les signaux en quadratures de phases avec un FPGA et d'effectuer à partir de cette information un asservissement en vitesse du moteur.&lt;br /&gt;
&lt;br /&gt;
Si ce fonctionnement de base est obtenu suffisamment tôt, des améliorations sont envisageables, comme par exemple : &lt;br /&gt;
* Commande et mesure pour plusieurs moteurs et codeurs ;&lt;br /&gt;
* Pilotage du FPGA par un protocole de communication (série, CAN, I2C, à déterminer …) ;&lt;br /&gt;
* Asservissement polaire (cas d'un déplacement de robot) ;&lt;br /&gt;
* Calcul d'odométrie.&lt;br /&gt;
La liste est non exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Travail à réaliser ===&lt;br /&gt;
* '''FPGA :'''&lt;br /&gt;
** Récupération des signaux codeurs ;&lt;br /&gt;
** Interprétation des signaux et comptage ;&lt;br /&gt;
** Écriture de la mesure sur un bus ;&lt;br /&gt;
** Lecture de la consigne d'asservissement ;&lt;br /&gt;
** Asservissement et génération de la consigne moteur.&lt;br /&gt;
&lt;br /&gt;
* '''Électronique de puissance : '''&lt;br /&gt;
** Carte de conversion consigne (signaux logiques) en commande (tension avec puissance) ;&lt;br /&gt;
** Éventuelle protection en tension et en courant de la carte.&lt;br /&gt;
&lt;br /&gt;
=== Caractéristiques ===&lt;br /&gt;
Les moteurs utilisés peuvent être de deux types différents :&lt;br /&gt;
* ''Graupner Speed 720 BB Torque.'' &lt;br /&gt;
Alimenté en '''0-12V''' avec des courants max de '''3A''' et des courants moyens de 750mA.&lt;br /&gt;
* ''Faulhaber 3557K024CS.''&lt;br /&gt;
Alimenté en '''0-24V''' avec des courants max de '''1,1A''' et des courants moyens de 65mA.&lt;br /&gt;
&lt;br /&gt;
Ces deux types de moteurs représentent des cas très usités, il conviendra donc d'avoir une carte de puissance permettant d'assumer ces deux configurations.&lt;br /&gt;
&lt;br /&gt;
= Suivi des séances =&lt;br /&gt;
== Semaine 1 (5/02) ==&lt;br /&gt;
Élaboration du cahier des charges étendu.&lt;br /&gt;
Réflexion sur les différentes étapes à réaliser pour arriver au bout du projet.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- ==== Planning provisoire ==== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Semaine 2 (12/02) ==&lt;br /&gt;
Nous commençons notre programmation sur le logiciel Altium afin d'utiliser le FPGA de la nanoboard. &lt;br /&gt;
Le premier module sera un module de génération de PWM (Pulse Width Modulation) afin de pouvoir contrôler les moteurs au travers de la carte de puissance. Ce module est paramétré par une valeur codée sur 1 octet (entre 0 et 255) qui permet de changer la valeur du rapport cyclique. &lt;br /&gt;
*Si on a '''0''', rapport cyclique = '''0%''' , sortie = '''0V''' (état bas)&lt;br /&gt;
*Si on a '''127''', rapport cyclique = '''50%''' , sortie = 50% état haut et 50% état bas&lt;br /&gt;
*Si on a '''255''', rapport cyclique = '''100%''', sortie = '''3V3''' (état haut)&lt;br /&gt;
&lt;br /&gt;
Nous commençons aussi la réflexion sur les méthodes de décodage de signaux de quadratures de phases. Les résultats sont peu concluant, la solution trouvée test chaque configuration possible des signaux avant de traduire la configuration en un comptage ou un décomptage. La résolution est limité au nombre de pas par tours du codeur.&lt;br /&gt;
&lt;br /&gt;
== Semaine 3 (19/02) ==&lt;br /&gt;
Fin du codage de la PWM. Ci dessous un image montrant une PWM de rapport cyclique 33% donc avec 0x3F en entrée.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PWM_3F.png | 500px]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre du projet et du développement du robot de la coupe de France 2014, nous avons besoin d'un module de communication série afin de pourvoir avoir un dialogue entre le FPGA et d'autres contrôleurs (Raspberry Pi, beagleBone...).&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps nous cherchons une IP(Intellectual Property) de communication serie RS232. Et nous testons les différents modules trouvés.&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir se partager les codes sources et faire un travail collaboratif de manière efficace, nous avons mis en place un repository git sur GitHub. De cette manière tous nos codes seront versionnés et nous pourrons revenir à des versions précédente en cas de problème.&lt;br /&gt;
&lt;br /&gt;
Après une importante tâche de documentation, il s'avère que les composants électroniques du commerces comptent chaque fronts des deux signaux en quadratures de phases, augmentant ainsi la résolution du comptage par 4 et facilitant apparemment le raisonnement.&lt;br /&gt;
En étudiant la situation sous forme logique (table de vérité, tableau de karnaugh), nous trouvons une solution à base de quelques ou exclusif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Github.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Semaine 4 (26/02) ==&lt;br /&gt;
Test de différents modules mais les résultats ne sont pas concluants. Les IP trouvées sont des très lourds et difficiles à mettre en place. Pour les besoins de notre projet nous avons voulons un programme assez simple qui fais juste une communication RS232 sans correction d'erreurs. C'est pourquoi nous décidons finalement de coder nous même le module.&lt;br /&gt;
&lt;br /&gt;
La solution développée sur papier pour le décodage des signaux est mis en place sous Altium, on obtient un comptage/décomptage conforme, mais un tour ne correspond pas exactement à 1024 * 4 pas.&lt;br /&gt;
&lt;br /&gt;
== Semaine 5 (05/03) ==&lt;br /&gt;
Afin de s'affranchir d'Altium et de la nanoboard nous décidons de passer sur le logiciel ISE de Xilink. Son avantage est que nous allons pouvoir passer sur une carte de développement différente (la starter board ) et nous pourrons aussi programmer avec la prochaine carte de développement (Spartan-6 LX9 &lt;br /&gt;
MicroBoard) qui sera commandée prochainement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le passage sous Xilink implique la programmation d'un fichier de contraintes afin d'indiquer au logiciel où connecter physiquement nos entrées sorties déclarées dans le programme. Ce fichier sera le seul à changer si l'on veut changer de FPGA car un code VHDL est portable et ne dépends pas du FPGA.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc pris en main le nouveau logiciel et programmer notre premier fichier de contrainte afin de pouvoir essayer notre module de PWM sur la nouvelle carte.&lt;br /&gt;
&lt;br /&gt;
Les problèmes de comptage de la semaine précédente sont identifiés, lors du temps de monté des signaux en quadratures, le FPGA interprète différents niveau de tensions (haut,bas) à cause d'un bruit présent sur le signal. C'est un phénomène similaires aux &amp;quot;rebonds&amp;quot; que l'on trouverait sur un bouton poussoir.&lt;br /&gt;
Une solution à base de lissage est essayée, ce n'est pas concluant.&lt;br /&gt;
&lt;br /&gt;
== Semaine 6 (12/03) ==&lt;br /&gt;
Début du codage de la partie '''réception''' du module série. Celui-ci sera composé de trois fichiers :&lt;br /&gt;
*le fichier de réception série : '''serial_rx'''&lt;br /&gt;
*le fichier d'envoi série : '''serial_tx'''&lt;br /&gt;
*le fichier de gestion des deux autres fichiers : '''serial_module''', c'est le fichier principal du module, c'est dans celui-là que l'on va instancier dans deux composants serial_rx et serial_tx.&lt;br /&gt;
&lt;br /&gt;
Réception d'une carte de développement FPGA (Spartan-6 LX9 MicroBoard), c'est celle là qui sera intégrée au robot. Programmation du fichier de contraintes et test de cette carte avec un programme simple (allumage d'une LED) afin de vérifier son fonctionnement.&lt;br /&gt;
&lt;br /&gt;
Pour enfin résoudre le problème d'inexactitude du comptage, le problème des &amp;quot;rebonds&amp;quot;, nous utilisons un module &amp;quot;debouncer&amp;quot;, qui vérifie l’établissement du signal pendant plusieurs fronts d'horloge.&lt;br /&gt;
Ce module a été développé par Mickael Coronado, Ingénieur Electronique Analogique / Numérique (Spécialiste FPGA) et Dirigeant (entreprise Inodesign).&lt;br /&gt;
&lt;br /&gt;
== Semaine 7 (19/03) ==&lt;br /&gt;
Après quelques difficultés de programmation dû à l'appréhension du VHDL, le module de réception série est fonctionnel. Lorsqu'on lui envoi une donnée grâce à minicom, il l'affiche le code ASCII sur des leds.&lt;br /&gt;
&lt;br /&gt;
Sur l'image suivante, nous avons envoyé le caractère 'a' (code ASCII : 0x97) et l'on voit que l'affichage de 'a' sur les leds fonctionne correctement&lt;br /&gt;
[[Fichier:Reception_a.jpg | 500px]]&lt;br /&gt;
&lt;br /&gt;
Début du code d'émission série.&lt;br /&gt;
&lt;br /&gt;
Début du code et du raisonnement de l'asservissement d'un moteur. Assemblage des modules PWM, debouncer, décodeur à quadrature dans un module reprenant toute l'application.&lt;br /&gt;
&lt;br /&gt;
== Semaine 8 (26/03) ==&lt;br /&gt;
Fin du code d'émission série, le FPGA est capable d'envoyer une donnée venant des switch de la carte(8 bits) et l'affichage se fait sur minicom.&lt;br /&gt;
Par exemple si on envoi 98 en hexadecimal (0110 0010), nous verrons 'b' s'afficher sur minicom car 0x98 correspond au code ASCII du caractère 'b'.&lt;br /&gt;
&lt;br /&gt;
Début de la programmation du module général de la communication série.&lt;br /&gt;
&lt;br /&gt;
Un pilotage d'un moteur à courant continu en vitesse est maintenant possible avec un codeur rotatif.&lt;br /&gt;
&lt;br /&gt;
== Semaine 9 (2/04) ==&lt;br /&gt;
Le module de communication série est entièrement fonctionnel, il peut donc être intégré dans n'importe quelle programme VHDL, pour cela il faut le déclarer en tant que composant dans son programme et faire les map des ports nécessaires. &lt;br /&gt;
&lt;br /&gt;
Ce module permet de gérer l'envoi et la réception facilement, au sein d'un programme.&lt;br /&gt;
&lt;br /&gt;
Afin de faciliter l'accès aux différents paramètres d'asservissement et ainsi pouvoir les lires ou les changer, nous décidons de créer un module de mémoire. Celui-ci sera un registre de grande taille dans lequel le module d'asservissement mais aussi un ordinateur comme un Raspberry (par le biais de la communication série) pourra aller lire/écrire.&lt;br /&gt;
&lt;br /&gt;
Valentin est partit pour la semaine complète à Magdebourg (Allemagne) pour une participation à l'Open German Robocup, une pré-coupe de la Robocup, compétition internationale de robotique.&lt;br /&gt;
Il y a donc eu une interruption logique de la progression sur son travail.&lt;br /&gt;
&lt;br /&gt;
== Semaine 10 (9/04) ==&lt;br /&gt;
Début de la programmation du module prenant en charge le composant série et le registre avec le protocole série d'accès aux données.&lt;br /&gt;
&lt;br /&gt;
Le module du registre est relativement simple à coder puisqu'il s'agit de déclarer un grand registre et d'y faire des alias afin d'avoir un accès simplifié.&lt;br /&gt;
&lt;br /&gt;
Test de communication entre le port série et le registre. Pour cela on a créé un module instanciant les composants serial_module et register_module. Ce module va écouter le port série et si une donnée arrive et correspond à une valeur particulière, il écrira dans le registre la valeur en question. Puis, il ira chercher la valeur écrite dans le registre afin de la renvoyer et de vérifier que la donnée du registre correspond à la donnée envoyée.&lt;br /&gt;
&lt;br /&gt;
Maintenant, nous voulons modifier ce module afin qu'il puisse aller écrire au bon endroit dans le registre. Nous allons donc créer un protocole d'envoi des données, de cette manière suivant l'adresse et la donnée reçue nous pourrons mettre à jour le registre mais aussi renvoyer une valeur du registre.&lt;br /&gt;
&lt;br /&gt;
L'ordinateur connecté au FPGA pourra donc récupérer les valeurs des asservissement et de déplacement. Il pourra aussi modifier ces valeurs afin de donner des ordres au robot (exemple : avancer à une vitesse particulière).&lt;br /&gt;
&lt;br /&gt;
Le protocole est le suivant : &lt;br /&gt;
*Premier octet, initialisation : 0x00&lt;br /&gt;
*Deuxième octet, ordre : &lt;br /&gt;
**0x01 : lecture&lt;br /&gt;
**0x02 : écriture&lt;br /&gt;
*Troisième octet, adresse : entre 0x00 et 0x17 (24 adresses possibles)&lt;br /&gt;
*Quatrième octet, données : entre 0x00 et 0xFF (en cas de lecture 0x55)&lt;br /&gt;
*Cinquième octet, fin : 0xFF&lt;br /&gt;
&lt;br /&gt;
Le FPGA n'aura jamais à demander d'informations au Raspberry par conséquent, lorsqu'il y aura une demande de lecture, le FPGA renverra directement la valeur demandée sans utilisation de protocole particulier.&lt;br /&gt;
&lt;br /&gt;
== Semaine 11 (16/04) ==&lt;br /&gt;
On a continué à programmer le protocole, des difficultés ont été rencontrées dans l'instanciation et le mappage des différentes entrées sorties afin d'utiliser correctement les modules à inclure (serial_module et register_module). Ces difficultés sont dues au faite que c'est la première fois où l'on fait un mappage complet prenant en compte deux composants annexes.&lt;br /&gt;
La programmation n'est aujourd'hui (15/04/2014) pas encore fini du à un retard dans les phases de tests, il sera prochainement finalisé en vue d'une implantation dans un module principal de gestion du déplacement du robot qui sera programmé dans le FPGA du robot.&lt;br /&gt;
&lt;br /&gt;
== A venir ==&lt;br /&gt;
Création d'un programme C sur Raspberry afin de faire des échanges de données avec le FPGA et création de l'intelligence du robot.&lt;br /&gt;
&lt;br /&gt;
= Descriptif technique =&lt;br /&gt;
== Carte de puissance ==&lt;br /&gt;
La carte de puissance permet de connecter 2 moteurs entre 12 et 55V consommant jusqu'à 3A grâce à deux ponts en H (LMD18200). Ces moteurs seront contrôlés par une modulation par largeur d'impulsion (PWM).&lt;br /&gt;
&lt;br /&gt;
=== Schéma électrique ===&lt;br /&gt;
[[Fichier:Schema_carte_puissance.PNG | 500px]]&lt;br /&gt;
&lt;br /&gt;
=== PCB ===&lt;br /&gt;
[[Fichier:CartePuissance_Moteurs.png | 500px]]&lt;br /&gt;
&lt;br /&gt;
== Communication série ==&lt;br /&gt;
La communication fonctionne à une vitesse fixée dans le programme, par défaut à 9600 bauds. Elle est 8N1 c'est à dire 8 bits de données, pas de parité et 1 bit de stop.&lt;br /&gt;
Elle peut être implantée sur n'importe qu'elle FPGA car elle n'utilise aucune librairie propre à un constructeur.&lt;br /&gt;
&lt;br /&gt;
== Registre mémoire ==&lt;br /&gt;
Le registre mémoire est un registre de grande taille sur lequel on va lire et écrire des données de différentes tailles.&lt;br /&gt;
&lt;br /&gt;
== Asservissement ==&lt;br /&gt;
Il peut être intéressant de réaliser un asservissement polaire d'un robot (en angle et en distance) en utilisant deux moteurs de propulsions, de la mesure sur les moteurs pour une boucle d'asservissement de vitesse et une mesure sur deux roues libres qui suivent le déplacement.&lt;br /&gt;
C'est une réalisation plutôt compliquée, mais les briques principales sont déjà prêtes.&lt;br /&gt;
&lt;br /&gt;
= Rapport =&lt;br /&gt;
Vous pouvez accéder au rapport du projet en suivant ce lien : [https://drive.google.com/file/d/0BzEs72ClJBLRckRIeEZIQURmRnM/edit?usp=sharing Rapport du projet]&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=12319</id>
		<title>FPGA et roues codeuses</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=12319"/>
				<updated>2014-04-15T21:56:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vous pouvez accéder au rapport du projet en suivant ce lien : [https://drive.google.com/file/d/0BzEs72ClJBLRckRIeEZIQURmRnM/edit?usp=sharing Rapport du projet]&lt;br /&gt;
&lt;br /&gt;
= Work In Progress =&lt;br /&gt;
Cette page est en cours de rédaction et le restera tout le long du projet. Elle sera mise à jour régulièrement (lors des séances de travail).&amp;lt;br /&amp;gt;&lt;br /&gt;
La version finale sera disponible le 16 avr. 2014.&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
== Aperçu ==&lt;br /&gt;
Le sujet propose de réaliser un système simple sur cible FPGA permettant de :&lt;br /&gt;
* Lire et décoder une ou plusieurs roues codeuses ;&lt;br /&gt;
* Asservir un ou plusieurs moteurs, soit pas-à-pas soir à courant continu.&lt;br /&gt;
&lt;br /&gt;
La cible visée sera un FPGA de chez Xilinx (carte de développement). En parallèle, une carte d'interface de puissance sera réalisée (interface entre FPGA et moteurs).&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges étendu ==&lt;br /&gt;
=== Description ===&lt;br /&gt;
Ce projet s'inscrit dans le cadre de la réalisation d'un robot mobile autonome, capable de se déplacer avec précision grâce au retour de ses capteurs.&lt;br /&gt;
La propulsion du robot est effectuée par deux moteurs à courant-continu, chacun couplé à une roue motrice tandis que le retour sur le déplacement est lui obtenu par deux codeurs à quadratures de phases couplés à des roues de mesures.&lt;br /&gt;
Il est aussi possible de récupérer l'information de vitesse des moteurs grâce à des dynamos tachymétriques ou par le biais d'autres codeurs à quadratures de phases directement couplés au moteur.&lt;br /&gt;
&lt;br /&gt;
Pour approcher ce fonctionnement, on travaillera initialement sur un seul codeur et un seul moteur. L'objectif est d'interpréter les signaux en quadratures de phases avec un FPGA et d'effectuer à partir de cette information un asservissement en vitesse du moteur.&lt;br /&gt;
&lt;br /&gt;
Si ce fonctionnement de base est obtenu suffisamment tôt, des améliorations sont envisageables, comme par exemple : &lt;br /&gt;
* Commande et mesure pour plusieurs moteurs et codeurs ;&lt;br /&gt;
* Pilotage du FPGA par un protocole de communication (série, CAN, I2C, à déterminer …) ;&lt;br /&gt;
* Asservissement polaire (cas d'un déplacement de robot) ;&lt;br /&gt;
* Calcul d'odométrie.&lt;br /&gt;
La liste est non exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Travail à réaliser ===&lt;br /&gt;
* '''FPGA :'''&lt;br /&gt;
** Récupération des signaux codeurs ;&lt;br /&gt;
** Interprétation des signaux et comptage ;&lt;br /&gt;
** Écriture de la mesure sur un bus ;&lt;br /&gt;
** Lecture de la consigne d'asservissement ;&lt;br /&gt;
** Asservissement et génération de la consigne moteur.&lt;br /&gt;
&lt;br /&gt;
* '''Électronique de puissance : '''&lt;br /&gt;
** Carte de conversion consigne (signaux logiques) en commande (tension avec puissance) ;&lt;br /&gt;
** Éventuelle protection en tension et en courant de la carte.&lt;br /&gt;
&lt;br /&gt;
=== Caractéristiques ===&lt;br /&gt;
Les moteurs utilisés peuvent être de deux types différents :&lt;br /&gt;
* ''Graupner Speed 720 BB Torque.'' &lt;br /&gt;
Alimenté en '''0-12V''' avec des courants max de '''3A''' et des courants moyens de 750mA.&lt;br /&gt;
* ''Faulhaber 3557K024CS.''&lt;br /&gt;
Alimenté en '''0-24V''' avec des courants max de '''1,1A''' et des courants moyens de 65mA.&lt;br /&gt;
&lt;br /&gt;
Ces deux types de moteurs représentent des cas très usités, il conviendra donc d'avoir une carte de puissance permettant d'assumer ces deux configurations.&lt;br /&gt;
&lt;br /&gt;
= Suivi des séances =&lt;br /&gt;
== Semaine 1 (5/02) ==&lt;br /&gt;
Élaboration du cahier des charges étendu.&lt;br /&gt;
Réflexion sur les différentes étapes à réaliser pour arriver au bout du projet.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!-- ==== Planning provisoire ==== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Semaine 2 (12/02) ==&lt;br /&gt;
Nous commençons notre programmation sur le logiciel Altium afin d'utiliser le FPGA de la nanoboard. &lt;br /&gt;
Le premier module sera un module de génération de PWM (Pulse Width Modulation) afin de pouvoir contrôler les moteurs au travers de la carte de puissance. Ce module est paramétré par une valeur codée sur 1 octet (entre 0 et 255) qui permet de changer la valeur du rapport cyclique. &lt;br /&gt;
*Si on a '''0''', rapport cyclique = '''0%''' , sortie = '''0V''' (état bas)&lt;br /&gt;
*Si on a '''127''', rapport cyclique = '''50%''' , sortie = 50% état haut et 50% état bas&lt;br /&gt;
*Si on a '''255''', rapport cyclique = '''100%''', sortie = '''3V3''' (état haut)&lt;br /&gt;
&lt;br /&gt;
Nous commençons aussi la réflexion sur les méthodes de décodage de signaux de quadratures de phases. Les résultats sont peu concluant, la solution trouvée test chaque configuration possible des signaux avant de traduire la configuration en un comptage ou un décomptage. La résolution est limité au nombre de pas par tours du codeur.&lt;br /&gt;
&lt;br /&gt;
== Semaine 3 (19/02) ==&lt;br /&gt;
Fin du codage de la PWM. Ci dessous un image montrant une PWM de rapport cyclique 33% donc avec 0x3F en entrée.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:PWM_3F.png | 500px]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre du projet et du développement du robot de la coupe de France 2014, nous avons besoin d'un module de communication série afin de pourvoir avoir un dialogue entre le FPGA et d'autres contrôleurs (Raspberry Pi, beagleBone...).&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps nous cherchons une IP(Intellectual Property) de communication serie RS232. Et nous testons les différents modules trouvés.&lt;br /&gt;
&lt;br /&gt;
Afin de pouvoir se partager les codes sources et faire un travail collaboratif de manière efficace, nous avons mis en place un repository git sur GitHub. De cette manière tous nos codes seront versionnés et nous pourrons revenir à des versions précédente en cas de problème.&lt;br /&gt;
&lt;br /&gt;
Après une importante tâche de documentation, il s'avère que les composants électroniques du commerces comptent chaque fronts des deux signaux en quadratures de phases, augmentant ainsi la résolution du comptage par 4 et facilitant apparemment le raisonnement.&lt;br /&gt;
En étudiant la situation sous forme logique (table de vérité, tableau de karnaugh), nous trouvons une solution à base de quelques ou exclusif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Github.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Semaine 4 (26/02) ==&lt;br /&gt;
Test de différents modules mais les résultats ne sont pas concluants. Les IP trouvées sont des très lourds et difficiles à mettre en place. Pour les besoins de notre projet nous avons voulons un programme assez simple qui fais juste une communication RS232 sans correction d'erreurs. C'est pourquoi nous décidons finalement de coder nous même le module.&lt;br /&gt;
&lt;br /&gt;
La solution développée sur papier pour le décodage des signaux est mis en place sous Altium, on obtient un comptage/décomptage conforme, mais un tour ne correspond pas exactement à 1024 * 4 pas.&lt;br /&gt;
&lt;br /&gt;
== Semaine 5 (05/03) ==&lt;br /&gt;
Afin de s'affranchir d'Altium et de la nanoboard nous décidons de passer sur le logiciel ISE de Xilink. Son avantage est que nous allons pouvoir passer sur une carte de développement différente (la starter board ) et nous pourrons aussi programmer avec la prochaine carte de développement (Spartan-6 LX9 &lt;br /&gt;
MicroBoard) qui sera commandée prochainement. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le passage sous Xilink implique la programmation d'un fichier de contraintes afin d'indiquer au logiciel où connecter physiquement nos entrées sorties déclarées dans le programme. Ce fichier sera le seul à changer si l'on veut changer de FPGA car un code VHDL est portable et ne dépends pas du FPGA.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc pris en main le nouveau logiciel et programmer notre premier fichier de contrainte afin de pouvoir essayer notre module de PWM sur la nouvelle carte.&lt;br /&gt;
&lt;br /&gt;
Les problèmes de comptage de la semaine précédente sont identifiés, lors du temps de monté des signaux en quadratures, le FPGA interprète différents niveau de tensions (haut,bas) à cause d'un bruit présent sur le signal. C'est un phénomène similaires aux &amp;quot;rebonds&amp;quot; que l'on trouverait sur un bouton poussoir.&lt;br /&gt;
Une solution à base de lissage est essayée, ce n'est pas concluant.&lt;br /&gt;
&lt;br /&gt;
== Semaine 6 (12/03) ==&lt;br /&gt;
Début du codage de la partie '''réception''' du module série. Celui-ci sera composé de trois fichiers :&lt;br /&gt;
*le fichier de réception série : '''serial_rx'''&lt;br /&gt;
*le fichier d'envoi série : '''serial_tx'''&lt;br /&gt;
*le fichier de gestion des deux autres fichiers : '''serial_module''', c'est le fichier principal du module, c'est dans celui-là que l'on va instancier dans deux composants serial_rx et serial_tx.&lt;br /&gt;
&lt;br /&gt;
Réception d'une carte de développement FPGA (Spartan-6 LX9 MicroBoard), c'est celle là qui sera intégrée au robot. Programmation du fichier de contraintes et test de cette carte avec un programme simple (allumage d'une LED) afin de vérifier son fonctionnement.&lt;br /&gt;
&lt;br /&gt;
Pour enfin résoudre le problème d'inexactitude du comptage, le problème des &amp;quot;rebonds&amp;quot;, nous utilisons un module &amp;quot;debouncer&amp;quot;, qui vérifie l’établissement du signal pendant plusieurs fronts d'horloge.&lt;br /&gt;
Ce module a été développé par Mickael Coronado, Ingénieur Electronique Analogique / Numérique (Spécialiste FPGA) et Dirigeant (entreprise Inodesign).&lt;br /&gt;
&lt;br /&gt;
== Semaine 7 (19/03) ==&lt;br /&gt;
Après quelques difficultés de programmation dû à l'appréhension du VHDL, le module de réception série est fonctionnel. Lorsqu'on lui envoi une donnée grâce à minicom, il l'affiche le code ASCII sur des leds.&lt;br /&gt;
&lt;br /&gt;
Sur l'image suivante, nous avons envoyé le caractère 'a' (code ASCII : 0x97) et l'on voit que l'affichage de 'a' sur les leds fonctionne correctement&lt;br /&gt;
[[Fichier:Reception_a.jpg | 500px]]&lt;br /&gt;
&lt;br /&gt;
Début du code d'émission série.&lt;br /&gt;
&lt;br /&gt;
Début du code et du raisonnement de l'asservissement d'un moteur. Assemblage des modules PWM, debouncer, décodeur à quadrature dans un module reprenant toute l'application.&lt;br /&gt;
&lt;br /&gt;
== Semaine 8 (26/03) ==&lt;br /&gt;
Fin du code d'émission série, le FPGA est capable d'envoyer une donnée venant des switch de la carte(8 bits) et l'affichage se fait sur minicom.&lt;br /&gt;
Par exemple si on envoi 98 en hexadecimal (0110 0010), nous verrons 'b' s'afficher sur minicom car 0x98 correspond au code ASCII du caractère 'b'.&lt;br /&gt;
&lt;br /&gt;
Début de la programmation du module général de la communication série.&lt;br /&gt;
&lt;br /&gt;
Un pilotage d'un moteur à courant continu en vitesse est maintenant possible avec un codeur rotatif.&lt;br /&gt;
&lt;br /&gt;
== Semaine 9 (2/04) ==&lt;br /&gt;
Le module de communication série est entièrement fonctionnel, il peut donc être intégré dans n'importe quelle programme VHDL, pour cela il faut le déclarer en tant que composant dans son programme et faire les map des ports nécessaires. &lt;br /&gt;
&lt;br /&gt;
Ce module permet de gérer l'envoi et la réception facilement, au sein d'un programme.&lt;br /&gt;
&lt;br /&gt;
Afin de faciliter l'accès aux différents paramètres d'asservissement et ainsi pouvoir les lires ou les changer, nous décidons de créer un module de mémoire. Celui-ci sera un registre de grande taille dans lequel le module d'asservissement mais aussi un ordinateur comme un Raspberry (par le biais de la communication série) pourra aller lire/écrire.&lt;br /&gt;
&lt;br /&gt;
Valentin est partit pour la semaine complète à Magdebourg (Allemagne) pour une participation à l'Open German Robocup, une pré-coupe de la Robocup, compétition internationale de robotique.&lt;br /&gt;
Il y a donc eu une interruption logique de la progression sur son travail.&lt;br /&gt;
&lt;br /&gt;
== Semaine 10 (9/04) ==&lt;br /&gt;
Début de la programmation du module prenant en charge le composant série et le registre avec le protocole série d'accès aux données.&lt;br /&gt;
&lt;br /&gt;
Le module du registre est relativement simple à coder puisqu'il s'agit de déclarer un grand registre et d'y faire des alias afin d'avoir un accès simplifié.&lt;br /&gt;
&lt;br /&gt;
Test de communication entre le port série et le registre. Pour cela on a créé un module instanciant les composants serial_module et register_module. Ce module va écouter le port série et si une donnée arrive et correspond à une valeur particulière, il écrira dans le registre la valeur en question. Puis, il ira chercher la valeur écrite dans le registre afin de la renvoyer et de vérifier que la donnée du registre correspond à la donnée envoyée.&lt;br /&gt;
&lt;br /&gt;
Maintenant, nous voulons modifier ce module afin qu'il puisse aller écrire au bon endroit dans le registre. Nous allons donc créer un protocole d'envoi des données, de cette manière suivant l'adresse et la donnée reçue nous pourrons mettre à jour le registre mais aussi renvoyer une valeur du registre.&lt;br /&gt;
&lt;br /&gt;
L'ordinateur connecté au FPGA pourra donc récupérer les valeurs des asservissement et de déplacement. Il pourra aussi modifier ces valeurs afin de donner des ordres au robot (exemple : avancer à une vitesse particulière).&lt;br /&gt;
&lt;br /&gt;
Le protocole est le suivant : &lt;br /&gt;
*Premier octet, initialisation : 0x00&lt;br /&gt;
*Deuxième octet, ordre : &lt;br /&gt;
**0x01 : lecture&lt;br /&gt;
**0x02 : écriture&lt;br /&gt;
*Troisième octet, adresse : entre 0x00 et 0x17 (24 adresses possibles)&lt;br /&gt;
*Quatrième octet, données : entre 0x00 et 0xFF &lt;br /&gt;
*Cinquième octet, fin : 0xFF&lt;br /&gt;
&lt;br /&gt;
Le FPGA n'aura jamais à demander d'informations au Raspberry par conséquent, lorsqu'il y aura une demande de lecture, le FPGA renverra directement la valeur demandée sans utilisation de protocole particulier.&lt;br /&gt;
&lt;br /&gt;
== Semaine 11 (16/04) ==&lt;br /&gt;
On a continué à programmer le protocole, des difficultés ont été rencontrées dans l'instanciation et le mappage des différentes entrées sorties afin d'utiliser correctement les modules à inclure (serial_module et register_module). Ces difficultés sont dues au faite que c'est la première fois où l'on fait un mappage complet prenant en compte deux composants annexes.&lt;br /&gt;
La programmation n'est aujourd'hui (15/04/2014) pas encore fini du à un retard dans les phases de tests, il sera prochainement finalisé en vue d'une implantation dans un module principal de gestion du déplacement du robot qui sera programmé dans le FPGA du robot.&lt;br /&gt;
&lt;br /&gt;
== A venir ==&lt;br /&gt;
Création d'un programme C sur Raspberry afin de faire des échanges de données avec le FPGA et création de l'intelligence du robot.&lt;br /&gt;
&lt;br /&gt;
= Descriptif technique =&lt;br /&gt;
== Carte de puissance ==&lt;br /&gt;
La carte de puissance permet de connecter 2 moteurs entre 12 et 55V consommant jusqu'à 3A grâce à deux ponts en H (LMD18200). Ces moteurs seront contrôlés par une modulation par largeur d'impulsion (PWM).&lt;br /&gt;
&lt;br /&gt;
=== Schéma électrique ===&lt;br /&gt;
[[Fichier:Schema_carte_puissance.PNG | 500px]]&lt;br /&gt;
&lt;br /&gt;
=== PCB ===&lt;br /&gt;
[[Fichier:CartePuissance_Moteurs.png | 500px]]&lt;br /&gt;
&lt;br /&gt;
== Communication série ==&lt;br /&gt;
La communication fonctionne à une vitesse fixée dans le programme, par défaut à 9600 bauds. Elle est 8N1 c'est à dire 8 bits de données, pas de parité et 1 bit de stop.&lt;br /&gt;
Elle peut être implantée sur n'importe qu'elle FPGA car elle n'utilise aucune librairie propre à un constructeur.&lt;br /&gt;
&lt;br /&gt;
== Registre mémoire ==&lt;br /&gt;
Le registre mémoire est un registre de grande taille sur lequel on va lire et écrire des données de différentes tailles.&lt;br /&gt;
&lt;br /&gt;
== Asservissement ==&lt;br /&gt;
Il peut être intéressant de réaliser un asservissement polaire d'un robot (en angle et en distance) en utilisant deux moteurs de propulsions, de la mesure sur les moteurs pour une boucle d'asservissement de vitesse et une mesure sur deux roues libres qui suivent le déplacement.&lt;br /&gt;
C'est une réalisation plutôt compliquée, mais les briques principales sont déjà prêtes.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8967</id>
		<title>FPGA et roues codeuses</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8967"/>
				<updated>2014-02-05T13:58:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Work In Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Work In Progress =&lt;br /&gt;
Cette page est en cours de rédaction et le restera tout le long du projet. Elle sera mise à jour régulièrement (lors des séances de travail).&amp;lt;br /&amp;gt;&lt;br /&gt;
La version finale sera disponible le 16 avr. 2014.&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
== Aperçu ==&lt;br /&gt;
Le sujet propose de réaliser un système simple sur cible FPGA permettant de :&lt;br /&gt;
* Lire et décoder une ou plusieurs roues codeuses ;&lt;br /&gt;
* Asservir un ou plusieurs moteurs, soit pas-à-pas soir à courant continu.&lt;br /&gt;
&lt;br /&gt;
La cible visée sera un FPGA de chez Xilinx (carte de développement). En parallèle, une carte d'interface de puissance sera réalisée (interface entre FPGA et moteurs).&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges étendu ==&lt;br /&gt;
=== Description ===&lt;br /&gt;
Ce projet s'inscrit dans le cadre de la réalisation d'un robot mobile autonome, capable de se déplacer avec précision grâce au retour de ses capteurs.&lt;br /&gt;
La propulsion du robot est effectuée par deux moteurs à courant-continu, chacun couplé à une roue motrice tandis que le retour sur le déplacement est lui obtenu par deux codeurs à quadratures de phases couplés à des roues de mesures.&lt;br /&gt;
Il est aussi possible de récupérer l'information de vitesse des moteurs grâce à des dynamos tachymétriques ou par le biais d'autres codeurs à quadratures de phases directement couplés au moteur.&lt;br /&gt;
&lt;br /&gt;
Pour approcher ce fonctionnement, on travaillera initialement sur un seul codeur et un seul moteur. L'objectif est d'interpréter les signaux en quadratures de phases avec un FPGA et d'effectuer à partir de cette information un asservissement en vitesse du moteur.&lt;br /&gt;
&lt;br /&gt;
Si ce fonctionnement de base est obtenu suffisamment tôt, des améliorations sont envisageables, comme par exemple : &lt;br /&gt;
* Commande et mesure pour plusieurs moteurs et codeurs ;&lt;br /&gt;
* Pilotage du FPGA par un protocole de communication (série, CAN, I2C, à déterminer …) ;&lt;br /&gt;
* Asservissement polaire (cas d'un déplacement de robot) ;&lt;br /&gt;
* Calcul d'odométrie.&lt;br /&gt;
La liste est non exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Travail à réaliser ===&lt;br /&gt;
* '''FPGA :'''&lt;br /&gt;
** Récupération des signaux codeurs ;&lt;br /&gt;
** Interprétation des signaux et comptage ;&lt;br /&gt;
** Écriture de la mesure sur un bus ;&lt;br /&gt;
** Lecture de la consigne d'asservissement ;&lt;br /&gt;
** Asservissement et génération de la consigne moteur.&lt;br /&gt;
&lt;br /&gt;
* '''Électronique de puissance : '''&lt;br /&gt;
** Carte de conversion consigne (signaux logiques) en commande (tension avec puissance) ;&lt;br /&gt;
** Éventuelle protection en tension et en courant de la carte.&lt;br /&gt;
&lt;br /&gt;
=== Caractéristiques ===&lt;br /&gt;
Les moteurs utilisés peuvent être de deux types différents :&lt;br /&gt;
* ''Graupner Speed 720 BB Torque.'' &lt;br /&gt;
Alimenté en '''0-12V''' avec des courants max de '''3A''' et des courants moyens de 750mA.&lt;br /&gt;
* ''Faulhaber 3557K024CS.''&lt;br /&gt;
Alimenté en '''0-24V''' avec des courants max de '''1,1A''' et des courants moyens de 65mA.&lt;br /&gt;
&lt;br /&gt;
Ces deux types de moteurs représentent des cas très usités, il conviendra donc d'avoir une carte de puissance permettant d'assumer ces deux configurations.&lt;br /&gt;
&lt;br /&gt;
= Suivi des séances =&lt;br /&gt;
&lt;br /&gt;
= Descriptif technique =&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8966</id>
		<title>FPGA et roues codeuses</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8966"/>
				<updated>2014-02-05T13:57:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Work In Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Work In Progress =&lt;br /&gt;
Cette page est en cours de rédaction et le restera tout le long du projet. Elle sera mise à jour régulièrement (lors des séances de travail).&lt;br /&gt;
La version finale sera disponible le 16 avr. 2014.&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
== Aperçu ==&lt;br /&gt;
Le sujet propose de réaliser un système simple sur cible FPGA permettant de :&lt;br /&gt;
* Lire et décoder une ou plusieurs roues codeuses ;&lt;br /&gt;
* Asservir un ou plusieurs moteurs, soit pas-à-pas soir à courant continu.&lt;br /&gt;
&lt;br /&gt;
La cible visée sera un FPGA de chez Xilinx (carte de développement). En parallèle, une carte d'interface de puissance sera réalisée (interface entre FPGA et moteurs).&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges étendu ==&lt;br /&gt;
=== Description ===&lt;br /&gt;
Ce projet s'inscrit dans le cadre de la réalisation d'un robot mobile autonome, capable de se déplacer avec précision grâce au retour de ses capteurs.&lt;br /&gt;
La propulsion du robot est effectuée par deux moteurs à courant-continu, chacun couplé à une roue motrice tandis que le retour sur le déplacement est lui obtenu par deux codeurs à quadratures de phases couplés à des roues de mesures.&lt;br /&gt;
Il est aussi possible de récupérer l'information de vitesse des moteurs grâce à des dynamos tachymétriques ou par le biais d'autres codeurs à quadratures de phases directement couplés au moteur.&lt;br /&gt;
&lt;br /&gt;
Pour approcher ce fonctionnement, on travaillera initialement sur un seul codeur et un seul moteur. L'objectif est d'interpréter les signaux en quadratures de phases avec un FPGA et d'effectuer à partir de cette information un asservissement en vitesse du moteur.&lt;br /&gt;
&lt;br /&gt;
Si ce fonctionnement de base est obtenu suffisamment tôt, des améliorations sont envisageables, comme par exemple : &lt;br /&gt;
* Commande et mesure pour plusieurs moteurs et codeurs ;&lt;br /&gt;
* Pilotage du FPGA par un protocole de communication (série, CAN, I2C, à déterminer …) ;&lt;br /&gt;
* Asservissement polaire (cas d'un déplacement de robot) ;&lt;br /&gt;
* Calcul d'odométrie.&lt;br /&gt;
La liste est non exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Travail à réaliser ===&lt;br /&gt;
* '''FPGA :'''&lt;br /&gt;
** Récupération des signaux codeurs ;&lt;br /&gt;
** Interprétation des signaux et comptage ;&lt;br /&gt;
** Écriture de la mesure sur un bus ;&lt;br /&gt;
** Lecture de la consigne d'asservissement ;&lt;br /&gt;
** Asservissement et génération de la consigne moteur.&lt;br /&gt;
&lt;br /&gt;
* '''Électronique de puissance : '''&lt;br /&gt;
** Carte de conversion consigne (signaux logiques) en commande (tension avec puissance) ;&lt;br /&gt;
** Éventuelle protection en tension et en courant de la carte.&lt;br /&gt;
&lt;br /&gt;
=== Caractéristiques ===&lt;br /&gt;
Les moteurs utilisés peuvent être de deux types différents :&lt;br /&gt;
* ''Graupner Speed 720 BB Torque.'' &lt;br /&gt;
Alimenté en '''0-12V''' avec des courants max de '''3A''' et des courants moyens de 750mA.&lt;br /&gt;
* ''Faulhaber 3557K024CS.''&lt;br /&gt;
Alimenté en '''0-24V''' avec des courants max de '''1,1A''' et des courants moyens de 65mA.&lt;br /&gt;
&lt;br /&gt;
Ces deux types de moteurs représentent des cas très usités, il conviendra donc d'avoir une carte de puissance permettant d'assumer ces deux configurations.&lt;br /&gt;
&lt;br /&gt;
= Suivi des séances =&lt;br /&gt;
&lt;br /&gt;
= Descriptif technique =&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8964</id>
		<title>FPGA et roues codeuses</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8964"/>
				<updated>2014-02-05T13:55:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Work In Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Work In Progress =&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Présentation =&lt;br /&gt;
== Aperçu ==&lt;br /&gt;
Le sujet propose de réaliser un système simple sur cible FPGA permettant de :&lt;br /&gt;
* Lire et décoder une ou plusieurs roues codeuses ;&lt;br /&gt;
* Asservir un ou plusieurs moteurs, soit pas-à-pas soir à courant continu.&lt;br /&gt;
&lt;br /&gt;
La cible visée sera un FPGA de chez Xilinx (carte de développement). En parallèle, une carte d'interface de puissance sera réalisée (interface entre FPGA et moteurs).&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges étendu ==&lt;br /&gt;
=== Description ===&lt;br /&gt;
Ce projet s'inscrit dans le cadre de la réalisation d'un robot mobile autonome, capable de se déplacer avec précision grâce au retour de ses capteurs.&lt;br /&gt;
La propulsion du robot est effectuée par deux moteurs à courant-continu, chacun couplé à une roue motrice tandis que le retour sur le déplacement est lui obtenu par deux codeurs à quadratures de phases couplés à des roues de mesures.&lt;br /&gt;
Il est aussi possible de récupérer l'information de vitesse des moteurs grâce à des dynamos tachymétriques ou par le biais d'autres codeurs à quadratures de phases directement couplés au moteur.&lt;br /&gt;
&lt;br /&gt;
Pour approcher ce fonctionnement, on travaillera initialement sur un seul codeur et un seul moteur. L'objectif est d'interpréter les signaux en quadratures de phases avec un FPGA et d'effectuer à partir de cette information un asservissement en vitesse du moteur.&lt;br /&gt;
&lt;br /&gt;
Si ce fonctionnement de base est obtenu suffisamment tôt, des améliorations sont envisageables, comme par exemple : &lt;br /&gt;
* Commande et mesure pour plusieurs moteurs et codeurs ;&lt;br /&gt;
* Pilotage du FPGA par un protocole de communication (série, CAN, I2C, à déterminer …) ;&lt;br /&gt;
* Asservissement polaire (cas d'un déplacement de robot) ;&lt;br /&gt;
* Calcul d'odométrie.&lt;br /&gt;
La liste est non exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Travail à réaliser ===&lt;br /&gt;
* '''FPGA :'''&lt;br /&gt;
** Récupération des signaux codeurs ;&lt;br /&gt;
** Interprétation des signaux et comptage ;&lt;br /&gt;
** Écriture de la mesure sur un bus ;&lt;br /&gt;
** Lecture de la consigne d'asservissement ;&lt;br /&gt;
** Asservissement et génération de la consigne moteur.&lt;br /&gt;
&lt;br /&gt;
* '''Électronique de puissance : '''&lt;br /&gt;
** Carte de conversion consigne (signaux logiques) en commande (tension avec puissance) ;&lt;br /&gt;
** Éventuelle protection en tension et en courant de la carte.&lt;br /&gt;
&lt;br /&gt;
=== Caractéristiques ===&lt;br /&gt;
Les moteurs utilisés peuvent être de deux types différents :&lt;br /&gt;
* ''Graupner Speed 720 BB Torque.'' &lt;br /&gt;
Alimenté en '''0-12V''' avec des courants max de '''3A''' et des courants moyens de 750mA.&lt;br /&gt;
* ''Faulhaber 3557K024CS.''&lt;br /&gt;
Alimenté en '''0-24V''' avec des courants max de '''1,1A''' et des courants moyens de 65mA.&lt;br /&gt;
&lt;br /&gt;
Ces deux types de moteurs représentent des cas très usités, il conviendra donc d'avoir une carte de puissance permettant d'assumer ces deux configurations.&lt;br /&gt;
&lt;br /&gt;
= Suivi des séances =&lt;br /&gt;
&lt;br /&gt;
= Descriptif technique =&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8955</id>
		<title>FPGA et roues codeuses</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8955"/>
				<updated>2014-02-05T13:46:18Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Work In Progress =&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges étendu ==&lt;br /&gt;
=== Description ===&lt;br /&gt;
Ce projet s'inscrit dans le cadre de la réalisation d'un robot mobile autonome, capable de se déplacer avec précision grâce au retour de ses capteurs.&lt;br /&gt;
La propulsion du robot est effectuée par deux moteurs à courant-continu, chacun couplé à une roue motrice tandis que le retour sur le déplacement est lui obtenu par deux codeurs à quadratures de phases couplés à des roues de mesures.&lt;br /&gt;
Il est aussi possible de récupérer l'information de vitesse des moteurs grâce à des dynamos tachymétriques ou par le biais d'autres codeurs à quadratures de phases directement couplés au moteur.&lt;br /&gt;
&lt;br /&gt;
Pour approcher ce fonctionnement, on travaillera initialement sur un seul codeur et un seul moteur. L'objectif est d'interpréter les signaux en quadratures de phases avec un FPGA et d'effectuer à partir de cette information un asservissement en vitesse du moteur.&lt;br /&gt;
&lt;br /&gt;
Si ce fonctionnement de base est obtenu suffisamment tôt, des améliorations sont envisageables, comme par exemple : &lt;br /&gt;
* Commande et mesure pour plusieurs moteurs et codeurs ;&lt;br /&gt;
* Pilotage du FPGA par un protocole de communication (série, CAN, I2C, à déterminer …) ;&lt;br /&gt;
* Asservissement polaire (cas d'un déplacement de robot) ;&lt;br /&gt;
* Calcul d'odométrie.&lt;br /&gt;
La liste est non exhaustive.&lt;br /&gt;
&lt;br /&gt;
=== Travail à réaliser ===&lt;br /&gt;
* '''FPGA :'''&lt;br /&gt;
** Récupération des signaux codeurs ;&lt;br /&gt;
** Interprétation des signaux et comptage ;&lt;br /&gt;
** Écriture de la mesure sur un bus ;&lt;br /&gt;
** Lecture de la consigne d'asservissement ;&lt;br /&gt;
** Asservissement et génération de la consigne moteur.&lt;br /&gt;
&lt;br /&gt;
* '''Électronique de puissance : '''&lt;br /&gt;
** Carte de conversion consigne (signaux logiques) en commande (tension avec puissance) ;&lt;br /&gt;
** Éventuelle protection en tension et en courant de la carte.&lt;br /&gt;
&lt;br /&gt;
=== Caractéristiques ===&lt;br /&gt;
Les moteurs utilisés peuvent être de deux types différents :&lt;br /&gt;
* ''Graupner Speed 720 BB Torque.'' &lt;br /&gt;
Alimenté en '''0-12V''' avec des courants max de '''3A''' et des courants moyens de 750mA.&lt;br /&gt;
* ''Faulhaber 3557K024CS.''&lt;br /&gt;
Alimenté en '''0-24V''' avec des courants max de '''1,1A''' et des courants moyens de 65mA.&lt;br /&gt;
&lt;br /&gt;
Ces deux types de moteurs représentent des cas très usités, il conviendra donc d'avoir une carte de puissance permettant d'assumer ces deux configurations.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8799</id>
		<title>FPGA et roues codeuses</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=FPGA_et_roues_codeuses&amp;diff=8799"/>
				<updated>2014-01-30T17:55:35Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : Page créée avec « = En Construction = ---- »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= En Construction =&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6930</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6930"/>
				<updated>2013-06-17T16:37:02Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Rapports des élèves */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Séance 1'''====&lt;br /&gt;
&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Séance 2'''====&lt;br /&gt;
&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Séance 3'''====&lt;br /&gt;
&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Pour mettre en oeuvre ce filtrage des octets avant que la partie électronique ne soit finalisée, la solution adoptée a été de simuler le comportement de la NanoBoard. En effet avec un logiciel tel que [http://manpages.ubuntu.com/manpages/lucid/man1/socat.1.html socat], il est possible de rediriger logiciellement un port vers un autre.&amp;lt;br /&amp;gt;&lt;br /&gt;
Partant de là il a été très simple d'envoyer sur un port une série de plusieurs octets aléatoires précédés d'un 0 et ceux répété à l'infini, avec la redirection il a alors été possible de recevoir ces octets comme s'ils provenaient de la FoxBoard.&amp;lt;br /&amp;gt;&lt;br /&gt;
Cette technique de travail nous aura été très bénéfique puisqu'elle nous a permis de faire des tests sans avoir à attendre l'aboutissement de l'entité électronique.&lt;br /&gt;
&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Séance 1'''====&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Séance 2'''====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Basculepourmemorisation.png|450px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma électrique.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Séance 3'''====&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_4.png|schema 1|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|500px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Séance 4 (Supplémentaire)'''====&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium1.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium2.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les tests à effectuer dans cette partie ont été les plus long. En effet il a fallu faire des tests complets afin d'être sur de ce qu'y été envoyé sur le port série. Nous avons tout d'abord utilisé un Arduino de manière à visualiser facilement les données envoyées et ainsi se passer de la partie informatique et s'assurer du bon fonctionnement de l'émission. Or, il s'est avéré que la configuration par défaut de la communication série de celui-ci n'était pas compatible avec notre système. Nous avons pu déceler les problèmes au moyen de l'analyseur logique, et avons décider ensuite de réaliser la communication avec la partie informatique.&lt;br /&gt;
&lt;br /&gt;
Après s'être assuré du bon fonctionnement de l'envoi d'une donnée sur le port série, nous avons rajouter le bloc afin de simuler l'envoi de &lt;br /&gt;
4 données simultanées, ce qui pourrait correspondre à 4 capteurs de pression (ce nombre peut être facilement augmenté).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6885</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6885"/>
				<updated>2013-06-17T00:56:44Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Pour mettre en oeuvre ce filtrage des octets avant que la partie électronique ne soit finalisée, la solution adoptée a été de simuler le comportement de la NanoBoard. En effet avec un logiciel tel que [http://manpages.ubuntu.com/manpages/lucid/man1/socat.1.html socat], il est possible de rediriger logiciellement un port vers un autre.&amp;lt;br /&amp;gt;&lt;br /&gt;
Partant de là il a été très simple d'envoyer sur un port une série de plusieurs octets aléatoires précédés d'un 0 et ceux répété à l'infini, avec la redirection il a alors été possible de recevoir ces octets comme s'ils provenaient de la FoxBoard.&amp;lt;br /&amp;gt;&lt;br /&gt;
Cette technique de travail nous aura été très bénéfique puisqu'elle nous a permis de faire des tests sans avoir à attendre l'aboutissement de l'entité électronique.&lt;br /&gt;
&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Basculepourmemorisation.png|450px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma électrique.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_4.png|schema 1|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|500px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium1.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium2.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les tests à effectuer dans cette partie ont été les plus long. En effet il a fallu faire des tests complets afin d'être sur de ce qu'y été envoyé sur le port série. Nous avons tout d'abord utilisé un Arduino de manière à visualiser facilement les données envoyées et ainsi se passer de la partie informatique et s'assurer du bon fonctionnement de l'émission. Or, il s'est avéré que la configuration par défaut de la communication série de celui-ci n'était pas compatible avec notre système. Nous avons pu déceler les problèmes au moyen de l'analyseur logique, et avons décider ensuite de réaliser la communication avec la partie informatique.&lt;br /&gt;
&lt;br /&gt;
Après s'être assuré du bon fonctionnement de l'envoi d'une donnée sur le port série, nous avons rajouter le bloc afin de simuler l'envoi de &lt;br /&gt;
4 données simultanées, ce qui pourrait correspondre à 4 capteurs de pression (ce nombre peut être facilement augmenté).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6884</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6884"/>
				<updated>2013-06-17T00:49:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 2 : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Basculepourmemorisation.png|450px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma électrique.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_4.png|schema 1|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|500px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium1.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium2.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les tests à effectuer dans cette partie ont été les plus long. En effet il a fallu faire des tests complets afin d'être sur de ce qu'y été envoyé sur le port série. Nous avons tout d'abord utilisé un Arduino de manière à visualiser facilement les données envoyées et ainsi se passer de la partie informatique et s'assurer du bon fonctionnement de l'émission. Or, il s'est avéré que la configuration par défaut de la communication série de celui-ci n'était pas compatible avec notre système. Nous avons pu déceler les problèmes au moyen de l'analyseur logique, et avons décider ensuite de réaliser la communication avec la partie informatique.&lt;br /&gt;
&lt;br /&gt;
Après s'être assuré du bon fonctionnement de l'envoi d'une donnée sur le port série, nous avons rajouter le bloc afin de simuler l'envoi de &lt;br /&gt;
4 données simultanées, ce qui pourrait correspondre à 4 capteurs de pression (ce nombre peut être facilement augmenté).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6882</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6882"/>
				<updated>2013-06-17T00:47:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 3 : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_4.png|schema 1|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|500px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium1.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium2.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les tests à effectuer dans cette partie ont été les plus long. En effet il a fallu faire des tests complets afin d'être sur de ce qu'y été envoyé sur le port série. Nous avons tout d'abord utilisé un Arduino de manière à visualiser facilement les données envoyées et ainsi se passer de la partie informatique et s'assurer du bon fonctionnement de l'émission. Or, il s'est avéré que la configuration par défaut de la communication série de celui-ci n'était pas compatible avec notre système. Nous avons pu déceler les problèmes au moyen de l'analyseur logique, et avons décider ensuite de réaliser la communication avec la partie informatique.&lt;br /&gt;
&lt;br /&gt;
Après s'être assuré du bon fonctionnement de l'envoi d'une donnée sur le port série, nous avons rajouter le bloc afin de simuler l'envoi de &lt;br /&gt;
4 données simultanées, ce qui pourrait correspondre à 4 capteurs de pression (ce nombre peut être facilement augmenté).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6881</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6881"/>
				<updated>2013-06-17T00:46:46Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 3 : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_4.png|schema 1|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|350px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium1.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium2.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les tests à effectuer dans cette partie ont été les plus long. En effet il a fallu faire des tests complets afin d'être sur de ce qu'y été envoyé sur le port série. Nous avons tout d'abord utilisé un Arduino de manière à visualiser facilement les données envoyées et ainsi se passer de la partie informatique et s'assurer du bon fonctionnement de l'émission. Or, il s'est avéré que la configuration par défaut de la communication série de celui-ci n'était pas compatible avec notre système. Nous avons pu déceler les problèmes au moyen de l'analyseur logique, et avons décider ensuite de réaliser la communication avec la partie informatique.&lt;br /&gt;
&lt;br /&gt;
Après s'être assuré du bon fonctionnement de l'envoi d'une donnée sur le port série, nous avons rajouter le bloc afin de simuler l'envoi de &lt;br /&gt;
4 données simultanées, ce qui pourrait correspondre à 4 capteurs de pression (ce nombre peut être facilement augmenté).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6876</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6876"/>
				<updated>2013-06-17T00:44:31Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 3 : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_4.png|schema 1|600px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|350px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium1.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium2.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6875</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6875"/>
				<updated>2013-06-17T00:43:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 4 (Supplémentaire) : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium1.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Altium2.png|schéma complet|900px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6872</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6872"/>
				<updated>2013-06-17T00:41:47Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 1 : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6871</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6871"/>
				<updated>2013-06-17T00:40:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 1 : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Schéma_à_faire.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique, à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Partienumetanal.png|1000px]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le sujet appréhendé, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionne. Nous avons ensuite créé notre propre PWM dont voilà le schéma : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Seance1.png]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6868</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6868"/>
				<updated>2013-06-17T00:29:08Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
Cette séance aura été moins productive car on se trouve déjà en phase d'intégration électronique/informatique.&amp;lt;br /&amp;gt;&lt;br /&gt;
La partie électronique n'étant pas encore totalement aboutie, la majeure partie de nos efforts a été consacrée à cette dernière.&lt;br /&gt;
&lt;br /&gt;
La partie électronique a pour objectif de récupérer des informations de capteurs de pression pour ensuite les envoyer à la FoxBoard qui doit les traiter.&amp;lt;br /&amp;gt;&lt;br /&gt;
Un simple cercle de couleur a été ajouté pour représenter la pression exercée sur le premier capteur. Si le capteur ne capte aucune pression, on reçoit la valeur 255 et le cercle est vert. En revanche plus la pression est forte plus la valeur tend vers 0 et alors le cercle vire au noir.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:AccéléromètreVERT.png|400px|Capteur de pression relâché]][[Fichier:AccéléromètreNOIR.png|400px|Capteur de pression au maximum]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initialement il était prévu de gérer la communication série avec la NanoBoard (partie électronique) par émission d'un octet puis réception de quatre octets avec les trois mesures des capteurs de pression.&amp;lt;br /&amp;gt;&lt;br /&gt;
Seulement la communication série avec la NanoBoard nous a causé de nombreux soucis, nous n'arrivions pas à maîtriser les blocs fonctionnels que l'on nous a fourni. Nous avons donc changé de stratégie.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les informations sont envoyées en continues et précédées par un 0 (le capteur de pression n'atteint jamais 0) pour pouvoir repérer à quels capteurs correspondent les valeurs. Nous nous servons en fait de la valeur 0 comme d'un marqueur de début d'information.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ce nouveau mode de fonctionnement, après quelques heures de travail supplémentaire, est totalement fonctionnel. Nous pouvons considérer notre application, à l'asservissement près, comme étant aboutie.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez accéder aux codes de l'application en suivant ce lien : &amp;lt;br /&amp;gt;&lt;br /&gt;
[https://sourceforge.net/projects/scbrasrobotique/files/ Bras Robotique (Codes Source)]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le sujet était clair, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionner. Nous avons ensuite crée notre propre PWM et nous sommes arrivés à cela : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc (constitué d'un multiplexeur et d'un compteur) pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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 (multiplexeur) 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.&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6862</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6862"/>
				<updated>2013-06-17T00:09:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
Cette séance a été consacré à la finition de l'interface WEB.&lt;br /&gt;
&lt;br /&gt;
Javascript nous permet de répondre à certains événements, comme le clic de la souris par exemple. Nous pouvons aussi récupérer la position du curseur.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ainsi, en associant ces fonctionnalités à notre dessin JCanvas (dessin actualisé régulièrement), nous avons implémenté une fonctionnalité de contrôle du dessin, l'idée étant de pouvoir asservir le bras robotique à la position donnée sur le dessin.&lt;br /&gt;
&lt;br /&gt;
On se retrouve alors avec pour le dessin de droite, la possibilité de mouvoir le dessin éléments par éléments :&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, par faute de temps l'asservissement n'a pas été réalisé. &amp;lt;br /&amp;gt;&lt;br /&gt;
Il faut savoir que le bras est initialement un gadget piloté par une télécommande filaire. Ce gadget a été légèrement détourné de sa fonctionnalité première, mais le système de commande par petites impulsions a été gardé. Un tel système de commande ne permet pas d'implanter un simple système d'asservissement avec boucle de retour tel qu'on sait les faire en IMA3. L'asservissement aurait dû être aborder sous un œil totalement nouveau pour nous et nous avons donc préférer nous focaliser sur les fonctionnalités premières du système mais sans toutefois supprimer cette fonctionnalité qui pourra être reprise par qui le souhaitera.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le sujet était clair, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionner. Nous avons ensuite crée notre propre PWM et nous sommes arrivés à cela : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6855</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6855"/>
				<updated>2013-06-16T23:52:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Fichier:Presentation.png|900px|Interface WEB complète]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le sujet était clair, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionner. Nous avons ensuite crée notre propre PWM et nous sommes arrivés à cela : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6853</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6853"/>
				<updated>2013-06-16T23:51:00Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
La première séance a été pleine de découvertes. &amp;lt;br /&amp;gt;&lt;br /&gt;
Pour réaliser notre interface WEB nous pouvions nous reposer sur quelques exemples d'utilisation de bibliothèques et langages de programmations déjà fournis. Cette séance a donc été en grande partie consacré à la découverte de ces possibilités.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps il s'agissait donc de tester les exemples et de commencer à les adapter à notre application.&lt;br /&gt;
&lt;br /&gt;
Les langages, librairies et fonctionnalités retenues auront été les suivants : &lt;br /&gt;
* Structure de la page principale en HTML;&lt;br /&gt;
* Communication série gérée en PHP;&lt;br /&gt;
* Contrôle du bras robotique via un [http://fr.wikipedia.org/wiki/Daemon_(informatique) démon] codé en langage C;&lt;br /&gt;
* Transmission des ordres au démon contrôlant le  bras robotiques par émission de paquets UDP (émission gérée en PHP).&lt;br /&gt;
* Actualisation de la page principale grâce à Javascript et sa bibliothèque JQuery;&lt;br /&gt;
* Exécutions des scripts PHP et récupérations de données grâce à Ajax;&lt;br /&gt;
* Dessin pour affichage &amp;quot;intuitif&amp;quot; des retours d'informations en Javascript avec la bibliothèque JCanvas.&lt;br /&gt;
&lt;br /&gt;
L'assimilation de ces nouvelles connaissances a donc pris la majeure partie de cette séance.&amp;lt;br /&amp;gt;&lt;br /&gt;
Il restait toutefois à comprendre le principe de fonctionnement de la FoxBoard pour pouvoir y implanter toutes notre application par la suite. La FoxBoard est un ordinateur avec une distribution [http://fr.wikipedia.org/wiki/Debian Debian] et un serveur web [http://fr.wikipedia.org/wiki/Lighttpd Lighttpd].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons dû la configurer préalablement pour lui attribuer une adresse IP Locale Fixe : 172.26.79.13 pour pouvoir la joindre depuis un navigateur internet par exemple. Il a aussi été nécessaire d'installer certains paquets pour faire fonctionner notre application puis placer nos fichiers et compiler nos divers démons.&lt;br /&gt;
&lt;br /&gt;
Ce n'est seulement qu'en fin de séance que le développement de notre application à proprement parler a réellement commencé. L'objectif était de pouvoir visualiser en temps réel les valeurs brutes des accéléromètres ainsi que des capteurs de pression, de pouvoir commander le bras avec des boutons et avoir une visualisation intuitive de ces informations.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi ressemble notre interface une fois finalisée : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Presentation.png|Interface WEB complète]]&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion Modulation à Largeur d'Impulsions] (MLI) aussi appelée PWM , permet de comparer la valeur de la tension 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM dans un registre 8 bits. Ce résultat sera alors envoyé périodiquement par liaison série à la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lorsque le sujet était clair, des tests sur Altium ont été effectués. Un bloc PWM était mis à notre disposition afin de voir comment cela fonctionner. Nous avons ensuite crée notre propre PWM et nous sommes arrivés à cela : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz et ainsi avoir une fréquence de PWM de 1MHz/256=3,9KHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 du rapport cyclique de la PWM seulement quand nous avons la réelle valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 à la pression que nous exercions sur le capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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 (en pratique il est légèrement supérieur à 0V), alors que lorsque le capteur n'est exercé à aucune pression, l'image en tension est de 3V.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet de transformer le signal carré de rapport cyclique variable en une rampe de tension.. On obtient donc un signal en dent de scie correspondant à la variation de notre PWM. Ce signal sera ensuite facilement comparable avec l'image de la tension issue du capteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3.9KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fc &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fc &amp;lt; 3.9KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fc = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
Nous avons utilisé un potentiomètre afin d'ajuster la valeur de la résistance et ainsi obtenir un signal en dent de scie le plus linéaire que possible (avec peu de variations entre deux variations de rapport cyclique) de manière à augmenter la précision du résultat.&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une variation de la tension image du capteur, entre 0V et 3V. Pour cela nous avons mis une résistance de 10k ohms en association avec le capteur de pression pour former un diviseur de tension. De cette façon nous récupérons une image en tension de la valeur du capteur de pression (proportionnelle à la pression exercée sur le capteur). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande (environ 10 fois) que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
On a donc choisi une résistance de 1K ohms pour la résistance connectée à la masse et pour celle en entrée nous avons pris une valeur de 100 ohms afin d'abaisser la tension de 3.3V à 3V afin qu'elle soit légèrement en dessous de la valeur maximale de la tension de la PWM de sorte qu'elle puisse être comparée facilement.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pour corriger cette erreur, 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6842</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6842"/>
				<updated>2013-06-16T23:05:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Presentation.png|Interface WEB complète]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:SelectionFA.png|400px|Premier élément sélectionné]][[Fichier:SelectionSA.png|300px|Second élément sélectionné]]&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Acc%C3%A9l%C3%A9rom%C3%A8treVERT.png&amp;diff=6840</id>
		<title>Fichier:AccéléromètreVERT.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Acc%C3%A9l%C3%A9rom%C3%A8treVERT.png&amp;diff=6840"/>
				<updated>2013-06-16T22:46:11Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:SelectionSA.png&amp;diff=6839</id>
		<title>Fichier:SelectionSA.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:SelectionSA.png&amp;diff=6839"/>
				<updated>2013-06-16T22:45:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Presentation.png&amp;diff=6838</id>
		<title>Fichier:Presentation.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Presentation.png&amp;diff=6838"/>
				<updated>2013-06-16T22:45:20Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Acc%C3%A9l%C3%A9rom%C3%A8treNOIR.png&amp;diff=6837</id>
		<title>Fichier:AccéléromètreNOIR.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Acc%C3%A9l%C3%A9rom%C3%A8treNOIR.png&amp;diff=6837"/>
				<updated>2013-06-16T22:44:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:SelectionFA.png&amp;diff=6836</id>
		<title>Fichier:SelectionFA.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:SelectionFA.png&amp;diff=6836"/>
				<updated>2013-06-16T22:43:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6835</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6835"/>
				<updated>2013-06-16T21:52:12Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 1 : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://nb3000.altium.com/ Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6834</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6834"/>
				<updated>2013-06-16T21:47:32Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* PARTIE INFORMATIQUE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
Sur cette partie, nous avons à notre disposition un banc d'essai composé de plusieurs éléments : &lt;br /&gt;
* Une FoxBoard, faisant ici office de serveur WEB;&lt;br /&gt;
* Trois accéléromètres gérés par une platine Arduino MEGA;&lt;br /&gt;
* Un bras robotisé;&lt;br /&gt;
* Quatre capteurs de pressions (non gérés électroniquement).&lt;br /&gt;
&lt;br /&gt;
Le bras robotisé peut-être connecté en USB à un ordinateur (et donc à la FoxBoard) où un démon pourra être utilisé pour le piloter.&amp;lt;br /&amp;gt;&lt;br /&gt;
La platine Arduino elle, peut être relié à un ordinateur aussi mais communique via liaison série. A chaque fois qu'un octet sera reçu par l'Arduino, un paquet de quatre octets contenant les valeurs des accéléromètres est renvoyé.&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://www.google.fr/imgres?um=1&amp;amp;client=firefox-a&amp;amp;sa=N&amp;amp;rls=org.mozilla:fr:official&amp;amp;hl=fr&amp;amp;biw=1600&amp;amp;bih=770&amp;amp;tbm=isch&amp;amp;tbnid=08I09Rs8TUawTM:&amp;amp;imgrefurl=http://fr.farnell.com/altium/12-400-nb2dsk01-db30/xilinx-spartan-3-nanoboard-nb2/dp/1714409&amp;amp;docid=AgDwTOE4fjRsQM&amp;amp;imgurl=http://fr.farnell.com/productimages/farnell/standard/1714407-40.jpg&amp;amp;w=316&amp;amp;h=200&amp;amp;ei=Ulq8UbvIGOOc0QWu64G4Cw&amp;amp;zoom=1&amp;amp;iact=rc&amp;amp;dur=405&amp;amp;page=1&amp;amp;tbnh=133&amp;amp;tbnw=209&amp;amp;start=0&amp;amp;ndsp=33&amp;amp;ved=1t:429,r:7,s:0,i:104&amp;amp;tx=104&amp;amp;ty=77 Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6833</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6833"/>
				<updated>2013-06-16T21:17:57Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Rapports des élèves */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
===='''Objectifs du projet :'''====&lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le projet se décompose en trois parties :'''&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression.&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===='''Gestion de projet | Equipe :'''====&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Toute ta partie informatique, désolé si je n'ai rien écris mais je n'avais pas les données]]&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://www.google.fr/imgres?um=1&amp;amp;client=firefox-a&amp;amp;sa=N&amp;amp;rls=org.mozilla:fr:official&amp;amp;hl=fr&amp;amp;biw=1600&amp;amp;bih=770&amp;amp;tbm=isch&amp;amp;tbnid=08I09Rs8TUawTM:&amp;amp;imgrefurl=http://fr.farnell.com/altium/12-400-nb2dsk01-db30/xilinx-spartan-3-nanoboard-nb2/dp/1714409&amp;amp;docid=AgDwTOE4fjRsQM&amp;amp;imgurl=http://fr.farnell.com/productimages/farnell/standard/1714407-40.jpg&amp;amp;w=316&amp;amp;h=200&amp;amp;ei=Ulq8UbvIGOOc0QWu64G4Cw&amp;amp;zoom=1&amp;amp;iact=rc&amp;amp;dur=405&amp;amp;page=1&amp;amp;tbnh=133&amp;amp;tbnw=209&amp;amp;start=0&amp;amp;ndsp=33&amp;amp;ved=1t:429,r:7,s:0,i:104&amp;amp;tx=104&amp;amp;ty=77 Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6832</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6832"/>
				<updated>2013-06-16T21:15:51Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Gestion de projet / rédaction Wiki */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
'''Objectifs du projet :''' &lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le projet se décompose en trois parties :&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression. &amp;lt;br /&amp;gt;&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Gestion de projet | Equipe :'''&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Toute ta partie informatique, désolé si je n'ai rien écris mais je n'avais pas les données]]&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://www.google.fr/imgres?um=1&amp;amp;client=firefox-a&amp;amp;sa=N&amp;amp;rls=org.mozilla:fr:official&amp;amp;hl=fr&amp;amp;biw=1600&amp;amp;bih=770&amp;amp;tbm=isch&amp;amp;tbnid=08I09Rs8TUawTM:&amp;amp;imgrefurl=http://fr.farnell.com/altium/12-400-nb2dsk01-db30/xilinx-spartan-3-nanoboard-nb2/dp/1714409&amp;amp;docid=AgDwTOE4fjRsQM&amp;amp;imgurl=http://fr.farnell.com/productimages/farnell/standard/1714407-40.jpg&amp;amp;w=316&amp;amp;h=200&amp;amp;ei=Ulq8UbvIGOOc0QWu64G4Cw&amp;amp;zoom=1&amp;amp;iact=rc&amp;amp;dur=405&amp;amp;page=1&amp;amp;tbnh=133&amp;amp;tbnw=209&amp;amp;start=0&amp;amp;ndsp=33&amp;amp;ved=1t:429,r:7,s:0,i:104&amp;amp;tx=104&amp;amp;ty=77 Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6831</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6831"/>
				<updated>2013-06-16T21:10:30Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Rapports des élèves */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
'''Présentation'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Partie numérique'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Partie analogique'''&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
'''Objectifs du projet :''' &lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web pour le pilotage du bras robotique. Elle doit permettre de commander les différents actionneurs du bras (rotation de la base, mouvement du bras, ouverture/fermeture de la pince, allumage/extinction de la LED).&lt;br /&gt;
&lt;br /&gt;
* Afficher toutes les informations retournées par le système, à savoir : &lt;br /&gt;
** Angles des membres du robot (grâce à des accéléromètres);&lt;br /&gt;
** Présence d'objets déposés devant le bras (capteurs de pression).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le projet se décompose en trois parties :&lt;br /&gt;
&lt;br /&gt;
* Partie Electronique : Réalisation d’un convertisseur analogique numérique (CAN) permettant de récupérer la pression exercée sur un capteur de pression. &amp;lt;br /&amp;gt;&lt;br /&gt;
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…).&lt;br /&gt;
La gestion électronique des accéléromètres est déjà effectuée par le biais d'une platine Arduino, il ne nous appartient pas de la concevoir.&lt;br /&gt;
&lt;br /&gt;
* Partie Informatique : Conception d'une interface WEB dynamique grâce à plusieurs langages de développement et leur librairies. Le tout est ensuite embarqué sur une FoxBoard, serveur directement relié au bras robotique et à un réseau TCP/IP. Ceci permet de commander le bras n’importe où tant qu'on est connecté à la FoxBoard via le réseau, et si ce réseau est internet alors le bras peut-être piloté depuis n'importe où dans le monde.&lt;br /&gt;
&lt;br /&gt;
* Intégration : Partie clé, associant le travail des deux parties précédentes et finalisant le projet. L'informatique et l'électronique communiquerons par le biais d'une liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Gestion de projet | Equipe :'''&lt;br /&gt;
Pour ce projet nous étions une équipe de trois personnes, Benjamin LAFIT, Mathieu GERIER et Valentin VERGEZ.&amp;lt;br /&amp;gt;&lt;br /&gt;
Dans la répartition des tâches nous avons choisi d'affecter un responsable sur chaque partie, Mathieu à l'électronique et Valentin à l'informatique. Benjamin était alors chargé de faire la liaison entre les deux, d'apporter son aide à chacun selon les besoins et s'assurer que les deux parties aboutiraient ensembles pour ensuite passer à l'intégration électronique/informatique.&lt;br /&gt;
&lt;br /&gt;
Finalement, la partie électronique s'annonçant plus compliquée pour nous, Benjamin, en plus de son rôle d'intermédiaire, a surtout pris en charge la partie électronique analogique tandis que Mathieu se spécialisait sur l'aspect électronique numérique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Toute ta partie informatique, désolé si je n'ai rien écris mais je n'avais pas les données]]&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://www.google.fr/imgres?um=1&amp;amp;client=firefox-a&amp;amp;sa=N&amp;amp;rls=org.mozilla:fr:official&amp;amp;hl=fr&amp;amp;biw=1600&amp;amp;bih=770&amp;amp;tbm=isch&amp;amp;tbnid=08I09Rs8TUawTM:&amp;amp;imgrefurl=http://fr.farnell.com/altium/12-400-nb2dsk01-db30/xilinx-spartan-3-nanoboard-nb2/dp/1714409&amp;amp;docid=AgDwTOE4fjRsQM&amp;amp;imgurl=http://fr.farnell.com/productimages/farnell/standard/1714407-40.jpg&amp;amp;w=316&amp;amp;h=200&amp;amp;ei=Ulq8UbvIGOOc0QWu64G4Cw&amp;amp;zoom=1&amp;amp;iact=rc&amp;amp;dur=405&amp;amp;page=1&amp;amp;tbnh=133&amp;amp;tbnw=209&amp;amp;start=0&amp;amp;ndsp=33&amp;amp;ved=1t:429,r:7,s:0,i:104&amp;amp;tx=104&amp;amp;ty=77 Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6825</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6825"/>
				<updated>2013-06-16T20:19:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* PARTIE INFORMATIQUE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
'''Présentation'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Partie numérique'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Partie analogique'''&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
'''Objectif du projet :''' &lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web de pilotage de bras robotique permettant de commander les différents moteurs du bras.&lt;br /&gt;
&lt;br /&gt;
* Afficher la position du bras ainsi que des objets placés sur les capteurs de position.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le projet se compose de trois parties :&lt;br /&gt;
&lt;br /&gt;
* 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…).&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Partie permettant de rendre compatibles les systèmes informatiques et électroniques afin de pouvoir faire une bonne liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[FAIRE UNE INTRODUCTION]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Toute ta partie informatique, désolé si je n'ai rien écris mais je n'avais pas les données]]&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2'''===&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3'''===&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://www.google.fr/imgres?um=1&amp;amp;client=firefox-a&amp;amp;sa=N&amp;amp;rls=org.mozilla:fr:official&amp;amp;hl=fr&amp;amp;biw=1600&amp;amp;bih=770&amp;amp;tbm=isch&amp;amp;tbnid=08I09Rs8TUawTM:&amp;amp;imgrefurl=http://fr.farnell.com/altium/12-400-nb2dsk01-db30/xilinx-spartan-3-nanoboard-nb2/dp/1714409&amp;amp;docid=AgDwTOE4fjRsQM&amp;amp;imgurl=http://fr.farnell.com/productimages/farnell/standard/1714407-40.jpg&amp;amp;w=316&amp;amp;h=200&amp;amp;ei=Ulq8UbvIGOOc0QWu64G4Cw&amp;amp;zoom=1&amp;amp;iact=rc&amp;amp;dur=405&amp;amp;page=1&amp;amp;tbnh=133&amp;amp;tbnw=209&amp;amp;start=0&amp;amp;ndsp=33&amp;amp;ved=1t:429,r:7,s:0,i:104&amp;amp;tx=104&amp;amp;ty=77 Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6822</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6822"/>
				<updated>2013-06-16T20:15:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Séance 3 : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
'''Présentation'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Partie numérique'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Partie analogique'''&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
'''Objectif du projet :''' &lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web de pilotage de bras robotique permettant de commander les différents moteurs du bras.&lt;br /&gt;
&lt;br /&gt;
* Afficher la position du bras ainsi que des objets placés sur les capteurs de position.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le projet se compose de trois parties :&lt;br /&gt;
&lt;br /&gt;
* 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…).&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Partie permettant de rendre compatibles les systèmes informatiques et électroniques afin de pouvoir faire une bonne liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[FAIRE UNE INTRODUCTION]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Toute ta partie informatique, désolé si je n'ai rien écris mais je n'avais pas les données]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://www.google.fr/imgres?um=1&amp;amp;client=firefox-a&amp;amp;sa=N&amp;amp;rls=org.mozilla:fr:official&amp;amp;hl=fr&amp;amp;biw=1600&amp;amp;bih=770&amp;amp;tbm=isch&amp;amp;tbnid=08I09Rs8TUawTM:&amp;amp;imgrefurl=http://fr.farnell.com/altium/12-400-nb2dsk01-db30/xilinx-spartan-3-nanoboard-nb2/dp/1714409&amp;amp;docid=AgDwTOE4fjRsQM&amp;amp;imgurl=http://fr.farnell.com/productimages/farnell/standard/1714407-40.jpg&amp;amp;w=316&amp;amp;h=200&amp;amp;ei=Ulq8UbvIGOOc0QWu64G4Cw&amp;amp;zoom=1&amp;amp;iact=rc&amp;amp;dur=405&amp;amp;page=1&amp;amp;tbnh=133&amp;amp;tbnw=209&amp;amp;start=0&amp;amp;ndsp=33&amp;amp;ved=1t:429,r:7,s:0,i:104&amp;amp;tx=104&amp;amp;ty=77 Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 4 (Supplémentaire) :'''===&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6820</id>
		<title>Contrôle de bras robotique, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Contr%C3%B4le_de_bras_robotique,_2012/2013,_TD2&amp;diff=6820"/>
				<updated>2013-06-16T20:11:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* PARTIE ELECTRONIQUE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Evaluation informatique et électronique ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ne pas modifier, ecrivez votre rapport plus bas --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestion de projet / rédaction Wiki ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : &lt;br /&gt;
&lt;br /&gt;
* Electronique :&lt;br /&gt;
&lt;br /&gt;
'''Présentation'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Partie numérique'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Partie analogique'''&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Note .&lt;br /&gt;
&lt;br /&gt;
=== Test fonctionnels ===&lt;br /&gt;
&lt;br /&gt;
* Sous-système.&lt;br /&gt;
** Sous-système informatique : &lt;br /&gt;
** Sous-système électronique :&lt;br /&gt;
&lt;br /&gt;
=== Qualité de la réalisation ===&lt;br /&gt;
&lt;br /&gt;
* Informatique : Note .&lt;br /&gt;
** procédure de test :&lt;br /&gt;
** pages HTML et Javascript :&lt;br /&gt;
** scripts PHP ou programmes C :&lt;br /&gt;
** installation sur FoxBoard :&lt;br /&gt;
* Electronique : Note .&lt;br /&gt;
** qualité de la réalisation :&lt;br /&gt;
** tests autonomes :&lt;br /&gt;
&lt;br /&gt;
=== Bilan ===&lt;br /&gt;
&lt;br /&gt;
Note finale :&lt;br /&gt;
&lt;br /&gt;
== Rapports des élèves ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Pour la vidéo finale ne pas effacer&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/pimasc/include/video-xxxx-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Commencez votre rapport ici ! --&amp;gt;&lt;br /&gt;
'''Objectif du projet :''' &lt;br /&gt;
&lt;br /&gt;
* Réaliser une interface Web de pilotage de bras robotique permettant de commander les différents moteurs du bras.&lt;br /&gt;
&lt;br /&gt;
* Afficher la position du bras ainsi que des objets placés sur les capteurs de position.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le projet se compose de trois parties :&lt;br /&gt;
&lt;br /&gt;
* 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…).&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Partie permettant de rendre compatibles les systèmes informatiques et électroniques afin de pouvoir faire une bonne liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[FAIRE UNE INTRODUCTION]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE INFORMATIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Toute ta partie informatique, désolé si je n'ai rien écris mais je n'avais pas les données]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE ELECTRONIQUE''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 1 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La première séance a servi à comprendre le lien entre le logiciel [http://www.elektronique.fr/logiciels/altium-designer.php 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schéma de principe : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma_à_faire.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Le Convertisseur analogique numérique), à partir d’une [http://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La PWM sera crée par la [http://www.google.fr/imgres?um=1&amp;amp;client=firefox-a&amp;amp;sa=N&amp;amp;rls=org.mozilla:fr:official&amp;amp;hl=fr&amp;amp;biw=1600&amp;amp;bih=770&amp;amp;tbm=isch&amp;amp;tbnid=08I09Rs8TUawTM:&amp;amp;imgrefurl=http://fr.farnell.com/altium/12-400-nb2dsk01-db30/xilinx-spartan-3-nanoboard-nb2/dp/1714409&amp;amp;docid=AgDwTOE4fjRsQM&amp;amp;imgurl=http://fr.farnell.com/productimages/farnell/standard/1714407-40.jpg&amp;amp;w=316&amp;amp;h=200&amp;amp;ei=Ulq8UbvIGOOc0QWu64G4Cw&amp;amp;zoom=1&amp;amp;iact=rc&amp;amp;dur=405&amp;amp;page=1&amp;amp;tbnh=133&amp;amp;tbnw=209&amp;amp;start=0&amp;amp;ndsp=33&amp;amp;ved=1t:429,r:7,s:0,i:104&amp;amp;tx=104&amp;amp;ty=77 Nanoboard]. Ce signal sera dans la partie analogique, filtré par un filtre passe-bas puis comparé avec un comparateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
schéma de déroulement :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Partienumetanal.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Seance1.png]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Fonctionnement PWM.png|vignette|900px|Exemple de MLI]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
La fréquence de l'horloge est celle de la Nanoboard 50MHz. &lt;br /&gt;
Cependant, nous avons eu recours à la CLKGEN afin de diminuer la fréquence à 1MHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 2 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Basculepourmemorisation.png|vignette|450px]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie analogique a été également faite: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma électrique.png]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le filtre passe bas appliqué sur la PWM permet d'obtenir la valeur analogique recherchée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Définition des valeurs des composants:&lt;br /&gt;
&lt;br /&gt;
* Composants du filtre passe bas : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
la fréquence de résonance devait être inférieure à la fréquence du système (1Mhz/256 = 3KHz).&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; fn &amp;lt; fs (fréquence du système)&lt;br /&gt;
&lt;br /&gt;
fn &amp;lt; 3KHz&lt;br /&gt;
&lt;br /&gt;
Or on sait que :  fn = 1/(2piRC)&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; C = 330nF      R = 2K ohms&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du diviseur de tension avec capteur de pression&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il suffisait seulement ici d'avoir une [[à compléter]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Composants du premier diviseur de tension&lt;br /&gt;
&lt;br /&gt;
Il fallait respecter l'adaptation d'impédance. Il fallait donc avoir une impédance beaucoup plus grande en sortie du diviseur de tension.&lt;br /&gt;
&lt;br /&gt;
Soit que la résistance en sortie du diviseur de tension soit beaucoup plus grande que l'impédance relié à la masse.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Séance 3 :'''===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les tests effectués lors de la troisième séance : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_4.png|schema 1|vignette|600px|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Ce changement d'état est dû à cause de la PWM qui est en forme de dent de scie.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Scope_2.png|schéma 2 : PWM filtrée|vignette|350px|droite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici le système de correction des changements d'états : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Regalge_petitesd pertubes.png|Système de correction d'erreur|600px|vignette|gauche]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
Le signal corrigé est le signal rose du schéma 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
remarque : le CAN donnera seulement une valeur approximative de la valeur du capteur de pression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Séance bonus :'''&lt;br /&gt;
&lt;br /&gt;
Voici le schéma complet d'Altium : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium1.png|schéma complet|1400px]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
De plus, nous avons crée un bloc pour simuler 4 capteurs : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Altium2.png|schéma complet|900px|droite]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[peut-être à compléter]]&lt;br /&gt;
&lt;br /&gt;
=== '''PARTIE COMMUNICATION''' ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ici il faudrait détailler un peu plus. J'ai parlé de la partie liaison série un peu sur partie électronique mais je ne savais pas quoi mettre d'autre ici]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== '''CONCLUSION''' ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
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...&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_troisi%C3%A8me_ann%C3%A9e,_2012/2013,_TD2&amp;diff=6229</id>
		<title>Projets troisième année, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_troisi%C3%A8me_ann%C3%A9e,_2012/2013,_TD2&amp;diff=6229"/>
				<updated>2013-05-16T06:37:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
Ecrivez vos noms sous le format exact &amp;quot;Prénom Nom&amp;quot;, séparez vos noms par des virgules.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves&lt;br /&gt;
|- &lt;br /&gt;
| [[Contrôle de matrice leds, 2012/2013, TD2]] || Benoit Maliar,Thomas Maurice,Fabien Violier&lt;br /&gt;
|-&lt;br /&gt;
| [[Communication série, 2012/2013, TD2]] || Hugo Fondu, Kévin Chalono&lt;br /&gt;
|-&lt;br /&gt;
| [[Gestion afficheurs, 2012/2013, TD2]] || Mercier Alexandre , Sultana Quentin&lt;br /&gt;
|-&lt;br /&gt;
| [[Gestion de LED RVB, 2012/2013, TD2]] ||  Céline Ly, Pierre Appercé, Marjorie Tixier, Geoffrey Rose&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle de sonar, 2012/2013, TD2]] || Nathan Martin, Charlotte Bricout, Soufiane Haddaoui, Sylvain Fossaert&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle d'accéléromètre, 2012/2013, TD2]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle de bras robotique, 2012/2013, TD2]] || Valentin Vergez, Mathieu Gerier, Benjamin Lafit&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_troisi%C3%A8me_ann%C3%A9e,_2012/2013,_TD2&amp;diff=6227</id>
		<title>Projets troisième année, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_troisi%C3%A8me_ann%C3%A9e,_2012/2013,_TD2&amp;diff=6227"/>
				<updated>2013-05-16T06:36:33Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
Ecrivez vos noms sous le format exact &amp;quot;Prénom Nom&amp;quot;, séparez vos noms par des virgules.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves&lt;br /&gt;
|- &lt;br /&gt;
| [[Contrôle de matrice leds, 2012/2013, TD2]] || Benoit Maliar,Thomas Maurice,Fabien Violier&lt;br /&gt;
|-&lt;br /&gt;
| [[Communication série, 2012/2013, TD2]] || Hugo Fondu, Kévin Chalono&lt;br /&gt;
|-&lt;br /&gt;
| [[Gestion afficheurs, 2012/2013, TD2]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Gestion de LED RVB, 2012/2013, TD2]] ||  Céline Ly, Pierre Appercé, Marjorie Tixier, Geoffrey Rose&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle de sonar, 2012/2013, TD2]] || Nathan Martin, Charlotte Bricout, Soufiane Haddaoui&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle d'accéléromètre, 2012/2013, TD2]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle de bras robotique, 2012/2013, TD2]] || Valentin Vergez, Mathieu Gerier, Benjamin Lafit&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_troisi%C3%A8me_ann%C3%A9e,_2012/2013,_TD2&amp;diff=6226</id>
		<title>Projets troisième année, 2012/2013, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_troisi%C3%A8me_ann%C3%A9e,_2012/2013,_TD2&amp;diff=6226"/>
				<updated>2013-05-16T06:35:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vvergez : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
Ecrivez vos noms sous le format exact &amp;quot;Prénom Nom&amp;quot;, séparez vos noms par des virgules.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves&lt;br /&gt;
|- &lt;br /&gt;
| [[Contrôle de matrice leds, 2012/2013, TD2]] || Benoit Maliar,Thomas Maurice,Fabien Violier&lt;br /&gt;
|-&lt;br /&gt;
| [[Communication série, 2012/2013, TD2]] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Gestion afficheurs, 2012/2013, TD2]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Gestion de LED RVB, 2012/2013, TD2]] ||  Céline Ly, Pierre Appercé, Marjorie Tixier, Geoffrey Rose&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle de sonar, 2012/2013, TD2]] || Nathan Martin, Charlotte Bricout, Soufiane Haddaoui&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle d'accéléromètre, 2012/2013, TD2]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Contrôle de bras robotique, 2012/2013, TD2]] || Valentin Vergez, Mathieu Gerier, Benjamin Lafit&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vvergez</name></author>	</entry>

	</feed>