Projet pluritechnique encadré Distancemètre Albares Mélanie Bentkowski Lise Faurite Jérôme Marion Yoann Sommaire 1. 2. 3. 4. Analyse fonctionnelle Partie MECA Partie ELEC Conclusion Analyse fonctionnelle Diagramme Bête à corne Utilisateur (conducteur ) Vélo Distancemètr e Mesurer la vitesse du vélo et l'afficher à l'utilisateur Diagramme Pieuvre Utilisateur FP1 FC4 Vélo FC3 Distancemètre FC1 FC2 Énergie Environnement FP1:Afficher la distance parcourue par le vélo à l’utilisateur FC1:Avoir une énergie embarquée et une autonomie de 8 heures FC2:Résister aux intempéries et aux secousses FC3:S’adapter au vélo FC4:Affichage de la distance lisible et aspect de la carte d’affichage esthétique Diagramme FAST Afficher la distance parcourue Afficher la distance parcourue par le vélo Mesurer la distance parcourue Traiter l’information du codeur P.I.C Organiser les différentes informations du PIC Démultiplexeur Mémoriser les informations Buffers Envoyer les informations aux afficheurs Décodeurs BCD Afficher la distance parcourue Afficheurs 7 segments Transformer une énergie mécanique de rotation en impulsions électriques Transmettre une énergie mécanique au codeur Codeur Petite roue Partie MECA Le but de la partie mécanique est d’adapter l’énergie Mécanique afin de transmettre celle-ci de la roue au codeur. Nous avons pour cela envisagé plusieurs solutions … Quel capteur ? Le capteur est la pièce la plus importante du projet : c’est elle qui va définir le programme du PIC, et la solution constructive en Mécanique. Le capteur est la pièce qui fait le lien entre les partie élec et méca. C’est pour ça qu’il faut la choisir avant tout de chose, avant d’envisager le reste … Codeur Incrémental Rotatif Quelle que soit la solution retenue, le capteur mesurera un mouvement mécanique de rotation : ça sera donc un codeur rotatif. De plus l’information mesurée sera de type analogique, et, lors de l’extinction du circuit, il est remis à zéro. C’est donc un codeur incrémental rotatif Transfert de mouvement Mouvement 1 Mouvement de rotation autour de la l’axe de la roue Mouvement 2 Mouvement de rotation autour de l’axe du codeur Voyons maintenant les différentes solutions constructives permettant de transférer le mouvement Solution 1 Insertion du codeur directement dans la grande roue du vélo: l’axe de rotation du codeur est le même que l’axe de rotation de la roue. La vitesse de rotation est la même Pour les deux pièces. Solution 1 impossible Solution 2 On ne peut pas insérer le codeur directement dans l’axe de rotation de la roue. Pourquoi ne pas rajouter une seconde roue, tournant sur la première ? Solution 2 Petite roue La petite roue qui s’adapte sur celle du vélo est la seule pièce commandée. On calcule sa vitesse de rotation avec la formule v = ω.R , v étant la même pour les deux roues : Øroue vélo: 40cm Øpetite roue: 16cm Exemple, pour une vitesse de translation du vélo de 30 kilomètre heure: Vgrande roue = 30 km/h = 8.333 m/s donc θgranderoue = 8.33/0.2 = 41.67rad/s = 397.89 tr/min Θpetite roue = 8.33/0.08 = 104.17 rad/s = 16.56 tr/s = 994.71 tr/min Imprimante 3D L’imprimante 3D concrétise le modèle CAO en le découpant en tranches fines de matières et en empilant les couches obtenues Le modèle numérique C’est un assemblage composé de trois ensembles : la grande roue, la fourche (en rouge), et la petite roue (en vert) On étudie le mouvement de la petite roue par rapport à la grande, donc on considère que c’est l’ensemble « cadre » qui est fixe ». La simulation Partie ELEC I. Réalisation d’une carte d’affichage PIC16F84 Le pic traite l’information du codeur Démultiplexeur Il sert à adresser les différentes données venant du pic Buffer(mémoire) et décodeur(transforme l’information pour les afficheurs ) Afficheurs (cathodes communes) et codeur (500impulsions par tour) Et voici le résultat du wrapping: II. Rédaction du programme Le programme s’écrit sur un logiciel tel que Devpic84c où on peut simuler son fonctionnement et corriger les erreurs puis est transférer sur le composant ci-contre ; puis le composant va être inséré sur le circuit et le programme fonctionnera lors de la mise sous tension du circuit. Détails du PIC Fonctions des différentes pattes : RA0, RA1, RA2 : Entrées des informations venant du codeur. RA3, RA4 : Bouton poussoir ON/OFF. /MCLR : Relié au 5V. OSC1et OSC2 : Base de temps du PIC reliée au quartz. Vdd et VSS : Tension d’alimentation ( 5V , 0V) RB0, RB1, RB2 : Données pour l’adressage du démultiplexeur. RB3, RB4, RB5, RB6 : Données en BCD pour les afficheurs. RB7 : Relié au /LT des décodeurs BCD pour le test des afficheurs. Programme ère (1 Partie) void main() { char x; char cpt1; char cpt2; char cpt3; char cpt4; char cpt5; // Déclaration des variables trisb=0b00000000; // Configuration du port b en sortie trisa=0b11111; // Configuration du port a en entrée x=0; cpt1 = 0; cpt2 = 0; cpt3 = 0; cpt4 = 0; cpt5 = 0; portb.7=0; delays(2); portb.7=1; // Initialisation des compteurs à 0 Dans cette première partie, le but est de définir les différentes variables, affectés les ports en entrées/sorties, tester les afficheurs et remettre tout les compteur à 0 (et donc les afficheurs) // Test du fonctionnement des afficheurs 7 segments // Tempo de 3 secondes // Fin de test de fonctionnement des afficheurs portb=0b10000000; portb=0b10000100; portb=0b10000010; portb=0b10000110; portb=0b10000001; // Afficheur des mm à 0 // Afficheur des cm à 0 // Afficheur des dm à 0 // Afficheur des m à 0 // Afficheur des dam à 0 Programme for(;;) { if(porta.0) { x++; } if(x == 1) { cpt1++; x = 0; } if(cpt1>9) { cpt2++; cpt1 = 0; } if(cpt2>9) { cpt3++; cpt2 = 0; } if(cpt3>9) { cpt4++; cpt3 = 0; } if(cpt4>9) { cpt5++; cpt4 = 0; } // Boucle infini // Si RA0 est à 1 // Incrémentation de x // Si x=1 // Incrémentation des compteurs ème (2 Partie) Dans cette seconde partie, le but est de traiter l’information venant du codeur et de la répartir sur les différents compteurs. On utilise ici une boucle infini pour que cette partie ainsi que la suite se répète tout le temps. Programme portb.0=0; portb.1=0; portb.2=0; ème (3 Partie) // Adressage du démultiplexeur pour l'afficheur des mm if(cpt1 == 0) // Affichage sur l'afficheur des mm selon cpt1 { void Codage_BCD_du_0(); } if(cpt1 == 1) { if(cpt1 == 6) void Codage_BCD_du_1(); { } void if(cpt1 == 2) Codage_BCD_du_6(); { } void Codage_BCD_du_2(); if(cpt1 == 7) } { if(cpt1 == 3) void { Codage_BCD_du_7(); void Codage_BCD_du_3(); } } if(cpt1 == 8) if(cpt1 == 4) { { void void Codage_BCD_du_4(); Codage_BCD_du_8(); } } if(cpt1 == 5) if(cpt1 == 9) { { void Codage_BCD_du_5(); void } Codage_BCD_du_9(); } Dans cette troisième partie, le but est d’envoyer les bonnes données aux bons afficheurs. Ceci ce répètera pour chaque afficheurs (donc 5 fois) Programme //----------- Sous-programme "Codage BCD du 0" --------------// void Codage_BCD_du_0() { portb.3=0; portb.4=0; portb.5=0; portb.6=0; } //----------- Sous-programme "Codage BCD du 1" --------------// void Codage_BCD_du_1() { portb.3=1; portb.4=0; portb.5=0; portb.6=0; } ème (4 Partie) Dans cette partie, le but est de donner le codage BCD qui convient aux afficheurs. Comme ceci se répète j’ai fait des sous-programme qui s’occupe de cette tâche. Il y en a un par chiffre (donc 10). LE PROGRAMME EST TERMINE Conclusion Partie ELEC : La réalisation du programme est achevée et celui-ci fonctionne en simulation. La réalisation de la carte électronique est elle aussi achevée. Lors des différents tests pratiqués, on a rencontré plusieurs problèmes (afficheurs) mais il en reste un qui subsiste lors de l’assemblage de la carte et du codeur. Nous n’en connaissons cependant pas les raisons. Partie MECA : Le modèle numérique est achevé, l’analyse fonctionnelle de même. La partie mécanique de la maquette (bras) est faite, mais les problèmes rencontrés en élec ont empêchés le raccord des deux parties. La partie mécanique aura été intéressante, tant au point de la maîtrise accrue du logiciel SolidWorks que par les études préalables pour trouver des solutions constructives à une problématique donnée.