Hallo,
arbeite gerade an einer hydraulischen Waage (Frontlader), dabei habe ich jetzt ein Problem wo ich evtl. mal einen Denkanstoß benötige….
Problem: da sich die Hebelverhältnisse ändern, ändert sich der Hydraulikdruck im System (bei gleichbleibendem Gewicht). Damit wird das Messergebnis verfälscht, die Verfälschung ist leider nicht linear.
Eine einfache Lösung wäre jetzt, eine feste Wiegeposition festzulegen. Ich/wir möchte jedoch über den gesamten Hubbereich das richtige Gewicht angezeigt bekommen.
Am Frontlader habe ich nun noch einen Winkelgeber angebracht.
Die Hubhöhe beträgt max 4,5m.
Nun mein Denkansatz(auf die Zahlensysteme int / float wurde unten nicht geachtete!!!)…..
Um den Frontlader und das Hydrauliksystem zu eichen, habe ich bereits ein Programm welches in einer bestimmten Höhe (0,5m) mit einem bekannten Belastungsgewicht (100kg) das System eicht. Dieser Wert wird im EEProm gespeichert.
Nun erstelle ich ein weiteres Programm, welches mir die Gewichtsabweichung in 20 Positionen (4,5m /20 = Auflösung 0,225m) berechnet. Bei einer „Lernfahrt“ mit dem bekannten Eichgewicht fahre ich also die 20 Positionen an und speichere den berechneten Wert im EEProm (Adr. 1 bis 20) ab.
Danach erstelle ich ein Array
int KWert [20]; //Array Korrekturfaktoren
und fülle das Array mittels
for (int a = 0; a <20; a++)
{
KWert [a] == EEPROM.read(a +1); //schreibt im Array 0-19 den Wert des EEProms Ard. 1-20
delay(50); //kurze Verzögerung
}
obiges soll bei jedem Bootvorgang einmal durchlaufen werden.
Bei der Gewichtsberechnung lasse ich dann den Korrekturwert wie folgt mit einfließen:
int KFaktor = KWert [(aktuelle Höhe / (4,5 /20))-1];
obige Formel soll durch integer-division an die richtige Position im Array springen.
Beispiel:
aktuelle Hubhöhe = 1m (sollte dann der 4te Wert im Array sein, also Speicherplatz 3 im Array)
Ergebnis lt. Formel sollte dann 3,44444 sein, was dann als intzahl 3 ist und somit auf die 4te Zahl ( Adr. 3)im Array zugreift.
Haut das so hin, oder gibt es einen wesentlich einfacheren Ansatz zur Lösung und ich denk nur wieder zu kompliziert..?
Darf für den Zugriff auf das Array der Wert in den []Klammern berechnet werden, oder muss die Adresse zuvor in einer extra Zeile berechnet werden?
Vielen Dank für eure Mühen und den evtl. Denkanstoß