Fragen:
- Hängt die Umwandlung des ADC-Zählers in Spannung von der tatsächlichen Spannung des +5 V-Pins ab?
- Wenn ja, wie wird diese Spannung von der Platine abgerufen?
Hintergrund / Detail:
Ich habe eine Schaltung, in der ein Arduino Nano (Klon) von einem USB-Anschluss (von einem Hub) ausgeführt wird. Die Aufgabe des Arduino ist es, die Spannung an einer Batterie zu messen, die einen zweiten Stromkreis antreibt, der vom Nano ein- und ausgeschaltet wird. Als Referenz dient ein Batterietester.
Es gibt einen Nokia 5110-Bildschirm, auf dem die Spannung anhand der folgenden sehr einfachen Skizze angezeigt wird.
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);
}
- Ich habe die Spannung der Batterie mit einem DVM gemessen und sie beträgt 4,13 V, der Nano meldet jedoch 4,35 V.
- Ich habe eine Gemeinsamkeit zwischen der Batterie und Arduino.
- Da der Anschluss zum Testen der Spannung schweben kann, habe ich einen Pulldown-Widerstand, um wilde Schwankungen (> 10 kΩ) zu stoppen
Nach einigen Nachforschungen stellte ich fest, dass die +5 V tatsächlich 4,75 V ausgaben, und änderte meine Skizze von
float v = (rawVIN*5.0)/1024.0;
zu
float v = (rawVIN*4.75)/1024.0;
und der Spannungswert auf dem Arduino war jetzt korrekt. Ich habe dies nicht getan, weil ich verstehe, was ich getan habe. Ich habe es getan, weil ich eine Ahnung hatte, dass es den Wert in den richtigen ändern könnte.