Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
vitesse lecture ADC pour UxI
#1
Bonjour,

 Dans le cadre UxI, 'il est possible d'accélérer de près du double la lecture des ports ADC dans la routine d'échantillonage U et I. en utilisant  adc1_get_raw  au lieu de analogRead().


Code :
int UxI::getSamples() {


  int iStore = 0;
  int valueI = adc1_get_raw(ADC1_CHANNEL_7);
  int valueV = valueI;
  unsigned long beginMicro = micros();
  unsigned long curMicro;
  samples = 0;

  while ((curMicro = micros()) - beginMicro <= LOOP_SAMPLES_DURATION_MICROS) { 
    iStore = (curMicro % SAMPLE_TIME_MICROS) / RATIO_COUNT;                   
    volt[iStore] = adc1_get_raw(ADC1_CHANNEL_4) - valueV;
    amp[iStore] = adc1_get_raw(ADC1_CHANNEL_5) - valueI;
    samples++;
  }
  return samples;
}
Répondre

#2
Il faut ajouter #include "driver/adc.h" en début de programme.
Il est aussi possible de calibrer les valeurs d'après la calibration usine de chaque ESP32 avec esp_adc_cal_raw_to_voltage(, ça nécessite un peu de paramétrage au début mais fonctionne bien.
Je crois que sur la 3.3.7 c'est encore changé, avec adc_oneshot_read() étant la méthode recommandée.
Répondre



Atteindre :


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

Moteur MyBB, © 2002-2026 Melroy van den Berg.