Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Minuscule bug sur les mesures U & I
#8
Bonsoir André,
voici une meilleure solution, belle, propre et qui fonctionne enfin à 100%, testée sur 24h, plus aucune mauvaise mesure de V et de I (enfin... à part les valeurs au démarrage, mais c'est un autre problème) :

typedef union {
  uint64_t U64;
  struct {
    unsigned long Lower;
    unsigned long Upper;
  } U32;
} uint64_32;

void MeasurePower() {  //Lecture Tension et courants pendant 20ms
  int iStore;
  value0 = analogRead(AnalogIn0);  //Mean value. Should be at 3.3v/2
  static uint64_32 Micros64 = {0};
  unsigned long Micros32;
  unsigned long MeasureMillis = millis();

  while (millis() - MeasureMillis < 21) {  //Read values in continuous during 20ms. One loop is around 150 micro seconds
    Micros32 = micros();
    if(Micros32 < Micros64.U32.Lower) {
      Micros64.U32.Upper ++;
    }
    Micros64.U32.Lower = Micros32;
    iStore = (Micros64.U64 % 20000) / 200;    //We have more results that we need during 20ms to fill the tables of 100 samples
    volt[iStore] = analogRead(AnalogIn1) - value0;
    amp[iStore] = analogRead(AnalogIn2) - value0;
  }
}

Bonne soirée à toi, et si besoin d'explications je reste disponible.
Répondre


Messages dans ce sujet
Minuscule bug sur les mesures U & I - par Youpimatin - 17-10-2024, 03:35 PM
RE: Minuscule bug sur les mesures U & I - par F1ATB - 17-10-2024, 04:34 PM
RE: Minuscule bug sur les mesures U & I - par F1ATB - 19-10-2024, 05:10 PM
RE: Minuscule bug sur les mesures U & I - par Sgb31 - 21-10-2024, 10:35 AM
RE: Minuscule bug sur les mesures U & I - par F1ATB - 21-10-2024, 01:22 PM
RE: Minuscule bug sur les mesures U & I - par Youpimatin - Il y a 6 heures

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)