Projet pluritechnique encadré

publicité
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.
Téléchargement