Referenzspannung 1.1 im Attiny85

Hallo Zusammen,

durch die Referenz des internen Spannung INTERNAL1V1 möchte ich die Spannung VCC messen. Beim Arduino Mega funktioniert das so ganz gut. Ziel des Ganzen ist es die Versorgungsspannung (Lilo-Akku) zu messen und bei Unterschreitung per LED zu melden.

Das Ganze soll mit einem Attiny85 laufen. Hier funktioniert das ganze nicht so richtig. Sporadisch fängt die LED zu blinken. Vorallem wenn ich das Gehäuse des Attiny mit dem Finger anfasse.

Ich kann die Spannung sogar auf 1.8V stelle und das Programm schon bei unter 3V melden soll bleibt die LED aus. (INTERNAL1V1, INTERNAL2V56, und INTERNAL… alles schon versucht)

void setup() {

int mfl = 0; 

pinMode(mfl, OUTPUT);
pinMode(mfs, OUTPUT);

}

void loop() 
{
int mfl = 0;




int voltage = 1.1 * 1024  / analogRead(INTERNAL1V1);
  

if (voltage < 2.5)
{
digitalWrite(mfl, HIGH);
while (voltage < 3.5)
{
digitalWrite(mfl, HIGH);  
}
else
{
digitalWrite(mfl, LOW);
}
}

DANKE!

analogRead(INTERNAL1V1)

Die Referenzspannung wird mit analogReference() gesetzt: http://arduino.cc/en/Reference/AnalogReference

Bei analogRead() übergibst du nur die Pin-Nummer auf der du messen willst.

Danke für die schnelle Antwort.

analogReference(INTERNAL1V1) So wie ich das verstanden habe, ist dann jede Spannung höher 1.1 V immer 1023. So hat das zumindest mein MEGA am LCD ausgegeben.

Nicht jeder Microcontroller hat alle Referenzspannungen. Du mußt schon das Datenblatt bemühen und dei Register gezielt setzen.

Grüße Uwe

Ich habe leider nichts gefunden. Ich möchte sie 1.1V Spannung einlesen, um auf die Batteriespannung zu schließen. Was muss ich denn dazu machen? Danke!

uwefed:
Nicht jeder Microcontroller hat alle Referenzspannungen. Du mußt schon das Datenblatt bemühen und dei Register gezielt setzen.

Grüße Uwe

ADMUX |= (1<<REFS1);

Ob der Attiny 85 beide Referenzen hat habe ich im Datenblatt gefunden. Ich verstehe nur nicht wie ich die Spannung auslese. Mit analogRead(INTERNAL1V1) hat es beim Mega super funktioniert. |500x281

Mit analogRead(INTERNAL1V1) eher nicht. Die stelle des Datenblattes ist schon richtig.
Aber bei dem Attiny handelt es sich um eine von vielen Baugruppen, die offiziel von Arduino nicht unterstützt werden. Das kommt erst du 3rdPartyAddons. Ob sich diese immer verstehen sei dahin gestellt.

Irgendwo auf den Seiten steht dann auch, in welchem Register du entsprechende Bits setzen musst. In diesem Fall ist es ADMUX.

void setup()
{
ADMUX |= (1<<REFS1); // INTERNAL1V1
}

void loop()
{
/...
}