Wohnmobil ausrichten!

Hallo alle miteinander,

Ich bin neu auf den Arduino Gebiet. In einem der schlauen Bücher stand "wenn man nach einiger Zeit nicht weiter kommt, ist es keine Schande sich an die Foren zu wenden". :sweat_smile:

Nach vier Wochen Recherche bin ich nun hier. :smiley:

Wie der Titel schon sagt soll ein Wohnmobil ausgerichtet werden, waagrecht und ja nach Bedarf auch anders.
Für das Heben habe ich vier elektrische Waagenheber für je zwei Tonnen angeschafft; Gesamtgewicht Fahrzeug max. 3,8t.
Für den rechts/linkslauf baue ich vier H-Brücken, Teile hab ich schon! (Hobbyelektronikerin). 8)

Sensoren die ich da habe: MPU6050 und ADXL335 für die Messung der Lagerichtung.
Stromsensor bis 30A (ich verrate gleich wofür) ]:smiley:

Außerdem (mitlerweile) zwei Arduino, einen Uno, einen Mega....brauch mehr PWM Pin´s

So und jetzt zu den Anforderungen:

  1. Die Heber sollen ausfahren bis die Ampere´ Sensoren auf ca. ??? A angestiegen sind( Wir sind auf Druck ausgefahren) :wink:
  2. Jetzt wird weiter gefahren, bis der Lagesensor(Beschleunigssensor) sagt das alles in der Waage ist. Dabei ist zu beachten, das keine Verwindungen auftreten. Soweit ich verstanden habe machen das die Profis indem erst eine und danach die andere Achse ausgerichtet wird. Leuchtet mir zwar nicht so ganz ein...... wenn ich mit unterschiedlichen Geschwindigkeiten anhebe dürfte da auch nicht´s verwinden. ]:slight_smile:

Hört sich doch eigendlich ganz einfach an, PUSTEKUCHEN nicht für mich.
Der ADXL scheint mir zu ungenaue Werte auszuspucken. Jedesmal wenn ich die Werte für eine Waagrechte eingegeben habe, und in Serialmonitor nachsehe habe diese sich in einen anderen Bereich verschoben! Code den geschrieben habe folgt.

Und bei dem MPU6050 scheitern mein geringes Wissen über Arduino und diese ILC????.

Hoffendlich liest überhaupt jemand bis hierhin :astonished:

Bin für jeden Hinweis dankbar, so und jetzt die bisher verwendeten Code´s (nachträglich gelöscht)

Hab noch was vergessen,

wie errechnet man denn dann noch die Werte für die vier Ansteuerungen für die einzelenen Hebepunkte?

nochmals Grüße :slight_smile:

Wenn mir jemand sagt wie man diesen RIESENCODE hier zu posten kommtder für den 6050 auch noch

Zum Beispiel damit: http://freakshare.com/

oder als Anhang. Akzeptiert alle Files nicht nur Bilder.
Grüße Uwe

hi,

Du scheinst ja recht weit zu sein, das problem ist, daß Du mehrere probleme auf einmal lösen willst.
teile es auf:
kauf Die eine holzplatte 50x30cm um 1,50 und bohr in jede ecke ein loch mit 6mm. nimm 4 schrauben mit 5mm durchmesser und vier muttern, schraub' die muttern halb auf die schrauben, steck die kombis in die löcher, dann kannst Du die platte durch drehen an den mutter neigen.
leg den neigungssensor auf die platte und geh' diesen teil des problems an.
Du darfst keinen "MUSS-WERT" annehmen, sondern einen bereich. also nicht null grad neigung, sondern zb. "innerhalb von +1 grad/minus1 grad". wenn oberhalb 1 grad > runter, wenn unterhalb > rauf. sonst fährt das ding nur hin und her.

der zweite teil ist die steuerung der stempel. wenn Du es schafft, jeden stempel einzeln so zu fahren, wie Du es dem arduino (zb. über serial monitor) sagst, kannst Du die teile zusammenführen.

gruß stefan

Wenn du den MPU6050 nutzt brauchst du einen Kalman Filter mit dem bekommst du dann den absoluten Winkel raus. Siehe hier GitHub - TKJElectronics/KalmanFilter: This is a Kalman filter used to calculate the angle, rate and bias from from the input of an accelerometer/magnetometer and a gyroscope. .
Dort habe ich auch den Filter für meinen Segway genommen er funktioniert wunderbar.
In den Exampels gibt es ein Beispiel wo du dann über den Seial print den KalmanFilter winkel den Komlpmentärfilter Winkel bekommst und die rohdaten.
Gruß
Der Dani

Hallo Eisebaer,

