Forum: Mikrocontroller und Digitale Elektronik Bascom- Wert aus ADC auf LCD anzeigen - Spannung messen.


von Sven Löffler (Gast)


Lesenswert?

Hallo zusammen,

ich bastel gerade an einem LCD für die Siku Control fernsteuerung. Als 
µC nutze ich einen Atmega8. Das Display ist ein 16 * 2 und wird im 4 Bit 
Modus angesteuert. Ich schreibe alles in Bascom. Soweit klappt das auch 
alles schon sehr gut.

Nun würde ich gerne noch die Spannung vom Akku messen. Als Akku wollte 
ich Lipos verwenden. Eine Lipo hat 3,7 V ( voll geladen 4,2 V ). Da das 
Display aber 5V braucht, wollte ich 2 x Lipos verwenden - 7,4 V. Nun 
wollte ich gerne die Akkuspannung messen und im Display anzeigen lassen.

Wie ich den AD Wandler einstellen muss, habe ich auf dieser Seite schon 
recht gut verstanden: 
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/adc_mit_getadc/

Da ich mit mehr als 5 V arbeite, muss ich wohl den AREF ( PIN21 am mega8 
) nehmen. Soweit ist das auch ok. Ich denke das klappt auch. Mein 
Problem ist, wie ich den Wert vom AD dann in die Spannung umrechnen und 
auf dem Display anzeigen kann.

Vielleicht könnt ihr mir da weiter helfen.

Vielen Dank im Voraus !

Viele Grüße
Sven

von Krapao (Gast)


Lesenswert?

> wollte ich 2 x Lipos verwenden - 7,4 V.

Das MINUS ist wohl ein Lapsus. Ich gehe mal davon aus, dass du +7,4V 
meinst.

Aufpassen: Die +7,4V darfst du nicht direkt auf den ADC-Eingang geben. 
Das überschreitet die elektrischen Grenzwerte und kann den AVR töten.

Man kann aber höhere Spannungen als AREF messen, im einfachsten Fall, 
wenn man einen Spannungsteiler benutzt.

> Da ich mit mehr als 5 V arbeite, muss ich wohl den AREF ( PIN21 am mega8
> ) nehmen.

Müssen musst du nicht. Du kannst auch mit interner AVcc arbeiten und 
brauchst keine Referenzspannung an AREF anzuschliessen.

von Sven Löffler (Gast)


Lesenswert?

Das "-" sollte eigentlich ein Gedankenstrich sein ( 2 Lipo = 7,4 V. ;) )

Ok, vielen Dank für die Info. Ich wollte es so machen, dass ich den 
mega8 und das Display dann über einen Spannungswandler ( z.B. 7805 ) mit 
5 V versorge. In dem Fall ist es dann ja etwas ungeschickt, die Spannung 
am AVCC zu messen, oder ?

von Bascomfan (Gast)


Lesenswert?

Warum willst du die Spannung am Avcc messen, welchen Sinn soll das 
haben?

Hast du ein gutes Labornetzgerät und ein gutes Multimeter? Wenn ja, 
programmiere den Mikrocontroller doch mal auf interne 2,56. Messe nun 
diese AVREF bei unterschiedlichen Versorgungsspannungen den Kontrollers 
um zu ermitteln, wie gut AVFREF bleibt.

Da sich dein ADC-Messergebnis auf AVREF bezieht, hast du eine 
Vorstellung davon wie gut deine Messung sein kann, ab wann es welche 
Fehler gibt usw.

Genauigkeit ist übrigens relativ. Die betrifft nicht nur den Controller.

von allu (Gast)


Lesenswert?

Wenn Du den 7805 als +5V-Referenzspannung verwenden möchtest:

Software:
' *** A/D-Wander einrichten
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'Internal
Start Adc

Hardware: den Referenzspannungseingang mit 100nF nach GND abblocken, 
ansonsten aber nichts am Referenzspannungseingang anschliessen.

Den ADC-Eingang über einen nicht zu hochohmigen Spannungsteiler 
(Größenordnung insgesamt um die 30 bis 100kOhm) mit dem Meßpunkt 
verbinden.

Gruß  allu

von Sven Löffler (Gast)


Lesenswert?

@ Bascomfan

Ich möchte gerne die Akkuspannung des 7,4 V Akkus messen.

@ allu

Ok, vielen Dank! Werde das mal so versuchen.

Nun bleibt noch die Frage, wie ich das Ergebnis als Volt im Display 
anzeigen kann ?

von Dietrich L. (dietrichl)


Lesenswert?

Sven Löffler schrieb:
> Nun bleibt noch die Frage, wie ich das Ergebnis als Volt im Display
> anzeigen kann ?

