annuncio

Comprimi
Ancora nessun annuncio.

MultiWii Quad! Alternativa ad Aeroquad/Baronpilot con sensori wii

Comprimi
X
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • Cmq non capisco perchè azzerare I e D...

    Ho in casa una FreeIMU 0.3.5 e in ordinazione la 0.3.5_MS ma per ora vado di WM+ perchè così posso apprezzare la differenza dei vari sensori
    FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
    FLYDRONE AXN FPV
    GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

    Commenta


    • Ciao Servo,

      Originariamente inviato da servo Visualizza il messaggio
      Ciao magnetron1

      Allora per adare sul discorso della bussola o controllato
      la posizione del cip saldato sulla scheda di fabio ed e messo nella direzione
      guista,fabio non sbaglia poi o trovato dei video sul web di come dovrebbe funzionare la bussola
      io monto HMC5843 quando lo colibro con le varie rotazioni la frecceta nera si mette
      un po dove vuole adesso qardando i video solo uno sembra funzionare bene
      adesso se il cip di fabio e giusto anche il mio e nel senso giusto (x,y,z)
      vanno lasciti come sono cioe mi spiego o trovato il codice originale per la FREEIMUv035_MS
      prima ancora che cualcuno lo modifichi e poi lo mette nella DEV.

      Come puoi vedere tutto sotto x,y,z non sono modificate percio ne dedugo
      che se la freccetta dopo la calibrazione non simette nella direzione consueta
      cio direzione avanti avedo cura di partire tenendo il mezzo in mano nella direzione di marcia
      se poi parti con la calibrazione mettendo il mezzo nella direzione opposta o in qulugue
      altra posizione la la freccetta nera dovrebbe ritorna nen senso di marcia giustu, e guesto
      che ancora non riesco a capire, attualmente io con varie prove e indiferente come parto con la calibrazione
      non si mette mai nelle posizine di marcia sara perche chi a fatto il video si e trovato con le cordinate
      giuste cioe a nord e noi qui non abbimo le stesse cordinate.

      comunque per concludere la frecetta nera attualmente io lo nel l'anglo destro se messa li
      quando lo faccio sollevare adesso solo in casa tenendolo con una codicella sempre in sicurezza
      quando attivo la bussola lui tenda a stare fermo dove si trovava al momento che lo o attivato
      se poi lo muovo con lo stik della radio o con un colpetto lui torno lentamente dove era sempre
      nel punto deve e stato attivato.
      Farò le verifiche del senso dell'orientamento.

      Originariamente inviato da servo Visualizza il messaggio
      Ma speriamo bene fabio mi a scritto che FREEIMUv035_MS non e sponibile pe almeno 4 settimane.
      Io quasi quasi ne prenderò un'altra per un altro progetto di multirotore che vorrei realizzare appena termino questo...
      Poi chiamerò Fabio per i dettagli...


      Originariamente inviato da servo Visualizza il messaggio

      vIDEO 1 ‪Magnetometertest with FFImu‬‏ - YouTube

      VIDEO 2 ‪mwc - gui , baro‬‏ - YouTube

      VIDEO 3 ‪FFIMU v1.22 compass/mag‬‏ - YouTube


      Qesto e il sito dove si trova il codice:MultiWii • View topic - Support for FreeIMU v0.3.5* and MS5611-01BA

      Index: Sensors.pde
      ================================================== =================
      --- Sensors.pde (revision 195)
      +++ Sensors.pde (working copy)
      @@ -28,6 +28,11 @@
      //#define ITG3200_ADDRESS 0XD2
      #endif

      +#if !defined(MS561101BA_ADDRESS)
      + #define MS561101BA_ADDRESS 0xEE //CBR=0 0xEE I2C address when pin CSB is connected to LOW (GND)
      + //#define MS561101BA_ADDRESS 0xEF //CBR=1 0xEF I2C address when pin CSB is connected to HIGH (VCC)
      +#endif
      +
      uint8_t rawADC[6];
      static uint32_t neutralizeTime = 0;

      @@ -202,6 +207,7 @@
      // ************************************************** ************************************************** ********

      #if defined(BMP085)
      +#define BMP085_ADDRESS 0xEE
      static struct {
      // sensor registers from the BOSCH BMP085 datasheet
      int16_t ac1, ac2, ac3, b1, b2, mb, mc, md;
      @@ -239,9 +245,9 @@
      // read a 16 bit register
      int16_t i2c_BMP085_readIntRegister(uint8_t r) {
      union {int16_t val; uint8_t raw[2]; } data;
      - i2c_rep_start(0xEE + 0);
      + i2c_rep_start(BMP085_ADDRESS + 0);
      i2c_write(r);
      - i2c_rep_start(0xEE + 1);//I2C read direction => 1
      + i2c_rep_start(BMP085_ADDRESS + 1);//I2C read direction => 1
      data.raw[1] = i2c_readAck();
      data.raw[0] = i2c_readNak();
      // i2c_rep_stop();
      @@ -250,22 +256,22 @@

      // read uncompensated temperature value: send command first
      void i2c_BMP085_UT_Start() {
      - i2c_writeReg(0xEE,0xf4,0x2e);
      - i2c_rep_start(0xEE + 0);
      + i2c_writeReg(BMP085_ADDRESS,0xf4,0x2e);
      + i2c_rep_start(BMP085_ADDRESS + 0);
      i2c_write(0xF6);
      }

      // read uncompensated pressure value: send command first
      void i2c_BMP085_UP_Start () {
      - i2c_writeReg(0xEE,0xf4,0x34+(OSS<<6)); // control register value for oversampling setting 3
      - i2c_rep_start(0xEE + 0); //I2C write direction => 0
      + i2c_writeReg(BMP085_ADDRESS,0xf4,0x34+(OSS<<6)); // control register value for oversampling setting 3
      + i2c_rep_start(BMP085_ADDRESS + 0); //I2C write direction => 0
      i2c_write(0xF6);
      }

      // read uncompensated pressure value: read result bytes
      // the datasheet suggests a delay of 25.5 ms (oversampling settings 3) after the send command
      void i2c_BMP085_UP_Read () {
      - i2c_rep_start(0xEE + 1);//I2C read direction => 1
      + i2c_rep_start(BMP085_ADDRESS + 1);//I2C read direction => 1
      bmp085_ctx.up.raw[2] = i2c_readAck();
      bmp085_ctx.up.raw[1] = i2c_readAck();
      bmp085_ctx.up.raw[0] = i2c_readNak();
      @@ -275,7 +281,7 @@
      // read uncompensated temperature value: read result bytes
      // the datasheet suggests a delay of 4.5 ms after the send command
      void i2c_BMP085_UT_Read() {
      - i2c_rep_start(0xEE + 1);//I2C read direction => 1
      + i2c_rep_start(BMP085_ADDRESS + 1);//I2C read direction => 1
      bmp085_ctx.ut.raw[1] = i2c_readAck();
      bmp085_ctx.ut.raw[0] = i2c_readNak();
      // i2c_rep_stop();
      @@ -337,6 +343,144 @@
      }
      #endif

      +
      +#if defined(MS561101BA)
      +
      +// registers of the device
      +#define MS561101BA_PRESSURE 0x40
      +#define MS561101BA_TEMPERATURE 0x50
      +#define MS561101BA_RESET 0x1E
      +
      +// D1 and D2 result size (bytes)
      +#define MS561101BA_D1D2_SIZE 3
      +
      +// OSR (Over Sampling Ratio) constants
      +#define MS561101BA_OSR_256 0x00
      +#define MS561101BA_OSR_512 0x02
      +#define MS561101BA_OSR_1024 0x04
      +#define MS561101BA_OSR_2048 0x06
      +#define MS561101BA_OSR_4096 0x08
      +
      +static struct {
      + // sensor registers from the MS561101BA datasheet
      + uint16_t c1, c2, c3, c4, c5, c6;
      + union {uint32_t val; uint8_t raw[4]; } ut; //uncompensated T
      + union {uint32_t val; uint8_t raw[4]; } up; //uncompensated P
      + uint8_t state;
      + uint32_t deadline;
      +} ms561101ba_ctx;
      +#define OSR MS561101BA_OSR_4096
      +
      +void i2c_MS561101BA_reset(){
      + i2c_writeReg(MS561101BA_ADDRESS, MS561101BA_RESET, 0);
      +}
      +
      +void i2c_MS561101BA_readCalibration(){
      + delay(10);
      + ms561101ba_ctx.c1 = i2c_MS561101BA_readIntRegister(0xA2);
      + ms561101ba_ctx.c2 = i2c_MS561101BA_readIntRegister(0xA4);
      + ms561101ba_ctx.c3 = i2c_MS561101BA_readIntRegister(0xA6);
      + ms561101ba_ctx.c4 = i2c_MS561101BA_readIntRegister(0xA8);
      + ms561101ba_ctx.c5 = i2c_MS561101BA_readIntRegister(0xAA);
      + ms561101ba_ctx.c6 = i2c_MS561101BA_readIntRegister(0xAC);
      +}
      +
      +void Baro_init() {
      + delay(10);
      + i2c_MS561101BA_reset();
      + delay(10);
      + i2c_MS561101BA_readCalibration();
      + i2c_MS561101BA_UT_Start();
      + delay(10);
      + i2c_MS561101BA_UT_Read();
      +}
      +
      +// read a 16 bit register
      +int16_t i2c_MS561101BA_readIntRegister(uint8_t r) {
      + union {int16_t val; uint8_t raw[2]; } data;
      + i2c_rep_start(MS561101BA_ADDRESS + 0);
      + i2c_write(r);
      + i2c_rep_start(MS561101BA_ADDRESS + 1);//I2C read direction => 1
      + data.raw[1] = i2c_readAck();
      + data.raw[0] = i2c_readNak();
      +// i2c_rep_stop();
      + return data.val;
      +}
      +
      +// read uncompensated temperature value: send command first
      +void i2c_MS561101BA_UT_Start() {
      + i2c_writeReg(MS561101BA_ADDRESS, MS561101BA_TEMPERATURE + OSR, 0);
      + //i2c_rep_start(MS561101BA_ADDRESS + 0);
      + //i2c_write(0xF6);
      +}
      +
      +// read uncompensated pressure value: send command first
      +void i2c_MS561101BA_UP_Start () {
      + i2c_writeReg(MS561101BA_ADDRESS,MS561101BA_PRESSUR E + OSR, 0); // control register value for oversampling setting 3
      + //i2c_rep_start(MS561101BA_ADDRESS + 0); //I2C write direction => 0
      + //i2c_write(0xF6);
      +}
      +
      +// read uncompensated pressure value: read result bytes
      +// the datasheet suggests a delay of 25.5 ms (oversampling settings 3) after the send command
      +void i2c_MS561101BA_UP_Read () {
      + i2c_rep_start(MS561101BA_ADDRESS + 1);//I2C read direction => 1
      + ms561101ba_ctx.up.raw[2] = i2c_readAck();
      + ms561101ba_ctx.up.raw[1] = i2c_readAck();
      + ms561101ba_ctx.up.raw[0] = i2c_readNak();
      +// i2c_rep_stop();
      +}
      +
      +// read uncompensated temperature value: read result bytes
      +// the datasheet suggests a delay of 4.5 ms after the send command
      +void i2c_MS561101BA_UT_Read() {
      + i2c_rep_start(MS561101BA_ADDRESS + 0);
      + i2c_write(0);
      + i2c_rep_start(MS561101BA_ADDRESS + 1);//I2C read direction => 1
      + ms561101ba_ctx.ut.raw[2] = i2c_readAck();
      + ms561101ba_ctx.ut.raw[1] = i2c_readAck();
      + ms561101ba_ctx.ut.raw[0] = i2c_readNak();
      +// i2c_rep_stop();
      +}
      +
      +void i2c_MS561101BA_Calculate() {
      + // see datasheet page 7 for formulas
      + int32_t dT = ms561101ba_ctx.ut.val - ms561101ba_ctx.c5 * pow(2, 8);
      + int64_t off = ms561101ba_ctx.c2 * pow(2,16) + (ms561101ba_ctx.c4 * dT) / pow(2, 7);
      + int64_t sens = ms561101ba_ctx.c1 * pow(2,15) + (ms561101ba_ctx.c3 * dT) / pow(2,8);
      + pressure = (ms561101ba_ctx.ut.val * (sens) / pow(2, 21) - off) / pow(2, 15);
      +}
      +
      +void Baro_update() {
      + if (currentTime < ms561101ba_ctx.deadline) return;
      + ms561101ba_ctx.deadline = currentTime;
      + TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz, MS5611 is ok with this speed
      + switch (ms561101ba_ctx.state) {
      + case 0:
      + i2c_MS561101BA_UT_Start();
      + ms561101ba_ctx.state++; ms561101ba_ctx.deadline += 10000;
      + break;
      + case 1:
      + i2c_MS561101BA_UT_Read();
      + ms561101ba_ctx.state++;
      + break;
      + case 2:
      + i2c_MS561101BA_UP_Start();
      + ms561101ba_ctx.state++; ms561101ba_ctx.deadline += 10000;
      + break;
      + case 3:
      + i2c_MS561101BA_UP_Read();
      + i2c_MS561101BA_Calculate();
      + BaroAlt = (1.0f - pow(pressure/101325.0f, 0.190295f)) * 44330.0f;
      + ms561101ba_ctx.state = 0;
      + baroNewData = 1;
      + //ms561101ba_ctx.deadline += 20000;
      + break;
      + }
      +}
      +#endif
      +
      +
      // ************************************************** ************************************************** ********
      // I2C Accelerometer ADXL345
      // ************************************************** ************************************************** ********
      Index: def.h
      ================================================== =================
      --- def.h (revision 195)
      +++ def.h (working copy)
      @@ -23,18 +23,18 @@
      #define ITG3200_ADDRESS 0XD0
      #endif

      -#if defined(FREEIMUv01)
      +#if defined(FREEIMUv01) || defined(FREEIMUv02)
      #define ITG3200
      #define ADXL345
      #define HMC5843
      - #define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = -Y; accADC[PITCH] = X; accADC[YAW] = Z;}
      + #define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = X; accADC[PITCH] = Y; accADC[YAW] = Z;}
      #define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = X; gyroADC[PITCH] = Y; gyroADC[YAW] = Z;}
      #define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = Z;}
      #define ADXL345_ADDRESS 0xA6
      #undef INTERNAL_I2C_PULLUPS
      #endif

      -#if defined(FREEIMU)
      +#if defined(FREEIMUv03)
      #define ITG3200
      #define ADXL345
      #define HMC5883
      @@ -42,8 +42,24 @@
      #define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = X; gyroADC[PITCH] = Y; gyroADC[YAW] = Z;}
      #define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = Z;}
      #define ADXL345_ADDRESS 0xA6
      + #undef INTERNAL_I2C_PULLUPS
      #endif

      +#if defined(FREEIMUv035) || defined(FREEIMUv035_MS) || defined(FREEIMUv035_BMP)
      + #define ITG3200
      + #define BMA180
      + #define HMC5883
      + #define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = X; accADC[PITCH] = Y; accADC[YAW] = Z;}
      + #define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = X; gyroADC[PITCH] = Y; gyroADC[YAW] = Z;}
      + #define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = Z;}
      + #undef INTERNAL_I2C_PULLUPS
      + #if defined(FREEIMUv035_MS)
      + #define MS561101BA
      + #elif defined(FREEIMUv035_BMP)
      + #define BMP085
      + #endif
      +#endif
      +
      #if defined(PIPO)
      #define L3G4200D
      #define ADXL345
      @@ -95,7 +111,7 @@
      #define GYRO 0
      #endif

      -#if defined(BMP085)
      +#if defined(BMP085) || defined(MS561101BA)
      #define BARO 1
      #else
      #define BARO 0
      Index: config.h
      ================================================== =================
      --- config.h (revision 195)
      +++ config.h (working copy)
      @@ -72,8 +72,14 @@

      //#define FFIMUv1 //first 9DOF+baro board from Jussi, with HMC5843
      //#define FFIMUv2 //second version of 9DOF+baro board from Jussi, with HMC5883
      -//#define FREEIMUv01 //first version of 9DOF board from Fabio
      -//#define FREEIMU //later version of 9DOF board from Fabio
      +// FreeIMU sensors boards from Fabio Varesano.
      +// See FreeIMU: a libre 9DOM/DOF inertial measurement unit | Varesano.net to know your correct version
      +//#define FREEIMUv01 // FreeIMU v0.1
      +//#define FREEIMUv02 // FreeIMU v0.2
      +//#define FREEIMUv03 // FreeIMU v0.3 and v0.3.1
      +//#define FREEIMUv035 // FreeIMU v0.3.5
      +//#define FREEIMUv035_MS // FreeIMU v0.3.5_MS
      +//#define FREEIMUv035_BMP // FreeIMU v0.3.5_MS
      //#define PIPO //9DOF board from erazz
      //#define QUADRINO //full FC board 9DOF+baro board from witespy
      //#define ALLINONE //full FC board or standalone 9DOF+baro board from CSG_EU
      @@ -93,6 +99,7 @@

      /* I2C barometer */
      //#define BMP085
      +//#define MS561101BA

      /* I2C magnetometer */
      //#define HMC5843
      Allora la parte in rosso è anche presente (ovviamente) nella R207 che attulamente stò usando. Pare però che queste routine ancora non siano completamente testate ed efficienti, da questo potrebbero scaturire problemi ancora non noti.

      Alla riga verde, Fabio l'aveva già segnalato quando avevo i problemi di cappottamento, purtroppo non ho visto il suo post ed ho fatto delle prove e valutazioni indipendenti che poi ho riportato http://www.baronerosso.it/forum/mode...ml#post2694224 - alla fine sono giunto alla stessa conclusione, quindi è sicuramente confermato l'orientamento dell'acc come da riga verde.
      La riga blu è ancora da confermare, l'orientamento potrebbe essere differente, non si tratta della posizione fisica del solo sensore ma anche come viene interpretato nel software, quindi vorrei verificarlo anche perchè Fabio stesso lo ha espressamente chiesto, non perchè lui non sappia come ha orientato il sensore ma perchè MultiWii potrebbe interpretare un asse per un altro, tutto qui. Domani verificherò anche il magnetometro. E vi farò sapere così vediamo se chiudiamo il capitolo del magnetometro e poi passeremo all'altimetro di precisione (la parte rossa del codice segnalato).
      AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

      Commenta


      • Originariamente inviato da Jonny-Paletta Visualizza il messaggio
        Cmq non capisco perchè azzerare I e D...

        Ho in casa una FreeIMU 0.3.5 e in ordinazione la 0.3.5_MS ma per ora vado di WM+ perchè così posso apprezzare la differenza dei vari sensori
        E' un metodo empirico di determinazione dei parametri del pid.
        Se hai la componente D attiva e le vibrazioni sono tante allora il quad sbacchetterà molto anche bruscamente (è questo lo scopo del D cioè contrastare cambi molto veloci nella variazione della variabile di processo che controlla il PID), ecco già un buon motivo per azzerarla, se non ha mai volato il tuo quad non sai quante vibrazioni avrà in volo e come si comportera. La I invece compensa le derive lente, se il quad tende a derivare continuamente da un lato la I compenserà nel tempo questa tendeza. Perchè azzerarla, semplice perchè forse dovrai anche trimmare il tuo quad e se la I interviene pensantemente non sarà possibile eseguire la trimmatura perchè sembrerà come se tu stia volando tentando di tenere in quad centrale, fermo quando invece hai il trim del pitch (è solo un esempio per far capire meglio questa situazione) tutto spostato a destra. Si utilizza solo la P perchè questa compensa le derive proporzionalmente, è quasi immune alle vibrazioni e non tiene conto delle derive nel tempo. Quando avrai trovato il valore di P (alzando di un punto ad ogni prova via GUI) per cui gli assi oscillano spontaneamente senza applicare un comando allora applicherai un concetto empirico che propone di ridurre di 1/4 il valore di P, mettere D=1/4xP e I=1/8xP...
        Provare per credere...

        Usa la FreeIMU e vai tranquillo...
        AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

        Commenta


        • Seguendo la guida per calibrare i PID, ovvero alzando P in step da 0.5 e provando a scuotere il quadricottero da ogni lato, ho raggiunto questi valori senza mai che esso cominciasse a vibrare o ad autocorreggere, quindi penso che potrei ancora salire, ma vorrei a questo punto provarlo in volo...

          File allegati
          FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
          FLYDRONE AXN FPV
          GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

          Commenta


          • Originariamente inviato da Jonny-Paletta Visualizza il messaggio
            Seguendo la guida per calibrare i PID, ovvero alzando P in step da 0.5 e provando a scuotere il quadricottero da ogni lato, ho raggiunto questi valori senza mai che esso cominciasse a vibrare o ad autocorreggere, quindi penso che potrei ancora salire, ma vorrei a questo punto provarlo in volo...

            Caspita jonny sono gia dei parametri alti se non vibra e veramente una
            bomba.

            ciao

            Commenta


            • Per ora ho alzato solo P, anche scuotendolo non è cambiato nulla rispetto ai valori di default se non che è diventato più duro da inclinare per ogni lato...

              Ripeto, I e D sono ai valori di default...

              Cmq tu servo se non erro hai diversi quad all'attivo...
              FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
              FLYDRONE AXN FPV
              GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

              Commenta


              • Ora metto un paio di foto....

                il TRi con i bracci da 22cm adxl345 itg3200 PRO-mini-board v 1.0 carrello trex500

                telaio quadri in costruzione con misure , frame centrale e carrello come MK

                secondo quadri in costruione con bracci da 26cm frame centrale MK carrello trex500

                THE KING ( MK L4-ME )

                PRO-mini-board v 2.1

                il mio primo trico ormai cannibalizzato , ma il primo amore non si scorda mai....

                PS. qualcono ha qualche gancio da muro ? che non so' + dove appenderli....

                Scusate la definizione ma avev xle mani la FCO2...
                File allegati

                Da qualche parte ho letto : I PAZZI VANNO SEMPRE ASSECONDATI ; io mi esercito tutti i giorni con mia moglie !

                Commenta


                • .........
                  File allegati

                  Da qualche parte ho letto : I PAZZI VANNO SEMPRE ASSECONDATI ; io mi esercito tutti i giorni con mia moglie !

                  Commenta


                  • Originariamente inviato da magnetron1 Visualizza il messaggio
                    Quando avrai trovato il valore di P (alzando di un punto ad ogni prova via GUI) per cui gli assi oscillano spontaneamente senza applicare un comando allora applicherai un concetto empirico che propone di ridurre di 1/4 il valore di P, mettere D=1/4xP e I=1/8xP...
                    Provare per credere...
                    Se ho ben capito il tuo esempio, ipotizziamo di aver raggiunto un P di 8

                    P=1/4 P ---> 8/4=6 ---> P=6
                    D=1/4xP ---> D=2x6 ---> D=12
                    I=1/8xP ---> I=1x8 ---> I=8

                    Ci sono 2 possibilità, o ti sei spiegato male o io non ho capito na mazza
                    FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
                    FLYDRONE AXN FPV
                    GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

                    Commenta


                    • Originariamente inviato da Jonny-Paletta Visualizza il messaggio
                      Se ho ben capito il tuo esempio, ipotizziamo di aver raggiunto un P di 8

                      P=1/4 P ---> 8/4=6 ---> P=6
                      D=1/4xP ---> D=2x6 ---> D=12
                      I=1/8xP ---> I=1x8 ---> I=8

                      Ci sono 2 possibilità, o ti sei spiegato male o io non ho capito na mazza
                      Be, innanzi tutto 1/4=0.25 non 2; 1/8=0.125 non 1... ti pare?
                      Ridurre di 1/4 vuol dire moltiplicare un valore x 3/4, cioè 0.75, giusto?

                      Se hai raggiunto 8 di P
                      il calcolo è
                      P = 8*0.75 = 6 (come giustamente hai calcolato tu)
                      I = 0.125*P = 0,75
                      D = 0.25*P = 1,5

                      La I e la D in realtà dovrebbero essere rapportate al tempo di ciclo del processore perchè sono Time Depending, cioè dipendenti dal tempo, trattandosi di un processore che ha un tempo di ciclo di circa 3000uS direi che una I=I/10=0,075 e una D=D*10=15 dovrebbero starci, quindi nel caso di sistema che "risuona" a P=8, I=0, D=0 si avrebbe come risultato empirico finale un PID ottimizzato con i seguenti valori introducibili direttamente nella GUI:
                      P=6, I=0,075, D=15;
                      direi valori che siamo abituati a vedere nella GUI, giusto?
                      Ultima modifica di magnetron1; 24 luglio 11, 22:05.
                      AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

                      Commenta


                      • Originariamente inviato da Jonny-Paletta Visualizza il messaggio
                        Per ora ho alzato solo P, anche scuotendolo non è cambiato nulla rispetto ai valori di default se non che è diventato più duro da inclinare per ogni lato...

                        Ripeto, I e D sono ai valori di default...

                        Cmq tu servo se non erro hai diversi quad all'attivo...
                        si o tricottero e quadrox come quello che sta facendo tuo il tri sono riuscito a farlo
                        funzionare con la scheda nuova e i nuovi sensori (E ancora da provare all'aperto)

                        Invece il quadrox non ce stato verso con wii+e nuk originali vibrava da matti i volori che ai messo tu me li potevo solo sognare
                        adesso appena o finito con il tri vogli riprovarci con la nuova scheda e i nuovi sensori
                        ma io o dei forti dubbi che possa funzionare forse braccetti troppo corti o altri intoppi
                        ciao

                        Commenta


                        • Originariamente inviato da servo Visualizza il messaggio
                          si o tricottero e quadrox come quello che sta facendo tuo il tri sono riuscito a farlo
                          funzionare con la scheda nuova e i nuovi sensori (E ancora da provare all'aperto)

                          Invece il quadrox non ce stato verso con wii+e nuk originali vibrava da matti i volori che ai messo tu me li potevo solo sognare
                          adesso appena o finito con il tri vogli riprovarci con la nuova scheda e i nuovi sensori
                          ma io o dei forti dubbi che possa funzionare forse braccetti troppo corti o altri intoppi
                          ciao
                          Il fatto è che il nunchuck dilata il tempo di ciclo e lo porta sui 6000-6100 che è molto lungo per consentire ad Arduino di correggere un multirotore di piccole dimensioni, diverso sarebbe se il multirotore fosse più grande. Per questo spesso si usa solo il WM+ o meglio unità più evolute come una IMU integrata che accoglie più sensori.
                          AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

                          Commenta


                          • Originariamente inviato da magnetron1 Visualizza il messaggio
                            Il fatto è che il nunchuck dilata il tempo di ciclo e lo porta sui 6000-6100 che è molto lungo per consentire ad Arduino di correggere un multirotore di piccole dimensioni, diverso sarebbe se il multirotore fosse più grande. Per questo spesso si usa solo il WM+ o meglio unità più evolute come una IMU integrata che accoglie più sensori.
                            e infatti con il tri non o mai avuto problemi con wii+ e nk perhe' pesa 1.700gr con la
                            batteria da 5A.
                            il quadrx fuzionava abastanza bene con altro programma chiamato shrediquette non so se lo conosci ma era limitato e non piu attivo. per questo sono passato alla
                            mutiwii. con la multiwii ce piu' possibilita di espansioni.

                            ciao

                            Commenta


                            • Originariamente inviato da servo Visualizza il messaggio
                              e infatti con il tri non o mai avuto problemi con wii+ e nk perhe' pesa 1.700gr con la
                              batteria da 5A.
                              il quadrx fuzionava abastanza bene con altro programma chiamato shrediquette non so se lo conosci ma era limitato e non piu attivo. per questo sono passato alla
                              mutiwii. con la multiwii ce piu' possibilita di espansioni.

                              ciao
                              Si, conosco lo shrediquette, mi pare sviluppato da uno studente tedesco.
                              La multiwii promette bene per il futuro e soprattutto fa centro sulla economicità e semplicità. Con il supporto sempre crescente di gente sarà sicuramente un buon salto in avanti... magari in futuro vedremo apparire anche il GPS ed una consolle più sofisticata (sognavo quella di arducopter)...
                              AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

                              Commenta


                              • una domanda...ma volendo mettere l'accellerometro per forza si deve usare il nunchak o si può prendere solo il sensore tipo quello in vendita sul sito flyduino?
                                Il mio canale youtube
                                http://www.youtube.com/user/hurricanenzo

                                Commenta

                                Sto operando...
                                X