Go Down

Topic: Vin messen, nur wie? (Read 2050 times) previous topic - next topic

janneswa

Dec 19, 2017, 08:51 pm Last Edit: Dec 19, 2017, 09:10 pm by janneswa
Hallo, ich möchte die spannung eines 6V Blei-Vlies akkus messen, welcher das zum Messen verwendete Arduino Pro Mini 5V versorgt.

Habe nun mehrfach etwas von der 1.1V Referenzspannung gelesen, doch die Beispielsketche funktionieren bei mir nicht, die ausgegebenen Werte sind bei 5V (~5400mV laut readVcc Funktion) Versorgung jedoch höher als bei Versorgung mit dem 6V Blei Vlies Akku (~5400mV).. was mache ich falsch?

Hier das verwendete Sketch:

Code: [Select]


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);
  #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
    ADMUX = _BV(MUX3) | _BV(MUX2);
  #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
}



Vielen Dank für jegliche Hilfe.

Elektrix

Hallo,

wenn du eine Spannung messen willst, die höher ist als die Versorgungsspannung des Arduino brauchst du immer einen Spannungsteiler aus zwei Widerständen, um die Spannung zu reduzieren. Der AD-Wandler hat mehrere Betriebsarten, einmal kannst du die Versorgungsspannung (also 5V) als Referenz (=100%) nehmen oder die eingebaute Referenzspannungsquelle mit 1,1V. Das ist das, was ich machen würde, weil sonst deine Messung beeinflusst wird von Schwankungen der Versorgungsspannung. Also 6V Akkuspannung (max. wohl 7V wenn du ihn vollädst) runterteilen auf 1V, dann messen und den Wert ausrechnen.

Viele Grüße

Elektrix
My blog about arduino and Linux themes:
http://heliosoph.mit-links.info/

postmaster-ino

Hi

Wie meinen?

5400mA ist ein Strom, von 5,4A - also schon stattlich.
Das hat NICHTS mit einer Spannung zu tun, sofern Du nicht über einen Shunt diesen Strom 'siehst' (wobei ein Shunt auch 'nur' eine Spannung erzeugt, also irgend was mit Volt).

MfG
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

uwefed

#3
Dec 19, 2017, 09:10 pm Last Edit: Dec 19, 2017, 09:11 pm by uwefed
Du kannst den Arduino nicht direkt an den 6V Akku zur Spannungsversorgung anschließen. Für den 5V Eingang ist diese Spannung zu hoch und für den Vin Pin zu wenig.
Du brauchst einen DC/DC Wandler der mit 7,2V bis 4,8 V Eingangsspannung klarkommt.
Grüße Uwe

janneswa

Das pro Mini läuft am Raw pin mit 6.4V perfekt.

Meine Natürlich mV nicht mA..

Das mit der Referenzspannung klingt gut.. hatte ich soweit auch verstanden..
Nur so lege ich meine Spannung an? In dem Sketch ist nirgendwo ein Input angegeben oder irre ich mich und erkenne es nicht?

Danke für die schnellen Antworten.

postmaster-ino

Hi

Welcher µC ist auf dem Arduino Pro Mini verbaut?
In Dessen Datenblatt kannst Du sehen, was passiert, wenn Du die oben gezeigten Register so setzt.

Alternativ dort schauen, wo der Code her ist, Da sollte dazu schon was stehen.

MfG
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.
Große Buchstaben? Immer wieder, neben Punkt und Komma, gerne gesehen.

combie

Quote
Hier das verwendete Sketch:
Warum nicht analogRead().

Das fummeln an den Registern ist nicht unbedingt der falsche Weg, aber man sollte dann schon wissen, was man da tut.
Und die Frage nach dem Pin zeigt, dass du dafür noch etwas lesen werden musst.

Ja, die 1,1V Referenz ist schon richtig.
Und ein Spannungsteiler, so ca 10 zu 1.
Verwende eine Kalibrierung, z.B. die "Ein Punkt Kalibrierung" sollte hier reichen.
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
Quelle: Jean-Paul Sartre

RIN67630

#7
Dec 20, 2017, 08:52 am Last Edit: Dec 20, 2017, 09:22 am by RIN67630
Du kannst den Arduino nicht direkt an den 6V Akku zur Spannungsversorgung anschließen. Für den 5V Eingang ist diese Spannung zu hoch und für den Vin Pin zu wenig.
Du brauchst einen DC/DC Wandler der mit 7,2V bis 4,8 V Eingangsspannung klarkommt.
Grüße Uwe
Vin von Bleigel-6V Akkus versorgt, das mag auf dem Papier etwas Out of specs sein, immerhin bekommt der Nano/Uno damit mehr Vcc, als sonst von USB-versorgt. Läuft bestens.

Die Specs sind auch etwas kurios: Zwischen den Stromstecker und Vin liegt beim Uno eine Diode, die 0,6 V Spannungsabfall einbringt, so muss auch unterschieden werden, ob der Arduino über Stecker oder über Vin versorgt wird. Dieser Unterschied gibt es in der Specs nicht.

ElEspanol

Die Specs vom Atmel Chip haben auch keine Ahnung, dass der Chip auf einem Arduino Board steckt.
Was sagen die Specs vom Arduino Board?

janneswa

Die Specs vom arduino Board sagen geht fit :D

uwefed

Das pro Mini läuft am Raw pin mit 6.4V perfekt.
Ok beim Mini PRO ist es anders als beim UNO.
Aber ein Bleiakku hat nicht immer 6,4V.
Die Entladeschlußspannung beträgt 1,75V pro Zelle und damit 5,25V für einen 6V Akku.

Grüße Uwe

janneswa

Das ist kein Problem, das ganze arbeitet mit einem gsm modul welches täglich eine Status SMS versendet die Guthaben und Akkustand enthalten soll.. wird die akkuspannung zu gering wird der Akku aufgeladen.

Dafür benötige ich die Spannungsmessung.

Whandall

Vin von Bleigel-6V Akkus versorgt, das mag auf dem Papier etwas Out of specs sein, immerhin bekommt der Nano/Uno damit mehr Vcc, als sonst von USB-versorgt.
Wie kommst du auf das dünne Brett?

Bei USB Betrieb ist Vin unbeschaltet, die 5V vom USB gehen zu 5V, also hinter den Regler.
1 V Spannungsdifferenz reichen für den linearen Regler nicht (sagt die Spezifikation).

Quote
Input Voltage    7-9 V
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

uwefed

@Whandall

https://www.arduino.cc/en/uploads/Main/Arduino-Pro-Mini-schematic.pdf

Der Arduino PRO MINI hat einen MIC5205 Spannungsstabilisator. Dieser gibt max 160mA bei 0,35 V Dropout.

Also reichen 6V aber 5,25 bei leeren wahrscheinlich Akku nicht.

Grüße Uwe

RIN67630

@Whandall

https://www.arduino.cc/en/uploads/Main/Arduino-Pro-Mini-schematic.pdf

Der Arduino PRO MINI hat einen MIC5205 Spannungsstabilisator. Dieser gibt max 160mA bei 0,35 V Dropout.

Also reichen 6V aber 5,25 bei leeren wahrscheinlich Akku nicht.

Grüße Uwe

Es blieben dann immer noch 4,9V Vcc. Also deutlich mehr, als mit USB versorgt.

Go Up