Prinzip:
- zu messende Spannung wird runtergeteilt; so liegen bei z.B. 7,4V am 
ADC-Eingang xV an
- wenn die Eingangsspannung des ADC = Uref ist, kommt der Wert 4095 
heraus (12 Bit ADC)
Der Rest ist rechnen nach Dreisatz...

Gruß Dietrich

Edit: das unter der Annahme, dass BASCOM den 12bit-Modus benutzt (ich 
kenne BASCOM nicht)

von Karl H. (kbuchegg)


Lesenswert?

Dietrich L. schrieb:

> Edit: das unter der Annahme, dass BASCOM den 12bit-Modus benutzt (ich
> kenne BASCOM nicht)

Welcher 12-Bit Modus?
Die AVR haben einen 10 Bit ADC.

Ändert aber nur einen Zahlenwert bei der Berechnung. Statt 4096 dann 
eben 1024.

(Die Sache mit dem Dreisatz stimmt ja nach wie vor.

   1024 Äpfel kosten          5.0  Euro
     n  Äpfel kosten daher     wieviel?

von Dietrich L. (dietrichl)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Welcher 12-Bit Modus?
> Die AVR haben einen 10 Bit ADC.

Ja, mein Fehler (man kann 10 Bit oder 8 Bit wählen).

Gruß Dietrich

von Sven Löffler (Gast)


Lesenswert?

Ok, vielen Dank für die Hilfen ! :)

Ich denke mal das bringt mich schon etwas näher. Es reicht vollkommen 
aus, bis auf eine Stelle hinter dem Komma die Spannung anzuzeigen. Also 
muss ich eine Art Tabelle erstellen, um die Werte wie 7,4, 7,3, 7,2 usw. 
anzeigen zu können, richtig ?

von Bascomfan (Gast)


Lesenswert?

Nö Tabelle ist nicht nötig. Der Rechenwert für die Mess-spannung verhält 
sich analog zum gewählten Teilungsverhältnis des 
Eingangsspannungsteilers.

Hast du dir z.B. einen Spannungsteiler so aufgebaut, dass 8 Volt am 
Messeingang genau 5 Volt am ADC-Eingang werden, kannst du dir die 
gemessene Spannung per Anpassung des Ref-Rechenwertes anzeigen lassen.

Liegen z.B. 7,2 Volt am Spannungsteiler an, werden daraus am ADC-Eingang 
4,5 V was einen ADC-Wert von 921 ergibt.

Normalerweise wird mit folgender Formel gerechnet. ADC-Wert = Uein * 
1024 / Uref. Folglich entsteht 921 aus 4,5 * 1024 / 5.

Wandelst du die Formel entsprechend um und machst rechnerisch aus den 5 
V URef nun diese interpretierten 8 V ergibt sich ein Messwert von 7,2 V.

von Sven Löffler (Gast)


Lesenswert?

Ich habe nochmal eine adere Frage:

Es würde schon reichen, wenn ein Piezo Summer bei einer bestimmten 
Spannung piept. Könnte man das vielleicht auch mit dem Analog Comparator 
des Tiny2313 machen ?

von Karl H. (kbuchegg)


Lesenswert?

Sven Löffler schrieb:
> Ich habe nochmal eine adere Frage:
>
> Es würde schon reichen, wenn ein Piezo Summer bei einer bestimmten
> Spannung piept. Könnte man das vielleicht auch mit dem Analog Comparator
> des Tiny2313 machen ?

Könnte man.
Wenn du aber den ADC schon am laufen hast, ist deine Aufgabe ja nichts 
anderes als 2 Werte miteinander zu vergleichen.

(Ich denke nämlich, du willst dich um den ADC drücken und suchst dir 
jetzt was anderes, was möglicherweise einfacher sein könnte. Da rate ich 
dir: sieh zu, dass du deinen ADC in den Griff kriegst. So schwer ist das 
nicht. Du kannst dabei nur gewinnen, wenn du nicht immer den Weg des 
geringsten Widerstands gehst)

von Sven Löffler (Gast)


Lesenswert?

Nein, das versuche ich nicht. ;) Nur so könnte ich einen Tiny2313 
nutzen. Diesen hätte ich sogar in MLF Bauform hier. Daher meine Frage. 
:) Es würde reichen, wenn der Sender bei einer gewissen Spannung piept 
und evtl. eine Meldung im Display erscheint. Daher meine Frage. :)

von Sven Löffler (Gast)


Lesenswert?

Wenn ich das nun mit dem AD Wandler machen würde, wie müßte ich das denn 
anschließen:

Ich habe eine Spannung von 2 x Lipo 7,4
Eine geregelte Spannung von 5 V

Der Ausgang müsste bei 6,4 Volt geschaltet werden.

Ich denke mal der Schleifer des Poti käme an AIN0 oder AIN01, oder ?

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
Noch kein Account? Hier anmelden.