annuncio

Comprimi
Ancora nessun annuncio.

MultiWii Quad! Alternativa ad Aeroquad/Baronpilot con sensori wii

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

  • Originariamente inviato da lol21 Visualizza il messaggio
    correggetemi se sbaglio:
    i pullup sono delle resistenze collegate tra il positivo e il cavo, servono per rendere più precisa una lettura isolandola da fattori come l'elettromagnetismo nel mondo, il tuo corpo che fa da massa ecc...

    nel caso il segnale sia già "ripulito" di suo questi non dovrebbero servire.

    nel caso della scheda freeimu vedo che nello schematico sono già integrate queste resistenze diventando quindi inutili quelle del micro, disabilitarle quindi è a discapito del sensore utilizzato

    ho sbagliato?

    ciao
    lol21
    Resistenza pull-up - Wikipedia

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

    Commenta


    • lol21 .. non esattamente..

      I pullup sono delle resistenze che vengono messe in un circuito logico (high o low, non analogici) per far si che di default il circuito assuma un livello logico stabilito quando i device nel circuito sono scollegati o in alta impedenza. Tutti i dettagli su Resistenza pull-up - Wikipedia

      Facciamo un esempio:



      Nella foto il pin Digital 2, impostandolo come input, viene messo in alta impedenza, cioe' se scollegato dal circuito, non assumera' un valore logico di per se ma solo in conseguenza a cio' a cui verra' collegato. Se venisse lasciato scollegato oscillerebbe tra HIGH e LOW in modo casuale, lavorando un po' tipo un'antenna.

      Guardiamo l'esempio di sinistra. Quando lo switch e' aperto non vi e' passaggio di corrente tra positivo e negativo. Il pin Digital 2 avra' una debole connessione a 5V e quindi leggera' come valore HIGH. Quando chiudiamo lo switch c'e' una forte connessione a GND e quindi il pin Digital 2 leggera' LOW.

      E' importante notare come in pratica non vi sia caduta di tensione sulla resistenza a pullup in quanto non vi e' un vero passaggio di corrente. In pratica, a switch aperto sul Digital 2 vedremo un 5V.

      Ora, tornando ai nostri sensori..

      Molte delle schede sensori attuali comunicano tramite I2C, un bus a due canali (un clock SCL e uno dati SDA) in cui i vari device vengono collegati in parallelo in modalita' open drain.. e vediamo che significa..



      Potete vedere in questo disegno lo stesso schema un po' piu' complesso del pull'up dell'immagine sopra.. solo che qui i canali sono 2. Concentriamoci sul device in basso.. vedete che la connessione di un canale viene rimandata ad un input e ad un transistor. Con l'input il device puo' leggere il valore logico del canale e con il transistor puo' tirare giu' il valore logico del canale, proprio come faceva prima lo switch. In questo modo il device puo' sia trasmettere (chiudendo il transistor e abbassando a LOW il valore del canale) che ricevere leggendo il valore del canale sul suo input.

      Questa architettura viene poi implementata in tutti i device. Vi e' poi un master (nel nostro caso Arduino) che si occupa di gestire la comunicazione coi vari altri device detti slave.

      Ora abbiamo capito cosa sono i pullup e come vengono usati in I2C.. ora.. bisogna capire quando usare i pullup interni o esterni. Iniziamo dicendo che nel microcontrollore Arduino il pullup viene fatto al voltaggio a cui viene alimentato il microcontrollore.. Quindi negli Arduino a 16 Mhz e' 5V, mentre in quelli a 8 MHz a 3V. Quindi quando abilitiamo i pullup interni di un Arduino UNO (16 MHz, 5V) il pullup verra' proprio fatto a 5V.

      Ora, purtroppo, il 90% dei vari sensori sono fatti per lavorare a 3V e non sono 5V tolleranti.. cosa succede quindi? Come detto prima, il voltaggio che va sull'input di un device I2C e' lo stesso su cui si fa pullup.. quindi praticamente se abilitiamo i pullup interni di Arduino i sensori riceveranno un voltaggio di 5V sulle loro porte di input che pero' non sono 5V tolleranti e possono quindi danneggiarsi, se non addirittura bruciarsi.

      Quindi, l'abilitare o il disabilitare i pullup dipende dal tipo di sensori che utilizzate. Inoltre c'e' da dire che i pullup interni di Arduino sono molto grossi e quindi sono lenti nei cambiamenti di stato.. e quindi possono far peggiorare la qualita' della comunicazione. Consiglio la lettura di Effects of Varying I2C Pull-Up Resistors

      Commenta


      • Originariamente inviato da fvaresano Visualizza il messaggio
        lol21 .. non esattamente..

        I pullup sono delle resistenze che vengono messe in un circuito logico (high o low, non analogici) per far si che di default il circuito assuma un livello logico stabilito quando i device nel circuito sono scollegati o in alta impedenza. Tutti i dettagli su Resistenza pull-up - Wikipedia

        Facciamo un esempio:



        Nella foto il pin Digital 2, impostandolo come input, viene messo in alta impedenza, cioe' se scollegato dal circuito, non assumera' un valore logico di per se ma solo in conseguenza a cio' a cui verra' collegato. Se venisse lasciato scollegato oscillerebbe tra HIGH e LOW in modo casuale, lavorando un po' tipo un'antenna.

        Guardiamo l'esempio di sinistra. Quando lo switch e' aperto non vi e' passaggio di corrente tra positivo e negativo. Il pin Digital 2 avra' una debole connessione a 5V e quindi leggera' come valore HIGH. Quando chiudiamo lo switch c'e' una forte connessione a GND e quindi il pin Digital 2 leggera' LOW.

        E' importante notare come in pratica non vi sia caduta di tensione sulla resistenza a pullup in quanto non vi e' un vero passaggio di corrente. In pratica, a switch aperto sul Digital 2 vedremo un 5V.

        Ora, tornando ai nostri sensori..

        Molte delle schede sensori attuali comunicano tramite I2C, un bus a due canali (un clock SCL e uno dati SDA) in cui i vari device vengono collegati in parallelo in modalita' open drain.. e vediamo che significa..



        Potete vedere in questo disegno lo stesso schema un po' piu' complesso del pull'up dell'immagine sopra.. solo che qui i canali sono 2. Concentriamoci sul device in basso.. vedete che la connessione di un canale viene rimandata ad un input e ad un transistor. Con l'input il device puo' leggere il valore logico del canale e con il transistor puo' tirare giu' il valore logico del canale, proprio come faceva prima lo switch. In questo modo il device puo' sia trasmettere (chiudendo il transistor e abbassando a LOW il valore del canale) che ricevere leggendo il valore del canale sul suo input.

        Questa architettura viene poi implementata in tutti i device. Vi e' poi un master (nel nostro caso Arduino) che si occupa di gestire la comunicazione coi vari altri device detti slave.

        Ora abbiamo capito cosa sono i pullup e come vengono usati in I2C.. ora.. bisogna capire quando usare i pullup interni o esterni. Iniziamo dicendo che nel microcontrollore Arduino il pullup viene fatto al voltaggio a cui viene alimentato il microcontrollore.. Quindi negli Arduino a 16 Mhz e' 5V, mentre in quelli a 8 MHz a 3V. Quindi quando abilitiamo i pullup interni di un Arduino UNO (16 MHz, 5V) il pullup verra' proprio fatto a 5V.

        Ora, purtroppo, il 90% dei vari sensori sono fatti per lavorare a 3V e non sono 5V tolleranti.. cosa succede quindi? Come detto prima, il voltaggio che va sull'input di un device I2C e' lo stesso su cui si fa pullup.. quindi praticamente se abilitiamo i pullup interni di Arduino i sensori riceveranno un voltaggio di 5V sulle loro porte di input che pero' non sono 5V tolleranti e possono quindi danneggiarsi, se non addirittura bruciarsi.

        Quindi, l'abilitare o il disabilitare i pullup dipende dal tipo di sensori che utilizzate. Inoltre c'e' da dire che i pullup interni di Arduino sono molto grossi e quindi sono lenti nei cambiamenti di stato.. e quindi possono far peggiorare la qualita' della comunicazione. Consiglio la lettura di Effects of Varying I2C Pull-Up Resistors
        questa spiegazione è da stampare!
        grazie fabio

        pragamichele@alice.it

        www.pragamichele.it

        Commenta


        • Originariamente inviato da pragamichele Visualizza il messaggio
          questa spiegazione è da stampare!
          grazie fabio
          Se volete approfondire, potete leggere la mia tesi.. tutti questi argomenti sono trattati.
          My MoS Thesis: Using Arduino for Tangible Human Computer Interaction | Varesano.net

          Commenta


          • Originariamente inviato da fvaresano Visualizza il messaggio
            lol21 .. non esattamente..

            I pullup sono delle resistenze che vengono messe in un circuito logico (high o low, non analogici) per far si che di default il circuito assuma un livello logico stabilito quando i device nel circuito sono scollegati o in alta impedenza. Tutti i dettagli su Resistenza pull-up - Wikipedia

            Facciamo un esempio:



            Nella foto il pin Digital 2, impostandolo come input, viene messo in alta impedenza, cioe' se scollegato dal circuito, non assumera' un valore logico di per se ma solo in conseguenza a cio' a cui verra' collegato. Se venisse lasciato scollegato oscillerebbe tra HIGH e LOW in modo casuale, lavorando un po' tipo un'antenna.

            Guardiamo l'esempio di sinistra. Quando lo switch e' aperto non vi e' passaggio di corrente tra positivo e negativo. Il pin Digital 2 avra' una debole connessione a 5V e quindi leggera' come valore HIGH. Quando chiudiamo lo switch c'e' una forte connessione a GND e quindi il pin Digital 2 leggera' LOW.

            E' importante notare come in pratica non vi sia caduta di tensione sulla resistenza a pullup in quanto non vi e' un vero passaggio di corrente. In pratica, a switch aperto sul Digital 2 vedremo un 5V.

            Ora, tornando ai nostri sensori..

            Molte delle schede sensori attuali comunicano tramite I2C, un bus a due canali (un clock SCL e uno dati SDA) in cui i vari device vengono collegati in parallelo in modalita' open drain.. e vediamo che significa..



            Potete vedere in questo disegno lo stesso schema un po' piu' complesso del pull'up dell'immagine sopra.. solo che qui i canali sono 2. Concentriamoci sul device in basso.. vedete che la connessione di un canale viene rimandata ad un input e ad un transistor. Con l'input il device puo' leggere il valore logico del canale e con il transistor puo' tirare giu' il valore logico del canale, proprio come faceva prima lo switch. In questo modo il device puo' sia trasmettere (chiudendo il transistor e abbassando a LOW il valore del canale) che ricevere leggendo il valore del canale sul suo input.

            Questa architettura viene poi implementata in tutti i device. Vi e' poi un master (nel nostro caso Arduino) che si occupa di gestire la comunicazione coi vari altri device detti slave.

            Ora abbiamo capito cosa sono i pullup e come vengono usati in I2C.. ora.. bisogna capire quando usare i pullup interni o esterni. Iniziamo dicendo che nel microcontrollore Arduino il pullup viene fatto al voltaggio a cui viene alimentato il microcontrollore.. Quindi negli Arduino a 16 Mhz e' 5V, mentre in quelli a 8 MHz a 3V. Quindi quando abilitiamo i pullup interni di un Arduino UNO (16 MHz, 5V) il pullup verra' proprio fatto a 5V.

            Ora, purtroppo, il 90% dei vari sensori sono fatti per lavorare a 3V e non sono 5V tolleranti.. cosa succede quindi? Come detto prima, il voltaggio che va sull'input di un device I2C e' lo stesso su cui si fa pullup.. quindi praticamente se abilitiamo i pullup interni di Arduino i sensori riceveranno un voltaggio di 5V sulle loro porte di input che pero' non sono 5V tolleranti e possono quindi danneggiarsi, se non addirittura bruciarsi.

            Quindi, l'abilitare o il disabilitare i pullup dipende dal tipo di sensori che utilizzate. Inoltre c'e' da dire che i pullup interni di Arduino sono molto grossi e quindi sono lenti nei cambiamenti di stato.. e quindi possono far peggiorare la qualita' della comunicazione. Consiglio la lettura di Effects of Varying I2C Pull-Up Resistors
            confermo da stampare e tenere appesa al muro

            scusate se ho dato informazioni sbagliate, però io le resistenze di pullup e pulldown le usavo per limitare il rumore appunto nella lettura dei pulsanti

            ciao
            lol21
            http://www.electroit.tk/ - il sito sull'elettronica tutto italiano

            Commenta


            • Originariamente inviato da fvaresano Visualizza il messaggio
              Per i collegamenti fai riferimento a http://www.varesano.net/files/FreeIM...onnections.pdf in pratica:
              Arduino --> FreeIMU:
              5V --> VIN
              GND --> GND
              A4 -->SDA
              A5-->SCL

              Ricordati di configurare MultiWii (ed ogni altro software tu voglia provare che usi i sensori) di modo che vengano disabilitati i pullup interni.

              INTA, INTG, INTM sono i pin di interrupt rispettivamente dell'accelerometro, del giroscopio e del magnetometro. Se usi MultiWii, attualmente non ne viene fatto uso e quindi puoi lasciarli scollegati, ma in futuro si spera possano essere utilizzati per passare dalla modalita' di lettura polling attuale a quella basata su gli interrupt in modo da andare a leggere il sensore solo quando veramente necessario riducendo i tempi di ciclo e migliorando in generale il flusso del programma.
              Fabio segnala che vanno disattivati e la sua FreeIMU va connessa direttamente come da schema linkato sul suo post.
              A che velocità va impostato il bus? E nel caso del software multiwii, dove vado ad agire nel codice?
              Ultima modifica di magnetron1; 16 luglio 11, 23:23.
              AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

              Commenta


              • Puoi usare sia 100 che 400 KHz con la FreeIMU.. ovviamente meglio i 400 KHz perche' spendi meno tempo per leggere i sensori!

                Tutte le configurazioni nelle ultime versioni del MultiWii le trovi sul file config.h che infatti e' quello dove trovi anche le voci:

                codice:
                //#define I2C_SPEED 100000L     //100kHz normal mode, this value must be used for a genuine WMP
                #define I2C_SPEED 400000L   //400kHz fast mode, it works only with some WMP clones
                A seconda di quella che lasci non commentata imposterai la velocita' della comunicazione.. qui sopra e' impostata a 400KHz.

                Commenta


                • volendo mettere un buzzer dove lo collego e come e come modifico il codice per dare ad esempio un lipo allarm?Soprattutto quale buzzer devo comprare?
                  grazie
                  Il mio canale youtube
                  http://www.youtube.com/user/hurricanenzo

                  Commenta


                  • Originariamente inviato da hurricane01 Visualizza il messaggio
                    volendo mettere un buzzer dove lo collego e come e come modifico il codice per dare ad esempio un lipo allarm?Soprattutto quale buzzer devo comprare?
                    grazie
                    HobbyKing Online R/C Hobby Store : Hobby King Battery Monitor 3S

                    pragamichele@alice.it

                    www.pragamichele.it

                    Commenta


                    • Originariamente inviato da fvaresano Visualizza il messaggio
                      Puoi usare sia 100 che 400 KHz con la FreeIMU.. ovviamente meglio i 400 KHz perche' spendi meno tempo per leggere i sensori!

                      Tutte le configurazioni nelle ultime versioni del MultiWii le trovi sul file config.h che infatti e' quello dove trovi anche le voci:

                      codice:
                      //#define I2C_SPEED 100000L     //100kHz normal mode, this value must be used for a genuine WMP
                      #define I2C_SPEED 400000L   //400kHz fast mode, it works only with some WMP clones
                      A seconda di quella che lasci non commentata imposterai la velocita' della comunicazione.. qui sopra e' impostata a 400KHz.
                      GRAZIE - ok allora proverò bus a 400kHz e pullups disabilitati (altrimenti se li lascio abilitati rischio di far saltare la FreeIMU)...
                      Devo rifare prima la scheda...
                      Poi proverò con l'ultima dev disponibile...
                      AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

                      Commenta


                      • Nella GUI in basso a destra dove ci sono: ROLL ___|___ e PITCH ---->

                        è normale che ROLL non sia perfettamente in piano?

                        Domani se riesco posto un filmato della GUI...
                        FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
                        FLYDRONE AXN FPV
                        GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

                        Commenta


                        • se ricalibri gli acceleromtri ti va in piano il grafico anche se hai il sensore e' a 45 gradi !!!!!
                          se non e' in piano significa che quando hai calibrato era in una posizione diversa da quella attuale.....

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

                          Commenta


                          • Originariamente inviato da fvaresano Visualizza il messaggio
                            Puoi usare sia 100 che 400 KHz con la FreeIMU.. ovviamente meglio i 400 KHz perche' spendi meno tempo per leggere i sensori!

                            Tutte le configurazioni nelle ultime versioni del MultiWii le trovi sul file config.h che infatti e' quello dove trovi anche le voci:

                            codice:
                            //#define I2C_SPEED 100000L     //100kHz normal mode, this value must be used for a genuine WMP
                            #define I2C_SPEED 400000L   //400kHz fast mode, it works only with some WMP clones
                            A seconda di quella che lasci non commentata imposterai la velocita' della comunicazione.. qui sopra e' impostata a 400KHz.
                            Come va orientata la FreeIMU rispetto al senso di avanzamento?
                            AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

                            Commenta


                            • Scusate se torno sull'argomento:
                              Originariamente inviato da magnetron1 Visualizza il messaggio
                              Ho provato ad usare il canale AUX1 per impostare il LEVEL quando lo switch che ho programmato dalla radio raggiunge il suo valore max. Guardando però nella GUI quando attivo quello switch (al quale ho connesso poi il canale della rx al pin 7 di Arduino, come da schema) vedo che anche AUX2 si attiva... perchè? Come posso sfruttare anche AUX2? Dove collego il canale AUX2 ad Arduino?
                              forse si può sfruttare con un Arduino Mega ma non con un Mini o Nano?
                              AERODRONE M4X - AERODRONE M6S (revamping) - AERODRONE M4H - i miei video

                              Commenta


                              • Originariamente inviato da hurricane01 Visualizza il messaggio
                                volendo mettere un buzzer dove lo collego e come e come modifico il codice per dare ad esempio un lipo allarm?Soprattutto quale buzzer devo comprare?
                                grazie
                                anche se il codice permette di implementare un controllo dello stato della batteria e un eventuale segnale acustico/visivo, per me, è più immediato applicare un lipo alarm direttamente sulla batteria.

                                oppure:
                                D8 -> Buzzer
                                A3 -> Partitore Resistivo -> positivo batteria.

                                T-REX 450 METAL - HDX450 FULL METAL - WALKERA 4#3B BL MAIN - WALKERA 4G6 MOD - SU-31 DEPRON - MULTIWII QUADX

                                Commenta

                                Sto operando...
                                X