Spannungsteilerfrage und Wertebereich

Hemi

Aktives Mitglied
Premium Benutzer
30. Nov. 2008
1.103
19
38
Korntal-Münchingen, Germany
Sprachen
  1. ANSI C
  2. C++
  3. PHP
  4. Java
Hallo zusammen,

ich habe eine Frage wegen dem Spannungsteiler.

Und zwar läuft mein ADC mit Aref = Vcc, zwischen dem Aref und der Masse ist ein 100nF Kondensator. So weit so gut.

Frage 1:

Jetzt muss ich von 13,8V auf ca. 5V kommen. Meine ausgerechneten Widerstände sind dann 880 und 500 Ohm. Und da es solche nicht gibt, habe ich die kleinere genommen, mit 820 und 470Ohm. Am "Ausgang" habe ich dann 5.028V und es übersteigt ja die Vref-Spannung. Heisst es dann "gute Nacht MCU"?

Wenn ich jedoch grössere Widerstände nehmen, 910 und 510 bin ich bei 4,956V, also knapp unter dem Vref.

Frage 2:

Der ADC ist ja ein 10 -bit ADC, also Vref / 1024, so weit klar. Jedoch brauche ich für meine Anwendung nur 256-Schritte, also von 0 bis 255. Wie kann ich das am besten hinkriegen?

Meine Idee wäre den ADC-Wert durch 4 zu teilen und dann aufzurunden. Aber ich habe irgendwo mal aufgeschnappt, dass Division und AVR nicht unbedingt gut ist. Stimmt es?

Danke & Grüsse
Heinrich
 
Hallo Heinrich,

Frage 1:

Jetzt muss ich von 13,8V auf ca. 5V kommen. Meine ausgerechneten Widerstände sind dann 880 und 500 Ohm. Und da es solche nicht gibt, habe ich die kleinere genommen, mit 820 und 470Ohm. Am "Ausgang" habe ich dann 5.028V und es übersteigt ja die Vref-Spannung. Heisst es dann "gute Nacht MCU"?

Wenn ich jedoch grössere Widerstände nehmen, 910 und 510 bin ich bei 4,956V, also knapp unter dem Vref.

du solltest mit der Spannung am ADC-Eingang auf jedenfall unter VREF bzw. VCC liegen. Die maximale Spannung ausreichend unter VREF festlegen, zumal du nicht volle 10bit Auflösung benötigst. Ist die Spannung höher als VCC, wirken die internen Klemmdioden, der Vorwiderstand begrenzt etwas den Strom, so dass der AVR nicht gleich bei einer Überspannung den Geist aufgibt ... kommt natürlich auf die Höhe und Dauer der Überspannung an.

Frage 2:

Der ADC ist ja ein 10 -bit ADC, also Vref / 1024, so weit klar. Jedoch brauche ich für meine Anwendung nur 256-Schritte, also von 0 bis 255. Wie kann ich das am besten hinkriegen?

Meine Idee wäre den ADC-Wert durch 4 zu teilen und dann aufzurunden. Aber ich habe irgendwo mal aufgeschnappt, dass Division und AVR nicht unbedingt gut ist. Stimmt es?
Heinrich

Für eine Division benötigt der AVR viele Maschinenzyklen und dadurch dauert die Berechnung relativ lang, ausserdem wird dafür natürlich Platz im Flash des AVR belegt.
Die 10Bit des ADC befinden sich in zwei 8Bit Registern, schau einfach mal in das Datenblatt des Mikrocontrollers. Im Datenregister ADCH befinden sich die oberen 8Bit (Bit9..Bit2), das ist dein 8Bit-Wert (0...255), das Datenregister ADCL, in dem sich die unteren Bits (Bit1..Bit0) befinden, wertest du dann nicht aus.
Wenn du doch einmal dividieren musst ... eine Division durch 2 entspricht einem Rechtsshift von einem Bit, eine Division durch 4 enspricht einem Rechtsshift von 2 Bit, usw. Shiften kann der AVR sehr schnell, für 1Bit shiften benötigt er lediglich einen Maschinenzyklus.

Grüße,
Dirk
 
Hallo Heinrich,

Frage 1:

Jetzt muss ich von 13,8V auf ca. 5V kommen. Meine ausgerechneten Widerstände sind dann 880 und 500 Ohm. Und da es solche nicht gibt, habe ich die kleinere genommen, mit 820 und 470Ohm. Am "Ausgang" habe ich dann 5.028V und es übersteigt ja die Vref-Spannung. Heisst es dann "gute Nacht MCU"?

Wenn ich jedoch grössere Widerstände nehmen, 910 und 510 bin ich bei 4,956V, also knapp unter dem Vref.
warum nimmst du so kleine Widerstände ? Der ADC-Eingang wird bestimmt nicht
mehrere Milliampere ziehen. Das belastet doch nur deine Quelle unnötig.