mir ist klar was du beschreibst. Ich muss gestehen, was verheimlicht zu haben :stuck_out_tongue_closed_eyes: Ich bin gelernte Werkzeugmachermeisterin :roll_eyes:

so etwas kann ich mir sogar vorstellen, ohne es als Versuch aufzubauen. Trotzdem vieln Dank für den Vorschlag, andern hilft er auf jeden Fall weiter :slight_smile:

Gruss aus Ennepetal

Christin


Das Ganze ist mehr als die Summe seiner Teile :astonished:

Du darfst keinen "MUSS-WERT" annehmen, sondern einen bereich. also nicht null grad neigung, sondern zb. "innerhalb von +1 grad/minus1 grad". wenn oberhalb 1 grad > runter, wenn unterhalb > rauf. sonst fährt das ding nur hin und her.

hatte ich eigendlich vor mit dem obigen Code für den 335, oder habe ich das falsch zusammengesetzt?

Wenn du den MPU6050 nutzt brauchst du einen Kalman Filter mit dem bekommst du dann den absoluten Winkel raus. Siehe hier GitHub - TKJElectronics/KalmanFilter: This is a Kalman filter used to calculate the angle, rate and bias from from the input of an accelerometer/magnetometer and a gyroscope. .
Dort habe ich auch den Filter für meinen Segway genommen er funktioniert wunderbar.
In den Exampels gibt es ein Beispiel wo du dann über den Seial print den KalmanFilter winkel den Komlpmentärfilter Winkel bekommst und die rohdaten.

hm.... da waren sie wieder meine Probleme (Zitat Otto)

Volvodani gib mir doch bitte mal die Anweisung, was ich da holen muss und wohin damit. Das mit der Libary ist bis jetzt für mich noch ein Rätselbuch( schönes Wortspiel hi,hi) :sweat_smile:

ach und vielen Dank für die Hilfestellung von allen bisher :*

Ihr seid Klasse!!! Endlich Super werte!
Das mit dem libary folder hab ich jetzt auch geschaft.

![](http://First run.jpg)

Ich bastel dann mal ein wenig, Ihr hört von mir....

schönen 1. Advent, bis bald

Christin

hi,

christin, ich hab's aus erfahrung einem technisch unbeleckten erklären wollen.

gruß stefan

Super das feut mich.
Du kannst jetzt diesen Sketch so ausdünnen das du nur noch die beidern Werte in den entsprechenden Variabeln steht.

Ich würde mir jetzt mal so einen Ablaufskizzze machen. (Ähnlich einem Flowchart)
dann kann man das Programm schön in einzelne Teile aufteilen.

  1. Ermitteln der Winkel X und Y
  2. Soll Punkte der Winkel festelgen
  3. Ansteuern der Motoren
  4. Auswerten der Motoren
  5. Motoren auf Position via MPU fahren.
  6. Sich an der Erfahrung freunen :smiley: :grin:

Jetzt würde ich verschiedene Ansätze ausprobieren.
Als erstes sich mal an die Ansteuerung der Motoren geben (in einem Sepeaten Sketch)
Dann die Auswertung über den Motor Strom. (Auch in einem seperaten Sketch)
So dann dein "Groß-Projekt" in viel kleine Projekte aufteilen. Was die Fehlersuche erheblich erleichtert. z.B. Rausfinden mit welchen Geschwindigkeiten (PWM) du die Heber anfährst, damit du bei deiner Ausrichtung nicht ständig dein Soll Fenster überfährst. In der Regelungstechnik fährt solche Positionierung normalerweise mit Zwei Geschwindigkeiten.
Als Bespiel du fährst bei einer Abweihung >5° mit der Geschwindiglkeit am PWm von 200.
Bei Abweichung <5° fährst du mit 50. Und wenn du im Soll Fenster bist +/-1,5° vom Ausschalten (und fetigmelden). Ich würde diese Nivelierung damit auch abschließen ,damit nicht jeder Gang durch das Wohnmobil reaktionen beim arduino auslöst. Wemm erneutes ausrichten erwünscht ist einfach mit einem Taster anstoßen.

Gruß
Der Dani

So, meine lieben Mitstreiter.

Das Projekt hatt inzwischen den nächsten Level erreicht. Sogar aus zwei Richtungen!

Zum einen ist das Programm soweit, das es ähnlich einer Wasserwaage für zwei Achsen funktioniert. Aber mit einer Besonderheit! Erst wenn die eine Y-Achse ausgerichtet ist, kann man sehen ob die X-Achse in waage ist. Das ist notwendig weil ja die Heber paarweise für jeweils eine Achse laufen soll.

Zum anderen sind die vier H-Brücken fertig. Ich habe mich allerdings für fertige Platinen enschieden von Roboternetzwelt die RN-Mini-Hbridge V.01. Mit Kühlkörper bis 30A. Gelötet selbstverständlich selbst :smiley: Laufen prima.

Soweit zu den Erfolgen.
Ich hänge mal den Ansteuercode mit an.
Die PWM fehlt noch und das zurücksteuern der Motoren, sollte aber nicht mehr so schwer werden.

Allerdings verstehe ich noch nicht warum bei der Ansteuerung der y-Achse die LED nur halb so hell sind wie normal. Vieleicht sieht ja jemand woran es liegt.

Soweit bis jetzt....

MPU6050_LED_Ansteuerung_vier_Eckpunkte_III.ino (9.24 KB)

Wenn ich mir den Code so anschaue würd ich auch eine Hystere einbauen wann das "Lot" erreicht ist da du sonst wahrscheinlich die Position überfahren wirst. Also wenn x<181° und x>179 dann im Lot.
Gruß
Der Dani

Hallo Dani,
ich würde Dir normalerweise zustimmen, aber die Heber sind sssssssoooooooooo langsam, das die gefahr nicht besteht.

Aber in den Zeilen ganz oben

int mindestwert_y_Links = 180; // drunter wird's schief (Einstellungssache)
int mindestwert_y_Rechts = 180; // drueber auch (Einstellungssache)

int mindestwert_x_Links = 180; // drunter wird's schief (Einstellungssache)
int mindestwert_x_Rechts = 180; // drueber auch (Einstellungssache)

grenze ich das doch eh ein. Da ich später

//VORNE LINKS bei LINKSNEIGUNG Y
if (yWert > mindestwert_y_Rechts) // wenn Wert unter Limit ylinks
{
digitalWrite(led_vl, HIGH); // LED vorne links an
}
else // ansonsten
{
digitalWrite(led_vl, LOW); // LED vorne links aus

die Werte vergleiche. Oder?

Beim Breadboardaufbau sieht es so aus als wenn alles Okay ist. Nur die LED leuchten halb so hell(sind auch nur 1,5V statt 4V dran)!

Ich denke aber das sich sowieso noch Veränderungen ergeben, wenn ich nicht mehr LED´s benutze, sondern die H-Brücke.

bis denne

Hallo Leute,

ich brauch wieder mal Unterstützung. :%

Das Problem mit dem schwächer leuchtenden LED bekomme ich nicht weg. Leider wirkt sich das auch auf die PWM aus.
Irgendwie scheint es mit dem Programmablauf zusammen zu hängen, denn wenn ich die X und die Y Auswertung vertausche, leuchten die anderen LED dunkler. ]:smiley:
Ich hab schon versucht das Problem mit anderen setzen der Klammern zu beseitigen, komme jetzt aber absolut nicht weiter.

Hat jemand vielleicht ne Idee? CODE im Anhang. :disappointed_relieved:

danke und allen schon mal einen guten rutsch ins neue Jahr
Christin

MPU6050_LED_Ansteuerung_vier_Eckpunkte_V.ino (7.65 KB)

Kalman.h (4.19 KB)

I2C.ino (1.67 KB)

Ich vermute dahinter einen Logikfehler, habe mich aber nicht eingehend mit dem Code beschäftigt. Ich nehme an, dass innerhalb deiner if-Anweisungen die LED mal eingeschaltet wird weil Bedingung A erfüllt ist und im weiteren Programmablauf ausgeschaltet wird, weil Bedingung B nicht erfüllt ist.

ja, sieht tatsächlich nach Logikfehler aus.

da ich dieselbe Variable für y als auch x verwende.

ich gebe also mal noch vier Pins frei, mal sehen was passiert.

Danke für den Tipp.

Logikfehler bestätigt!

aber irgentwie wiederstrebt es mir 4 (in meinen Augen übeflüssigen) zusätzliche Kabel zu ziehen. Immerhin gehen zu 4LED´s jetzt 12 Leitungen.

Gibt es keine andere Möglichkeit ?

Chrissy_P:
aber irgentwie wiederstrebt es mir 4 (in meinen Augen übeflüssigen) zusätzliche Kabel zu ziehen. Immerhin gehen zu 4LED´s jetzt 12 Leitungen.

12 Kabel an 4 LEDs klingt nicht gut. Wenn ein Ausgang zur LED auf HIGH geht, ein anderer an der gleichen LED aber auf LOW liegt, schließt du damit die beiden Pins kurz. Soll es unbedingt in Hardware umgesetzt werden, brauchst du zumindest OR-Gatter (z.B. 74HC32). Aber sowas ist ja auch in Software nachbaubar...