Progressbar - Weniger Volt - Mehr Prozent ?

Hallo zusammen,

ich arbeite hier mit einem AD8317 oder einem AD8318 zum messen von kleinen Leistungen. Nun brauch ich mal eueren Gedankenanstoß zum Thema Progressbar (in %). Der AD831x liefert eine Spannung zum Messen der Ausgangsleistung. WENIGER Spannung ist mehr Leistung !!!! Und dass ist der Knackpunkt.

Der Bar zu sagen mehr Spannung == mehr Leistung ist ja nicht das Problem, aber umgekehrt ?

Vielleicht hat ja jemand eine Idee ?

Fakten:

Ich arbeite mit einem Arduino Mega und einem Nextion Display, wobei das ja im Moment Zweitrangig ist.
Ich nutze die Interne Aref des Mega ( Die interne 2.56V ). Mehr benötige ich nicht.

Das einlesen des Analogen Pins:

    A_volt  =  analogRead(analogIn);
    A_volt  =  A_volt * (2.56 / 1023.0);
    
    bar1 = A_volt * 100 / 2.56;  // Umrechnung Prozent
    Serial.println(bar1);

Vielleicht fällt hierzu ja jemand was ein. Danke !

Gruß Wolle

Was ist deine Frage?

Suchst du nach der map() Funktion?

themanfrommoon:
Was ist deine Frage?

Suchst du nach der map() Funktion?

Keine Ahnung ob das die map() Funktion kann.

Beispiel an den Haaren herbei gezogen.

Laut normaler Volt / Prozent Messung:

2 Volt werden als 90% auf der Progressbar angezeigt. Maximale Ausgangsleistung ist aber bei 1.7 Volt. Dreh ich nun auf max, bekomme ich ja einen kleineren Wert als % angezeigt. Und hier muss ich ja was umrechnen.

Gruß Wolle

Mach’ so was:

Serial.println(100-bar1);

Keine Ahnung ob das die map() Funktion kann.

Also suchen und lesen kann ich dir leider nicht beibringen. Das musst du schon selber können.

zwieblum:
Mach' so was:

Serial.println(100-bar1);

Danke. Im Prinzip hast du recht, aber dann sind an der Skala 2 Volt nicht mehr 2 Volt.

Gruß Wolle

Ich geb dir noch einen Tipp: Du suchst die map() Funktion!

themanfrommoon:
Also suchen und lesen kann ich dir leider nicht beibringen. Das musst du schon selber können.

Klar! Schließt nicht aus das ich das nicht lese und suche, aber du hast mir eine Frage gestellt.

Was ist deine Frage?

Suchst du nach der map() Funktion?

Gruß Wolle

DL2MWB:
Danke. Im Prinzip hast du recht, aber dann sind an der Skala 2 Volt nicht mehr 2 Volt.

Gruß Wolle

    bar1 = A_volt * 100 / 2.56;  // Umrechnung Prozen

Da steht PROZENT im Kommentar, nicht Volt.

zwieblum:

    bar1 = A_volt * 100 / 2.56;  // Umrechnung Prozen

Da steht PROZENT im Kommentar, nicht Volt.

Klar, da hast Du recht. Sagte ja im Prinzip geht das so.

Gruß Wolle

PS: Ich werde mich mal mit der map() Funktion befassen und bisl lesen ..

Hi

Schon nach der map()-Funktion geschaut?
Bin mir ziemlich sicher, daß Die Das kann.

Auch könntest Du, wenn denn eine Frage da ist, ein entsprechendes Zeichen nutzen.
Klar sind wir auch an Deinen Erfahungen interessiert - man wird nicht dümmer - aber ob dann Antworten kommen? (oha - eine Frage ... die 2.te)

MfG

Im Prinzip haben wir also (mal wieder) einen lieblos zusammengekehrten Haufen Code, den wir hier 'reparieren' sollen ... oder?

postmaster-ino:
Hi

Schon nach der map()-Funktion geschaut?
Bin mir ziemlich sicher, daß Die Das kann.

Auch könntest Du, wenn denn eine Frage da ist, ein entsprechendes Zeichen nutzen.
Klar sind wir auch an Deinen Erfahungen interessiert - man wird nicht dümmer - aber ob dann Antworten kommen? (oha - eine Frage ... die 2.te)

MfG

Im Prinzip haben wir also (mal wieder) einen lieblos zusammengekehrten Haufen Code, den wir hier 'reparieren' sollen ... oder?

Wo hab ich geschrieben das mir jemand einen fertigen Code liefern soll bzw. meinen lieblos zusammengekehrten Haufen Code reparieren soll ?