The ADC is optimized for analog signals with an output impedance of approximately 10 kΩ or less. If such a source is used, the sampling time will be negligible. If a source with higher impedance is used, the sampling time will depend on how long time the source needs to charge the S/H capacitor, with can vary widely. The user is recommended to only use low impedant sources with slowly varying signals, since this minimizes the required charge transfer to the S/H capacitor.

Also auf das 5fache kann man schon hochgehen. Bis 10kOhm ist auf jeden
Fall noch ne Menge Luft ;)

Gruß
Dino
 
Also bei 8k und 4k bin ich bei 4,6V. Das passt, würde ich meinen.

Beim lesen geht es dann quasi so:

Code:
unsigned char myValue = 0;

myValue = ADCL;

Und fertig? Davor natürlich die Referenz Spannung und ADC-Kanal einstellen.

Klingt eigentlich plausibel, 8 bits, wenn alle auf 1 sind, bin ich bei 255, also passt.

Grüssle
Heinrich
 
hi,

nimm doch einfach einen tl431. Kannst du auch prima einstellen und er ist sehr genau und ich denke mal optimal für die Referenz. Lass den Mist mit den Widerständen. Dann nimm lieber eine Z-Diode.

Gruß
Technicus
 
Hallo,

nimm doch einfach einen tl431. Kannst du auch prima einstellen und er ist sehr genau und ich denke mal optimal für die Referenz. Lass den Mist mit den Widerständen. Dann nimm lieber eine Z-Diode.
so wie ich es verstanden habe will er ja nicht seine Referenz über den
Spannungsteiler erzeugen sondern seine Meßgröße (13,8V => Frage1 in #1)
auf ein vertretbares Maß zurechtstutzen und dabei einen möglichst großen
Bereich des ADCs verwenden damit keine Genauigkeit verschenkt wird.

Oder irre ich mich da jetzt ? ..

Gruß
Dino
 
Nein Dino, Du bist absolut richtig. Ich will einfach von 13,8V auf 5V runterkommen.

Grüsse
Heinrich
 
Hier mal eine Berechnung mit dem Wert R2=4,7 kOhm, U1=8,8V, U2=5V

U1 R1
-- = --
U2 R2

8,8V x Ohm
---- = --------
5V 4700Ohm

8,8V * 4700 Ohm
----------------- = 8272 Ohm
5V

Ich würde bei dem Ergebnis einen 6,8KOhm und einen 2,2KOhm Trimmwiderstand und einen 4,7 kOhm nehmen.

Mit dem Trimmer kann man dann die Spannug am 4,7k Widerstand auf genau 5 Volt abgleichen.

Selbstverständlich geht es auch mit anderen Werten. ;)
 
Hallo,

Ich würde bei dem Ergebnis einen 6,8KOhm und einen 2,2KOhm Trimmwiderstand und einen 4,7 kOhm nehmen.

Mit dem Trimmer kann man dann die Spannug am 4,7k Widerstand auf genau 5 Volt abgleichen.

Selbstverständlich geht es auch mit anderen Werten. ;)
Trimmer ist immer gut wenn man besser anpassen will ;)
Aber aufpassen ... Trimmer sind stärker temperaturabhängig als so ein
Widerstand. Ich würde dann auf 10Gang-Cermet-Trimmer gehen. Die sind
für sowas gut geeigneet. Ganz im Gegensatz zu den normalen Trimmern
mit 3/4-Umdrehung die man so kennt.

Wenn ich mich da richtig erinnere ist bei den Cermet-Trimmern die Bahn aus
einer Art Kunststoff. Und da sie eine "weichere" Oberfläche hat als so eine
Kohlebahn gibt es bessere Übergangswiderstände zwischen Bahn und Schleifer.
Und die Widerstandsschicht ist glaube ich auch weniger Temperaturabhängig.
Aber das ist lange her das ich da mal was drüber gelesen habe (ein paar Jahre).
Also nagelt mich jetzt nicht fest wenn da was nicht stimmt :D

Gruß
Dino
 
@HGButte: Wie kommst Du bei U1 auf 8,8V? Ich bin bei 13,8V.

Jungs, es muss nicht 100% genau sein. Die Genauigkeit ist an der Stelle relativ uninteressant, es geht um die Beleuchtung. Wenn es einen Tick heller oder dunkler ist, macht das gar nichts aus.

Grüssle
Heinrich
 
@HGButte: Wie kommst Du bei U1 auf 8,8V? Ich bin bei 13,8V.

Grüssle
Heinrich

Wie Dino03 schon schrieb sind U1 und U2 die Teilspannungen, die zusammen 13,8 Volt ergeben.

Da ich aber mit den Verhältnissen der Teilspannungen und der Teilwiderstände gerechnet habe taucht Uges mit 13,8 Volt nicht in der Rechnung auf.

Auch wenn es nicht so genau sein soll, ist meine Lösung ein Beispiel wie man ein solches Problem angehen kann.
Vielleicht ist es für den einen oder anderen interessant, der mit der Elektrotechnik ein wenig Probleme hat.

Programmieren ist eine Sache und die ohmschen Gesetze die andere.:D

Gruß hgbutte
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)