Elektronische Schwerpunktwaage

  • skyfreak
  • skyfreak's Avatar Offline
  • Platinum Mitglied
  • Platinum Mitglied
  • Beiträge: 2946
  • Dank erhalten: 1446

skyfreak antwortete auf Elektronische Schwerpunktwaage

Posted 13 Feb. 2019 15:36 #67
hallo wolfgang

danke für deinen input.
ich kann mich nur wiederholen, ich habe von C mal so gar keine ahnung und hangel mich durch in dem ich andere teile des codes anschaue und anhand dessen versuche nachzubauen, wenn auch oft ohne verständnis was warum passiert :whistle:

aber zu deinen anmerkungen ... kleines video, dass die geschichte vielleicht einfacher verständlich macht.

Tare-Problem - (Video .mov) - Dropbox

gruss und danke,
guido
Fliegergruss
GUIDO



_________________________________________________________
Too many dicks on the dance floor.
Too many dicks!​


Last Edit:13 Feb. 2019 15:38 von skyfreak
Letzte Änderung: 13 Feb. 2019 15:38 von skyfreak.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • w.w.
  • w.w.'s Avatar Offline
  • Platinum Mitglied
  • Platinum Mitglied
  • Beiträge: 1039
  • Dank erhalten: 360

w.w. antwortete auf Elektronische Schwerpunktwaage

Posted 13 Feb. 2019 16:44 #68
Das sieht für mich so aus, als ob du in der CgScaleWebApi keine Variable der Klasse CgScale deklariert hast. Daher kannst Du nur den '::'-Aufruf über die Vervollständigung sehen. Da die Funktion aber keine statische Funktion ist, ist der Aufruf so nicht erlaubt.

Setze doch in der Funktion oben mal ein
Code:
CgScale Sclale;
ein und da, wo bisher der Aufruf mit '::' steht ein
Code:
Scale.Tare();
Gruß Wolfgang
von w.w.
Folgende Benutzer bedankten sich: skyfreak

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • skyfreak
  • skyfreak's Avatar Offline
  • Platinum Mitglied
  • Platinum Mitglied
  • Beiträge: 2946
  • Dank erhalten: 1446

skyfreak antwortete auf Elektronische Schwerpunktwaage

Posted 13 Feb. 2019 21:38 #69
danke wolfgang

jetzt habe ich in der CgScaleWebApi.cpp ganz oben eingetragen
Code:
CgScale Scale;

dann in das void CgScaleWebApi::OnModelsGet(AsyncWebServerRequest *request) Scale.Tare(); ganz oben hinzugefügt
Code:
void CgScaleWebApi::OnModelsGet(AsyncWebServerRequest *request) { Scale.Tare(); AsyncJsonResponse *response = new AsyncJsonResponse(); JsonObject &root = response->getRoot(); JsonArray &modelsJson = root.createNestedArray("Models"); for (CGModel value : Models.models) { JsonObject &model = modelsJson.createNestedObject(); model[F("ModelName")] = value.Name; model[F("ModelWeight")] = value.Weight; model[F("ModelCg")] = value.CG; } response->setLength(); request->send(response); }

ausgeführt wir void CgScaleWebApi::OnModelsGet(AsyncWebServerRequest *request) dann am ende der CgScaleWebApi.cpp
Code:
server.on("/api/models", HTTP_GET, std::bind(&CgScaleWebApi::OnModelsGet, this, _1));

das kompiliert ohne fehler, upload, waage läuft alle funktionen passen.
gewicht auf die lastzellen aufgelegt
cgscale.local/api/models im browser aufgerufen
auf der seite wird in plaintext ausgegeben
Code:
{"Models":[{"ModelName":"test 1","ModelWeight":111.67,"ModelCg":82.2}]}

