La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Système de télémétrie pour modèle réduit

Présentations similaires


Présentation au sujet: "Système de télémétrie pour modèle réduit"— Transcription de la présentation:

1 Système de télémétrie pour modèle réduit
Projet Tuteuré Système de télémétrie pour modèle réduit BIAU Christophe DEGAËTANO William

2 Plan: I – But du projet: II – Déroulement du projet:
III – Planning et budget: IV – Fonctionnement du système: V – Fonctionnement des capteurs: VI - Réalisation de la carte: VII – La programmation du PIC: VIII – Conclusion.

3 I – But du projet : Améliorer les performances de la voiture.
Étudier son comportement selon les conditions. Affiner les réglages. Ne pas détériorer le matériel.

4 II – Déroulement du projet:
Le projet a été découper en huit parties Préparation projet : Limite fixée, capteurs choisis etc…, LabView (1ère partie) Traitements des données, Tests Capteurs : Vitesse et Température, Programme P.I.C (en fonction des capteurs), Réalisation et tests Carte Capteur / PIC, Montage carte capteur / PIC sur voiture RC, Optionnel: Système radio + Adaptation LabView, Optionnel : Rajout de capteurs.

5 III.1 – Planning:

6 III.2 – Budget:

7 IV – Fonctionnement du système:
Plan: IV.1 – Fonctionnement du système global: IV.1 – Fonctionnement du système embarqué: IV.2 – Fonctionnement du système traitement:

8 IV.1 – Fonctionnement du système global:
Données à envoyer Modèle Réduit

9 IV.2 – Fonctionnement du système embarqué:
Transmissions Acquisition des données Capteurs

10 IV.3 – Fonctionnement du système traitement:
Récepteur Ordinateur: Traitement des données sous LabView Adaptation des signaux

11 V – Fonctionnement des capteurs:
Plan: V.1 – Compte tour par minute: V.2 – Capteur d’essence: V.3 – Capteurs de température: V.4 – Capteur de tension:

12 V.1 – Compte tour par minute:
1er cas: 2eme cas: Sortie opto-coupleur:

13 V.2 – Capteur d’essence: Création du capteur: Fonctionnement:
1- Coupage des deux tubes 2- Soudage des fils 3- Insertion du tube 4- Capteur Réservoir essence Capteur Équivalent à un condensateur variable Conversion: Niveau  Fréquence

14 V.3 – Capteurs de température
Température Ambiante: Température Moteur: Parler: les capteurs ne sont pas adapté car …………… Capteur Caractéristique du capteur

15 V.4 – Capteur de tension:

16 VI.1 - Réalisation de la carte embarquée:
Très petit

17 VI.2 - Réalisation de la carte récepteur:

18 VI.3 - Réalisation du boîtier:

19 VII – La programmation du PIC:
Plan: VII.1 – Le capteur Vitesse Moteur: VII.2 – Les capteurs de température et tension batterie: VII.3 – Le capteur Vitesse Véhicule: VII.4 – Le capteur Essence: VII.5 – La temporisation: VII.6 – La transmission des données:

20 VII – La programmation du PIC:
Les différents moyens utilisés pour la programmation du PIC : - Utilisation d'un quartz de 4MHz - Utilisation du Timer 0 - Utilisation du Timer 1 en mode Capture - Utilisation du Timer 2 (Temporisation) - Utilisation du module USART

21 VII.1 – Le capteur Vitesse Moteur:
On utilisera le Timer 1 en mode Capture, le capteur sera câblé sur l'entrée RC2 du PIC Ici q sera égale à 100us Compteur 16 bits (2 registres de 8 bits) Qmax est égale à FFFF(16) soit 65535(10) Lorsque le Timer 1 déborde → TMR1IF=1 COPIE

22 VII.1 – Le capteur Vitesse Moteur:
Formule pour la valeur de la Vitesse Moteur : TRMIN_Value = (CCP2_Debord_2 – CCP2_Debord_1) * (CCP2_Value_2H – CCP2_Value_1H) * (CCP2_Value_2L – CCP2_Value_1L) * 1 TRMIN_Value=(( /4)*(1/TRMIN_Value))*60; Exemple : RC2 +5V t TMR1 Qmax 50329 TRMIN_Value = * * 1 = TRMIN_Value = (( /4)*(1/ ))*60 TRMIN_Value = 4 tr/min 22508 q t Valeur de CCPR2H mit dans CCP2_Value_1H Valeur de CCPR2L mit dans CCP2_Value_1L Valeur de CCPR2H mit dans CCP2_Value_2H Valeur de CCPR2L mit dans CCP2_Value_2L

