Acquisition valeur maximum à chaque cycle

Salut à tous !!

Je vous sollicite dans le cadre de mon projet car j'ai un petit problème concernant l'acquisition.
Je me sers de l'arduino comme carte d'acquisition type NI.

Jusque là je faisais de l'acquisition en continu (température, profil de force, etc ....) sans boucle. Aujourd'hui je voudrais acquérir la force max en fonction du déplacement et de la température.

Je vous explique : Je fais des essais sur un groupe hydraulique et lors de mes essais j'obtiens via une force en fonction d'un déplacement et j'ai aussi une mesure de température. Cet essai est cyclique est se déroule 500 000 fois.
Jusque là, les acquisition en continu ne me pose pas de problème.

Ce que je n’arrive pas à faire, c'est là détection de cycle !!! Comment dire qu'il ne doit prendre seulement que la valeur max d'effort, la position et la température sur chaque cycle et la stocké (accessoirement l'affiché aussi) ?

J'avais déjà fait ça comme code, ça marchait très bien mais pour de l'acquisition en temps réel ?

// rappel valeur max en entrée des pin digital et analogique 5V !!!
// alimentation possible 3.3 V et 5 V
// alimentation max de l'arduino 12V

int analogPin0 = 0; // déclaration pin 0
int analogPin1 = 1; // déclaration pin 0
int analogPin2 = 2; // déclaration pin 0

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Pousse Pousse Pousse Pousse !!!!!!!!!");
   pinMode(13, 1);
}


// définition de la boucle d'acquisition
void loop() {

  // Acquisition teméprature
  // Différence de température de +0.5°C par rappor au thermomètre Quick A552/0
    int tension_1 = analogRead(analogPin0); //lecture Pin0 // déclaration variable temperature = valeur lue de la pin0
    float tension1 = (tension_1 * 5.0) / 1023; // La tension est un entier qui va de 0 à 1023 x tension (5V). Il faut la convertir en tension:
    float temp = 100 * (tension1 - 0.6); // conversion en °C
    

  // Acquisition déplacement selon force max
    int tension_3 = analogRead(analogPin2); // déclaration variable temperature = valeur lue de la pin2
    float tension3 = (tension_3 * 5.0) / 1023; // La tension est un entier qui va de 0 à 1023 x tension (5V). Il faut la convertir en tension:
    float deplacement = 10 * tension3; // conversion en mm  10mm/V
        

  // Acquisition force
    int tension_2 = analogRead(analogPin1); // déclaration variable temperature = valeur lue de la pin1
    float tension2 = (tension_2 * 5.0) / 1023; // La tension est un entier qui va de 0 à 1024 x tension (5V). Il faut la convertir en tension:
    float force = 2000 * tension2; // conversion en N  2000N/V

   
 Serial.println("Nouveau cycle");
 Serial.print(temp); // affichage val température dans moniteur
 Serial.print("°C \t");
 Serial.print(forcemax); // affichage val température dans moniteur
 Serial.print("N \t");
 Serial.print(deplacement); // affichage val température dans moniteur
 Serial.print("mm \t");
 Serial.println("");
 

  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
}

Merci d'avance :slight_smile:

J’espère que vous pourrez m'aider !!!

Personne aurait une idée de comment faire ?

:frowning:

Je ne sais pas si je pourrais t'apporter une aide, mais déjà je te dis que je n'ai rien compris.

Qu'appelle tu un cycle ?
De quels moyens dispose tu pour déterminer un début ou une fin de cycle ?
Il y aura-t_il un traitement sur les mesures ?

bonjour,
vu que tu fais en continu l'acquisition, il faut outre le fait de connaitre le début, mettre une variable qui prendra le maxi.
tu compare cette variable avec la nouvelle valeur, si inférieur, elle ne change pas, si supérieure elle prendre cette nouvelle valeur et ainsi de suite.

valeur_max =0
valer lue = 10
donc valeur_max=10
valeur lue = 1
donc valeur_max=10
etc...