mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik aus 10bit spannung und strom -> watt


Autor: tobias hofer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: tobias hofer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.