Die 4,5V am Mega8 sind ok, der kann auch mit deutlich weniger arbeiten. Zuerst verabschiedet sich wohl die IR-Kommunikation wenn die Bordspannung extrem niedrig ist.
Das Problem ist die Batteriefunktion im Bootlader des asuro. Hierbei wird die Spannung (mit interner 2,56V-Referenz) gemessen. Da der Bootlader nicht öffentlich ist habe ich mich mal am Bootlader auf Henks Site orientiert: http://home.planet.nl/~winko001/Asur...uBtlPagFrm.htm
Hier wird in asm_main.s die Batteriespannung überprüft:
Code:
batt_loop:
sbic IO_REG(ADCSRA), ADSC
rjmp batt_loop
in temp1, IO_REG(ADCL)
in INT_REG_H, IO_REG(ADCH)
clr INT_REG_L
add INT_REG_L, temp1
adc INT_REG_H, r1
subi INT_REG_L, lo8(BATT_MIN)
sbci INT_REG_H, hi8(BATT_MIN)
brcc batt_ok // spannung ok!
/*
versorgungs-spannung zu gering
*/
sbi IO_REG(PORTD), PD6
batt_ok:
Wobei der Vergleichwert in asm_include.h definiert ist:
Code:
#define BATT_MIN 770 // minimalster batterie-wert ca. 4,2V
Nicht verwirren lassen! Bei 2,56V Referenz (kann allerdings schwanken!) und 10 ADC-Auflösung würde die Überwachung bei unter
2,56V/1024*770 = 1,925V
ansprechen. Wobei ich davon ausgehe das auch der orginale Bootlader auf den selben Wert prüft.
Der Spannungsteiler R11,12 und 13 bestimmt die Höhe der Spannung an Pin28:
4,5V / (0,1kOhm+12kOhm+10kOhm) * 10 = 2,03V
Wenn man R12 und R13 tauscht würde man die Messspannung etwas anheben:
4,5V / (0,1kOhm+12kOhm+10kOhm) * 12 = 2,44V
Allerdings darf die Spannung am ADCPin nicht höher als die Referenz werden:
5,0V / (0,1kOhm+12kOhm+10kOhm) * 12 = 2,71V!
5,5V / (0,1kOhm+12kOhm+10kOhm) * 12 = 2,99V!
Das scheint alles etwas riskant. Besser wäre wohl den 12K-Widerstand durch 10k zu ersetzen:
4,5V / (0,1kOhm+10kOhm+10kOhm) * 10 = 2,24V
5V / (0,1kOhm+10kOhm+10kOhm) * 10 = 2,49V
5,5V / (0,1kOhm+10kOhm+10kOhm) * 10 = 2,73V!
Bevor du aber nun was änderst solltest du mal abwarten ob noch eine andere Meinung abgegeben wird. Möglicherweise streut die interne Referenz deines Mega8.
Gruß
mic
Lesezeichen