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
@ 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
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
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.
@ 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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.