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?
I2C-Expander verwenden. 18bit? Den Meßaufbau möchte ich mal sehen. Blackbird
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.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.