Arnaud Beauclair / Mbed 2 deprecated regulateur_V2

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
arn_beauclair
Date:
Sun Jun 15 15:32:04 2014 +0000
Commit message:
ADS_technologie

Changed in this revision

Etat.cpp Show annotated file Show diff for this revision Revisions of this file
Etat_Futur.cpp Show annotated file Show diff for this revision Revisions of this file
Initialisation.cpp Show annotated file Show diff for this revision Revisions of this file
biblio_prog.h Show annotated file Show diff for this revision Revisions of this file
boucle.cpp Show annotated file Show diff for this revision Revisions of this file
compteur_vitesse.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
sortie.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Etat.cpp	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,74 @@
+#include "mbed.h"
+
+extern char Etat_Precedant, Etat;
+extern int compteur_Demarreur,compteur_Tempo;
+extern char Demarreur, moteur, accelerateur;
+DigitalOut led0(LED1);
+DigitalOut led1(LED2);
+DigitalOut led2(LED3);
+
+
+void Etat_machine() {
+    switch(Etat){
+        ///Etat normal
+        case 0:
+            compteur_Demarreur=compteur_Tempo=0;
+            Demarreur=moteur=accelerateur=0;
+            led0=led1=led2=0;
+            break;
+        // detection d'une batterie faible
+        case 1:
+            compteur_Tempo=0;
+            Demarreur=moteur=accelerateur=1;
+            led0=1;
+            led1=led2=0;
+            break;       
+        //compteur du demarreur finit     
+        case 2:
+            compteur_Demarreur=compteur_Tempo=0;
+            Demarreur=0;
+            moteur=accelerateur=1;
+            led0=led2=0;
+            led1=1;
+            break;  
+        //detection fort courant          
+        case 3:
+            compteur_Demarreur=0;
+            Demarreur=moteur=accelerateur=0;
+            led0=led1=1;
+            led2=0;
+            break;
+        // temporisation lors du fort courant fini
+        case 4:
+            compteur_Tempo=0;
+            Demarreur=moteur=1;
+            accelerateur=0;
+            led0=led1=0;
+            led2=1;
+            break;
+        // fin du demarreur pour un fort courant
+        case 5:
+            compteur_Demarreur=compteur_Tempo=0;
+            Demarreur=accelerateur=0;
+            moteur=1;
+            led1=0;
+            led0=led2=1;
+            break;
+        // freinage
+        case 6:
+            compteur_Demarreur=compteur_Tempo=0;
+            Demarreur=moteur=0;
+            accelerateur=3;
+            led0=0;
+            led1=led2=1;
+            break;
+        // freinage lors de la recharge de la batterie
+        case 7 :
+            compteur_Demarreur=compteur_Tempo=0;
+            Demarreur=0;
+            moteur=1;
+            accelerateur=3;
+            led0=led1=led2=1;   
+            break;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Etat_Futur.cpp	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,126 @@
+#include "mbed.h"
+
+extern float TemporisationDemarreur,commandeLimite,comptDem,vitesseMin;
+extern int courantLim;
+extern int tensionMin, tensionMax;
+extern char Etat_Precedant, Etat;
+extern int compteur_Demarreur,compteur_Tempo;
+extern char demInfini,infini;
+DigitalIn frein(p12);
+AnalogIn Volts(p20);
+AnalogIn Ampere(p17);
+
+void Etat_Futur() {
+    switch (Etat_Precedant){
+           //Etat normal
+           case 0:
+            if(frein.read()==1)
+                Etat=6;
+            else{
+                if(Volts.read()*100<=tensionMin)
+                    Etat=1;
+                else{
+                    if(Ampere.read()*48>=commandeLimite)
+                        Etat=3;
+                    else
+                        Etat=0;
+                }
+            }
+            break;
+            // detection d'une batterie faible
+            case 1:
+                if(frein.read()==1)
+                    Etat=6;
+                else{
+                    if(int(Volts.read()*100)>=(tensionMax))
+                        Etat=0;
+                    else
+                    {
+                        if((infini==0)&&(compteur_Demarreur>=(TemporisationDemarreur*10)))
+                            Etat=2;
+                        else
+                            Etat=1;
+                    }
+                }
+            break;
+            //compteur du demarreur finit
+            case 2:
+                if(frein.read()==1)
+                    Etat=7;
+                else{
+                    if(int(Volts.read()*100)>=(tensionMax))
+                        Etat=0;
+                    else
+                        Etat=2;
+                }
+                break;
+            //detection fort courant
+            case 3:
+                if(frein.read()==1)
+                    Etat=6;
+                else{
+                    if(Ampere.read()*48>=commandeLimite)
+                        Etat=0;
+                    else
+                    {
+                        if(compteur_Tempo>=(comptDem*10))
+                            Etat=4;
+                        else
+                            Etat=3;
+                    }
+                }
+                break;
+            // temporisation lors du fort courant fini
+            case 4:
+                if(frein.read()==1)
+                    Etat=6;
+                else{
+                    if(Ampere.read()*48>=commandeLimite)
+                         Etat=0;
+                    else
+                    {
+                        if((infini==0)&&(compteur_Demarreur>=(TemporisationDemarreur*10)))
+                        {
+                            if(int(Volts.read()*100)<=(tensionMin))
+                                Etat=2;
+                            else
+                                Etat=5;
+                        }
+                        else
+                        Etat=4;
+                    }
+                }
+                break;
+            // fin du demarreur pour un fort courant
+            case 5:
+                if(frein.read()==1)
+                    Etat=6;
+                else{
+                    if(Ampere.read()*48>=commandeLimite)
+                         Etat=0;
+                    else
+                    {
+                        if(int(Volts.read()*100)<=(tensionMin))
+                             Etat=2;
+                        else
+                            Etat=5;
+                    }
+                }
+                break;
+            // freinage
+            case 6 :
+                if(frein==0)
+                    Etat=0;
+                else
+                    Etat=6;
+                break;
+            // freinage lors de la recharge de la batterie
+            case 7:
+                if(frein==0)
+                    Etat=0;
+                else
+                    Etat=7;
+                break;
+            }
+}
+        
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Initialisation.cpp	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,25 @@
+#include "mbed.h"
+
+extern float TemporisationDemarreur,commandeLimite,comptDem,vitesseMin;
+extern int courantLim;
+extern int tensionMin, tensionMax;
+extern char Etat;
+extern int compteur_Demarreur,compteur_Tempo;
+extern int tour;
+extern char demInfini,infini;
+
+void Initialisation() {
+    //mise des valeur par défaut de tout les reglage et a 0 les variables
+    tensionMin = 75;
+    tensionMax = 80;
+    courantLim=40;
+    TemporisationDemarreur=3;
+    commandeLimite=60;
+    comptDem=0;
+    vitesseMin=0;
+    Etat=0;
+    compteur_Demarreur=0;
+    compteur_Tempo=0;
+    infini=0;
+    tour=0;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/biblio_prog.h	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,6 @@
+void Initialisation(void);
+void boucle(void);
+void Etat_Futur(void);
+void Etat_machine(void);
+void Sortie(void);
+void compteur_vitesse (void);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/boucle.cpp	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,26 @@
+#include "mbed.h"
+#include"biblio_prog.h"
+
+extern float compt,commandeLimite,comptDem,vitesseMin;
+extern int courantLim;
+extern int tensionMin, tensionMax;
+extern char Etat_Precedant, Etat;
+extern int compteur_Demarreur,compteur_Tempo;
+extern char demInfini,infini;
+extern int tour,tour_par_minute;
+DigitalOut led3(LED4);
+
+void boucle(){
+    led3=!led3;                    //indication visuel pour verifier le fonctionnement de la boucle
+    Etat_Precedant=Etat;           //enregistremant de l'etat actuelle
+    Etat_Futur();                  //appel d'une fonction permettant de naviguer entre les etat
+    //test pour les compteurs
+    if((Etat==1)||(Etat==4))       
+        compteur_Demarreur=compteur_Demarreur++;
+    if(Etat==3)
+        compteur_Tempo=compteur_Tempo++;
+    tour_par_minute=tour*6000;     //calcul des tours par minute
+    tour=0;                        //remise a zero du compte tour
+    Etat_machine();                //appel de la fonction configurant les sorties par rapport a l'etat actuel
+    Sortie();                      //applications des sorties
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compteur_vitesse.cpp	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,8 @@
+#include "mbed.h"
+
+extern int tour;
+
+void compteur_vitesse (){
+    tour++;
+    //taille du pneu 130/70-12
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,98 @@
+#include "mbed.h"
+#include"biblio_prog.h"
+
+float TemporisationDemarreur,commandeLimite,comptDem,vitesseMin;
+int courantLim;
+int tensionMin, tensionMax;
+char Etat_Precedant, Etat;
+int compteur_Demarreur,compteur_Tempo;
+int tour,tour_par_minute;
+char Demarreur, moteur, accelerateur;
+char demInfini, infini,Erreur;
+Ticker timer;
+InterruptIn event (p8);
+Serial pc(USBTX, USBRX);
+
+int main() {
+    event.rise(&compteur_vitesse);      //creation d'une interruption lors d'un front montant du port 8
+    Initialisation();                   //Initialisation des capteur
+    printf("\n\t\tbonjour\n\n");        // creation d'un message en dirrection d'un ordinateur
+    timer.attach(&boucle,0.1);          //creation d'une interruption en fonction d'un timer 0,1ms
+    while(1) {
+        //calibrage tension
+        do{
+            do
+            {
+                printf("\nLa tension minimum de la batterie:\n\n");
+                scanf("%d",&tensionMin);
+                printf("\t\t%d",tensionMin);
+                if((tensionMin < 0)||(tensionMin>=100))
+                    printf("\n***Erreur: valeur tension minimum erronner***\n");
+            }while((tensionMin < 0)||(tensionMin>=100));
+            printf("\nLa tension maximum de la batterie:\n\n");
+            scanf("%d",&tensionMax);
+            printf("\t\t%d",tensionMax);
+            if((tensionMax <= tensionMin)||(tensionMax>100))
+                printf("\n***Erreur: valeurs tensions erronners***\n");
+        }while((tensionMax <= tensionMin)||(tensionMax>100));
+        //calibrage courant
+        do{
+            printf("\nLa limite de courant:\n\n");
+            scanf("%d",&courantLim);
+            printf("\t\t%d",courantLim);
+            if((courantLim < 0)||(courantLim>=100))
+                printf("\n***Erreur: valeur courrant erronner***\n");
+        }while((courantLim < 0)||(courantLim>=100));
+        //calibrage demarreur
+        
+        do{
+            printf("\nLa duree du demarreur est elle infini :\n Y si oui, N si non\n\n");
+            Erreur=getchar();
+            demInfini= getchar();
+            printf("\t\t%c",demInfini);
+            if((demInfini==0x59)||(demInfini==1111001))
+                infini=1;
+            else
+            {
+                if((demInfini==0x6E)||(demInfini==0x4E))
+                {
+                    infini=0;
+                    do{
+                        printf("\nLa duree du demarreur :\n\n");
+                        scanf("%f",&TemporisationDemarreur);
+                        printf("\t\t%f",TemporisationDemarreur);
+                        if((TemporisationDemarreur<0)||(TemporisationDemarreur>30))
+                            printf("\n***Erreur: valeur du demarreur Erronner***\n");
+                    }while((TemporisationDemarreur<0)||(TemporisationDemarreur>30));
+                }
+            }
+        }while(((demInfini!=0x59)&&(demInfini!=0x79))&&((demInfini!=0x6E)&&(demInfini!=0x4E)));
+        
+        //calibrage limiteur de commande
+        do{
+            printf("\nLa limite de la commande poignee lors de la recharge:\n\n\tCommande en pourcentage\n\n");
+            scanf("%f",&commandeLimite);
+            printf("\t\t%f",commandeLimite);
+            if(commandeLimite < 0||commandeLimite>=100)
+                printf("\n***Erreur: valeur commande erronner***\n");
+        }while((commandeLimite < 0)||(commandeLimite>=100));
+        //calibrage temporisation
+        do{
+            printf("\nLa temprorisation entre la detection d'un fort courant et le lancemant du moteur essence:\n---Par defaut elle est a zero---\n\n");
+            scanf("%f",&comptDem);
+            printf("\t\t%f",comptDem);
+            if((comptDem < 0)||(comptDem>=100))
+                printf("\n***Erreur: valeur est erronner***\n");
+        }while((comptDem < 0)||(comptDem>=100));
+        //calibrage vitesse minimum
+        do{
+            
+            printf("\nLa vitesse minimum devant etre atteint avant de lancee le moteur essence pour un fort courant:\nPar defaut elle sera de zeros\n\n");
+            scanf("%f",&vitesseMin);
+            printf("\t\t%f",vitesseMin);
+            if((vitesseMin < 0)||(vitesseMin>=100))
+                printf("\n***Erreur: valeur est erronner***\n");
+        }while((vitesseMin < 0)||(vitesseMin>=100));
+        printf("\n\n\t\tFin des reglage\n\n");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/0b3ab51c8877
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sortie.cpp	Sun Jun 15 15:32:04 2014 +0000
@@ -0,0 +1,18 @@
+#include "mbed.h"
+
+extern float tensionMin, tensionMax,courantLim,compt,commandeLimite,comptDem,vitesseMin;
+extern char Demarreur, moteur, accelerateur;
+AnalogIn commande(p19);
+DigitalOut signal_demarreur(p21);
+DigitalOut signal_moteur(p22);
+AnalogOut signal_commande(p18);
+
+void Sortie(){
+    signal_demarreur=Demarreur;
+    signal_moteur=moteur;
+    //test pour la limitation de vitesse
+    if((accelerateur==1)&&(commande.read()>=(commandeLimite/100)))
+        signal_commande=(commandeLimite/100);
+    else
+        signal_commande=commande.read();
+}
\ No newline at end of file