Allgemeines zur
Referenzspannungsquelle
imögliche
Spannungen
Programmierung
der Referenzspannungsquelle
Beispiel
Allgemeines zur Referenzspannungsquelle
Alle PICs die mit analogen Komparatoren ausgestattet sind, besitzen auch eine interne Referenzspannungsquelle. Das sind insbesondere die Typen
Dagegen haben die Typen PIC16F84(a) und PIC16F87x keine Komparatoren und keine Referenzspannungsquelle. Für diese Typen trifft dieser Abschnitt also nicht zu!Die Referenzsspannungsquelle ist ein per Software gesteuerter Spannungsteiler, der am Pin RA2 oder für die Komperatoren einen bestimmten Bruchteil der Betriebsspannung Vdd bereitstellt. Die Referenzspannung ist also nur so stabil, wie die Betriebsspannung. Sie eignet sich also nicht als Referenz für 10-Bit-ADCs. Trotzdem lassen sich insbesondere im Zusammenspiel von Referenzsspannungsquelle und Komparatoren viele hübsche Sachen anstellen, wie z.B. Spannungsmessungen oder Spannungsvergleiche.
Die Referenzsspannungsquelle kann in
zwei
Modes Arbeiten: Low Range oder High Range. Zwischen den beiden
Modes
wird mit dem Bit VRR im Register VRCON umgeschaltet. In
jedem Mode kann der Spannungsteiler der Referenzspannungsquelle eine
vom 16
möglichen
Spannungen ausgeben. Welche der 16 Spannungen ausgegeben wird stellt
man
mit den Bits VR3 ..VR0 im Register VRCON ein.
Diese
4 Bits stellen die Zahl VR dar, die auf Werte von 0 bis 15 programmiert
werden kann.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nebenstehende Abbildung stellt
den Aufbau
dar. Kern ist ein 16-stufiger Spannungsteiler aus 16 gleichen Widerständen. Ein ebenfalls 16-stufiger Umschalter wählt eine der Spannungen zwischen den Widerständen als Referenzspannung aus. VREN schaltet die
Baugruppe ein Da die Widerstände einen recht hohen Widerstand haben (R = 2kOhm) darf der Ausgang nicht belastet werden (nur im µA-Bereich). Wer die Spannung für etwas Anderes benutzen möchte als als Referenzspannung für einen hochohmigen OPV-Eingang, der muss sie erst noch verstärken. |
Wie man aus der obrigen Tabelle entnehmen kann, ist die Referenzspannungsquelle keine Referenzspannungsquelle im messtechnischen Sinne. Vielmehr weist sie exemplarabhängig recht große Fehler in der Ausgangsspannung auf (>50 mV).
Programmierung der Referenzspannungsquelle
Die Programmierung der Referenzspannungsquelle erfolgt im Register VRCON, das z.B. beim 16F62x auf Adresse 9Fh liegt.
VRCON REGISTER (ADDRESS 9Fh):
bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | |
Name: | VREN | VROE | VRR | - | VR3 | VR2 | VR1 | VR0 |
Wert: | 0 oder 1 | 0 oder 1 | 0 oder 1 | x | 0 oder 1 | 0 oder 1 | 0 oder 1 | 0 oder 1 |
VREN (Vref enable)
Mit diesem Bit wird die
Referenzspannungsquelle
eingeschaltet
Beim 12F6xx liegt VRCON auf der Adresse 99h. Der 12F6xx kann die erzeugte Spannung nicht an einem Pin ausgeben, sondern sie nur für den Komperator nutzen. Folglich ist dort das Bit VROE nicht definiert.
Wenn man die erzeugte Spannung an RA2 ausgeben will, so muss dafür gesorgt werden, das RA2 als Input eingestellt ist, ansonsten hat die relativ stromschwache Referenzspannungsquelle keine Chance gegen die relativ starken digitalen Ausgangstreiber des Pins. Man kann zwar nichts beschädigen, aber am RA2 würde man nur den digitalen Pegel des Bits PORTA,2 messen können.
Wie die Referenzspannung bei Bedarf zu den Komparatoren kommt, darum kümmern sich die Komparatoren schon allein.
Nach jeder Änderung der
Vref-Einstellung
sollte man der Referenzspannungsquelle 10 µs Zeit lassen, um die
gewünschte Spannung einzustellen.
Folgendes Beispiel stellt eine Spannung von 3,125 V (bei Vdd = 5 V) am Pin RA2 ein. Dazu wird im Low-Range-Mode mit VR=15 gearbeitet
5V / 24 x 15 = 3,125 V
BSF
STATUS,RP0
;
Bank 1 BSF TRISA,2 ; RA2 ist digital-input MOVLW B'11101111' ; enable VREF, RA2-output, VR=15 MOVWF VRCON ; low range mode BCF STATUS,RP0 ; Bank 0 CALL DELAY10 ; 10µs warten |
Beispiel für die Referenzspannungsquelle
Das folgende Beispiel (identisch
mit diesem Lernbeispiel) gibt am Pin RA2 eines 16F628 eine
Sägezahnspannung
von 0 V bis 3,125V aus. Das dauert jeweils 4 Sekunden, und
beginnt
dann von vorn. Am PortB werden zur Kontrolle die aktuellen Werte von VR
ausgegeben, und können auf Wunsch mit LEDs angezeigt werden.
Am Besten benutzt man ein
Digital-Voltmeter
mit Bargraph-Anzeige oder einen Oszi zur Darstellung des Ausgangswerts
an RA2.
Einfache Digitalvoltmeter sind bei so
schnellen Änderungen schwer ablesbar. Voltmeter mit
Zeigerinstrument
stellen die Änderung wunderbar dar, allerdings belasten sie die
Referenzspannungsquelle
zu hoch. Folglich zeigen sie eine zu geringe Spannung an.
list
p=16f628 ;************************************************************** ;* Pinbelegung ;* ---------------------------------- ;* PORTA: 0 - ;* 1 - ;* 2 > Spannungsausgang ;* 3 - ;* 4 - ;* 5 < MCLR ;* 6 > OSC2 ;* 7 < OSC1 ;* ;* PORTB: 0 > LED ;* 1 > LED ;* 2 > LED ;* 3 > LED ;* 4 - ;* 5 - ;* 6 - ;* 7 - ;* ;************************************************************** ; ;sprut (zero) Bredendiek 01/2003 ; ; Sägezahn mit der Referenzsspannungsquelle am Port RA2 ; Spannung steigt in 4 Sekunden von 0V auf 3,125 V ; ; Prozessor 16F628 ; ; Prozessor-Takt 10 MHz ; ; LED-Zeile am PortB ; ;************************************************************** ; Includedatei für den 16F628 einbinden #include <P16f628.INC>
ERRORLEVEL
-302
;
SUPPRESS
BANK SELECTION MESSAGES ; Configuration festlegen:
; Constanten festlegen ; Variable festlegen ;**************************************************************
org 0 ;**************************************************************
init clrf counter ;Hauptprogrammschleife
movlw
B'11100000'
movlw
D'255'
;
250
ms Pause
incf
counter,
f
goto
mainloop ;*****************************************************
WAIT end |