aus 10bit spannung und strom -> watt

Gast #32187
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
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
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

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.