Der WII-Copter ( Selbstbau-Projekt )

Benutzeravatar
Goldfussel
Beiträge: 1337
Registriert: 28.10.2006 00:54:01
Wohnort: Wettenberg

#11236 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von Goldfussel »

Ja klar habe ich.

Ich hoffe es geht alles.
Gruß Fussel
----------------------------------------------
Diabaolo - E700
Futaba T14 / IISI
Haetbox : -> HaDi-RC.de
Benutzeravatar
Goldfussel
Beiträge: 1337
Registriert: 28.10.2006 00:54:01
Wohnort: Wettenberg

#11237 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von Goldfussel »

Update :

Habe ihn versucht ab zu heben, leider habe ich über Nick gar keine Gyro fuktion.
Gruß Fussel
----------------------------------------------
Diabaolo - E700
Futaba T14 / IISI
Haetbox : -> HaDi-RC.de
ronco
Beiträge: 282
Registriert: 19.11.2011 16:13:42

#11238 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von ronco »

wenn du in der GUI 3 lienien die sich bewegen siehst und du P und I bei roll und pitch nicht auf 0 hast muss eine reaktion da sein.

check doch alles nochmal durch ..

gruß

felix
Benutzeravatar
Goldfussel
Beiträge: 1337
Registriert: 28.10.2006 00:54:01
Wohnort: Wettenberg

#11239 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von Goldfussel »

Ich bin Doof da hätte ich auch selbst drauf kommen können.

Also ich habe das gemacht und hatte bei Pitch und Yaw keine Gyro Ausschläge.

Nun war ich neugierig was passiert wenn ich die Sternchen weg mache und siehe da die alle Achsen gehen, leider aber wieder Falschrum.

/////////////////
gyroADC[ROLL] = WMP_tmpData[ROLL];
gyroADC[PITCH] = WMP_tmpData[PITCH]-1;
gyroADC[YAW] = WMP_tmpData[YAW]-1;
/////////////////
Gruß Fussel
----------------------------------------------
Diabaolo - E700
Futaba T14 / IISI
Haetbox : -> HaDi-RC.de
ronco
Beiträge: 282
Registriert: 19.11.2011 16:13:42

#11240 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von ronco »

Goldfussel hat geschrieben:Ich bin Doof da hätte ich auch selbst drauf kommen können.

Also ich habe das gemacht und hatte bei Pitch und Yaw keine Gyro Ausschläge.

Nun war ich neugierig was passiert wenn ich die Sternchen weg mache und siehe da die alle Achsen gehen, leider aber wieder Falschrum.

/////////////////
gyroADC[ROLL] = WMP_tmpData[ROLL];
gyroADC[PITCH] = WMP_tmpData[PITCH]-1;
gyroADC[YAW] = WMP_tmpData[YAW]-1;
/////////////////
oh ja mein fehler :(

also dann musst du nochmal 2 funktionen ersetzen ;) .. habs jetzt aber gestestet .. so gehts.

erst die compute imu (erste funktion in IMU.pde) wieder zur alten machen..

das was da ist mit diesem hier ersetzen:

Code: Alles auswählen

void computeIMU () {
  uint8_t axis;
  static int16_t gyroADCprevious[3] = {0,0,0};
  int16_t gyroADCp[3];
  int16_t gyroADCinter[3];
  static uint32_t timeInterleave = 0;

  //we separate the 2 situations because reading gyro values with a gyro only setup can be acchieved at a higher rate
  //gyro+nunchuk: we must wait for a quite high delay betwwen 2 reads to get both WM+ and Nunchuk data. It works with 3ms
  //gyro only: the delay to read 2 consecutive values can be reduced to only 0.65ms
  if (!ACC && nunchuk) {
    annexCode();
    while((micros()-timeInterleave)<INTERLEAVING_DELAY) ; //interleaving delay between 2 consecutive reads
    timeInterleave=micros();
    WMP_getRawADC();
    getEstimatedAttitude(); // computation time must last less than one interleaving delay
    while((micros()-timeInterleave)<INTERLEAVING_DELAY) ; //interleaving delay between 2 consecutive reads
    timeInterleave=micros();
    while(WMP_getRawADC() != 1) ; // For this interleaving reading, we must have a gyro update at this point (less delay)

    for (axis = 0; axis < 3; axis++) {
      // empirical, we take a weighted value of the current and the previous values
      // /4 is to average 4 values, note: overflow is not possible for WMP gyro here
      gyroData[axis] = (gyroADC[axis]*3+gyroADCprevious[axis]+2)/4;
      gyroADCprevious[axis] = gyroADC[axis];
    }
  } else {
    #if ACC
      ACC_getADC();
      getEstimatedAttitude();
    #endif
    #if GYRO
      Gyro_getADC();
    #else
      WMP_getRawADC();
    #endif
    for (axis = 0; axis < 3; axis++)
      gyroADCp[axis] =  gyroADC[axis];
    timeInterleave=micros();
    annexCode();
    if ((micros()-timeInterleave)>650) {
       annex650_overrun_count++;
    } else {
       while((micros()-timeInterleave)<650) ; //empirical, interleaving delay between 2 consecutive reads
    }
    #if GYRO
      Gyro_getADC();
    #else
      WMP_getRawADC();
    #endif
    for (axis = 0; axis < 3; axis++) {
      gyroADCinter[axis] =  gyroADC[axis]+gyroADCp[axis];
      // empirical, we take a weighted value of the current and the previous values
      gyroData[axis] = (gyroADCinter[axis]+gyroADCprevious[axis]+1)/3;
      gyroADCprevious[axis] = gyroADCinter[axis]/2;
      if (!ACC) accADC[axis]=0;
    }
  }
  #if defined(GYRO_SMOOTHING)
    static uint8_t Smoothing[3]  = GYRO_SMOOTHING; // How much to smoothen with per axis
    static int16_t gyroSmooth[3] = {0,0,0};
    for (axis = 0; axis < 3; axis++) {
      gyroData[axis] = (gyroSmooth[axis]*(Smoothing[axis]-1)+gyroData[axis]+1)/Smoothing[axis];
      gyroSmooth[axis] = gyroData[axis];
    }
  #elif defined(TRI)
    static int16_t gyroYawSmooth = 0;
    gyroData[YAW] = (gyroYawSmooth*2+gyroData[YAW]+1)/3;
    gyroYawSmooth = gyroData[YAW];
  #endif
}
dann nach ganz unten in die Sensors.pde und die funktion WMP_getRawADC() mit der hier ersetzen.

