mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Versorgungsspannung mit Z-Diode ermitteln?


Autor: Qui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich stehe vor folgender Aufgabe:
Ich will mit einem AVR die Höhe der anliegenden Referenzspannung messen.
Die Referenzspannung kann entweder 3,3V oder 5V betragen. Ich will nur 
messen welche der beiden Spannungen anliegt, wie groß die Spannung 
genau ist ist unwichtig.

Der ADC kann jedoch nicht verwendet werden. Auch habe ich nur extrem 
wenig Platz auf der Platine wesshalb weitere ICs nicht montiert werden 
können.


Ich habe mir nun folgende Schaltung ausgedacht:


AVR-PIN -------|>|-----------> 3.3V
           |
           R
           |
          GND


Das "|>|" soll eine Z-Diode darstellen und mit sagen wir 4,1V 
dimensioniert sein, R hat 100kOhm.

Bei 3,3V sperrt die Diode noch und der AVR wird durch den Widerstand auf 
GND gezogen, bei 5V jedoch bricht die Diode durch und ich habe die 5V am 
Pin liegen.


Funktioniert das so?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

solange Du den AVR-Pin nicht gegen Masse ziehst, ist das ok.
Ich würde noch einen Widerstand in Serie zur Diode hinzufügen, damit sie 
auf keinen Fall kurzgeschlossen werden kann.


Gruß,
  Michael

Autor: fidibus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
musst glaube die Masseverbindung entfernen, da der Einganswiderstand 
deines AVR höher sein wird als das Drahtbrückchen zu Masse.

MfG

Autor: fidibus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sry, hab den r nicht gesehen :=)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bei 3,3V sperrt die Diode noch und der AVR wird durch den Widerstand auf
>GND gezogen, bei 5V jedoch bricht die Diode durch und ich habe die 5V am
>Pin liegen.

>Funktioniert das so?

Nein, bei 5V leitet die Diode, aber es fallen 4,1V an ihr ab.
Der AVR sieht nur 0.9V.

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Zenerdiode hat keine solche Kennlinie, die "bricht" nicht ein!
Am Widerstand würden bei 5V 0,9V anliegen, wenn es eine 4,1V Z-Diode 
gäbe und wenn sie bei einem derart kleinen Strom bereits ihren Wert 
erreicht hätte.

Vorschlag: du nimmst einen NPN-Transistor, Basis über Z-Diode 3,6V an 
VRef und über 680 Ohm an GND (1mA muss schon fließen, damit die Z-Diode 
überhaupt ihre Spannung erreicht). Emitter an GND, Kollektor an den 
Port, Port als Eingang mit Pullup konfigurieren.

Wenn deine Referenz das eine mA nicht liefern kann: dann müssen wir uns 
etwas anderes überlegen.

Jeder (?) AVR hat auch einen Analog-Komparator, der bei etwa 1,1V 
schaltet.
Wenn der noch frei ist, VRef über Spannungsteiler dort anschließen. 
keine Z-Diode verwenden.

Grüße, Peter

Autor: Nico Erfurth (masta79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Qui wrote:

> Der ADC kann jedoch nicht verwendet werden. Auch habe ich nur extrem
> wenig Platz auf der Platine wesshalb weitere ICs nicht montiert werden
> können.

Welchen AVR hast du denn? hat der keinen eingebauten ADC/AC?
Über einen Spannungsteiler am entsprechenden A(D)C Pin sollte sich das 
recht einfach mit Bezug auf die interne Referenz realisieren lassen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm doch einen zweiten ADC Eingang. Dort Spannungteiler
von 5V aus anlegen. Auf 2.5V einstellen für den zweiten Eingang.
Spannung am Spannungsteiler messen. Je nach Referenzspannung
bekommst du einen anderen Wert (bei 3.3V höher).

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher AVR-Typ? ADC geht nicht weil voll belegt oder weil nicht 
vorhanden?

Falls ADC vorhanden, aber alles belegt:
AVCC als Referenz, und den MUX auf die bandgap-Spannung (aus der wird 
die intere Referenz erzeugt) legen (MUX4..0 auf 11110). Die 
bandgap-Spannung bleibt konstant, die AVCC-Spannung änder sich. Und 
schon kannst du ohne ein einziges externes Bauteil die Betriebsspannung 
deines AVRs messen.

Autor: Qui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Hilfe!

Ich verwende einen ATmega8. Der hat natürlich einen ADC. Den wollte ich 
jedoch ungern verwenden weil der AVR sehr zeitkritische Ereignisse 
handhaben muss.

Allerdings fiel mir nun ein einfach beim Programmstart in der 
Initialisierung die Spannungen durch den ADC prüfen. Die 
Versorgungsspannung bleibt konstant (also entweder 3.3V oder 5V, nie ein 
laufender Wechsel im Betrieb).



Also stellt sich noch die Frage, wie ich die Versorgungsspannung mit dem 
ADC messen kann. Ein Spannungsteiler teilt ja immer im selben 
Verhältnis, das bringts also nichts.

Bliebe noch die interne Referenzspannung, die ja soweit ich weis 
konstant bei 2.56V bleibt. Oder ist die auch variabel?

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du muss nicht unbedingt in ner Warteschleife hängen, bis der ADC fertig 
ist. Du kannst auch nen Interrupt auslösen lassen und zwischendurch was 
anderes tun.

Die interne Referenz bleibt im gesamten Betriebsspannungsbereich 
konstant.

Autor: Qui (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh super, dann mach ich das so! :-)
Problem gelöst. Vielen Dank für eure Hilfe.

Schönes Wochenende noch!

Autor: Nico Erfurth (masta79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Qui wrote:

> Ich verwende einen ATmega8. Der hat natürlich einen ADC. Den wollte ich
> jedoch ungern verwenden weil der AVR sehr zeitkritische Ereignisse
> handhaben muss.

Den Analog Comparator kannst du über ein status-flag (ACO) in ACSR 
auswerten.
Einfach interne Bandgap Referenz verwenden und an AIN1 über einen 
Spannungsteiler an VCC anlegen. Den Spannungsteiler legst du so aus das 
ein VCC von ca. 4V deiner Referenzspannung entspricht.

Jetzt nur noch AC0 auswerten, daran erkennst du dann ob du über oder 
unter 4V hast.

> Also stellt sich noch die Frage, wie ich die Versorgungsspannung mit dem
> ADC messen kann. Ein Spannungsteiler teilt ja immer im selben
> Verhältnis, das bringts also nichts.

Doch? Du musst das Maximum am Eingang ja auf die interne Referenz 
runterbringen, also bei den 2.56V wäre ein Teiler von 1:1 ok.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die Versorgungsspannung bleibt konstant (also entweder 3.3V
>oder 5V, nie ein laufender Wechsel im Betrieb).

Das hättest du ja auch gleich sagen können.
Die meisten dachten wahrscheinlich du schaltest die
Spannung an AREF um.

>Ich will mit einem AVR die Höhe der anliegenden Referenzspannung messen.

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wenns wirklich nur diese Unterscheidung 3,3 oder 5 sein soll, 
probier doch mal die bandgap-Messung aus. Braucht nicht mal nen 
Spannungsteiler. Eine Grenze von 4V entsprechen bei meinen Mega32 einem 
Messwert von 310.

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ansonsten geht auch ein TL431 und 3 Widerstände.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.