Multiwii Mirco Wii ATmega 32u4 mit Dji Regler Problem

-Ralf-

Erfahrener Benutzer
#61
Moritz,

nöö, ich bin nicht angepisst und auch nicht sauer. Aber bei so einem Fall gilt:
Einer steuert, die anderem helfen dem Steuermann, der entscheidet den Kurs.

Und der Smutje tut nur das, was der Steuermann sagt. Also bist du der Steuermann,
ich helfe dir, und du sagst dem Smutje, was geschehen soll. Und der macht auch nichts anderes!

So funktioniert das am schnellsten .....
 

Ori0n

Back again
#62
Du müsstest zuerst den EEPROM_Clean hochladen, und dann wieder die MultiWii-Software. Der EEPROM-Clean löscht den Speicher wo die Referenzwerte der Sensoren drinstehen, danach musst du das ACC neu kalibrieren
 
#63
So Leute leider muss ich los. werde mich aber sobald ich ein wenig geschlafen habe wieder um das Problem kümmern und mich erneut bei euch melden. Gerne würde ich mit OriOn weiter machen, da Ralf nicht kooperativ ist wenn andere auch helfen wollen.
@ rafl. gerne darfst du helfen so lange du nicht den anderen fertig machst. dann bin ich froh
 

Ori0n

Back again
#66
OK, lassen wir das Streit-Thema. Einigen wir uns auf: wir wollen beide helfen, es hat halt jeder andere Erfahrungen und Methoden, aber wir werden trotzdem zusammenarbeiten um das Problem zu lösen.

__________________________________________________________________[Schlussstrich]

Das cleanen brauchst du nicht extra machen, das macht das Programm von selbst. Du musst es nur hochladen, dann ist der Speicher auch schon gelöscht (dauert max. eine Sekunde). Dann kannst du gleich den MultiWii.Code wieder hochladen.

Schritt für Schritt:
EEPROM Programm in Arduino öffnen.
Dieses Programm auf das MicroWii hochladen
ein paar Sekunden warten
Den MultiWii-Code in Arduino öffnen.
Die Parameter einstellen die du brauchst (falls du es noch nicht hast) (versuch es nur mit QuadX (also das Gimbal weg) und der MPU6050)
Den MultiWii-Code auf das MicroWii hochladen
GUI öffnen
ACC kalibrieren und schreiben
Testen
 
#67
Super. Der Erfolg ist gekommen. Habe die Einstellungen so gemacht wie du sagtest. Ich kann den Copter armen und dann auch dem entsprechend die Steuerungen ausführen.

Einziges Problem ist jetzt. Wenn ich in der Multiwii Config den Copter nach Rechts oder Links abkippe stimmt die anzeige wo man die einzelnen Motoren und Arme des Copter sieht, aber auf der Runden Horizont anzeige oben rechts neigt er sich immer auf die entgegen gesetzte seite.
 
#68
So nach ein bischen ausprobieren habe ich den Fehler gefunden. Es war/ist das Gimbal. Wenn ich das Gimbal aus der config.h raus nehme dann geht alles wenn ich es aktiviere dann gehen die Motoren nicht an.

Weiss nicht warum es nicht geht mit dem Gimbal. ich versorge es mit einem externen BEC.

Ich habe auch das richtige bord eingestellt, laut Hersteller ist es dieses:

#define FREEIMUv043 // same as FREEIMUv04 with final MPU6050 (with the right ACC scale)

nun ist nur noch die Frage wie ich das Gimbal zum laufen bringe aber ich denke das ist ein kleines Problem. Wäre aber auch hier froh wenn ihr mir helfen könnted.

Zum Schluss noch dies:

Copter hat Saft und Funke ist an. Melodie der ESC`S ertönen wie gewohnt ;)

Dann Arme ich den Copter und die Motoren bleiben aber stehen, wenn ich aber den Throttle ein bischen nach vorne drücke gehen die Motoren an, nach dem kann ich den Stick wieder in die Null Position stellen und die Motoren drehen sehr langsam weiter.

Richtig oder Falsch?
 

Ori0n

Back again
#69
Falsch.
Wenn du armst müssen die Motoren sofort anlaufen. Entweder du hast sie nicht richtig eingelernt (Stick nicht ganz runter gedrückt, dann musst du die ESCs neu einlernen), oder versuch mal MinCommand etwas runter zu setzen, einmal auf 950, dann versuchs erneut.

Dass das mit dem Gimbal nicht funktioniert hab ich mir schon gedacht, wo das Problem genau liegt kann ich dir nicht sagen, ich hab noch nie die Gimbal Funktion in MultiWii benutzt :)
 

Ori0n

Back again
#71
Ja, MinThrottle erhöhen, natürlich. Hab ich verwechselt, MinComannd ist ja das Signal dass die Regler im nicht gehärmten Zustand bekommen.

Was mir gerade auffällt ist, dass die Servowege der Funke irgendwie nicht ganz stimmen. Diese sollten eigentlich 1000-1500-2000 sein, gehen in Wirklichkeit aber von 1060 bis 1900. Du musst die Setvowege deiner Funke richtig auf die oben genannten Werte einstellen, danach nochmal die ESCs neu einlernen (sind ja doch mit den falschen Weten eingelernt :)) und es erneut versuchen.

Wenn es dann immer noch nicht geht, dann MinThrottle in die Höhe stellen.
 

-Ralf-

Erfahrener Benutzer
#72
..... und dann sollte er den Wert von MAXTHROTTLE in der config.h auf das
einstellen, was Throttle im GUI erreicht ........
 

Ori0n

Back again
#73
Naja, das würde ich nicht machen. MaxThrottle ist bewusst kleiner als der eigentlich maximal mögliche Wert, damit die Steuerung auch bei Vollgas noch einen gewissen Bereich zum Nachregeln der Lage hat. Wenn MaxThrottle gleich dem maximal möglichen Wert wäre, dann könnte nicht mehr nachgeregelt werden, da die ESCs bereits das größtmögliche Signal bekommen und der Copter würde irgendwohin abhauen.

Man kann es natürlich machen, vor allem wenn man mehr Power braucht, macht man normalerweise aber nicht. Im normalen Flug wird man es kaum bemerken, weil wie oft fliegt man länger mit Vollgas? Ich hab das bei einem Bolzcopter so eingestellt wo ich ohnehin ohne ACC fliege, da macht sich die höhere MaxThrottle bemerkbar :)
 

-Ralf-

Erfahrener Benutzer
#74
Moritz,

da liegst du falsch .....
Wenn Throttle + Korrektur > MaxThrottle
dann Throttle + Korrektur = MaxThrottle

bei allen anderen Motoren wird entsprechend reduziert .... da gilt

Differenz=Throttle+Korrektur-MaxThrottle
Anderer Motor= Throttle+Korrektur-Differenz.

Man muß also MAXTHROTTLE auf den tatsächlich erreichbaren Wert setzen,
damit er es (korrigiert) überhaupt erreichen kann.

Wenn du es wünscht, suche ich dir die Codepassage raus.
 
#75
Moritz,

da liegst du falsch .....
Wenn Throttle + Korrektur > MaxThrottle
dann Throttle + Korrektur = MaxThrottle

bei allen anderen Motoren wird entsprechend reduziert .... da gilt

Differenz=Throttle+Korrektur-MaxThrottle
Anderer Motor= Throttle+Korrektur-Differenz.

Man muß also MAXTHROTTLE auf den tatsächlich erreichbaren Wert setzen,
damit er es (korrigiert) überhaupt erreichen kann.

Wenn du es wünscht, suche ich dir die Codepassage raus.
Hi Leute danke schon mal für eure arbeit.

wir sind weiter gekommen und das ist super. habe den Artikel den Ralf geschickt hat gelesen wegen dem gimbal. momentan steht das hinten an.

nun ich bin wie folgt vorgegangen. ich habe den minthrottle immer ein wenig hoch gesetzt, bin jetzt bei 1500 aber es ist nichts. werde nun noch mals esc`s kalibrieren mit dem Empfänger.
 
#76
Oder was denkt ihr.

Wie mein jetziges vorgehen sein sollte?

1. ESC`s einlernen
2. Kontrolle
3. wenn gut dann lassen, wenn nicht dann das mit dem was Ralf meinte?

momentan recht verwirrt sorry

Wie meinst du das "servowege der funke einstellen"? Muss ich das an der Funke machen oder in der Config.h?
 

-Ralf-

Erfahrener Benutzer
#77
Nur um das klar zu stellen ..... wenn du MINTHROTTLE im GUI änderst,
mußt du auch auf Write drücken, damit es beim nächsten ARM wirkt.
MINTHROTTLE wirkt nur im ARM, sonst gilt MINCOMMAND.
 

-Ralf-

Erfahrener Benutzer
#78
@Moritz

output.cpp, ca. Zeile 1461

Code:
  /****************                normalize the Motors values                ******************/
    maxMotor=motor[0];
    for(i=1; i< NUMBER_MOTOR; i++)
      if (motor[i]>maxMotor) maxMotor=motor[i];
    for(i=0; i< NUMBER_MOTOR; i++) {
      if (maxMotor > MAXTHROTTLE) // this is a way to still have good gyro corrections if at least one motor reaches its max.
        motor[i] -= maxMotor - MAXTHROTTLE;
      motor[i] = constrain(motor[i], conf.minthrottle, MAXTHROTTLE);
      if ((rcData[THROTTLE] < MINCHECK) && !f.BARO_MODE)
      #ifndef MOTOR_STOP
        motor[i] = conf.minthrottle;
      #else
        motor[i] = MINCOMMAND;
      #endif
      if (!f.ARMED)
        motor[i] = MINCOMMAND;
    }
 
FPV1

Banggood

Oben Unten