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
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?
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.
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
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.
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.
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?
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
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.
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.
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?
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.
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
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.
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.
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
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.