Hallo zusammen, ich möchte mit einem AVR Gleichspannungen messen. Und zwar bekomme ich von einem Rückmeldepotentiometer Spannungen zwischen 2 und 8 V zurück, die ich mit Hilfe des AVR auswerten möchte damit entsprechend darauf reagieren kann. Beim googeln und hier im Forum habe ich Beiträge gefunden, die in diese Richtung gehen, aber keine definitive Antwort bzw. Anleitung gefunden, wie so etwas zu realisieren ist. Geht so etwas überhaupt? Wäre super, wenn mir jemand weiterhelfen könnte bzw. eine Anlaufstelle in Form eines Links geben könnte, wo ich mich schlau machen kann. Vielen Dank. Gruß Markus
direkt kannst du 8V natürlich nicht messen. Also Spannungsteiler auf den Wert der Referenzspannung für höchstmögliche Auflösung. Manchmal ist es sinnvoller, den Spannungsteiler so auszulegen, dass sich bei max-Spannung ein "gerader" A2D-Wert (1000) ergibt. Ist dein Geber passiv (also wirklich nur ein Poti) verfälscht ein direkt angehängter Spannungsteiler den Messwert. Kann man rechnerisch korrigieren oder einen OP als Impedanzwandler dazwischenschalten.
Einfach einen Spannungsteiler hinten drann. Du musst nur etwas auf die Innenwiderstände achten. Der Innenwiderstand des Potis ist maximal 1/4 des Poti-Widerstandes. Der Innenwiderstand des Spannungsteiler um die 8 Volt auf einen niedirgen Wert zu teilen, sollte so um den Faktor 50 bis 100 größer sein, als 1/4 des Poti-Widerstandes. Dabei ist es günstiger, wenn die Referenzspannung des ADC relativ klein ist, da dann der Innenwiderstand des Spannungsteiler wie ihn der ADC sieht, schön klein ist und somit der Eingangswiderstand des ADC nicht so sehr ins Gewicht fällt. Kommt eben immer auf die gewünschte Genauigkeit drauf an. Aber man kann diese ganzen Effekte auch alle wegrechnen. Welchen Widerstand hat der Poti denn genau? Und wie genau soll die Messung werden?
Der Poti hat 5k Ohm. Ich möchte die 6 Volt auf 16 Werte verteilen, d.h. eine Genauigkeit von ca. +/- 0,2 Volt.
Oh, das ist ja überhaupt kein Problem. Der AVR hat eine interne Referenz von 2,56 Volt. D.h. wenn vom Poti 8 Volt kommen, darf am ADC-Eingang maximal 2,56 Volt anliegen damit der ADC-Bereich optimal ausgenutz wird. Konkret: Spannungsteiler aus R1 = 82 Kiloohm und R2 = 36 Kiloohm. Der R2 kommt zwischen Masse und ADC-Pin des Controllers, der R1 zwischen ADC-Pin des Controllers und dem Ausgang des Potis. Der ADC des AVR hat 10 Bit. D.h. er spuckt Werte von 0 bis 1023 aus. Un die gemessene Werte vom ADC in Spannungswerte umzurechnen und umgekehrt, verwende folgende Formeln: Spannung = ADC-Wert * 2.56 * (R1+R2) / (1023 * R2) ADC-Wert = Spannung R2 1023 / (2.56 * (R1+R2)) D.h. Wenn der Poti 2 Volt liefert, liest Du aus dem ADC den Wert 243. Bei 2,2 Volt bekommst Du den Wert 268 und bei 8 Volt bekommst Du den Wert 975. D.h. für je 0,2 Volt mehr steigt der ADC-Wert um ca. 24 an. Du musst eben in Deinem Programm die Werte etwas runden, wenn Du nur 0,2 Volt Auflösung haben willst. Am besten nimmst Du den mit dem geringstem Abstand zu einem bekannten Wert. Die Messungen wären noch genauer, wenn man nicht die interne Referenz des AVRs verwenden würde, sondern die Referenzspannung aus der Versorgungsspannung des Potis gewinnen würde. Dann würden die Spannungsschwankungen der Poti-Spannung ausgeglichen werden. Und die Widerstände sollten 1% Genauigkeit haben.
Ist es nicht sinnvoll, so die Spannungsteiler zu verbauen, dass man im µC nur durch eine 2^x Potenz teilen muss und ggf. noch *Teilerverhältnis? Wäre doch theoretisch weniger rechenaufwand. die 2^x potenzen kann er ja per shift erreichen.
Naja, wie genau sind denn die Bauteile (z.B. Widerstände) in der Realität? Wie genau ist die Referenz? Angenommen, Du baust einen "exakten" 1:4 Teiler. Da bräuchtest Du schon Widerstände aus der E96-Reihe. Ein bischen rechnen kann der Controller noch nebenher.
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.