Projet pluritechnique encadré Distancemètre Albares Mélanie Bentkowski Lise Faurite Jérôme Marion Yoann
Sommaire Analyse fonctionnelle Partie MECA Partie ELEC Conclusion
Analyse fonctionnelle
Mesurer la vitesse du vélo et l'afficher à l'utilisateur Diagramme Bête à corne Vélo Utilisateur (conducteur) Distancemètre Mesurer la vitesse du vélo et l'afficher à l'utilisateur
Diagramme Pieuvre Utilisateur FC4 Vélo FP1 FC3 Distancemètre FC1 FC2 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 Utilisateur Vélo FC4 FP1 FC3 Distancemètre FC1 FC2 Énergie Environnement
Diagramme FAST P.I.C Afficher la distance parcourue Traiter l’information du codeur P.I.C Organiser les différentes informations du PIC Démultiplexeur Afficher la distance parcourue par le vélo Mémoriser les informations Buffers Envoyer les informations aux afficheurs Décodeurs BCD Afficher la distance parcourue Afficheurs 7 segments Mesurer la distance parcourue Transformer une énergie mécanique de rotation en impulsions électriques Codeur Transmettre une énergie mécanique au 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 …
? Le codeur reçoit une énergie de rotation provenant de la roue du vélo Comment adapter cette énergie ? ? Roue Codeur Énergie mécanique de rotation
Solution 1 Insertion du codeur directement dans la grande roue du vélo. Problème: Usinage du vélo trop Important (perçage de la fourche). L’axe ne tourne pas.
Solution 2
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 (1ère Partie) void main() { char x; // Déclaration des variables char cpt1; char cpt2; char cpt3; char cpt4; char cpt5; trisb=0b00000000; // Configuration du port b en sortie trisa=0b11111; // Configuration du port a en entrée x=0; // Initialisation des compteurs à 0 cpt1 = 0; cpt2 = 0; cpt3 = 0; cpt4 = 0; cpt5 = 0; portb.7=0; // Test du fonctionnement des afficheurs 7 segments delays(2); // Tempo de 3 secondes portb.7=1; // Fin de test de fonctionnement des afficheurs portb=0b10000000; // Afficheur des mm à 0 portb=0b10000100; // Afficheur des cm à 0 portb=0b10000010; // Afficheur des dm à 0 portb=0b10000110; // Afficheur des m à 0 portb=0b10000001; // Afficheur des dam à 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)
Programme (2ème Partie) for(;;) // Boucle infini { if(porta.0) // Si RA0 est à 1 x++; // Incrémentation de x } if(x == 1) // Si x=1 cpt1++; // Incrémentation des compteurs 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; 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 (3ème Partie) portb.0=0; // Adressage du démultiplexeur pour l'afficheur des mm portb.1=0; portb.2=0; if(cpt1 == 0) // Affichage sur l'afficheur des mm selon cpt1 { void Codage_BCD_du_0(); } if(cpt1 == 1) void Codage_BCD_du_1(); if(cpt1 == 2) void Codage_BCD_du_2(); if(cpt1 == 3) void Codage_BCD_du_3(); if(cpt1 == 4) void Codage_BCD_du_4(); if(cpt1 == 5) void Codage_BCD_du_5(); 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) if(cpt1 == 6) { void Codage_BCD_du_6(); } if(cpt1 == 7) void Codage_BCD_du_7(); if(cpt1 == 8) void Codage_BCD_du_8(); if(cpt1 == 9) void Codage_BCD_du_9();
Programme (4ème 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). //----------- 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; 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.