Forum: Mikrocontroller und Digitale Elektronik AVR Spannungsmessung Messbereich


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von BetonMicha (Gast)


Lesenswert?

Hallo an alle.

Ich möchte mit einem AVR (erstmal ATmega32) eine Spannung messen. Das 
stellt kein Problem dar. Ich wollte nun aber eine automatische 
Bereichseinstellung hinzufügen. Hab auch schon ein bisschen nachgedacht, 
kann aber jetzt keinen Schaltplan hochladen, weil mein Eagle zu Hause 
ist.

Ich erkläre mal was ich mir vorgestellt habe:

1. Ue von 0..50V
2. Spannungsteiler 9:1, damit ich auf maximal 5V runter komme
3a. Wenn Signal größer 1V -> direkt auf den Port vom Controller 
(inklusive Schutz)
3b. Wenn Signal kleiner 1V -> Verstärkung von 5 mit nicht invertierendem 
Verstärker.

Jetzt möchte ich aber nur einen Pin vom uC verwenden. Ich müsste ja eine 
Art Umschalter (CMOS analog Schalter oder MOSFET?) verwenden. Oder 
könnte man das anders lösen?

Im uC würde ich dann den oberen Bereich überprüfen, wenn kleiner als 1V 
auf den kleineren umschalten. Bekomme ich da über die Verstärkung eine 
gute Auflösung hin?

Gruß Micha

von Purzel H. (hacky)


Lesenswert?

3 Moeglichkeiten mit 1 Pin unterscheiden ... was soll das ?

von BetonMicha (Gast)


Lesenswert?

Mein Plan war, den größten Messbereich einzustellen. Dann Ergebnis 
auswerten. Wenn kleiner als 1V. Messbereich runterstellen und neu 
messen. Wenn größer 1V dann Ergebnis verwenden.


Also doch besser zwei Pins? einen für den kleinen Messbereich unter 1 
Volt und einen für über einen Volt?

Und dann einfach beide auswerten und das "bessere" Ergebnis benutzen?

von Floh (Gast)


Lesenswert?

Wenn du mehrere ADC-Eingänge hast, kannst du das wie ein Multimeter 
machen:

Eingang ----- 90k -----o------- 9k ----o----- 1k ----- Masse
                       |               |
                     ADC1            ADC2

ADC1 misst mit Teilverhältnis 10:1, ADC2 mit 100:1

Durch den hohen Eingangswiderstand ist der ADC auch einigermaßen 
geschützt.
Oder du führst sämtliche Abgriffe über einen Analogmultiplexer auf einen 
Eingang.

von Frank K. (fchk)


Lesenswert?

Zunächst einmal: Du musst dafür sorgen, dass unter überhauptgarkeinen 
Umständen mehr als Vcc an irgendeinem Portpin anliegt. Weiterhin 
funktioniert der AD-Wandler nur von 0 bis AVref. Das sind die 
begrenzenden Faktoren, die Du auf jeden Fall und zu jeder Zeit einhalten 
musst, ansonsten produzierst Du Logikwölkchen.

Eine mögliche Lösung wäre: Spannungsteiler 10:1 am Eingang, und danach 
drei OpAmps mit Verstärkungsfaktoren 1 (Buffer, Impedanzwandler), 10, 
100. Die Ausgänge an je einen AD-Eingang hängen. Die Opamps werden die 
Ausgangsspannung auf Vcc begrenzen, wenn die Eingangsspannung zu groß 
für die jeweilige Verstärkung wird. Somit wird also kein Schaden 
entstehen.

PS: Natürlich wirst Du Rail-To-Rail-OpAmps verwenden.

Dann: Zuerst den Eingang mit der größten Verstärkung probieren. Wenn der 
Wert unterhalb der Übersteuerungsgrenze ist, verwende den, ansonsten den 
nächsten Eingang mit der nächstkleineren Verstärkung wählen. Ist auch 
der am Anschlag, nimm den dritten.

Im richtigen Leben gibt es dafür sogenannte PGAs, Programmable Gain 
Amplifiers, Verstärker mit programmierbarem Verstärkungsfaktor.

fchk

von BetonMicha (Gast)


Lesenswert?

Ok also bei mehreren ADC Eingängen siehts ja recht einfach aus.

Ich möchte bis zu 4 Spannungen gleichzeitig messen können. Die jeweils 
in bis zu 3 Messbereiche eingeteilt werden sollen. Bei 8 ADC wirds ein 
bisschen eng. Das mit dem Analogmultiplexer hört sich ganz gut an. Auf 
was muss ich da speziell achten, damit mein Signal nicht zu sehr 
verfälscht wird? Digitale Pins zum steuern hab ich ja genügend. Oder ist 
es hier vielleicht eher angebracht externe ADC zu verwenden?

