Taktgeschwindigkeit erhöhen Arduino

Hallo,

allein die ständige Wiederholung der "Namen" kostet Zeit.

    datenfile.println("");
    datenfile.print("Zeit: ");
    datenfile.println(verg_speicherzeit);
    datenfile.print("Spannung: ");
    datenfile.print((float)rmsVals.VoltageRMSValue/1000, 3);
    datenfile.println(" V");
    datenfile.print("Strom: ");
    datenfile.print((float)rmsVals.CurrentRMSValue/1000, 3); 
    datenfile.println(" A"); 
    datenfile.print("Frequenz: ");
    datenfile.print(pqVals.FrequencyValue);
    datenfile.println(" Hz");
    datenfile.print("Wirkleistung: ");
    datenfile.print((float)powerVals.ActivePowerValue/1000, 2);  
    datenfile.println(" W");
    datenfile.print("Blindleistung: ");
    datenfile.print((float)powerVals.FundReactivePowerValue/1000, 2);  
    datenfile.println(" var");
    datenfile.print("Scheinleistung: ");
    datenfile.print((float)powerVals.ApparentPowerValue/1000, 2);  
    datenfile.println(" VA");   

Die Daten landen doch am Ende bestimmt in einer Tabelle? Excel o.ä.?
Dann schreibe bei Datei Ersterstellung einmal eine Kopfzeile mit diesen und danach immer nur die Daten mit bspw. Komma getrennt. Dann kannste hinterher alles bequem in Excel einlesen und formatieren. Würde hier über die Hälfte der Übertragungszeit sparen.

Edit: sorry, hat noiasca schon angesprochen

Es gibt 2 Möglichkeiten. Kurzfristig viele Daten hintereinander erfassen. Das braucht Speicher der dann weggeschrieben werden muss. Das heißt schnelle Datenerfassung und Pause wechseln sich ab. Bei kontinuierlicher Datenerfassung bestimmt die Übertragung die Erfassungsgeschwindigkeit.

Dein Display wird am langsamten sein. Hier gilt auch nur notwendige Daten übertragen. Möglichst mit jedem loop Durchlauf ein Wert. Du musst also die Daten für das Display in Happen aufteilen. Für ein Display reicht sowieso aller 500ms eine Aktualisierung oder größer.

Und dann musste eben schauen was deine externe Hardware so an Bustakt verträgt. Dann gehts weiter mit kurzen Kabeln usw.

2 Likes