? die 1023 verhalten sich zum aktuellen Wert wie 100 % zu deinen Anzeigewert. Einmal umdrehen hiesse
Prozent = (100 * Meßwert) / 1023
Hallo,
ich habe es hinbekommen eine Spannung von 0 - 5 V mittels Poti an den AVR zu geben und dort in einen Digitalen Wert 0 - 1023 umzuwandeln.
Diesen Wert gebe ich auf meinem LCD aus. Ich habe aber vor mit diesem Wert die PWM einzustellen was auch kein Problem ist.
Nur würde ich jetzt gerne die PWM in % auf meinem Display anzeigen.
Ich komme aber mit der Umrechnung nicht klar. Wenn möglich würde ich sogar am liebsten mit einer nachkommastelle ausgeben.
Ich hoffe ihr könnt mir da auch die Sprünge helfen.
gruß ceekay
? die 1023 verhalten sich zum aktuellen Wert wie 100 % zu deinen Anzeigewert. Einmal umdrehen hiesse
Prozent = (100 * Meßwert) / 1023
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hallo,
vielen dank ertsmal.
ich hab das jetzt ungefähr so gemacht:
long int pwm_wert;
int adc_wert;
pwm_wert = (100 * adc_wert) / 1023;
Die Variable pwm_wert muss ein long int sein, oder? Da bei der Berechnung ja als Zwischenergebnis eine Zahl größer 16 Bit rauskommt.
wie kann ich nun die Variable pwm_wert wieder in einen Integer packen?
gruß ceekay
hi,
die variable pwm wert muss nicht long int sein, nur solltest du vielleicht dazwischen einen kurzen cast angeben
anstatt 1023 müsste es ja eigentlich 1024 sein, da es 1024 und nicht 1023 stufen sind.
/ 1024 lässt sich auch besser als >> 10 schreiben.
wie meinst du das mit einem kurzen cast?
gruß ceekay
@Nollsen: sein maximaler Meßwert sind 1023, und der soll glatt 100% darstellen. Nehm ich 1024, krieg' ich
Prozent = (100 * 1023) / 1024
und das sind offensichtlich keine 100
Du hast zwar 1024 ZAHLEN aber nur 1023 Meßstücke, das ist das zwischen den Zahlen
hm, das ist eine abweichung von einem promille,
und die division spart ein paar hundert anweisungen,
entspricht dann eigentlich
wert 0 = 0,0000V
wert 1023 = 5,0000V?
Is eh nur theoretisch. Praktisch (für MEINEN privaten Anzeigebedarf) tät ich einfach durch zehn dividieren. Dreh einmal ein Poti 1/100 des Weges und dann stell noch eine Dezimale ein. Und dann muß der Motor noch drauf reagieren. Der reagiert stärker auf allles andere rundherum
Wie gesagt: IMHO, meine persönliche Meinung
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
wert 0 = 0 V
wert 1023 = 5 V
ja
wie meintest du das jetzt mit dem cast ich krieg da nur komische werte raus. was muss ich denn noch beachten?
gruß ceekay
Komputer und Kompiler sind von Geburt an schwachsinnig. Man muß oft alles genau erklären:
pwm_wert = (int)(((long int)100 * (long int)adc_wert) / (long int)1023);
Dann hat er keine ausrede mehr.
("C" kommt von "casten", "C++" von "noch mehr casten")
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen