LoRaWan: Mesure d’un voltage par les pins

On peut mesurer avec un arduino le voltage d’une pile (ou autre) grâce  aux entrées analogiques. Ce tutoriel est réalisé avec une carte Seeeduino LoRaWan et une batterie li-po de 3,7V, mais il peut être valable avec d’autres cartes arduino et d’autres sources d’énergies à mesurer.

Matériel:

Carte Seeeduino LoRaWan;

Batterie li-po 3,7V;

Caractéristiques:

Mesures de la cartes:

La carte LoRaWan ne peut mesurer, à ses entrées analogiques, plus de 3,3V.  Lors d’une mesure, elle retourne une valeur entre 0 et 1023. Donc, lorsque la valeur retournée est de 0, le voltage est de 0V. Si elle est à 1023, le voltage est de 3,3V ou plus (Consultez la documentation technique de votre carte si ce n’est pas une LoRaWan).

La batterie li-po:

La batterie est de 3,7V. Mais sa tension n’est pas réellement fixe. Elle peut varier de 4,2V (pleine) à 3V (vide).

Réalisation:

La tension globale de la batterie étant supérieure à celle mesurable par la carte, il faut réduire sa tension. Il faut donc faire un pont diviseur de tension avec des résistances. Un logiciel peut calculer des ponts diviseurs de tension ici. Voici le schéma du pont diviseur choisis pour ce tutoriel:

Le voltage de la batterie est d’abord réduis grâces aux résistances, puis il est récupéré par la carte pour être mesuré.

Le voltage de la batterie est de 4,2V au maximum. Avec le pont diviseur de tension ci-dessus, on l’abaisse à 3,3V, le maximum mesurable par la carte.

Codage:

Maintenant que l’on a réduis la tension, on sait que lorsque la carte retourne 1023, c’est que la batterie est pleine. Il faut maintenant transformer ce résultat en une valeur qui correspond au voltage de la batterie. On prend donc 1023 et on le divise parle voltage maximum de la batterie.

1023 / 4,2 = 244 environ.

Afin d’obtenir la valeur de la batterie, on divise donc la valeur mesurée par 244.

float valeurTension;

void setup() {
  pinMode(0, INPUT);
  SerialUSB.begin(9600);
}

void loop() {

  valeurTension = analogRead(0) / 2.44; //Etape necessaire afin que le calcul
  valeurTension = valeurTension / 100; //ne soit pas arrondie par la carte


  SerialUSB.print(valeurTension);
  SerialUSB.print(" V\n");
  delay(2000);
}
mesureVoltagePin

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *