Schwerpunkt Waage mit Arduino

kalle123

User
Einziges Teil was heute im Briefkasten war ist der Progadapter für den Mini :-D
Nicht warten! Arduino IDE auf einen Rechner drauf packen. Adapter an einen deiner vielen Pro minis und "BLINK" drauf spielen.

Dann mal mit den Zeiten hier spielen. Geht das?

Code:
digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second

So wie ich das auf die schnelle enziffert habe, ist es ne reine Verhältnis Rechnung mit der Offset summierung
Dein Wort in Gottes Ohr! Bei mir setzt so langsam die Altersdemenz ein :p

Grüße KH
 

Maggi

User
Und warum auch immer ist das eigentliche Paket noch nicht da...laut Sendungsverfolgung sei der Fahrer um 14:54 da gewesen....ach und warum hat er nicht geklingelt??? Gut zu dem Zeit Punkt waren auch die Zeugen an der Türe ;-D
 

Eckehard

User
Hallo Zusammen,

habe mal die HX711 Demo auf einem UNO zusammen mit einem HX711 und 2KG LoadCell laufen lassen....kurz kalibriert....
(Quelle: https://github.com/bogde/HX711)


Hier der Output auf dem SeriellMonitor:

HX711 Demo
Initializing the scale
Before setting up the scale:
read: 114750
read average: 113807
get value: 113778.00
get units: 113767.0
After setting up the scale:
read: 113814
read average: 113842
get value: 18.00
get units: 0.0
Readings:
one reading: 0.0 | average: 0.1
one reading: -0.6 | average: -0.5
one reading: 99.8 | average: 99.9
one reading: 99.7 | average: 99.9
one reading: -0.9 | average: -0.7
one reading: -0.9 | average: -0.7
one reading: 99.6 | average: 99.8
one reading: 99.5 | average: 99.7
Die Werte um ca. 100g wurden ausgegeben, als ich ein 100g Eichgewicht einer Feinwaage auf dem Biegebalken gelegt habe.....

Sieht doch ganz vielversprechend aus....

Der Anfang ist gemacht.....

PS: Zur Berechnung: Der Code basiert auf der Eingeschaft, daß die LoadCells die/beiden Gewichte an der Tragfläche (Nasenleiste +30mm und Nasenleiste+119,8mm) messen. Mit den Längen und dem Ziel "Momentengleichgewicht" kann man daraus dann den tatsächlichen CG ausrechnen...

Mein Ziel ist ein anderer mechanischer Aufbau: Messung am Haupt- und und Spornfahrwerk siehe auch:
https://www.swiss-composite.ch/pdf/A-Schwerpunkt-mit-der-Waage-bestimmen.pdf
(Quelle: www.swiss-composite.ch)


Grüße
Eckehard
 

kalle123

User
Hallo Eckehard.

Ja die 1kg hab ich hier schon länger und damals Versuche mit den examples hier



gemacht. Sah auch hier nicht schlecht aus.

Hatte ja weiter oben mal zusammen gefasst, wie ich den Rechenansatz im Programm so sehe. (Hast du da mal einen Blick drauf geworfen?)

Hab hier mal eine Skizze gemacht, wie ich die Situation sehe ....



Das Profil liegt auf den beiden LCs auf. Die Werte werden elektrisch erfasst. Bekannt/gemessen sind auch die beiden Werte LEstopperDist und WingPegDist (Schieblehre)

Die Abstände x und y hab ich mal hinzugefügt. x + y = WingPegDist. Gesucht ist der ROTE Abstand. Soweit OK?

Ich berechne x = (LC2 * WingPegDist) / (LC1 + LC2)

Gesuchter ROTER Abstand = LEstopperDist + x = LEstopperDist + (LC2 * WingPegDist) / (LC1 + LC2)

So weit, so gut. Hab ich da nen Fehler gemacht?

Aber was will der Programmierer mit dem CGoffset ??

Und ist das denn mit meinem Ansatz identisch ??

CGratio = (((a * 10000) / (a + b)));
CG = ((((WingPegDist) * CGratio) / 1000) - ((WingPegDist * 10) / 2) + CGoffset);


Schau bitte mal drüber, Eckehard. Gruß KH
 

Maggi

User
Den Offset brauchst weil der Auflage Punkt zu einander ins Verhältnis genommen wird, jedoch der messpunkt selbst ebennicht die nasenleiste ist...und genau dafür ist der Offset , da der messpunkt ja hinter dem anschlag liegt und man ja cg von der nasenleiste haben möchte...hätte man andere messbügel könnte man aus der konstruktionsteichnung unmittelbar die neuen Software Offsete übernehmen
 

kalle123

User
Den Offset brauchst weil der Auflage Punkt zu einander ins Verhältnis genommen wird, jedoch der messpunkt selbst ebennicht die nasenleiste ist...und genau dafür ist der Offset , da der messpunkt ja hinter dem anschlag liegt und man ja cg von der nasenleiste haben möchte...hätte man andere messbügel könnte man aus der konstruktionsteichnung unmittelbar die neuen Software Offsete übernehmen
Ogottogott, hab noch keinen Kaffee auf dem Tisch. Muss ich erst mal verdauen. Also dir erscheint das logisch, Maggi?

Komm auf dich zurück .... Bin da momentan blockiert.

Gruß KH
 

kalle123

User
So Kaffee war da ;)



Interpretiere das mal so.

Ein gleichförmiger Körper liegt symmetrisch auf 2 Stützen. CG mittig. Und ROTES Maß ist dann halt CG offset.

(Wobei "gleichförmig und symmetrisch" ja nicht für das Flugmodell gelten. Das war der Haken!)

Hatte mich da verrannt ....
 

Maggi

User
Offset ist nur vom vorderen messpunkt bis zu nasenleiste, da die Verhältnisberechnung definiert wird mit dem Abstand zwischen den messpunkten. Somit hat man als Ergebnis analog zu der gewichtsverteilung eben die längenverteilung zwischen den messpunkten....+ Offset ergibt cg von nasenleiste....

Oder vereinfach vorgestellt....leg das Model mit der nasenleiste auf den messpunkt und schon hast keinen Offset mehr 😉
 
Es gibt noch eine zweite GitHub-Seite mit einer vereinfachten Schaltung mit nur einem Atmega. Baut auf der bekannten Konstruktion und Software auf.
Hier die links dazu:

https://github.com/aaromalila/CG-scale-mod

Ein Bericht in RC-Groups:

https://www.rcgroups.com/forums/showthread.php?2917114-CG-Scale-geek-way/page2

Hier ein paar Hinweise zum LCD-Display:

https://forum.arduino.cc/index.php?topic=128635.0

Ich würde gerne dieses OLED-Display verwenden, spricht da etwas dagegen?

https://www.banggood.com/0_91-Inch-...-p-1145084.html?rmmds=search&cur_warehouse=CN
 

kalle123

User
Es gibt noch eine zweite GitHub-Seite mit einer vereinfachten Schaltung mit nur einem Atmega. Baut auf der bekannten Konstruktion und Software auf.
Hier die links dazu:

https://github.com/aaromalila/CG-scale-mod

Ein Bericht in RC-Groups:

https://www.rcgroups.com/forums/showthread.php?2917114-CG-Scale-geek-way/page2

Hier ein paar Hinweise zum LCD-Display:

https://forum.arduino.cc/index.php?topic=128635.0

Ich würde gerne dieses OLED-Display verwenden, spricht da etwas dagegen?

https://www.banggood.com/0_91-Inch-...-p-1145084.html?rmmds=search&cur_warehouse=CN
Hallo Christian.

Danke für den Link zur Version "https://github.com/aaromalila/CG-scale-mod". Kannte ich noch nicht.

Zum OLED Display.

D.h. Du musst die ganze Programmierung umbauen.

Schnittstelle dabei dann I2C und du musst in einer Pixelgrafik programmieren.

Klar, ist "more sexy" aber was für ein Aufwand! Ich verwende gerne die 1602. Billig, einfach und machen, was sie sollen. Werte anzeigen.

Aber ob du ggfs. auf OLED umsteigen willst, musst du selber wissen ...

Gruß KH
 

kalle123

User
Seh gerade, bei der Version "https://github.com/aaromalila/CG-scale-mod" wird jetzt ein LCD1602 mit I2C Schnittstelle genommen.