Für den Schutz der ADC Pins würde ich sorgen, hat aber mit meinem 
Problem jetzt eher weniger zu tun. Und Rail-To-Rail erklärt sich von 
selbst, sonst siehts im oberen und unteren Bereich sehr mau aus.

von Ulrich (Gast)


Lesenswert?

Der AD im AVR hat keine so hohe Auflösung. Da ist der Analoge 
Multiplexer noch nicht das so große Problem. Solange die Signalquelle 
nicht zu hochohmig ist, sollte auch noch der einfache 74HC4051 
ausreichen. Dahinter kommt dann eine Umschaltbare Verstärkung - entweder 
zu Fuß aufgebaut mit OP und noch einem CMOS MUX, ein feriger PGA, oder 
gleich ein AD mit mehr Auflösung, so dass man auf die Umschaltung der 
Verstärkung ggf. verzichten kann.

von BetonMicha (Gast)


Angehängte Dateien:

Lesenswert?

Ok ich werde mich mal nach ADCs umschauen, vielleicht kann ich es damit 
einfacher lösen.

Ansonsten hätte ich es mir so in der Art gedacht wie im Schaltplan. 
Welcher OP wäre dafür geeignet? Vielleicht der TS912? Gibts ja auch 
gleich dual und im SO8 Gehäuse recht klein.
Nach den OPs würde dann der Multiplexer folgen.

Wäre da eine Supressordiode angebracht nach dem Spannungsteiler an GND 
um die OPs zu schützen?

von Frank K. (fchk)


Lesenswert?

BetonMicha schrieb:
> Ok also bei mehreren ADC Eingängen siehts ja recht einfach aus.
>
> Ich möchte bis zu 4 Spannungen gleichzeitig messen können.

Denke daran, dass die meisten Microcontroller nur EINEN ADC haben, mit 
einem Analog-Multiplexer davor. Wenn Du vier Spannungen GLEICHZEITIG 
messen willst, brauchst Du also 4 ADCs oder zumindest S&H-Glieder.

Vielleicht meinstest Du das aber mit dem "gleichzeitig" nicht so ernst.

fchk

von Ulrich (Gast)


Lesenswert?

Es hängt von den Anforderungen (insbesondere der kleinsten Aufzulösenden 
Spannung) ab, ob der TS912 geht. Wenn man nicht unter etwa 5 mV muss 
geht der, darunter wäre weniger Offset gefragt.

Wenn der Platz so knapp ist, wäre ggf. auch ein AD gleich mit MUX ein 
Lösung, z.B. als AD7714. Da braucht man eigentlich nur noch die 
Spannungsteiler extern.

Wenn es langsamer sein soll, und ein externer MUX, geht ggf. so etwas 
wie MCP3421 als kleine Lösung für den AD. Das ist kleiner und ggf. sogar 
günstiger als eine Variable Verstärkung. Ein Schutz vor Überspannung und 
der Spannungsteiler gehört vor den analogen Multiplexer am Eingang - den 
Teil braucht man also für jeden Eingang getrennt.

von Michael N. (betonmicha)


Lesenswert?

Ne das sollte bei mir eher "gleichzeitig" heißen. Ist mir klar das ich 
die Spannungen nur nacheinander messen kann. Das reicht mir. Ist nicht 
so zeitkritisch bei mir, hauptsache ich habe irgendwann die 4 Werte.

Der AD7714 hat 24 bit? Das wäre natürlich ne sehr schöne Auflösung, geht 
ja dann schon in den nV Bereich. Naja nur theoretisch, wegen 
Bauteiltoleranzen und Verlusten. Aber den mV Bereich sollte ich doch 
damit sicher abdecken können, oder?

Den MCP3421 schaue ich mir auch mal an. Digitale Eingänge hätte ich ja 
genügend am mega32. Ich schau mal was sich da preislich lohnt, 18 bit 
Auflösung würden ja auch schon genügen.

von BetonMicha (Gast)


Lesenswert?

So hab mir den MCP3421 jetzt genauer angesehen. Sieht soweit gut aus, 
was mich nur stört ist, das der Baustein standardmäßig immer mit der 
gleichen Adresse Produziert wird, es sei denn es wird eine andere bei 
der Produktion gewünscht. Das bedeutet ja ich kann nur 1 per I2C 
anbinden, bräuchte aber 4.
Die Auflösung mit 18bit würden mir reichen, gibt es noch ähnliche 
Bausteine, vielleicht auch ohne I2C? Oder kann man den auch anders 
ansprechen?

von Blackbird (Gast)