also gehe ich davon aus, dass void CgScaleWebApi::OnModelsGet(AsyncWebServerRequest *request) ausgeführt wurde aber Scale.Tare(); nicht. :(

grüsse und immer wieder dank für die hilfe
guido
Fliegergruss
GUIDO



_________________________________________________________
Too many dicks on the dance floor.
Too many dicks!​


von skyfreak

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • w.w.
  • w.w.'s Avatar Offline
  • Platinum Mitglied
  • Platinum Mitglied
  • Beiträge: 1039
  • Dank erhalten: 360

w.w. antwortete auf Elektronische Schwerpunktwaage

Posted 14 Feb. 2019 09:21 #70
Hallo Guido,

ich habe mich jetzt nicht speziell mit deiner Waage beschäftigt, aber Tare ist eigentlich nur das "Nullen" einer Wage. Es sollte also noch eine andere Funktion für das auslesen des Gewichts existieren.

So wie man es auch von der Küchenwage kennt:
1. Waage einschalten => zeigt nach einer kurzen Zeit 0,0 g an
2. Schüssel auf die Waage => zeigt Gewicht der Schüssel an
3. Tara / Tare drücken => Waage zeigt wieder 0,0 g an
4. Zutat einfüllen => Waage zeigt Gewicht der Zutat

Also hier
1. Tare ausführen => Waage ist auf 0 g
2. Flugzeug auf die Waage
3. Messwert auslesen

Gruß Wolfgang
Gruß Wolfgang
von w.w.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Stefan F3k
  • Stefan F3k's Avatar Offline Autor
  • Platinum Mitglied
  • Platinum Mitglied
  • Beiträge: 389
  • Dank erhalten: 118

Stefan F3k antwortete auf Elektronische Schwerpunktwaage

Posted 14 Feb. 2019 12:11 #71
Ne so wird das nicht funktionieren.
Und einfach mal eine neue Scale initialisieren schon gleich 3x nicht.

Du hast doch eh schon Zugriff auf das Scale object mit "localScale".

Dann machst du halt eine neue API kA /api/tare und ne funktion OnTageGet wie auch immer und da packst du dein localScale.Tare() hinein.
von Stefan F3k
Folgende Benutzer bedankten sich: skyfreak

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • skyfreak
  • skyfreak's Avatar Offline
  • Platinum Mitglied
  • Platinum Mitglied
  • Beiträge: 2946
  • Dank erhalten: 1446

skyfreak antwortete auf Elektronische Schwerpunktwaage

Posted 14 Feb. 2019 13:26 #72
merci stefan

das ist zwar kurz und knapp, aber ich denke dass ich damit erfolg haben könnte. :)
und damit meine ich nicht, dass ich an deinem input zweifle, sondern ob ich das auch hinbekomme :oops:
anway, ich werde das probieren, bleibe weiter dran, lerne immer mehr dazu und bin zuversichtlich!
gebe feedback sobald ich getestet habe.

@wolfgang
yep TARE - TARIEREN - auf NULL setzen, egal wieviel gewicht auf den zellen lastet, auch wenn es hier nur ohne last sinn macht.
das meine ich schon TARE und habe das auch richtig verstanden.

hintergrund. ich habe die waage mit den skalierbaren auflagen gebaut.
zum einen habe ich auf jeden fall mindestes 3 optionen für z.b. den abstand der auflagen wingpegdistance in der config.
zum anderen mache ich gerade testreihen zum kalibrieren, sprich ich mache mit unterschiedlichstem aufbau - kalibriergewichte unterschiedlichen gewichts und deren position über den auflage - feldest und notiere die werte.
dabei ist es so, dass die billigen lastzellen und HX711 sensoren aus china natürlich die entsprechende quality haben. sie driften, mal mehr mal weniger.

bei meinen wiege und kalibriertests ist mir nun aufgefallen, dass die zellen z.b. bei einer längeren verweildauer einer last auf der waage nicht wieder korrekt auf null zurückstellen beim entlasten. oder wenn ich die waage starte, also die powerbank dran hänge, dann pendeln sich die einzellasten erst ein. es startet mit einer anzeige von über 60gr. dann fällt es binnen 1-2 sekunden sehr schnell ab auf um den nullpunkt und verrharrt dann nach leichtem anstieg auf +/- 3-5 gr. was ich als sehr viel empfinde.
wenn ich dann den reset button am board drücke (noch immer nur die waage auf dem tisch ohne last), dann startet der conrtoller ja komplett neu und spult den ganze code sozusagen vor vorne ab, und siehe da jetzt zeigt die waage einzellasten an, die zwischen +/- 0.03 gr pro zelle liegen, das finde ich wiederum fantastisch.

soweit so gut könne man ja sagen, dann passt doch alles. reset button am board drücken und gut ist.
JEIN, prinzipiell geht das. und im heimnetzwerk geht das sogar sehr schnell, wenn ich da den reset drücke muss ich oft nicht mal den browser refreshen. der beleibt stehen, und nach 3-5 sekunden rennt die anzeige tarriert weiter.

ABER wenn ich den accesspoint mode wähle, dann dauert das schon sehr lange, bis zu 20 sekunden und nur nach mehrmaligem laden der seite auf dem smartphone. und das erscheint mir logisch. sich beim neustart in ein bestehendes netzwerk einzuwählen in dem ich auch noch static immer die selbe IP zugerodnet bekomme, ist für den wifi chip auf dem board sicher um ein vielfaches schneller und einfacher als erst kurz warten ob ein netzwerk zur verfügung steht -nein, dann eben accesspoint aufmachen, dns server wieder bereit stellen code abarbeiten.

also dachte ich mir, wenn doch alles so schön über die webapi gesteuert wird, dann sollte es doch möglich sein eine tare() funktion zu per button zu steuern, dann werden nur die zellen tariert und fertig. und weil ich das im arduino code schon selber getestet habe und nachvollziehen konnte, ist es klar, dass es in C auch gehen muss.

lage rede kurzer sinn, ich stehe kurz vor der vollendung meiner wunschwaage ;)

grüsse,
guido
Fliegergruss
GUIDO



_________________________________________________________
Too many dicks on the dance floor.
Too many dicks!​


von skyfreak

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 1.060 Sekunden