Forum: Analoge Elektronik und Schaltungstechnik ADC: Ausgabe der Spannung am LCD ändern


von flo (Gast)


Angehängte Dateien:

Lesenswert?

hallo!

ich habe hier als grundlage eine schaltung von sprut.de benutzt.

ich möchte die Spannung einer Autobatterie messen und sie über ein 
LC-Display
16x2 wiedergeben.
das programm hat nur einen Messbereich von 0-5V
ich benötige jedoch 11,5- 14,5V.
ich habe mir die schaltung so aufgebaut das ein festspannungsregler 5v 
die versorgung für lcd und pic sicherstellt und ein spannungsteiler den 
meßeingang
des pics versorgt.

bei ca. 12 volt werden mir also jetzt 4,08V angezeigt. hier sollten 
jetzt eigentlich auch 12V auf dem LCD stehen.

im anhang sollte das programm zu finden sein.

ich hoffe ich habe es verständlich beschrieben und würde mich über 
antwort freuen.

viele grüße, florian

von Falk B. (falk)


Lesenswert?

@  flo (Gast)

>bei ca. 12 volt werden mir also jetzt 4,08V angezeigt. hier sollten
>jetzt eigentlich auch 12V auf dem LCD stehen.

Da due einen [[Spannungsteiler] hast, musst du deinen ADC-Wert nch mit 
dem Widerstandsverhältnis multiplizieren. Das Ganze muss in etwa hier 
rein

>;*****************************************************
>; Wandlung des ADC-Wert in Millivolt (bin�r)
>; Der ADC-Wert steht in f1,f0
>; Ergebnis steht in f1,f0

Aber von PIC-ASM hab ich keine Ahnung.

AVR-Tutorial: ADC

MFG
Falk

von flo (Gast)


Lesenswert?

hallo falk!

danke für die schnelle antwort!

okay, wenn ich meinen angezeigten wert mit 2,9 multipliziere, komme ich 
auf den wert den ich im lcd stehen haben möchte.

beispiel: bei 4volt am pic messeingang multipliziert mit 2,9 = hier 
sollte das lcd 11,6 anzeigen.

also müsste ich jetzt mit 2,9 multiplizieren, ich weiß jedoch nicht 
genau, wie der befehl lauten muss um ihn hier einzufügen. --->>>>

>;*****************************************************
>; Wandlung des ADC-Wert in Millivolt (bin�r)
>; Der ADC-Wert steht in f1,f0
>; Ergebnis steht in f1,f0

viele grüße, florian

von Karl H. (kbuchegg)


Lesenswert?

flo wrote:
> hallo falk!
>
> danke für die schnelle antwort!
>
> okay, wenn ich meinen angezeigten wert mit 2,9 multipliziere, komme ich
> auf den wert den ich im lcd stehen haben möchte.
>
> beispiel: bei 4volt am pic messeingang multipliziert mit 2,9 = hier
> sollte das lcd 11,6 anzeigen.
>
> also müsste ich jetzt mit 2,9 multiplizieren, ich weiß jedoch nicht
> genau, wie der befehl lauten muss um ihn hier einzufügen. --->>>>

Das ist der falsche Weg.
Irgendwo in dem Code muss ja auch die Umrechnung vom ADC Wert
zu den (jetzt) 5Volt sein. Der ADC spuckt ja nicht die gemessene
Spannung an sich (also in Volt) aus, sondern eine ganze Zahl,
die diese Spannung repräsentiert.

Ich kenne den PIC nicht, aber ich schätze mal der wird auch
einen 10 Bit ADC haben. Das heist die ganzen Zahlen von
0 bis 1023 überstreichen (als Voltzahl ausgedrückt) 0V bis 5V.
Liegen 0V an, so meldet der ADC 0
Liegen 5V an, so meldet der ADC 1023

Das heist in dem bisherigen Code muss es eine Umrechnung
geben.

   ein maximaler ADC Wert von 1023      entspricht         5 Volt
   ein gemessener ADC Wert von M        entspricht daher   x Volt
  -----------------------------------------------------------------
         M * 5
    x = -------
         1023

Diese Umrechnung musst du im Code finden. Anstelle der 5V setzt
du dann deine 12 Volt ein.

Also: Die Berechnung an sich (die ja vorhanden sein muss)
korrigieren und nicht die jetzige Berechnung lassen und den
Wert im Nachhinein korrigieren.

von Falk B. (falk)


Lesenswert?

@ Karl heinz Buchegger (kbuchegg) (Moderator)

>Also: Die Berechnung an sich (die ja vorhanden sein muss)
>korrigieren und nicht die jetzige Berechnung lassen und den
>Wert im Nachhinein korrigieren.

Sag ich doch. Allerdings wird da mal wieder ein wenig getrickst, um 
Aufwand zu sparen.

>;*****************************************************
>; Wandlung des ADC-Wert in Millivolt (bin�r)
>; Der ADC-Wert steht in f1,f0
>; Ergebnis steht in f1,f0

...

>  call  Sub16    ; f := 5xADC - 5xADC/64 - 5xADC/128
>  return      ; fertig

Sprich f = ADC * (5+5/64 + 5/128) = ADC * 5,117

Das muss angepasst werden.

MFG
Falk

von flo (Gast)


Lesenswert?

hallo nochmal!
danke karl heinz und falk!
ich komme der sache so langsam immer näher.
okay, ich habe jetzt mal die sub 16 und div2 werte geändert, aber nur 
willkürlich, ich komme jetzt auch zur anzeige von 12 volt, aber je 
weiter ich hochdrehe, ca 14,5volt, desto ungenauer wird die anzeige 
wieder!

ich habe keine ahnung wie oft ich was sub bzw div soll um auf den 
gleichen ausgabewert zu kommen den ich auch hineingebe.

kann mir da nochmal jemand helfen?

wenn noch ein paar werte benötigt werden, sagt bescheid!

ich wäre sehr dankbar für eine für mich verständliche lösung!

viele grüße, florian

von Falk B. (falk)


Lesenswert?

Nehmen wir an, dein Spannungsteiler hat den Teilfaktor 0,29411 
(R1=24k, R2=10k). D.h. dein 0-5V ADC misst dann 0-15V.

Gemäss der ADC Grundfomel für einen 10 Bit ADC

kann man hier ausrechnen, dass dein ADCwert mit 0,0166015625 
multipliziert werden muss, um auf den Spannungswert in Volt zu kommen. 
Durch clevere Anwendung von Festkommaarithmetik multipliziert man 
statt dessen mit 1660 und erhält das Ergbnis in 100uV Schritten. Das 
kann man dann wie gewohnt in ASCII umwandeln und ausgeben. Siehe

AVR-Tutorial: ADC

Da dieser PIC wahrscheinlich keinen Multiplikationsbefehl hat, muss man 
das mit einem kleinen Programm nachbilden. Dazu gibt es sicherlich von 
Microchip Application Notes.

MFG
Falk

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.