Probleme mit der Firmware zur Justierung der Waage auf ESP8266

int reicht nicht, muss ein long sein. unsigned geht auch nicht, kann u.U. negatiiv werden, daher long

ja, das passt so!

Wunderbar, ich habe es angepasst: scale-adjust-hx711.ino. Über einen abschließenden Test von Euch beiden (@clemens und @Thias) würde ich mich sehr freuen, um die Änderungen in den master branch mergen zu können. Am besten sowohl auf ESP8266 als auch auf AVR.

Danke!

Sollten wir beim Justierungssketch für den ADS auch ändern!

Hi Clemens,

die Firmware zur Justierung der Waage über den ADS1231 müsste bzgl. aller hier besprochenen Unzulänglichkeiten bereits auf dem selben Stand sein: scale-adjust-ads1231.ino.

Ich freue mich hier natürlich auch über Rückmeldungen von allen, die entsprechende Hardware im Haus haben.

Viele Grüße,
Andreas.

Weil Ostern vor der Tür steht und wir die Verbesserungen bei

nach abschließenden Tests bald mergen wollen, wäre es auch toll, hier nach einem kurzen Test von Euch zum Abschluss zu kommen. Kriegt Ihr das hin?

Danke schon im Voraus!

Viele Grüße,
Andreas.

Hallo @Andreas @clemens @Thias ,

da hat sich gerade etwas ganz doof überschnitten. Ich hab seit 4 Tagen einen Sketch in der Pipeline zwecks Kalibrierung, der fast alle benötigten Werte für meine Firmware ermittelt. Das wären:

-Tara
-kgDivider
-ADC zu Input-VCC Abweichungsanpassung
-Kalibrierungstemperatur (zur späteren Ermittlung der Abweichung)

Der Abweichungsfaktor Gramm pro Grad lässt sich in dem Sketch leider nicht ermitteln, da man natürlich längerfristige Messreihen mit Temperaturschwankungen benötigt.

Ich hoffe der Sketch wird heute noch fertig. Habe noch mit Kinderkrankheiten zu kämpfen.

Das ist super, wir haben ohnehin überall verschiedene Varianten von allem rumfliegen. Sobald Du Deine Firmware zur Justierung beiträgst, können wir schauen, ob da irgendwas irgendwann konvergieren kann. Gerade die Temperaturkompensationsaspekte wären neu im Vergleich dazu, was wir schon haben und da freuen wir uns tierisch drauf!

Basiert Deine Firmware ebenfalls auf Homie?

Jein, nicht wirklich. Homie ist zwar eingebunden, aber nur für den Stream Operator. Auf der anderen Seite Spuckt es alles node-wifi-mqtt-homie-(battery) kompatibel aus

So, erstes Release ist als PR raus. @clemens Ich hab mir auch mal deinen Code angeschaut. Was ich nicht verstanden habe: Warum ermittelst Du upper und lower Werte? Magst Du mir das kurz vermitteln?

-ADC zu Input-VCC Abweichungsanpassung

was soll das sein? 3,3 V vs. 5 V?

Für die Temperatur brauchen wir noch Daten, wir hatten hier ja schon mal was rumgeschickt bisher war das sehr individuell. Für mich gibt es da keinen Bedarf bevor da nicht handfeste Daten vorliegen.

VG Clemens

Mein Waage ist nicht sehr schwer und der 0-Punkt ist teilw. bei Wägezellen negativ. Im unteren Bereich - bis ca. 1 kg - ist das nicht linear, daher

  1. Nullpunkt bestimmen
  2. irgendein Gewicht drauflegen und unteren Punkt bestimmen
  3. mit einem bekannten Gewicht beschweren und Gewicht in g eingeben
  4. ermittelte Werte in sketch eintragen

Bei den schweren Gestellen kann 1 und 2 gleich sein.

VG Clemens

@clemens:
Zu 1:
Ich messe hinter dem HT7333A Spannungsregler mittels ADC_MODE(ADC_VCC);, also nicht die Eingangsspannung des/der Akkus/Solarzelle, sondern die geregelte Spannung. Da der HT7333A erst bei ~3,45 und bei entsprechender Leistungsabnahme einbricht, reicht das. Sackt der Wert unter 3.2 Volt hinter dem Regler ab, ist die Zelle zu schlapp und Solar zu wenig und messen tue ich eh nur noch Mist, da die Kalibrierung der Zelle bei 3.3 v auf der EXC+ stattgefunden hat.

Leider liegt der ADC_VCC bis zu 0.2V nebe n der Realität. Dazu dient dieser Wert.

Zu 2.
Im Gegensatz zum ADS1231(?) ist die Kombo aus HX711 + ESP8266 deutlich temperaturempfindlicher. Sehe ich ziemlich deutlich in der Graphen, ich schätze mal 100g auf 10 Grad. Muss ich aber mal durchrechnen. Also hab ich schon mal die Settings und Korrektur Code gebaut.

Einleitung: verstehe (Einschränkung siehe unten)

  1. verstehe
  2. verstehe ich immer noch nicht
    3.-4 klar

Einleitung/2. verstehe ich doch nicht, da ich meinen Code immer mit Gestell-losen Zellen entwickelt habe. Ich habe immer positive Werte, es sei denn ich verwechsele SIG+/SIG- bzw. nachdem ich das TARA-Offset gesetzt habe, dann gibt es bei 0-Last schon mal leicht negative Werte a la -2,53g

Übersehe ich was?

auf meinem ESP8266 fliegt mir die HX711 Firmware bei Aufruf von serial_poll() um die Ohren.

wieder mit ‘soft WDT reset’?

jawoll, hätte ich erwähnen müssen

PS: im Terminal übersetzt

Dann ist das hier noch nicht rund:

@Andreas: Vllt doch eher die Logik für <=106 wie bei bogde? (müßte natürlich an andere Stelle; bzw. eine Kombi aus beiden)
https://github.com/bogde/HX711/blob/master/HX711.cpp#L4-L8

Kannst Du sagen, was die Variable ARDUINO_VERSION bei Dir enthält?

error: 'ARDUINO_VERSION' was not declared in this scope

In der IDE übersetzt mag es bestimmt funktionieren.

Hmm. also sowas könnte gehen (ohne Gewähr):

#if ARDUINO_VERSION <=106  
  void yield(void) {};
#endif
yield();

Die entsprechende Variable heißt im makeEspArduino.mk anders: ESP_ARDUINO_VERSION , das paßt vllt besser in eine #ifdef-Konstruktion; oben einfach ein ..106 || !ESP_ARDUINO_VERSION wird kaum gehen…