Lesenswert?

I2C-Expander verwenden.
18bit? Den Meßaufbau möchte ich mal sehen.

Blackbird

von Michael N. (betonmicha)


Lesenswert?

Hm dann mach ich mich mal schlau in der hinsicht. Schade, das man bei 
dem Baustein die adresse nicht selbst ändern kann.

Wieso nicht, ich will ja nicht die 18bit komplett Digital abbilden, aber 
ich hätte damit zuverlässige Werte für den mV Bereich. Obwohl da 16bit 
vermutlich auch reichen. Vorrausgesetzt das ganze wird sehr gut 
abgeglichen. Dafür kann ich mir aber kalibrierte Messgeräte von meiner 
Arbeit leihen.

von Blackbird (Gast)


Lesenswert?

16bit, das sind 65536 Abstufungen, also 0,0015% trägt die letzte Stelle 
zur Anzeige bei. Drift, Temperatur, Alterung, Rauschen, Fremdspannungen, 
Brummen, ...?
14bit zuverlässig anzuzeigen wird schon Mühe machen. Dann werden zwar 
die 50V (50000mV) nicht mehr aufs mV genau angezeigt, aber wer braucht 
das schon?

Aber die letzten Bits eines 18bit-ADC kann man auch "wegrechnen".

Blackbird

von Ulrich (Gast)


Lesenswert?

Wie schon ganz oben angedeutet kann man vor dem Verstärker / AD Wandler 
per Umschalter ein von mehreren Quellen Wählen. Dann käme man mit 1 
AD-wandler aus.

Das der AD Wandler etwas mehr Auflösung hat, als man gebraucht und ggf. 
wegen eines nicht perfekten Layouts wirklich zu 100% nutzen kann, ist 
nicht so schlimm. Bei den Sigma-Delta Wandlern sind die letzten 1-2 Bits 
ohnehin nicht so perfekt, dafür hat man aber den Vorteil dass man 
praktisch ohne Antialiasing-Filter auskommt. Auch ist der MCP3421 weder 
besonders teuer noch störend groß, und hat schon eine gar nicht so 
schlechte Referenzspannung drin. Bei der niedrigen Frequenz und guten 
Unterdrückung von 50/100Hz Störungen sind auch die Anforderungen an das 
Layout nicht so hoch.

Es gibt natürlich auch andere kleine AD Wandler, hauptsächlich mit SPI 
Interface, nicht nur I2C.

von Michael N. (betonmicha)


Lesenswert?

Die 18bit sollen ja auch nicht zuverlässig angezeigt werden. Man 
bräuchte auf jeden Fall viele Samples, damit die Anzeige ein bisschen 
ruhig hält. In den µV Bereich will ich ja gar nicht, nur hilft mir ja 
die Auflösung ganz gut für den mV Bereich. Eine Auflösung aufs mV genau 
wäre schön, zumindest bei zwei von den 4 Eingängen.
Vermutlich würde ich den AD sowieso auf max. 16bit laufen lassen, damit 
ich die 15 Samples pro Sekunde benutzen kann.

Ja und bei den 50V würdens sogar 12bit oder 10bit tun denke ich, da 
reicht mir ne Anzeige mit einer Stelle hinter dem Komma.

Ich schaue mich mal noch nach anderen ADCs um, ansonsten sieht der 
MCP3421 recht gut aus für ~2€.

Wenn jemand noch einen Tipp für einen ADC hat bis so max 4€ ohne I2C 
Schnittstelle oder mit einstellbarer Adresse, dann her damit.

von Ulrich (Gast)


Lesenswert?

Einfach mal bei Lieferanten suchen.  Es gäbe da ggf. noch den MCP 3428 
(ist auch i2C, aber mit variabler Adresse), gleich mit 4 Eingängen.

von Blackbird (Gast)


Lesenswert?

MSP430F5437 oder ADuC7020 wenn es denn nicht unbedingt AVRs sein müssen.
Die haben einen 12bit-ADC intern mit Multiplexer und mit Oversampling 
sind auch noch 13 oder auch 14bit möglich.


Blackbird

von Michael N. (betonmicha)


Lesenswert?

Ja hab den MCP3428 auch gerade gesehen. Gefällt mir gut, das der eine 
Adressauswahl bietet. Sonst habe ich noch den MCP3551 gefunden. Den muss 
ich mir mal genauer ansehen, kostet nur ~3€.
Ich glaub den MCP3428 werde ich mal testen. Für den Preis ist der 
vollkommen in Ordnung.

Ich bin leider im Moment an den AVR gebunden, zwecks Hardware. Aber ich 
werde die anderen mal im Auge behalten.

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]
  • [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.