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

III) Programmation du PIC

Présentations similaires


Présentation au sujet: "III) Programmation du PIC"— Transcription de la présentation:

1 III) Programmation du PIC

2 1) Hypothèses et choix

3 Contraintes Commande par un microcontroleur PIC 16F84 (pas de sortie analogiques). Variation de vitesse (CNA 8 bits) L'accélération est fonction de l'angle d'inclinaison de la bande. (roue codeuse)

4 Schéma structurel

5 Fonctions réalisées par le programme
F1 : Lecture BP marche F3 : Déterminer vitesse F4 :Affecter vitesse F2 : Lecture codeuse

6 Actigramme de la fonction Gérer

7 Réalisation des rampes accélération-décélération (de la fonction F3 : Déterminer la vitesse à obtenir)

8 Rampe d'accélération CNA commandé sur 8 bits : pleine échelle =255
Code for(cpt=0;cpt<255;cpt++) { sortie=cpt+1; //car cpt max = delay(tempoAccelDecel); } Cette méthode permet d'obtenir la rampe suivante:

9 Accélérations et angles
D'après les calculs de mécanique : amax=(-0,1737α+1,9666) Après intégration, vmax=(-0,1737α+1,9666)tmax D'où tmax=vmax/(-0,1737α+1,9666) avec vmax = 0,26m/s tmax=[0,26/(-0,1737α+1,9666)] Δt=tmax /255 Δt=[0,26/(-0,1737α+1,9666)]/255

10 Calcul de la tempo d'accélération
Durée microdelay(n) : T = 3n +1 (microsecondes) n = (T-1)/3

11 Les différentes versions du programme du cycle

12 Programme n°1 un cycle programme correspond à un cycle de la bande.
Pas de roue codeuse. pas d'arrêt possible en cours de programme

13 Gestion des tests Simulation
lancer la simulation -->(les sorties doivent rester à 0) mise à 1 entrée Ra1 (bouton poussoir marche) --> les sorties clignotent/stabilisent à 1/clignotent/stabilisent à 0 résultats des tests : test OK. La valeur de temporisation a du être adaptée pour que le clignotement soit perceptible. validation sur maquette: test OK

14 Environnement de développement : Devpic84c

15 Programme n°2 Objectif : décodage roue codeuse.
Gestion des fonction, appels de sous programme pour garantir évolutivité , lisibilité et maintenabilité du programme. Principe: un cycle programme = un cycle de la bande. L'accélération dépend de la valeur codée depuis la roue codeuse.

16 Programme n°2 : fonction main()
Structure identique au prog 1. Appel fonctions lirecodeuse() calculTempoAccel() calculTempoDecel() L'appel de fonction après « marche ».

17 Spécificité : lecture de la roue codeuse

18 Gestion des tests Gestion des tests (simulation)
Validation décodage roue codeuse : affectation de codeuse sur port B, pendant le palier vitesse. Résultats des tests : test OK Validation sur maquette: test OK Nécessité de complémenter les voies de la roue codeuse pour avoir un signal cohérent.

19 Programme n°3 Objectif : Autoriser l'arrêt du cycle à tout instant
Simplifier la gestion des entrées.

20 Principe de fonctionnement
Scrutation permanente des E/S Fonctionnement programmé sous forme d'un grafcet (4 étapes) Détection de fronts montants du bp_marche. Utilisation d'une table de codage pour la temporisation accélération (en fonction de la variable codeuse.)

21 Grafcet décrivant les phases du programme

22 Spécificité : programme type automate
void main() { /*Initialisation des paramètres de conception*/ /*Initialisation des paramètres de réglage*/ lecture_entree(porta); // suppression du font initial ; /******************Debut boucle infinie******************/ sortie = 0; phase = 0; for(;;) /***************Attente marche***********************/ lecture_entree(porta); evoluer_phase(); vitesse = piloter_vitesse(vitesse); sortie = vitesse; } //fin for(;;) } //fin void main()

23 détection des fronts montants
Principe de la fonction lecture_entrees() :

24 Programmation grafcet évoluer phase
void evoluer_phase() { switch (phase) { case 0 :{ // ATTENTE if ((bp_marche==1)&&(bp_marche_precedent==0)) {phase = 1; } break;} case 1 :{ // ACCELERATION if (vitesse>= vitesse_max ) { phase = 2; } if ((bp_marche==1)&&(bp_marche_precedent==0)) { phase = 3; } break;} Case 2 :{ // PALIER VIT CONSTANTE if (deplacement>=deplacement_max[codeuse]) phase = 3; } if ((bp_marche==1)&&(bp_marche_precedent==0)) { phase = 3; } break; case 3 :{ // DECELERATION if (vitesse<=vitesse_arret) { phase = 0; } break;} } }

25 fonction piloter_vitesse()

26 utilisation d'une variable comme pointeur dans une table

27 Tests programme 3 Simulation : Test OK

28 Défaillance - Diagnostic
Test sur maquette ==> comportement aléatoire Hyp 1 : Programme : Vérification simulation --> Comportement OK en simulation Hyp 2 : PIC : Échange standard -->Sans effets (Comportement aléatoire) Hyp 3 : Config. E/S : Chargement programme initial -->Sans effets (Comportement aléatoire) Hyp 4 : C.N.A. : Échange standard C.N.A. --> Pilotage correct de la bande


Télécharger ppt "III) Programmation du PIC"

Présentations similaires


Annonces Google