-
        

Ergebnis 1 bis 8 von 8

Thema: Denkfehler bei Spannungsmessung über AD-Wandler ???

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2007
    Beiträge
    6

    Denkfehler bei Spannungsmessung über AD-Wandler ???

    Anzeige

    hi,
    ich möchte mit einem ATmega8 über den AD wandler eine spannung messen.
    hab dazu einen Spannungsteiler mit

    +Vcc
    |
    12k
    |
    +---->ADC5
    |
    10k
    |
    GND

    bekomm auch sinnvolle werte raus, nur beim umrechnen auf die spannung hängts iwo.

    ich möchte Vcc ermitteln, mit dem der uC betrieben wird, um rechtzeitig zu erkennen wenn der akku leer wird.
    AVcc hängt aber auch an Vcc. somit lande ich immer in einer sackgasse.

    über
    Ua/Ue = R2 / (R1 + R2) gehts nich da beide Spannungen "unbekannt" sind.
    mit Ue = 1023 / ADC5 * Ua geht auch nicht.

    vllt kann mir jemand hier n fertigen rechenweg aufschreiben oder anderweitig
    helfen. Iwo muss sich doch der Denkfehler verstecken.

    Danke

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    04.09.2004
    Ort
    Bürstadt
    Alter
    30
    Beiträge
    383
    Also:

    Vref /1023 * ADCwert = Ua

    Der Rest müsste mit der Spannungsteilerregel wie du oben beschrieben hast gehn!

    MfG
    Ringo
    Nobody is Perfect
    Visit www.ringo.roboterbastler.de last update: 23.05.2009

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    25.08.2004
    Ort
    Planegg
    Beiträge
    96
    Wenn Deine Referenz auch an VCC hängt, kann das nicht funktionieren. Du brauchst eine unabhängige Referenz. Du könntest z.B. statt dem unteren Widerstand eine Zenerdiode als Referenz reinhängen. Wenn der AD-Wert steigt, weisst Du, dass deine AVCC sinkt. Die entsprechenden Gleichungen stehen schon oben.
    mfg beppo

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2007
    Beiträge
    6
    mein problem ist das Vref auch die gesuchte größe ist. somit wird des wohl nicht gehn.

    kann ich dann nich einfach auf des interne Vref von 2,56V umschalten oder darf dann an AVCC keine spannung anliegen ?
    hier mal der schaltplan.

    an ADC5 wird die spannung gemessen.

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Bei Ubat=5,5V (volle Akkus) und Spannungsteiler 12/10 (=6/5) wird die Spannung am ADC maximal 2,5V (5,5/11*5). Man könnte vielleicht vorsichtshalber 15/10 wählen, dann dürfte aber nichts mehr passieren und die 2,56V interne Referenz wäre ok.

    Noch 'ne Ergänzung:
    ...and the reference
    voltage can be made more immune to noise by connecting a capacitor between the
    AREF pin and ground.

    ...

    If no external voltage is applied to the AREF pin, the user may switch
    between AVCC and 2.56V as reference selection.
    Steht im Datenblatt auf Seite 201. Wenn also am AREF keine externe Spannung angeschlossen ist, kann man zwischen Vcc und 2,56V wählen. Und man kann einen Kondensator zur Rauschunterdrückung an Pin AREF anschliessen. Beim asuro ist das so.

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.08.2004
    Ort
    Planegg
    Beiträge
    96
    Mit interner Referenz ist die Messung von VCC kein Problem. Du musst die VCC halt per Spannungsteiler runterteilen (muss kleiner als Vref sein) und dann per Software wieder draufmultiplizieren. Ich kenn den Atmega nicht aber normalerweise muss die Spannung an AVCC bleiben. Da hilft dir aber das Datenblatt.

    mfg beppo

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Am einfachsten ist es die AVCC an AREF zu legen und die interne BG-Spannung messen. Siehe Datenblatt Seite 203.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2007
    Beiträge
    6

    FERTIG

    So vielen dank, nun gehts.
    habs wie folgt gelöst:
    Vref intern genommen. 2,56V
    Ue = Vref / 1023 * ADC5_wert * ( 1+ R1 / R2 )

    Code:
    #define R1 12		// 12k
    #define R2 10		// 10k
    #define Vref 2.56	// Internal 2.56V Voltage Reference
    
    // Ue = Vref / 1023 * ADC5_wert * ( 1+ R1 / R2 )
    float BatPower(){ 
    
    	// REFS0=1; REFS1=1; MUX0=1; MUX2=1
    	ADMUX |= 0b11000101;
    	ADCSRA |= (1 << ADSC);							// Start conversion
    	while (!(ADCSRA & (1 << ADIF)));				// wait for conversion complete
    	ADCSRA |= (1 << ADIF);							// clear ADCIF
    
    	return( (float)Vref / (float)1023.0 * (float)(ADCL + (ADCH << 8)) * ( 1+ (float)R1 / (float)R2 ) );
    }

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •