- LiTime Speicher und Akkus         
Ergebnis 1 bis 1 von 1

Thema: AVRs ADC mißt Vcc ohne ADC-Eingangspin

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.702
    Blog-Einträge
    133

    AVRs ADC mißt Vcc ohne ADC-Eingangspin

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Im Internet findet man Hinweise und Beschreibungen um mit einem AVR ohne Nutzung eines ADC-Eingangspins die EIGENE Versorgungsspannung zu messen. Ausgenutzt wird dafür die Möglichkeit die interne Bandgapreferenzspannung wie einen ADC Eingangspin zum Messen an den ADC anzuschalten.

    Dazu hier ein Codeschnipsel mit Bascom für einen ATmega88. Mit dem ADC-Meßwert wird Vcc berechnet und auf eine Kommastelle gerundet über UART ausgegeben.

    Als Referenzspannung für den ADC wird Avcc eingestellt und dann die µC-eigene interne Bandgapreferenz gemessen. Verändert Vcc sich zB durch leer werdende Akkus bleibt die Bandgapreferenz trotzdem relativ sehr stabil.Mit der stabilen Bandgapreferenz läßt sich dann die tatsächliche Avcc, die ja gleich der Versorgungsspannung ist, bestimmen.

    Der ADC Meßwert, der im ADCH/ADCL Register erscheint, bestimmt sich laut Datenblatt mit:
    ADC = Vin * 1024 / Vref
    Vin = Spannung am ADC Eingang, Vref = Referenzspannung.
    Der höchste anzeigbare ADC-Wert von 1023 steht für Vref minus 1 LSB (laut DB).

    Zur Bestimmung von Vcc, die ja durch die ADC Konfiguration gleich Vref ist, ist die Formel nach Vref umzustellen. Vin, die Bandgapreferenz ist mit 1,1V bekannt.
    Vref = Vin * 1024 / ADC
    Vref = 1,1V * 1024 / ADC


    Code:
    '#########################################################################################
    '###                                                                                   ###
    '###   VCC-MESS.BAS                                                                    ###
    '###   ATmega88                                                                        ###
    '###   Demo zum Messen von Vcc mittels ADC ohne Nutzung eines ADC-Eingangspins         ###
    '###                                                                                   ###
    '###   Ausgenutzt wird die Möglichkeit die interne Bandgapreferenzspannung wie einen   ###
    '###     ADC-Eingangspin zum Messen an den ADC anzuschalten. Als Referenzspannung für  ###
    '###     den ADC wird Avcc konfiguriert und daraus die tatsächliche Vcc berechnet.     ###
    '###                                                                                   ###
    '###   IDE: Bascom Demo Version 2.0.7.5                                                ###
    '###   Author: Searcher  (User im www.roboternetz.de)                                  ###
    '###                                                                                   ###
    '#########################################################################################
    
    $regfile "m88def.dat"
    $crystal = 8000000
    $hwstack = 34
    $swstack = 32
    $framesize = 32
    $baud = 9600
    
    Dim Supply_voltage As Single
    Dim Adc_result As Word
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'Konfiguration des ADC mit Vcc als Referenz
    
    Do
      Adc_result = Getadc(14)                                   'Dummy Messung auf MUX Kanal 14, der internen Bandgap Referenzspannung (1.1V)
      Waitms 1                                                  'Stabilisierungszeit für Bandgap Spannung
      Adc_result = Getadc(14)                                   'Mit gültiger Messung die erste Messung verwerfen
    
      Supply_voltage = 1126.4 / Adc_result                      'Errechnen von Vcc (1024*1.1/ADC)
    
      Wait 1                                                    'Verlangsamung der Loop zur Betrachtung der Meßwerte
      Print Fusing(supply_voltage , "#.#")                      'Ausgabe des gerundeten Wertes über UART
    Loop
    
    End                                                         'end program

    Die Bandgapreferenz wird beim ATmega88 über Kanal 14, im obigen Programm mit Getadc(14) gemessen. Ausschnitt aus Datenblatt:
    Bild hier  

    Beim zB ATtiny24/44/84 findet sich im Datenblatt noch der Hinweis, daß nach Auswählen der Bandgap als Eingang für den ADC eine Stabilisierungszeit nötig ist.


    Gruß
    Searcher
    Geändert von Searcher (21.01.2015 um 18:12 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Phototransistor an Porterweiterung ohne ADC
    Von MW23 im Forum Elektronik
    Antworten: 27
    Letzter Beitrag: 16.05.2014, 07:40
  2. Antworten: 0
    Letzter Beitrag: 29.02.2012, 15:39
  3. [ERLEDIGT] VCC mit ADC von µC messen ?
    Von PICture im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 19.10.2011, 13:38
  4. ADC-Wert ohne Signal
    Von pacer_one im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 03.03.2008, 20:45
  5. ATmega8 OHNE RESET-Leitung auf Vcc
    Von maddav2005 im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 01.06.2006, 09:16

Berechtigungen

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

LiTime Speicher und Akkus