changements compte-tour & scribe

This commit is contained in:
pgp 2021-02-01 15:46:26 +01:00
parent 0b80117ca3
commit 530cde8e80

View file

@ -18,14 +18,14 @@
#define PCNT_TEST_CHANNEL PCNT_CHANNEL_0 #define PCNT_TEST_CHANNEL PCNT_CHANNEL_0
#define PCNT_INPUT_SIG_IO GPIO_NUM_15 // Pulse Input GPIO #define PCNT_INPUT_SIG_IO GPIO_NUM_15 // Pulse Input GPIO
#define PCNT_INPUT_CTRL_IO GPIO_NUM_2 // Control GPIO HIGH=count up, LOW=count down #define PCNT_INPUT_CTRL_IO GPIO_NUM_2 // Control GPIO HIGH=count up, LOW=count down
#define PCNT_H_LIM_VAL 10000 //valeur max du compteur_minuteur #define PCNT_H_LIM_VAL 10000 //valeur max du depart_compteur_minuteur
#define PCNT_L_LIM_VAL -10 //valeur mini du compteur #define PCNT_L_LIM_VAL -10 //valeur mini du compteur
bool sem_compteur; // sémaphore pour le compteur bool sem_scribe; // sémaphore pour le compteur
int16_t count = 0; // variable de compteur int16_t count = 0; // variable de compteur
int vRotReel; // vitesse réelle mesurée du moteur int vRotReel; // vitesse réelle mesurée du moteur
unsigned long compteur_minuteur = 0; // minuteur pour le déclenchement du compteur unsigned long start_chrono_scribe= 0; // minuteur pour le déclenchement du compteur
bool sema_compte_tour = false; // semaphore poour le compte tour bool sema_compte_tour = false; // semaphore poour le compte tour
unsigned long compteur_compte_tour = 0; // minuteur pour le déclenchement du compte-tour unsigned long depart_compte_tour = 0; // minuteur pour le déclenchement du compte-tour
int refresh_compte_tour = 500; // durée entre deux mesures du compte-tour en ms int refresh_compte_tour = 500; // durée entre deux mesures du compte-tour en ms
int pptr = 2; //nombre de pulsations par tour d'hélice int pptr = 2; //nombre de pulsations par tour d'hélice
@ -48,7 +48,7 @@ DateTime now{rtc.now()};
//////////////////////////////// ////////////////////////////////
/* DÉFINITIONS DE LA CARTE SD */ /* DÉFINITIONS DE LA CARTE SD */
//////////////////////////////// ////////////////////////////////
unsigned long freq_ecriture = 60000; // durée entre deux écritures sur la carte SD en micro secondes unsigned long intervalle_d_ecriture = 60000; // durée entre deux écritures sur la carte SD en micro secondes
char horodatage[12]; //création du tableau pour contenir l'horodatage char horodatage[12]; //création du tableau pour contenir l'horodatage
char fichier[] = "/"; //tableau pour le nom de fichier char fichier[] = "/"; //tableau pour le nom de fichier
@ -174,12 +174,13 @@ void stop_compteur() {
void compte_tour() { void compte_tour() {
if (sema_compte_tour == false){ if (sema_compte_tour == false){
compteur_compte_tour = millis(); depart_compte_tour = millis();
sema_compte_tour = true; sema_compte_tour = true;
} }
int offset = (millis() - compteur_compte_tour ); int offset = (millis() - depart_compte_tour );
pcnt_get_counter_value(PCNT_UNIT_0, &count); pcnt_get_counter_value(PCNT_UNIT_0, &count);
if (offset >= refresh_compte_tour && sema_compte_tour == true && count >= 1){ if (offset >= refresh_compte_tour && sema_compte_tour == true && count >= 1){
compteur_compte_tour = millis()- ;
vRotReel = (60000*count/(pptr*offset)); //vitesse en tours par min (4 pulsations /tour, 2 montantes, 2 descendantes) vRotReel = (60000*count/(pptr*offset)); //vitesse en tours par min (4 pulsations /tour, 2 montantes, 2 descendantes)
Serial.println("count ="); Serial.println("count =");
Serial.println(count); Serial.println(count);
@ -188,7 +189,7 @@ void compte_tour() {
Serial.println("vRrotReel="); Serial.println("vRrotReel=");
Serial.println(vRotReel); Serial.println(vRotReel);
gaz_moteur();// ajustement des gaz en fonction de la vitesse mesurée gaz_moteur();// ajustement des gaz en fonction de la vitesse mesurée
sema_compte_tour = false;
} }
} }
@ -324,11 +325,14 @@ void sd_init() {
} }
void scribe_sd (){ void scribe_sd (){
if ( sem_compteur == false ) { if ( sem_scribe == false ) {
compteur_minuteur = millis(); sem_scribe = true;
sem_compteur = true; pcnt_counter_pause(PCNT_TEST_UNIT);
pcnt_counter_clear(PCNT_TEST_UNIT);
pcnt_counter_resume(PCNT_TEST_UNIT);
start_chrono_scribe = millis();
} }
if ( sem_compteur == true && millis() - compteur_minuteur >= freq_ecriture ){ if ( sem_scribe == true && millis() - start_chrono_scribe >= intervalle_d_ecriture ){
char timestamp[] = "YY-MM-DD-hh:mm:ss"; char timestamp[] = "YY-MM-DD-hh:mm:ss";
char *horodatage = now.toString(timestamp); char *horodatage = now.toString(timestamp);
char buffer[64]; char buffer[64];
@ -338,7 +342,8 @@ void scribe_sd (){
appendFile(SD, fichier, buffer); appendFile(SD, fichier, buffer);
appendFile(SD, fichier, "\n" ); appendFile(SD, fichier, "\n" );
Serial.println(vRotReel); Serial.println(vRotReel);
compteur_minuteur = 0; start_chrono_scribe= 0;
} }
} }
@ -475,7 +480,7 @@ void setup() {
sd_init (); // initialisation de la carte SD sd_init (); // initialisation de la carte SD
sem_wifi = false; // initialisation du sémaphore sem_wifi = false; // initialisation du sémaphore
/* compteur de pulsations */ /* compteur de pulsations */
sem_compteur = false; // initialisation du sémaphore sem_scribe = false; // initialisation du sémaphore
//pinMode(pulsePin,INPUT_PULLUP); //pinMode(pulsePin,INPUT_PULLUP);
start_compteur(); start_compteur();
start_moteur(); // moteur start_moteur(); // moteur