23 VII.1 – Le capteur Vitesse Moteur:
Partie Initialisation : TMR1CS=0; //Sélection du Quartz interne (4MHz) CCP1M2=1; //Choix du front descendant sur le Capture 1 CCP1IE=1; //Autorisation de l'IT par le mode Capture 1 CCP2M2=1; //Choix du front descendant sur le Capture 2 CCP2IE=1; //Autorisation de l'IT par le mode Capture 2 TMR1IE=1; //Autorisation de l'IT du Timer1 (quand celui ci déborde) PEIE=1; //Autorisation générale des IT T1OSCEN=1; //Contrôle par les oscillations TMR1ON=1; //Mise en route du Timer1 Partie principale : #define QUARTZ 4e6 if(Capture_Enabled_TRMIN) //Si autorisation du traitement { TRMIN_Value=(CCP2_Debord_2-CCP2_Debord_1)*65536 +(CCP2_Value_2H-CCP2_Value_1H)*256 +(CCP2_Value_2L-CCP2_Value_1L)*1; TRMIN_Value=((QUARTZ/4)*(1/TRMIN_Value))*60; Capture_Enabled_TRMIN=0; //Désactivation du traitement dans le programme principale }

24 VII.1 – Le capteur Vitesse Moteur:
Partie interruption : interrupt void isr(void) { if(TMR1IF==1) //Si le Timer1 déborde TMR1IF=0; Compteur_TIMER1++; //Débordement du Timer 1, on compte les multiples de événements } if(CCP2IF==1) //Si l'IT du système Capture 1 CCP2IF=0; if(CCP2_OnFirstEvent==1) //Si c'est le premier événement CCP2_Debord_1=Compteur_TIMER1; //Copie de la valeur de debordement CCP2_Value_1H=CCPR1H; //Copie du registre CCPR1H et CCPR1L CCP2_Value_1L=CCPR1L; CCP2_OnFirstEvent=0; else //Sinon CCP2_Debord_2=Compteur_TIMER1; //Copie de la valeur de debordement CCP2_Value_2H=CCPR1H; //Copie du registre CCPR1H et CCPR1L CCP2_Value_2L=CCPR1L; CCP2_OnFirstEvent=1; Capture_Enabled_TRMIN=1; //Activation des traitement des données dans le programme principale

25 VII.2 – Les capteurs de température et tension batterie:
L'acquisition des valeurs analogique des capteurs de température et de la tension de la batterie se fera avec le CAN du PIC. Ce CAN utilise le principe de l'approximation successive. Les capteurs seront câblés sur les broches RA0, RA1 et RA3 Approximation successive : exemple pratique Vous avez un livre de 15 pages, vous choisissez la page 13 Voici comment vous allez procéder pour trouver de quelle page il s’agit. - On coupe l’intervalle en 2, arrondi à l’unité supérieure, soit 8. - Le numéro de page est-il supérieur, inférieur ou égal à 8 ? - Le numéro est supérieur, donc dans l’intervalle 8-15 - On coupe cet intervalle en 2, soit 12 - Le numéro est-il supérieur, inférieur, ou égal à 8 ? - Le numéro est supérieur, donc dans l’intervalle 12-15 - On coupe l’intervalle en 2, soit 14 - Le numéro est-il supérieur, inférieur, ou égal à 14 ? - Le numéro est inférieur, donc dans l’intervalle 12-14 - Le numéro est donc 13, puisqu’il n’était égal ni à 14, ni à 12 Notre nombre maximum est de 1111(2), soit 15(10) la tension a l'entrée vaut 1101(2), soit 13(10) - On coupe l’intervalle en 2, soit 1000(2) ou 8(10) - La tension est-elle inférieure ? - Non, donc compris entre 1000(2) et 1111(2) - On coupe l’intervalle en 2, soit 1100(2) ou 12(10) - Non, donc compris entre 1100(2) et 1111(2) - On coupe l’intervalle en 2, soit 1110(2) ou 14(10) - Oui, donc compris entre 1100(2) et 1101(2) - On coupe l’intervalle en 2, soit 1101(2) ou 13(10) - Non, donc le numéro de page est 1101(2)

26 VII.2 – Les capteurs de température et tension batterie:
Partie Initialisation : ADCON0=0x40; //TAD=Fosc/8, Canal 0 par défaut PCFG2=1; //Configuration pour 3 Canaux de conversion (AN0,AN1,AN3) ADIE=1; //Autorisation de l'IT ADON=1; //Mise en route du convertisseur Partie principale : #define QUARTZ 4e6 if(Active_Converter==1) //Si la conversion est possible { switch (Choix_Canal) //Choix du Canal case 0: DelayUs(4); //Attente pour que le CAN puisse repartir ADCON0=0x41; //Choix du canal 0 DelayUs(20); //Attente pour que le CAN s'initialise Canal=0; ADGO=1; //Mise en route de la conversion Active_Converter=0; //Désactivation de l'autorisation de la conversion break; //De même pour les autres canaux }

27 VII.2 – Les capteurs de température et tension batterie:
Partie interruption : interrupt void isr(void) { if(ADIF==1) //Lorsque le convertisseur a terminé ADIF=0; switch (Canal) //Selon le canal choisis pour la conversion case 0: Temp_Moteur_Value=ADRESH; //Enregistrement de la valeur convertis ADON=0; //Mise en arrêt du convertisseur Choix_Canal=1; Active_Converter=1; //Activation de l'autorisation de la conversion break; case 1: Temp_Ambiant_Value=ADRESH; //Enregistrement de la valeur convertis Choix_Canal=2; case 2: Voltage_Value=ADRESH; //Enregistrement de la valeur convertis Choix_Canal=0; if(Voltage_Value<=2) //Si tension batterie = 2V RB3=1; //Allumer LED ORANGE }

28 VII.3 – Le capteur Vitesse Véhicule:
Le Timer 0 sera utilisé pour l'acquisition de la Vitesse Véhicule. Lors d'un événement sur l'entrée RB0 (entrée du capteur Vitesse), le Timer préviendra le PIC que celui-ci a récupérer la valeur de la Vitesse Véhicule Compteur 8 bits Qmax est égale à 256(10) q est égale à 100us Débordement → TMR0IF=1 Fonctionnement presque identique au Timer 1

29 VII.3 – Le capteur Vitesse Véhicule:
Lors d'un débordement, in incrémente un compteur Lors d'un événement sur RB0, on fait une copie de TMR0 et on le remet à zéro Exemple : RB0 +5V t TMR0 Qmax 230 28 t Copie de TMR0 dans TMR0_Value avec quatre débordements Copie de TMR0 dans TMR0_Value avec dix débordements

30 VII.3 – Le capteur Vitesse Véhicule:
Partie Initialisation : INTE=1; //Activation de l'interruption par RB0 INTEDG=0; //Interruption par front descendant RBPU=0; //Activation de la résistance de rappel T0CS=0; //Choix du quartz 4MHz PSA=0; //prédiviseur mit sur Timer0 PS0=0; //Pour avoir un prédiviseur de 1 PS1=0; PS2=0; Partie principale : #define QUARTZ 4e6 if(Capture_Enabled_Vitesse) //Si autorisation du traitement { Vitesse_Value=TMR0_Value; //Formule pas encore appliquée Capture_Enabled_Vitesse=0; //Désactivation du traitement dans le programme principale }

31 VII.3 – Le capteur Vitesse Véhicule:
Partie interruption : interrupt void isr(void) { if(TMR0IF==1) //Si débordement du Timer0 TMR0IF=0; Compteur_TIMER0++; //Debordement du Timer 0, on compte les multiples de 256 événements } if(INTF==1) //Si événement sur l'entrée RB0 INTF=0; TMR0_Value=(256*Compteur_TIMER0)+TMR0; TMR0=0; //Remise a zéro du registre pour le prochain calcul Compteur_TIMER0=0; //Remise a zéro du compteur de débordement pour la prochaine mesure Capture_Enabled_Vitesse=1; //Activation des traitement des données dans le programme principale

32 VII.4 – Le capteur Essence:
Pour l'acquisition de donnée du capteur d'essence, on utilisera, comme pour le capteur de vitesse moteur, le Timer 1 en mode Capture. Le capteur utilisera le second système de Capture sur le Timer 1. Il sera câblé sur la broche RC1, et les registre TMR1H et TMR1L seront copiés vers les registre CCP1RH et CCP1RL.

33 VII.4 – Le capteur Essence:
Partie Initialisation : TMR1CS=0; //Sélection du Quartz interne (4MHz) CCP1M2=1; //Choix du front descendant sur le Capture 1 CCP1IE=1; //Autorisation de l'IT par le mode Capture 1 CCP2M2=1; //Choix du front descendant sur le Capture 2 CCP2IE=1; //Autorisation de l'IT par le mode Capture 2 TMR1IE=1; //Autorisation de l'IT du Timer1 (quand celui ci déborde) PEIE=1; //Autorisation générale des IT T1OSCEN=1; //Contrôle par les oscillations TMR1ON=1; //Mise en route du Timer1 Partie principale : #define QUARTZ 4e6 if(Capture_Enabled_Essence) //Si autorisation du traitement { //Formule pour traitement du capteur essence non trouver Capture_Enabled_Essence=0; //Désactivation du traitement dans le programme principale }

34 VII.4 – Le capteur Essence:
Partie interruption : interrupt void isr(void) { if(TMR1IF==1) //Si le Timer1 déborde TMR1IF=0; Compteur_TIMER1++; //Débordement du Timer 1, on compte les multiples de événements } if(CCP1IF==1) //Si l'IT du système Capture 2 CCP1IF=0; if(CCP1_OnFirstEvent==1) //Si c'est le premier événement CCP1_Debord_1=Compteur_TIMER1; //Copie de la valeur de debordement CCP1_Value_1H=CCPR2H; //Copie du registre CCPR2H et CCPR2L CCP1_Value_1L=CCPR2L; CCP1_OnFirstEvent=0; else //Sinon CCP1_Debord_2=Compteur_TIMER1; //Copie de la valeur de debordement CCP1_Value_2H=CCPR2H; //Copie du registre CCPR2H et CCPR2L CCP1_Value_2L=CCPR2L; CCP1_OnFirstEvent=1; Capture_Enabled_Essence=1; //Activation des traitement des données dans le programme principale

35 VII.5 – La temporisation:
La temporisation se fera grâce au Timer 2 Il compte les cycles d'instructions, lorsque 1 seconde se sera écoulé, le Timer préviendra le PIC Compteur 8 bits Qmax est égale à 256(10) q est égale à 100us

36 VII.5 – La temporisation:
Partie Initialisation : T2CON=0x4B; //Prédiviseur = 16 et Postdiviseur = 10 PR2=24; //Valeur de PR2 TMR2IE=1; //Activation de l'IT TMR2ON=1; //Mise en marche du Timer 2 Partie interruption : interrupt void isr(void) { if(TMR2IF==1) //Quand débordement du Timer2 TMR2IF=0; RealtimeClock_Value++; //Incrémente un compteur RealtimeClock_Capture=1; //Autorisation pour la vérification dans le programme principale }

37 VII.6 – La transmission des données:
L'envoi des données se fera avec le module USART (Universal Synchronous Asynchronous Receveir Transmitter). Ce module permet d'envoyer des données ou encore d'en recevoir. Synchronous → synchrone → Envoie par rapport a un signal horloge Asynchronous → asynchrone → Envoie sans signal horloge Tb représente la durée d’un bit, celui -ci est directement lié au débit choisi pour la connexion Le module suit le protocole RS232

38 VII.6 – La transmission des données:
Format de la trame envoyée : 1ère trame : 12 caractères → 240 bits 2ème trame : 10 caractères → 200 bits Total a transmettre : = 440 bits Pour envoyer sur 1 sec il faut donc qu'il puisse envoyé 440 bits en moins de 1 seconde

39 VII.6 – La transmission des données:
Partie Initialisation : SPBRG=51; //Vitesse = 1200Baud/sec BRGH=0; SPEN=1; //Activation de la liaison série SYNC=0; //Mode asynchrone TXEN=1; //Activation de la transmission PEIE=1; //Autorisation IT générale GIE=1; //Autorisation IT générale Partie principale : if(RealtimeClock_Capture) //Si la vérification est possible { if(RealtimeClock_Value>250) //Si il y a 1 seconde RealtimeClock_Value=0; RB1=!RB1; //Clignote la LED verte //Construction de la trame 1 sprintf(Trame_Tab,"#%2x%2x%2x%4x",Temp_Ambiant_Value_INT,Essence_Value,Temp_Moteur_Value_INT,Vitesse_Value); //Calcul de la checksum Checksum_Value=0; for(i=0;i<11;i++) Checksum_Value=(Checksum_Value+Trame_Tab[i]); } //Copie des valeurs dans la trame 1 sprintf(Trame_Tab+11,"%1c",Checksum_Value); //Envoie Trame 1 for(i=0;Trame_Tab[i]!='\0';i++) while(TRMT==0); TXREG=Trame_Tab[i];

40 VIII – Conclusion: Avantages : Projet:
Expérience d’avoir aboutie un projet Gérer notre temps Projet: Améliorations Évolutions G appri a connaître mes default, mes limites é a gerer mon tps

41 Des questions ?


Télécharger ppt "Système de télémétrie pour modèle réduit"

Présentations similaires


Annonces Google