ADC umrechnen

Gast #283260
Lesenswert?

Hallo
Kann mir jemand sagen, warum die Nachkommastelle bei dem Programm nicht
richtig angezeigt wird? Die Erste Stelle ist O.K.. Der ADC Rohwert
istauch O.K. Wenn ich den ADC Eingang auf 5Volt lege zeigt er1023 bei
0Volt 0. Als Kontolle habe ich ein Multimeter angeschlossen. Benutzt
wird ein Meg8 mit externer Ref.
gruss
Frank
result =(5*ADC)/1023;
result1 = result+ADCH;

_delay_ms(600);
LCD_Print(0,0,"Volt: %i,%i ",result,result1);
LCD_Print(1,0,"ADC WERT:%i",ADC);
_delay_ms(600);
Moderator Persönliche Seite #283261
Lesenswert?

> Kann mir jemand sagen, warum die Nachkommastelle bei dem Programm
> nicht richtig angezeigt wird?

Nur, wenn du uns zuerst erklärst, wie dein Algorithmus da eigentlich
funktionieren soll.  Ich finde ihn jedenfalls sehr eigenwillig und bin
nicht der Meinung, dass dabei jemals irgendwas wie eine sinnvolle
Nachkommastelle herauskommen könnte.
Gast #283262
Lesenswert?

Eigentlich will ich nur den ADC Wert auf ein LCD bringen und zwar in
Volt.
Ich habe einen Spannugsteiler mit einem LDR und ein 150ohm Widertsand.
Das Umwandel funzt ja schon nur kriege ich kein ordentliches ergebnis
zustande (Nachkommastelle). Wie muss man es sonst machen?
Frank
Gast #283263
Lesenswert?

Ich glaube, Jörg wollte wissen, wie du auf die Idee gekommen bist, daß
"result1 = result+ADCH;" irgendetwas ergeben könnte, das auch nur
ansatzweise was mit der Nachkommastelle zu tun hat.

So könnte es gehen:
1
uint16_t temp = 5 * ADC;
2
result = temp / 1023;
3
result1 = (temp * 10 / 1023) % 10;

oder noch etwas optimiert (eine Multiplikation weniger):
1
uint16_t temp = (50 * ADC) / 1023;
2
result = temp / 10;
3
result1 = temp % 10;
Gast #283266
Lesenswert?

> Kannst Du mir noch die  Zeile erklären?
> result1 = temp % 10;

Mit dem Modulo-Operator erhältst Du den Rest einer ganzzahligen
Division. Hast Du also z.B. 501 und möchtest das als 50,1 darstellen,
ist 501/10 der Teil vor dem Komma und 501%10 der Teil danach.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren