Vitesse de lecture port Analogique

Bonjour, j'ai fait un essai de lecture sur un Arduino Nano avec ce code :

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4); 

const int Pin = A0;

unsigned long previousMillis;
const long interval = 1000;
long  nDmF, oldnDmF, cDmF;
float vE;

void setup()
{
  lcd.init();      
  pinMode(Pin, INPUT);
}

void loop()
{
  unsigned long currentMillis = millis();

 // vE = analogRead(Pin);
  
  nDmF++;

  if (currentMillis - previousMillis >= interval) 
  {
    cDmF = nDmF - oldnDmF ;
    oldnDmF = nDmF;

    lcd.setCursor(0, 0);
    lcd.print(cDmF);
    previousMillis = currentMillis;

  }

la loop boucle cDmF à 266800 , mais si je de-commente la ligne pour lire la Pin analogique , je chute à 8800, comment augmenter la vitesse de lecture du port ? Et pourquoi est-ce si long de lire une pin ?

Oui, 8900 pour être exact.
Si 38470 te suffisent, jette un œil ici : paragraphe 3. Augmenter la vitesse

Que mesure tu pour avoir besoin d'une telle vitesse d'acquisition ?

La configuration de la fonction mesure de tension analogique par Arduino est très prudente et restrictive. Le micro peut faire mieux en termes de rapidité.

Mais dans ce cas il faut impérativement lire la datasheet du microcontrôleur qui est soudé sur la carte et appliquer les règles et limites indiquées.

Si tu recherches une mesure moins bruitée

  1. Ne pas utiliser de carte UNO ⇾ l'implantation sur la carte est pourrie.
    Solution possible si tu es capable de souder un condensateur CMS 0805 sur la carte.
  2. utiliser la bonne tension de référence

Si tu recherches plus de précision ou de rapidité :
Utiliser un module équipé d'un circuit intégré qui ne fait que mesure de tension analogique et qui "discute" avec le micro soit par I2C, soit SPI.

2 Likes

Bonjour, merci des infos à tous !
Je vais suivre ton tuto.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.