Code: Alles auswählen

uint8_t WMP_getRawADC() {
  uint8_t axis;
  TWBR = ((16000000L / I2C_SPEED) - 16) / 2; // change the I2C clock rate
  i2c_getSixRawADC(0xA4,0x00);

  if (micros() < (neutralizeTime + NEUTRALIZE_DELAY)) {//we neutralize data in case of blocking+hard reset state
    for (axis = 0; axis < 3; axis++) {gyroADC[axis]=0;accADC[axis]=0;}
    accADC[YAW] = acc_1G;
    return 1;
  } 

  // Wii Motion Plus Data
  if ( (rawADC[5]&0x03) == 0x02 ) {
    // Assemble 14bit data 
    gyroADC[ROLL]  = - ( ((rawADC[5]>>2)<<8) | rawADC[2] ); //range: +/- 8192
    gyroADC[PITCH] = - ( ((rawADC[4]>>2)<<8) | rawADC[1] );
    gyroADC[YAW]  =  - ( ((rawADC[3]>>2)<<8) | rawADC[0] );
    GYRO_Common();
    // Check if slow bit is set and normalize to fast mode range
    gyroADC[ROLL]  = (rawADC[3]&0x01)     ? gyroADC[ROLL]/5  : gyroADC[ROLL];  //the ratio 1/5 is not exactly the IDG600 or ISZ650 specification 
    gyroADC[PITCH] = (rawADC[4]&0x02)>>1  ? gyroADC[PITCH]/5 : gyroADC[PITCH]; //we detect here the slow of fast mode WMP gyros values (see wiibrew for more details)
    gyroADC[YAW]   = (rawADC[3]&0x02)>>1  ? gyroADC[YAW]/5   : gyroADC[YAW];   // this step must be done after zero compensation 
    static uint16_t WMP_tmpData[3];
    for (axis = 0; axis < 3; axis++)
      WMP_tmpData[axis] = gyroADC[axis];
    /////////////////  
    gyroADC[ROLL]  = WMP_tmpData[ROLL]; 
    gyroADC[PITCH] = WMP_tmpData[PITCH]*-1;
    gyroADC[YAW]   = WMP_tmpData[YAW]*-1;
    /////////////////   
    return 1;
  } else if ( (rawADC[5]&0x03) == 0x00 ) { // Nunchuk Data
    ACC_ORIENTATION(  ( (rawADC[3]<<2)      | ((rawADC[5]>>4)&0x02) ) ,
                    - ( (rawADC[2]<<2)      | ((rawADC[5]>>3)&0x02) ) ,
                      ( ((rawADC[4]>>1)<<3) | ((rawADC[5]>>5)&0x06) ) );
    ACC_Common();
    return 0;
  } else
    return 2;
}
#endif
gruß

Felix
Benutzeravatar
Goldfussel
Beiträge: 1337
Registriert: 28.10.2006 00:54:01
Wohnort: Wettenberg

#11241 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von Goldfussel »

Nun scheint es zu gehen :D ,

habe den Erststart hinter mir, leider ist er sehr am zittern und nach ca. 30s rum zittern hat er sich auf die Seite geschmissen :cry:

Die Probs waren aus gewuchtet an den kann es nicht liegen, den P Anteil habe ich schon auf 3 runter gestellt da ich gelesen hatte das er so bei 3-3.5 liegen sollte bei 40er Coptern.
Gruß Fussel
----------------------------------------------
Diabaolo - E700
Futaba T14 / IISI
Haetbox : -> HaDi-RC.de
Benutzeravatar
el-dentiste
Beiträge: 4526
Registriert: 15.07.2005 20:11:39
Wohnort: Erde

#11242 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von el-dentiste »

Hi
Du da stimmt was nicht! Wie hast du wmp gelagert? Evtl zu weich.

Ich bin den Rahmen mit ltg3200 und P auf 4 geflogen.
...Zahnfee....
Benutzeravatar
Goldfussel
Beiträge: 1337
Registriert: 28.10.2006 00:54:01
Wohnort: Wettenberg

#11243 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von Goldfussel »

Mit 2 lagen Spiegeltap und halt das ganze über Kopf.
Gruß Fussel
----------------------------------------------
Diabaolo - E700
Futaba T14 / IISI
Haetbox : -> HaDi-RC.de
ronco
Beiträge: 282
Registriert: 19.11.2011 16:13:42

#11244 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von ronco »

Goldfussel hat geschrieben:Mit 2 lagen Spiegeltap und halt das ganze über Kopf.
hi,

versuchs mal ganz ohne lagerung oder mit nur einer lage .. meine erfahrung mit der WMP war das sies lieber hart mag :P

ps. wenn du die wmp nochmal abmachst .. mach se doch direckt richtig rum drauf ;) .. dann kannste die unmodifizierten multiwii versionen nehmen.

gruß

felix
Benutzeravatar
Goldfussel
Beiträge: 1337
Registriert: 28.10.2006 00:54:01
Wohnort: Wettenberg

#11245 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von Goldfussel »

Hm richtig kann sie ja auch anders rum ankleben, wie doof hätte ich gleich machen können^^
Gruß Fussel
----------------------------------------------
Diabaolo - E700
Futaba T14 / IISI
Haetbox : -> HaDi-RC.de
Benutzeravatar
el-dentiste
Beiträge: 4526
Registriert: 15.07.2005 20:11:39
Wohnort: Erde

#11246 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von el-dentiste »

Hi
DAS ist dich komisch. Normalerweise fliegt WMP out of the Box!! Ohne softwareschnipsel usw
Montier dem WMP so:
http://radio-commande.com/wp-content/up ... /quadX.jpg
Und schleiss alles so an, und Spiel die V 2.0 auf und das teil fliegt.

Oder hast du irgendein WMP Clown? Ist der original?
...Zahnfee....
Benutzeravatar
Crizz
Beiträge: 27061
Registriert: 12.04.2007 17:44:22
Wohnort: Haiger
Kontaktdaten:

#11247 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von Crizz »

Wenn das der von mir ist ist es ein Clone mit ITG3200, funzt auf jeden Fall.
_________________________________________________________________________________
"Leben ist das, was passiert, während du etwas ganz anderes planst" ... ( John Lennon )

! REVOLECTRIX-Distributor ! -> Ladeequipment / Akkus : -> HaDi-RC.de

Alle Projektberichte für den VTH-Verlag als PDF zum Download unter http://www.CrizzD.de !
ronco
Beiträge: 282
Registriert: 19.11.2011 16:13:42

#11248 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von ronco »

... hätte ich gewusst das goldfussel das so einfach drehen kann, hätte ich mir die mühe auch gespart ;)

dachte das wäre ausgeschlossen ..

naja jetzt weiss man wie es geht :)

gruß

Felix
Benutzeravatar
el-dentiste
Beiträge: 4526
Registriert: 15.07.2005 20:11:39
Wohnort: Erde

#11249 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von el-dentiste »

Moin Felix

Ich find den Code Schnipsel trotzdem klasse ! Danke dir :thumbright:
Ich denke dem ein oder andrem bringt das trotzdem was, wenn er bastelt.
...Zahnfee....
segelpeter63
Beiträge: 161
Registriert: 07.03.2012 16:13:53
Wohnort: Chemnitz

#11250 Re: Der WII-Copter ( Selbstbau-Projekt )

Beitrag von segelpeter63 »

Hi, hat jemand von Euch die Combo Roxxy 2824-34 mit 9x4,5 und Turnigy Plush 10 A am laufen? Roxxy gibt ja max. 9 A für die Motoren an, kurzeitig auch 11 A. Können die Turnigy Regler das ab oder sollte ich doch lieber vorhandene 20 A Regler verwenden? Quad ist nicht zum Heizen gedacht, eher ruhiger Schwebeflug, also ca. 5 A pro Motor.

Danke und Gruß

Peter
Antworten

Zurück zu „Allgemeines“