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".
Nach vier Wochen Recherche bin ich nun hier.
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) ]
Außerdem (mitlerweile) zwei Arduino, einen Uno, einen Mega....brauch mehr PWM Pin´s
So und jetzt zu den Anforderungen:
Die Heber sollen ausfahren bis die Ampere´ Sensoren auf ca. ??? A angestiegen sind( Wir sind auf Druck ausgefahren)
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. ]
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
Bin für jeden Hinweis dankbar, so und jetzt die bisher verwendeten Code´s (nachträglich gelöscht)
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.
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?
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)
ach und vielen Dank für die Hilfestellung von allen bisher :*
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.
Ermitteln der Winkel X und Y
Soll Punkte der Winkel festelgen
Ansteuern der Motoren
Auswerten der Motoren
Motoren auf Position via MPU fahren.
Sich an der Erfahrung freunen
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.
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 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.
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.
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. ]
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.
danke und allen schon mal einen guten rutsch ins neue Jahr
Christin
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.
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...