PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC umrechnen



Frank5
16.10.2005, 11:33
Hallo
ich möchte mit meinen Atmega8 per ADC eine gemessen Wert auf dem LCD bringen. Die 0 bis 1023 zeigt er schon an. Wie kann man das umrechnen das er die tatsächlichen Volt auf dem LCD anzeigt?????
Danke und Gruss
Frank

michaelb
16.10.2005, 11:42
Hi,
was hast du als Referenzspannung eingestellt hast!
Gruß Michi

Marco78
16.10.2005, 12:14
Wie kann man das umrechnen das er die tatsächlichen Volt auf dem LCD anzeigt?????
Sorry wenn ich jetzt etwas persönlich werde, aber wie alt bist du? Hast du schonmal was von Dreisatz gehört?

Frank5
16.10.2005, 12:22
Schon aber man muss doch die 16 Bit in eine Dezimalzahl umwandeln????
Oder stehe ich da irgendwie auf dem Schlauch???

PicNick
16.10.2005, 13:00
Wenn du "1023" siehst, und nicht "03FF", hast du ja mit der Umwandlung offenbar kein Problem
Was du aber umwandeln musst, sind nicht diese 10 Bit, sondern das, was bei dem 3-Satz rauskommt.

Crocodile
16.10.2005, 13:25
Hallo,

du musst so rechnen : ADC berechnen = Vin(Spannung am pin A) * 1024/Vref

Vin(Spannung am pin A) berchnen = Vref*ADC/1024

Frank5
16.10.2005, 13:30
Vielen Dank.
Frank

Frank5
16.10.2005, 20:32
Hallo
klappt jetzt super! Eine Frage hab ich noch: Kann man auch ein oder zwei Stellen hinterm Komma bekommen?
Danke Gruss Frank

Nicht meckern bin noch newbie

Marco78
16.10.2005, 20:36
Nicht meckern bin noch newbie
Dieses mal halte ich mich zurück. Es handelt sich ja diesmal nicht um Grundrechenarten.

Ja, mit dem Befehl Format.

Jetzt ist die Frage ob man dir als Newbie das Anwendung zeigen soll oder du sie, um besser zu lernen, selbst erarbeiten willst?
In der Hilfe ist der Befehl beschrieben.

Am schnellsten kommst du dort hin, wen du im Compiler das Wort Format schreibst (was du ja sowieso machen musst weil du den Befehl brauchst) und F1 drückst. Die Hilfe springt dann gleich zum jeweiligen Thema.

Frank5
16.10.2005, 20:56
Bin glaub e zu blöd!
Ich gebe in Programmers Notepad Format ein und F1 drücken aber nichts geht???

Hanni
16.10.2005, 22:03
Eine Frage hab ich noch: Kann man auch ein oder zwei Stellen hinterm Komma bekommen?

Vom Prinzip her schon.

Versuchs mal wie folgt:

Formel: Vref*ADC*100/1024
und das Komma pauschal im Display einblenden (2 Nachkommastellen)


MfG, Hanni.

Marco78
17.10.2005, 03:58
Ich gebe in Programmers Notepad Format ein und F1 drücken aber nichts geht???
Dann probier mal FUSING
Welche Version hast du denn?
Ansonsten die Hilfe direkt aufrufen und nach den Befehlen suchen.

Kann sein, das ich mich jetzt verrechnet habe, aber wenn das Komma "per Hand" eingeblendet wird, dann ist nur noch eine Nachkommestelle da.

Und wenn die Ausgabe formatiert wird, hat es den Vorteil, das es immer eine bestimmte Anzahl von Zeichen sind.

Am Beispiel des ADCs-Werts.
Die erste Messung war 567.
Das wird auf dem Display angezeigt.
Die nächste Messung ist 12.
Auf dem Display steht jetzt aber 127.
Wen die Ausgabe formatiert ist spart man sich Zeit, weil das komplette Display oder die betreffenden Stellen nicht erst gelöscht werden müssen.

PS: Ich sehe grade, das es sich um C handelt. Sorry, ich war irgendwie bei BASCOM: Schon alleine durch die Beispielcodes. Wie es da geht weiss ich nicht. Aber da gibt es sicherlich auch passende Befehle.

Frank5
20.10.2005, 12:23
Hallo
Ich habe das jetzt so gelöst
result = 5*ADC/1024;
result1= result+ADCH;

//_delay_ms(500);
LCD_Print(0,0,"WERT: %i,%i",result,result1);
_delay_ms(500);
Allerdings zeigt er mir wenn ich den ADC auf REF (5V) lege nur 4,7Volt an???

Marco78
20.10.2005, 17:42
Rundungsfehler des Compilers?

PS: 5*ADC/1025 = ADC/204,8
Ich weiss ja nicht was der Compiler drauß macht, aber evtl wird der Code so kleiner und schneller? Aber evtl auch nicht wegen Kommazahlen?!

PSS: Du kannst ja mal probieren, was bei der Rechnung: 4,7*ADC/1024 passiert?
Oder allgemein mal die Spannung am ADC messen. Was für Widerstände hast du genommen?

Frank5
20.10.2005, 22:58
Ich habe es mit einem 4,7 Kohm und einem LDR als Spannungsteiler geschaltet. Vref hat exact 4,93 Volt. Das komische ist wenn ich 4,7oder z.B.4,4 eingebe, ändert sich das Ergebnis nicht erst wenn ich unter 4 gehe ändert sich was. Als würde er die Kommazahl ignorieren???

Marco78
21.10.2005, 13:06
Als würde er die Kommazahl ignorieren???

Aber evtl auch nicht wegen Kommazahlen?!
Das meinte ich ja. Müssen in C die Variablen auch definiert werden? Dann musst du mal schauen welche Komma verarbeiten.

Atreyu
21.10.2005, 16:19
float variablen

...
float a;
...

bis zu einer stelle hinterm komma
mfG
Atreyu

Marco78
23.10.2005, 13:26
Habe gier grade was gefunden, was dir helfen könnte ;)
http://www.mikrocontroller.net/forum/read-2-250520.html#250558