PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spannung ermitteln - brauche Hilfe



coCo
18.09.2006, 20:44
Hi,
ich wollte den Akkustand mit dem Mega32 auslesen. An PA6 hab ich einen 22k Widerstand gegen +UB und einen 4,7k gegen Masse (so wie beim RN-Control).

Ich habe die Funktion aus dem microcontroller.net AVR-GCC Tutorial übernommen.

uint16_t ADC(uint8_t port) {

uint16_t result = 0;
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

ADMUX = port;

ADMUX |= (1<<REFS1) | (1<<REFS0);


ADCSRA |= (1<<ADSC);
while ( ADCSRA & (1<<ADSC) ) { }


ADCSRA |= (1<<ADSC);
while ( ADCSRA & (1<<ADSC) ) { }
result = (ADCH << 8) + ADCL;

ADCSRA &= ~(1<<ADEN);

return result;

}



main():


uint16_t spannung = ADC(6);

spannung = spannung * (5/1024) * 5.2941;


Danach wird das dann über RS232 ausgegeben. Es wird aber immer nur ne 0 ausgegeben. :/

Die 5 Taster mit der Funktion abfragen funktioniert, aber mit der Spannung klappts net :(

Vielen Dank schonmal für eure Hilfe!

MfG

ogni42
18.09.2006, 21:19
Rechne erst mal alle Multiplikationen und dann die Division.

coCo
18.09.2006, 21:50
Hi,
ich hab das jetzt so gemacht:



float spannung(void) {

uint16_t spannung = _ADC(6);
float ausgabe;

ausgabe = (float)spannung * (5.0/1024.0) * 5.2941;

return ausgabe;

}


Jetzt klappts echt gut :)

Vielen Dank für deine Hilfe!

MfG