Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Interne BANDGAP-Spannungsreferenz Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 5.04.2012 22:15)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Mini M-Unit, Open-Mini Station, sonstige
Hallo zusammen,

der QB8-Controller, auf dem die Open-Midi und Open-Macro basieren, besitzt eine interne BANDGAP-Spannungsreferenz. Sie kann genutzt werden, um die Betriebsspannung zu überwachen. Der folgende Sourcecode demonstriert, wie auf der Open-Macro die aktuelle Betriebsspannung als Kommazahl auf der seriellen Schnittstelle ausgegeben werden kann. Außerdem werden zwei Möglichkeiten vorgestellt, mit denen eine Multiplikation mit der Kommazahl 1.25 durchgeführt wird.

' ---------------------------------------------------------------------------
' Interne BANDGAP-Spannungsreferenz auf der Open-Macro nutzen
' In OCBASIC 1.08a von Dietmar Harlos am 5. April 2012
' ---------------------------------------------------------------------------

INCLUDE "omac.def"

DIM w1, w2 WORD
DIM z BYTE

DEFINE BANDGAP AD[15]      'BANDGAP REF (typ. 1.245 Volt +/- 6%)
DEFINE VREFH   AD[18]      'VREFH (VDD, Betriebsspannung)

ADCLK=&b00110110           'AD-Wandler auf 10 Bit umschalten

WHILE TRUE
  PRINT
  PRINT "AD[15]=BANDGAP REF=";BANDGAP
  PRINT "AD[18]=VREFH=";VREFH
  PRINT

  ' Die aktuelle Betriebsspannung kann mit folgender Formel ermittelt werden:
  ' UB = 1.245 * VREFH / BANDGAP

  ' Hier wird der Einfachheit halber mit 1.25=5/4 statt 1.245 multipliziert:
  ' UB = (5*VREFH) / (4*BANDGAP)

  w1=5*VREFH               'auch möglich: w1=VREFH+(VREFH SHR 2)
  w2=4*BANDGAP             '              w2=BANDGAP

  ' Jetzt die aktuelle Betriebsspannung als Kommazahl ausgeben:
  PRINT "Betriebsspannung: ";w1/w2;".";
  FOR z=1 TO 4
    w1=(w1 MOD w2)*10
    PUT w1/w2+ASC("0")
  NEXT z
  PRINT " Volt (+/- 6%)"

  PAUSE 25
WEND

Viel Spaß mit den OM-Controllern

Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten: