aus 10bit spannung und strom -> watt

Gast #32187
Lesenswert?

hallo

ich baue mir eine elektronische last. nun habe ich
zwei 10bit wandler mit denen ich die spannung und den strom
messe.
aus dieser spannung und dem strom erechne ich die leistung.

nun mein problem:
kann mir jemand vieleicht einen tip geben wie ich am besten die leistung 
"stellen richtig" auf meinem display anzeige?

z.B
spannung vom wandler ist 1V mein unsigned long wert ist dann
ja 1000
strom vom wandler 500mA, mein wert 500
1000*500=500000 auf dem display sollte dann stehen 0.5W usw.

ich habe mal im anhang mein lösungsversuch.
vieleicht kann mir jemand einen tip für eine profesionellere,elegantere 
lösung geben.

besten dank
tobias
Angehängte Dateien:
Gast #32188
Lesenswert?

Hallo, es führen viele Wege nach Rom...
Nur ein paar Anregungen: (habe selbst nichts ausprobiert)

az_zeichen=sprintf(buf,"%lu",watt);  -->
az_zeichen=sprintf(buf,"0%lu",watt);
das bringt eine führende Null für den 1. Fall, dann kannst Du die 3 
Fälle gleich behandeln (die Länge ist jetzt im Fall 2 und 3 um eins 
größer, k und l um 1 erhöhen!)

dann kannst du die Fallunterscheidung anfangs machen und alle 3 Fälle 
gleich behandeln:
if( watt                  <=   999) {k=0;l=1;}
if((watt >=  1000)&&(watt <=  9999)){k=1;l=2;}
if((watt >= 10000)&&(watt <= 99999)){k=2;l=3;}
evtl. ist l immer k+1, testen !

for(j=0;j<1;j++){  -->
for(j=k;j<l;j++){    //0 --> k, 1 wird zu l (kleines L)

Statt der 3 if-Zeilen kannst Du auch ein Konstrukt mit ? machen:
k=(watt<=999)?0:(watt<=9999)?1:2
oder zumindest so ähnlich

oder einfach die Länge des Strings minus einer Konstanten (k=länge-3).
Gast #32189
Lesenswert?

hallo

az_zeichen=sprintf(buf,"0%lu",watt);

verstehe ich das richtig das ich bei der sprintf() fkt. das 0
in diesem bsp. durch k ersezte,
und wenn k=0 -> ausgabe auf lcd 0.xxx
und wenn k=1 -> ausgabe auf lcd x.xxx
und wenn k=2 -> ausgabe auf lcd xx.xx

das wäre wirklich eleganter.
weist du wie es mit dem speicherbedarf aussieht von sprintf()?

auf jeden fall besten dank.

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