Bascom ADC Referenzspannung umschalten

diezel

Neues Mitglied
30. Juni 2011
14
0
0
Sprachen
Hallo,

ich habe ein Projekt, bei dem ich den ADC nutze. Einmal um mehrere Potis auszulesen und um die Versorgungsspannung zu messen.
Meine Stromquelle ist ein 2S-Lipo, dessen Spannung regle ich mit nem 7805 runter.
Die Potis sind an VCC = 5Volt. Für den ADC verwende ich hierfür als Referenzspannung AVCC.
Die Versorgungsspannung, die ich vor dem 7805 abzwacke, brech ich mit einem Spannungsteiler runter und vergleich sie mit der internen Referenzspannung (Atmega644 -> 2,56V).

Jetzt muß ich ja im Programm die Referenz umschalten.
Was muß ich dabei beachten? Sind Waits nötig? Schreibt man dazu einfach nochmals die "Config ADC" neu?

Hab das jetzt schon mal probiert, jedoch bin ich mit dem Ergebnis überhaupt nicht zufrieden. Das Ergebnis ist meilenweit Weg von der Realität (5Volt <> 7,6Volt).

Hier mal ein Auszug meines Programmes, der ganze Code hat fast 3000 Zeilen:
Code:
Config Adc = Single , Prescaler = Auto , Reference = Avcc
... Potis auslesen
Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56
... Akkuspannung messen

Ist das Vorgehen so überhaupt richtig? Oder macht man das ganz anders?


Gruß
Gerhard
 
Hallo Gerhard,

prinzipiell kann man die Referenzspannung des ADC umschalten. Wie sich hier allerdings Bascom genau verhält, kann ich dir nicht sagen, da ich selber Bascom nicht einsetze.

Die Referenzspannung wird ja durch Bits im Register ADMUX eingestellt. Das Register ist single buffered, und wird zu bestimmten Zeiten aktualisiert. Das ist wichtig, damit während einer Wandlung Referenzspannung und Channels definiert sind. Wenn mit Bascom möglich, schaltest du zuerst den ADC aus, wählst die andere Referenzspannung und aktivierst den ADC wieder (Im Register ADMUX ist es das Bit ADEN).

Dann musst du beachten, dass die erste Messung nach dem Umschalten der Referenzspannung unbrauchbar ist, dieses Messergebnis verwirfst du am besten.

Der Pin AREF darf nicht belastet werden, da er einen hohen Eingangswiderstand hat. Hier solltest du eine Kapazität (100nF) gegen GND anschließen, das hast du aber sicherlich gemacht.

Nun weiß ich nicht, ob die Messung mit interner Referenzsspannung permanent falsch ist oder ob du nach dem Umschalten einmal misst. Wenn du einmal nach dem Umschalten misst, wäre das obere eventuell eine Erklärung für die Fehlmessung, hier also mindestens ein Messergebnis verwerfen.

Vielleicht hilft dir das ja schon weiter.


Andauernd zwischen den Referenzspannungen umschalten würde ich allerdings nicht, es mag zwar funktionieren, aber die Spannung am AREF-Kondensator ändert sich dann auch immer. Ich würde die Schaltung so aufbauen, dass dies nicht notwendig ist ... ich weiss, es ist einfach gesagt ;-)


Gruß,
Dirk
 
Hallo!

Wenn Du die Spannung vor dem 7805 abgreifst, verstehe ich ehrlich gesagt nicht, warum Du die
dann gegen die int. Refspg vergleichen willst. Leg den Spannungsteiler so aus, das max. 5V anliegen
und fertig ist die Laube.

MfG
caargoo
 
Hallo Caargoo,
Wenn Du die Spannung vor dem 7805 abgreifst, verstehe ich ehrlich gesagt nicht, warum Du die
dann gegen die int. Refspg vergleichen willst. Leg den Spannungsteiler so aus, das max. 5V anliegen
und fertig ist die Laube.

ja da stimme ich dir zu!

Gerhard hat aber sicher einen Grund, warum er die interne Referenzspannung nutzt.
Ich vermute, dass er einen Standard 7805 Linearregler verwendet, und die Batteriespannung ist nicht besonders hoch, so dass VCC durch die Dropout-Spannung nach dem 7805 schneller mal absingt. Das ist für die Messung natürlich nicht besonders gut, wenn man VCC als Referenzspannung verwendet.

Nutzt er nun die interne Referensspannung, kann er auch bei absinkender VCC noch messen. Das ist zumindest der einzigste Grund, den ich mir vorstellen kann, warum er in diesem Fall auf die interne Referenzspannung umschaltet. Es ist natürlich nicht so eine schöne Lösung.

Besser wäre, wenn er einen LDO-Spannungsregler verwendet ... dann kommt es noch drauf an, wie weit die Akkuspannung absingen kann. Reicht das nicht aus, könnte man noch einen Schaltregler (Stichwort: Sepic) einsetzten, damit VCC viel länger stabil ist, das ist natürlich aufwendiger und teurer.

Gruß,
Dirk
 
Hallo,

also erstmal vielen Dank für die tollen Antworten.
Warum ich auf die hirnrissige Idee gekommen bin, oder warum ich nicht selbst darauf gekommen bin, die Akkuspannung auch mit VCC zu messen, kann ich nicht mehr nachvollziehen. Da hat wohl irgendeine Synapse im Gehirn nicht funktioniert.
Hab schon mal ne Schaltung gebaut, mit 3xAAA-Batterien. Dort hab ich die Spannung gegen die interne Referenz gemessen. Kommt wohl noch von daher.
Hab jetzt das Programm und den Spannungsteiler geändert, die Referenzspannung im ADC bleibt auf AVCC. Bekomme jetzt passende Ergebnisse.
Als Lehre aus dem Ganzen kann man aber ziehen, daß es überhaupt nicht gut ist, wenn die Referenzspannung umgeschaltet werden muß. Ein Paar Millisekunden Wait schaden wohl nicht und das erste Ergebnis stimmt gar nicht und muß verworfen werden.


Gruß
Gerhard
 

Ü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)