- Surveillance de tension de la batterie à votre Arduino
- Vérification pour voir si la puissance d’a/c est en marche
- Améliorer la précision de analogRead() dans de nombreuses situations
La façon d’effectuer ces exploits est la référence interne permet de vraiment mesurer le SCR. Dans la suite du code, nous mesurer effectivement la référence de tension interne et ensuite utiliser cette valeur pour calculer notre SCR en fait. Voici le code :
long readVcc() { // Read 1.1V reference against AVcc // set the reference to Vcc and the measurement to the internal 1.1V reference #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) ADMUX = _BV(MUX5) | _BV(MUX0) ; #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif delay(2); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Start conversion while (bit_is_set(ADCSRA,ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both long result = (high<<8) | low; result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 return result; // Vcc in millivolts }
Il y a des limites d’exactitude en raison des tolérances sur la référence de tension interne. Vous pouvez toutefois, calibrer le facteur d’échelle pour plus de précision. Ce code s’exécute sur toutes les variantes de l’Arduino, mais aussi la série de ATtinyx4 jetons.
Pour un article plus détaillé, qui comprend le calcul détails, applications et étalonnage How-to, voir Secret Arduino voltmètre – mesurer la tension batterie.