LCD-Anzeige Arduino Nachkommastelle

Gast #5923610
Hallo zusammen,

Ich bastle grad an einer Strommessung mit einem Arduino.
Der Arduino misst den Strom indirekt über eine Sensorspannung 0-5V am 
A0.
0-5V entsprechen hierbei 0-40A.

Der Strom von 0-40A wird über das LCD-Display ausgegeben.
Nun habe ich das Problem, dass der Wert vom Analogen Eingang dauerhaft 
schwankt auf den letzten Bits.

Dementsprechend wird mir der Strom auch schwankend am Display 
ausgegeben.

Gibt es dafür eine einfache Lösung, dass der Anzeigewert nicht so 
schwankt?.

Danke im Voraus.
Gast
Stephan schrieb:
> Miitelwert bilden soll helfen

Mein Fehler, hätte ich auch selbst drauf kommen können.
Dachte irgendwie es gäbe eine extra Funktion dafür.

Hab den Mittelwert mit einer Schleife gebildet und jetzt passt alles.

Danke!
Gast
Eugen schrieb:
> Dementsprechend wird mir der Strom auch schwankend am Display
> ausgegeben.

Bei der LCD-Ausgabe die Anzahl der Nachkommastellen angeben:
1
float Current = 1.753;
2
float Voltage = 3.9754;
3

4
lcd.print(Current, 1);
5
lcd.print(Voltage, 2);

Die Anzeige wird dann 1.7 bzw. 3.97.

In einem anderen Aufbau merke ich mir den Wert, es ist eine Temperatur, 
und schreibe nur ins Display, wenn der neue Wert sich um mindestens 2° 
geändert hat.

Ständiges Schreiben ist doof, da flackert das Display unangenehm.
Eugen schrieb:
> wird über das LCD-Display ausgegeben

ich hoffe du aktualisiert das Display nicht alle 10ms oder öfter, mehr 
als 4 Werte pro Sekunde kann eh niemand erfassen.
Schlecht wäre auch das ganze Display immer wieder zu löschen, machts nur 
unruhiger. Den alten Text passend zu überschreiben ist sinnvoller.

Auch würde ich auf float LIB verzichten, kostet nur Speicherplatz, 
besser Ganzzahlrechnung, bei Volt möglicherweise in deziVolt oder 
centiVolt. Das Komma oder den Punkt kann man ja per Zeicheninsert im 
String einfügen.

Mittelwertbildung 2^n Messwerte aufaddieren und dann mit n rechtsshiften 
geht schneller als rechnen.
Gast
Joachim B. schrieb:
> ich hoffe du aktualisiert das Display nicht alle 10ms oder öfter, mehr
> als 4 Werte pro Sekunde kann eh niemand erfassen.

Das war meine erste Erfahrung mit LCD am Arduino.

> Schlecht wäre auch das ganze Display immer wieder zu löschen, machts nur
> unruhiger. Den alten Text passend zu überschreiben ist sinnvoller.

lcd.clear ist doof, wenn nötig, überschreibe ich nur eine Zeile mit 
Leerzeichen. Um Speicherplatz zu sparen, als Subroutine:
1
void lcd_clrline(int LineNo) {  // Zeilen 0..3
2
  lcd.setCursor(0,LineNo);
3
  lcd.print(F("                    "));
4
  lcd.setCursor(0,LineNo);
5
}

Überschreiben nur des Wertes erfordert Denkarbeit, wenn sich dessen 
Länge ändern kann - auch das muß man erstmal selbst erfahren.

> Auch würde ich auf float LIB verzichten, kostet nur Speicherplatz,
> besser Ganzzahlrechnung

Solange das nicht am Platz klemmt ist es egal, Zitat von unbekannt: "Für 
gesparten Speicher gibt es kein Geld zurück"

> Mittelwertbildung 2^n Messwerte aufaddieren und
> dann mit n rechtsshiften geht schneller als rechnen.

Wenn ich Zeit habe, hole ich n-Meßwerte und werfe den Min- / Maxwert 
weg.
Gast
Manfred schrieb:
> Ständiges Schreiben ist doof, da flackert das Display unangenehm.

Je nachdem WIE man es macht. Ich bevorzuge das Ablegen des 
Displayinhalts im RAM 1:1. Den Rest macht eine ISR mit ca. 4 
Auffrischungen /Sekunde, da ist nichts sichtbar (außer den Änderungen 
der Werte).

Bei einer Arduino LCD Lib von XY sieht man nicht unbedingt was bei 
"Write_LCD, XY" passiert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 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.