Die Dinger hab ich bei meinen Ruder Winkelmessern auch genommen ;) Kein Problem, hab ich da!

Bau nachher mal auf ....
 

kalle123

User
Diese sketch von "CG-scale-mod" lässt sich hier ohne Probleme laden.

Das LCD1602 I2C zieht 25 mA mit backlight. Glaube nicht, das ein zusätzlicher Spannungsregler, wie im Schaltplan aufgeführt, notwendig ist.

Werde nachher mal schauen, was ein HX711 mit LC zieht.



Gruß KH
 

kalle123

User
Mit meinem einen HX711 und den 3 Knöppen ...



Das LCD zieht ohne backlight 5 mA und das HX711 mit 1kg LC 2.5 mA

Auf nem Nano, den ich hier gerade liegen hab, ist ein FS1117 LDO drauf.

Der dürfte eigentlich von den paar mA nicht überfordert werden.

Gruß KH
 

Maggi

User
Starterkid und die Minis sind auch angekommen leider ging mein arbeits Tag etwas länger heute
 

Maggi

User
Morgen Kalle, naja als selbstständiger gibt’s sowas wie Wochenende eigentlich nicht 😁 wir dann eher ne Nachtschicht Aktion bei mir werden da hat man wenigstens seine Ruhe 😂
 

Eckehard

User
Hallo Kalle,

hier meine Gedanken zu Deinen Fragen aus Post #44:


Aber was will der Programmierer mit dem CGoffset ??

Und ist das denn mit meinem Ansatz identisch ??

hier Code Schnipsel aus CG_scale_AMa_mod2017.ino

...
float CGoffset = ((WingPegDist / 2) + LEstopperDist);
...

...
CGratio = tW / (eW + tW);
return (((WingPegDist) * CGratio)) - ((WingPegDist) / 2) + CGoffset;
...
CGoffset ist also ein konstanter Wert (festgelegt durch die Abmessungen)

Nun setz doch einmal die Formeln für CGratio und CGoffset in die Berechnungszeile "return ...." ein:


return (((WingPegDist) * tW / (eW + tW) )) - ((WingPegDist) / 2) + ((WingPegDist / 2) + LEstopperDist);

Das läßt sich kürzen auf :

return (((WingPegDist) * tW / (eW + tW))) + LEstopperDist);



Und nun vergleich dies einmal mit Deinem Ansatz:

Gesuchter ROTER Abstand = LEstopperDist + x = LEstopperDist + (LC2 * WingPegDist) / (LC1 + LC2)
Alles klar?

Grüße
Eckehard

PS: Ich muss ab jetzt und auch die näxte Woche erstmal pausieren.....melde mich aber bestimmt wenn es bei mir weitergeht...
 

kalle123

User
Danke dir fürs drüber schauen, Eckehard ;)

Also identisch. Mir kam nur sein Ansatz mit

CGoffset = ((WingPegDist / 2) + LEstopperDist) etwas seltsam vor.

Hatte mal vor Jahrzehnten Vorlesungen im Fach Statik und der Prof hat grundsätzlich bei so einer Vorgabe.

er nannte das "Kartoffel in Ruhe auf zwei Stützen" ;)" so angesetzt. Schwerpunkt - von da gesehen rechtsdrehendes Moment =

linksdrehendes Moment.

Gruß KH
 

kalle123

User
Hab beide Schaltungsansätze (bis auf die LCs) mit Spannungsteiler aufgebaut.



Bei dieser Version hier ...





... ab ich zwei Bemerkungen:

Wozu der Spannungsregler 7805 dienen soll, bei den Strömen, ist mir nicht so klar, hab ich ja schon gesagt.

Dann noch die drei Taster. Ist das eigentlich sauber? Taste offen, Pegel am Arduino Pin NICHT definiert, Taste gedrückt, Pegel auf GND. Müsste das nicht so sein, Taste offen 5V (über Widerstand), Taste gedrückt GND.

Grüße KH, der auf die 2 x HX711 und die 2. LC wartet ;)
 

PeGru

User
Microkontroller hat an den Digitaleingängen pullups integriert.
Anschluss als Eingang definieren und Pull Up Widerstand aktivieren
pinMode(pin, INPUT_PULLUP)
 
Oben Unten