Ich habe um einen Gedankenanstoß gebeten. themanfrommoon hat mir dazu ja schon auf die Sprünge geholfen mit seiner Antwort das ich nach der map() Funktion suchen soll. Fertig!

Gruß Wolle

Hi

Schön, daß Du sogar Fragen stellen kannst - in #11 war übrigens Frage Nummer 2 dieses Thread von Dir - und Das hast Du nicht geschrieben, sondern ich nur so interpretiert - aber durch Dein Auftreten kann ich mir was Anderes kaum vorstellen.
Ok, wieder ich - aber immerhin.

Fertig!

MfG

Hmmm, ich habe in diesem Forum viel gelernt. In letzter Zeit scheint es allerdings immer mehr so zu sein das Fragen nicht mehr willkommen sind.

Danke nochmals für die Hilfe.

Gruß Wolle

Ich schätze du hast da was mißverstanden.
In deinem #2 habe ich folgendes von dir erwartet:

"Ich hab mir die map() Funktion angeschaut, und die tut genau das was ich wollte.
Vielen Dank für den Tipp und schönen Tag noch."

Dann wäre das Thema schon nach einem kleinen Denkanstoß erledigt gewesen.

Aber der Wink mit dem Zaunpfahl kam wohl nicht an.
Vielleicht muss ich nächstes Mal anders winken?!

themanfrommoon:
Ich schätze du hast da was mißverstanden.
In deinem #2 habe ich folgendes von dir erwartet:

"Ich hab mir die map() Funktion angeschaut, und die tut genau das was ich wollte.
Vielen Dank für den Tipp und schönen Tag noch."

Dann wäre das Thema schon nach einem kleinen Denkanstoß erledigt gewesen.

Aber der Wink mit dem Zaunpfahl kam wohl nicht an.
Vielleicht muss ich nächstes Mal anders winken?!

Der Wink ist doch angekommen. Steht doch in Post #9 ...

Gruß Wolle

Also Problem gelöst?

Die Arduino Reference läuft im moment nicht sonst würde ich den Link vorschlagen: https://www.arduino.cc › reference › language › functions › math › map

Der Menupunkt Reference die Arduino Reference läuft im Moment nicht, sonst würde ich vorschlagen: https://www.arduino.cc > Reference > Language > Functions > Math > Map
Der direkte Link funktioniert: map() - Arduino Reference

Grüße Uwe

[EDIT]richtigen Link eingefügt und Text verständlicher gestaltet. [/Edit]

uwefed:
Also Problem gelöst?

Die Arduino Reference läuft im moment nicht sonst würde ich den Link vorschlagen: https://www.arduino.cc › reference › language › functions › math › map

Grüße Uwe

Hallo Uwe, ich würde mal sagen JAIN :slight_smile:

Die Funktion an und für sich hab ich nun glaub verstanden. Zumindest das Rechnen der % (Normal und Reverse)..

   A_volt  =  analogRead(analogIn);
    int bar3 = map(A_volt, 0, 1023, 0, 100);    // Ausgabe in % (Normal)
    int bar4 = map(A_volt, 0, 1023, 100, 0);    // Ausgabe in % (Reverse)

Nun hab ich ja immer noch das Problem der Richtigen Anzeige.

Bemerkung:
VRef 2.56 Volt
Grafischer Balken der bis 2.56 Volt geht

Liegen nun 2 Volt an, dann zeigt es das im Normalbetrieb (bar3) auch bei 2 Volt an ...
Im Reversebetrieb (bar4) wenn nun 2 Volt anliegen, steht die Anzeige am Balken natürlich nur bei ca. 0.5 Volt.

Hab ich da einen Denkfehler ?

Gruß Wolle

uwefed:
Also Problem gelöst?

Die Arduino Reference läuft im moment nicht sonst würde ich den Link vorschlagen: https://www.arduino.cc › reference › language › functions › math › map

Grüße Uwe

Wieso? Die funktioniert mit einem richtigen Link. > gehören da wohl nicht rein.

Gruß Tommy

Uwe, was du gepostet hast, scheint kein Link zu sein, geht jedenfalls nicht.
Das hier (map) sollte aber gehen.

Bei map ist zu beachten, dass es nur mit Ganzzahl-Werten (long, also int32_t) geht:

Eine Geradengleichung mit float - Variablen von Hand in C++ zu programmieren, sollte aber auch kein Hexenwerk sein.

Wobei 10 bit - ADC Werte auf Zahlen im Bereich 0 .. 100 abzubilden, keine rechenintensive float-Arithmetik braucht, meiner Meinung nach.

Ist es überhaupt eine Gerade ?