Des questions:
- La conversion du compte ADC en tension dépend-elle de la tension réelle de la broche +5 V?
- Si oui, quelle est la méthode acceptée pour obtenir cette tension de la carte?
Contexte / détail:
J'ai un circuit dans lequel j'ai un Arduino Nano (clone) fonctionnant à partir d'un connecteur USB (à partir d'un concentrateur). Le travail de l'Arduino est de mesurer la tension sur une batterie qui entraînera un second circuit allumé / éteint par le Nano. Pour référence, il s'agit d'un testeur de batterie.
Il y a un écran Nokia 5110 qui affiche la tension du croquis très simple ci-dessous.
void setup() {
Serial.begin(9600);
display.begin();
// Init done
// You can change the contrast around to adapt the display
// for the best viewing!
display.setContrast(50);
// Text display tests
display.setTextSize(1);
display.setTextColor(BLACK);
}
void loop() {
display.clearDisplay(); // Clears the screen and buffer
display.setCursor(0,0);
display.print("Vin=");
int rawVIN = analogRead(VIN);
float floatVin = (rawVIN*4.75)/1023.0;
display.println(floatVin);
Serial.println(rawVIN);
display.display();
delay(1000);
}
- J'ai mesuré la tension de la batterie à l'aide d'un DVM et elle est de 4,13 V, mais le Nano rapporte 4,35 V.
- J'ai un terrain commun entre la batterie et l'Arduino.
- Parce que la connexion pour tester la tension peut flotter, j'ai une résistance de pulldown pour arrêter les fluctuations sauvages (> 10 kΩ)
Après une enquête, j'ai trouvé que le +5 V produisait en fait 4,75 V et j'ai changé mon croquis de
float v = (rawVIN*5.0)/1024.0;
à
float v = (rawVIN*4.75)/1024.0;
et la lecture de tension sur l'Arduino était maintenant correcte. Je ne l'ai pas fait parce que je comprends ce que j'ai fait, je l'ai fait parce que j'avais un pressentiment, cela pourrait changer la valeur en la bonne.