annuncio

Comprimi
Ancora nessun annuncio.

KaptainKuk controller board! eccola!

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

  • Il punto è che si tratta di una sfida personale. Pensavo poi di integrare i giro con un progetto già esistente, magari al bironpilot, senza contare che arriverei a postare soluzioni "già imparato".
    Il problema che ho ora però, non so se è da affibbiare alla mia programmazione o al giroscopio. In pratica anche solo sull'arduino, sommando i valori letti dal giroscopio che differiscono dai valori "di equilibrio" , se muovo il giroscopio poi non torna a zero.. sfasa di 8000 su 10000 valori non "di equilibrio" letti...

    codice:
    long value = 0;
    int valueReaded =0;
    int strange =0;
    int tempDiff;
    long diff;
    void loop() {
      sensorValue = analogRead(sensorPin);
      value+=sensorValue;
      valueReaded++;
      //Serial.println( (value/valueReaded) ); 
      
      tempDiff=sensorValue-281;
      if (tempDiff < 10 && tempDiff > -10){
        tempDiff=0;
      }else{
        strange++;
      }
      
      diff += tempDiff;
      
      if (valueReaded>=10000){
        Serial.println( (value/valueReaded) );
        Serial.println( strange );
        Serial.println( diff );
        //Serial.println( sensorValue );
        valueReaded=0;
        value=0;
      }
    sembra che si impalli il giro, alcune rotazioni proprio non le prende...

    Commenta


    • domanda di carattere generale: per riprogrammare l'atmega è necessario toglierlo dalla scheda o si può fare on-board? mi pare di capire che si possa fare a condizione che sulla scheda siano presenti i 6 pin appositi

      cosa mi consigliate tra il la scheda forata da montare di Jakob (29eur) e la scheda smd (40gbp) di Chris?
      la seconda da meno lavoro ma costa quasi il doppio e se si vuole cambiare l'atmega temo di fare pasticci con le saldature in smd

      il programmatore (hardware) per l'atmega si può riciclare per l'arduino o su questo non serve?
      (mi pare giusta la seconda)

      grazie

      <edit>
      mi rispondo da solo alla prima domanda: i 6 pin ISP dedicati alla programmazione sono presenti sulla scheda dell'inglese mentre non li vedo su quella del polacco, d'altra parte su questa si fa prima a togliere l'atmega
      Ultima modifica di blinking; 21 agosto 10, 01:22.
      quota, velocità, idee: averne sempre almeno due

      Commenta


      • per programmare un'atmega ti basta un FTDI chip e conoscere i pin TX/RX e reset dell'atmega. metti il reset a contatto con GND, colleghi TX e RX, alimenti il tutto, clicchi upload e appena vengono fuori le scritte che ha compilato, togli il reset da GND.
        Sinceramente ti sconsiglio l'SMD che se si rompe qualche pezzo è un macello.
        Senza contare che normalmente gli SMD costano di meno(produzione di massa), tutto dipende da quanto sei bravo col saldatore

        Commenta


        • Originariamente inviato da elettro Visualizza il messaggio
          Il punto è che si tratta di una sfida personale. Pensavo poi di integrare i giro con un progetto già esistente, magari al bironpilot, senza contare che arriverei a postare soluzioni "già imparato".
          Il problema che ho ora però, non so se è da affibbiare alla mia programmazione o al giroscopio. In pratica anche solo sull'arduino, sommando i valori letti dal giroscopio che differiscono dai valori "di equilibrio" , se muovo il giroscopio poi non torna a zero.. sfasa di 8000 su 10000 valori non "di equilibrio" letti...

          codice:
          long value = 0;
          int valueReaded =0;
          int strange =0;
          int tempDiff;
          long diff;
          void loop() {
            sensorValue = analogRead(sensorPin);
            value+=sensorValue;
            valueReaded++;
            //Serial.println( (value/valueReaded) ); 
            
            tempDiff=sensorValue-281;
            if (tempDiff < 10 && tempDiff > -10){
              tempDiff=0;
            }else{
              strange++;
            }
            
            diff += tempDiff;
            
            if (valueReaded>=10000){
              Serial.println( (value/valueReaded) );
              Serial.println( strange );
              Serial.println( diff );
              //Serial.println( sensorValue );
              valueReaded=0;
              value=0;
            }
          sembra che si impalli il giro, alcune rotazioni proprio non le prende...
          Con 10000 conversioni consecutive in loop non dai il tempo all' adc dell'arduino di attendere la fine conversione e quindi falsi tutte le letture.

          Poi i gyro murata non sono il massimo, per questo tipo di misura, tra errori causati dalla conversione del rumore + quelli dell' integrazione che essendo "discreta" ha un errore insito e il drift del gyro puoi arrivare ad avere un errore di 4-5° al minuto, quindi anche quando risolverai il problema delle conversioni consecutive troppo veloci dovrai risolvere quanto sopra.
          Ecco che per ottenere un orrizzonte artificiale e quindi una misura dell'angolo precisa scoprirai l'accelerometro ma una volta inserito non funzionera' lo stesso in volo a causa delle vibrazioni e per altri aspetti, scoprirai quindi varie tecniche di filtri, passa basso, fir etc. e data fusion come il filtro di kalman, filtro complementare, dcm che una volta inseriti nel codice non funzioneranno subito perche andranno ottimizzati, etc. etc.

          In conclusione ti consiglio di tenere e volare con la KK cosi come e', se invece vuoi proprio volare in modalita' autolivellante segui il consiglio di Roberto...fidati risparmierai mesi e mesi di tempo.

          Ciao
          Quadricottero News
          http://www.facebook.com/Quadricottero

          Commenta


          • Originariamente inviato da elettro Visualizza il messaggio
            per programmare un'atmega ti basta un FTDI chip
            cioè una cosa tipo questa:
            USB TO RS232 MODULE,FT232, FT232RL,FTDI,CHIP,5V-3,3V su eBay.it Electronic Components, Electrical Test Equipment, Business Industrial
            o
            USB to RS232/UART TTL/RS485 Module FTDI FT232BM/BL Chip su eBay.it Cables Connectors, Computer Accessories, Computers Networking
            o
            PC USB to RS232 Module Based TTL FTDI FT232BM/BL Chip su eBay.it Cables Connectors, Computer Accessories, Computers Networking

            o anche solo un convertitore seriale-usb?
            USB to Serial Adapter RS232 DB9 FTDI PALM GPS it3 su eBay.it Cavi, Prolunghe, Convertitori, Componenti, Informatica e Palmari

            Originariamente inviato da elettro Visualizza il messaggio
            Senza contare che normalmente gli SMD costano di meno(produzione di massa)
            sì ma quello SMD è già tutto saldato, l'altra basetta forata è da montare. Niente di difficile, sembra, ma non ho vorrei mettermi troppo alla prova.
            Condivido invece il fatto che se si cimisce qualcosa con l'smd sono cacchi
            quota, velocità, idee: averne sempre almeno due

            Commenta


            • per quanto ne so l'analogRead si prende tutto il tempo necessario che serve all'ADC.. per quanto riguarda l'errore, ti assicuro che è maggiore di 3 gradi...
              I filtri li conosco, ma non avendo a disposizione accelerometri e quant'altro sono inutili

              Commenta


              • scusa blinking ho visto il tuo messaggio solo ora..
                il chip ftdi deve essere TTL se non erro, sicuramente il solo cavo non basta, le altre soluzioni sono ok. Solo preferisci quelle con più pin, perchè se hai anche DTR, RTS e compagnia bella puoi anche mettere il bootloader senza bisogno di schede aggiuntive! Per 3 o 4 € in più ne vale la pena!
                senza andare all'estero questo va più che bene: Futura Elettronica - Home Page Prodotti si chiama CONVERTITORE USB-SERIALE CON FT232RL
                Io non ho mai saldato, eppure da un paio di settimane che saldo e dissaldo cavi e tutto funziona bene ( tranne il giroscopio, forse )

                @danveal: specificherei che oltre a 10000 ho usato altri valori, mettere un delay() mi pare controproducente, ma domani se ho tempo provo. Potrebbe essere qualche saldatura fatta male? Domani provo anche con 3.3V al posto dei 5V

                Commenta


                • Originariamente inviato da elettro Visualizza il messaggio
                  scusa blinking ho visto il tuo messaggio solo ora..
                  il chip ftdi deve essere TTL se non erro, sicuramente il solo cavo non basta, le altre soluzioni sono ok. Solo preferisci quelle con più pin, perchè se hai anche DTR, RTS e compagnia bella puoi anche mettere il bootloader senza bisogno di schede aggiuntive! Per 3 o 4 € in più ne vale la pena!
                  senza andare all'estero questo va più che bene: Futura Elettronica - Home Page Prodotti si chiama CONVERTITORE USB-SERIALE CON FT232RL
                  questo
                  FUTURA ELETTRONICA SCHEDA TECNICA - 7100-FT782M MODULO CONVERTITORE USB/SERIALE ?
                  quota, velocità, idee: averne sempre almeno due

                  Commenta


                  • no, quello ha solo TX e rx, l'altro

                    Commenta


                    • FUTURA ELETTRONICA SCHEDA TECNICA - 7300-USBARDUINO FTDI CONVERTITORE USB-SERIALE - 3.3V

                      FUTURA ELETTRONICA SCHEDA TECNICA - 7300-BOB0718 CONVERTITORE USB-SERIALE CON FT232RL
                      quota, velocità, idee: averne sempre almeno due

                      Commenta


                      • FUTURA ELETTRONICA SCHEDA TECNICA - 7300-BOB0718 CONVERTITORE USB-SERIALE CON FT232RL
                        [/QUOTE]

                        eccola!!!

                        Proseguendo i miei test, ho notato che muovere il mouse USB fa sballare i valori del giroscopio letti dall'atmega alimentato sempre via USB...
                        idee?
                        per ora ho provato l'esclusione dinamica di valori in fase di calibrazione, l'utilizzo di medie di >=10 valori, e qulache altro metodo (siamo in due che da questo pomeriggio ci sbattiamo la testa, ma la precisione resta bassa)

                        Commenta


                        • @Elettro: eseguire la media su 10.000 letture di un A/D è decisamente poco elegante, utilizza molte risorse di tempo e calcolo del micro, meglio sarebbe adottare una media mobile, se ben dimensionata ti farebbe anche risparmiare alcune istruzioni.

                          Se poi la fai seguire da un accumulatore, anche lui ben dimensionato, otterresti un valore ben filtrato del tuo gyro.

                          Non bisogna poi dimenticare che usare un po di hw prima dell' A/D converter per filtrare e condizionare i segnali provenienti da sensori come gyro ed accelerometri economici o datati potrebbe essere cosa buona e giusta.

                          Peace & Love
                          Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)

                          Commenta


                          • Ogni test è stato effettuato con tantissimi valori, dall'immensamenter piccolo all'immensamente grande senza trascurare l'immensamente in mezzo
                            per ora il metodo migliore sembra essere quelli di fare un media in fase di configurazone con almeno 10000 valori, poi in run-time fare diff=valoreLetto-media e sommare tutti i diff..
                            sto provando a moltiplicare diff per il numero di microsecondi in cui è stato letto in modo da rendere un pò più lineare la cosa, e sto anche tentando di fare lo stesso lavoro con le medie di 10 o 20 valori.
                            allora come filtro hw avevo messo un condensatore da 0.68uf, però ora l'ho rimosso perchè mi sembrava di dubbia utilità.

                            Ho fatto una grossa scoperta: la vicinanza (< di 2metri) di un essere umano, o una trasmittente, probabilmente anche della ricevente, o muovere il mouse, sballano le letture e non di poco. si può vedere benissimo questo fatto se si printando i diff >=1, basta avvicinare la mano al sensore per ottenere praticamente nessuna lettura valida.

                            A seguito di ciò devo rifare tutti i test di cui sopra, e pensavo di costruire una piccola gabbia di Faraday per il sensore, sperando che basti. La gabbia deve scaricare sul + giusto?

                            Scusate eventuali errori ma sono appena sveglio :-)

                            Commenta


                            • Originariamente inviato da elettro Visualizza il messaggio
                              Ogni test è stato effettuato con tantissimi valori, dall'immensamenter piccolo all'immensamente grande senza trascurare l'immensamente in mezzo
                              per ora il metodo migliore sembra essere quelli di fare un media in fase di configurazone con almeno 10000 valori, poi in run-time fare diff=valoreLetto-media e sommare tutti i diff..
                              sto provando a moltiplicare diff per il numero di microsecondi in cui è stato letto in modo da rendere un pò più lineare la cosa, e sto anche tentando di fare lo stesso lavoro con le medie di 10 o 20 valori.
                              allora come filtro hw avevo messo un condensatore da 0.68uf, però ora l'ho rimosso perchè mi sembrava di dubbia utilità.

                              Ho fatto una grossa scoperta: la vicinanza (< di 2metri) di un essere umano, o una trasmittente, probabilmente anche della ricevente, o muovere il mouse, sballano le letture e non di poco. si può vedere benissimo questo fatto se si printando i diff >=1, basta avvicinare la mano al sensore per ottenere praticamente nessuna lettura valida.

                              A seguito di ciò devo rifare tutti i test di cui sopra, e pensavo di costruire una piccola gabbia di Faraday per il sensore, sperando che basti. La gabbia deve scaricare sul + giusto?

                              Scusate eventuali errori ma sono appena sveglio :-)
                              ciao
                              alimenti tutto dalla usb percaso?
                              in tal caso il cavo è troppo lungo e l'alimentazione del pc col fatto che è in Switching chea dei distrurbi, usa una batt sull'apparato io avevo un problema simile con un mio aeroquad con lo stampato fatto da me, appena la radio mi si bindava col fatto della telemetria che trasmetteva mi creava degli spike spaventosi e mandava a benedirsi le letture su giro e acc.
                              usa una piccola batteria.
                              Sbagliare è umano, perseverare è diabolico!!

                              Commenta


                              • In sistemi complessi in cui devono convivere segnali analogici e digitali è indispensabile adottare regole costruttive ottimali ed ottimizzate, non rispettandole si ottengono solo valori aleatori.

                                Per effettuare 10.000 campionamenti di un solo canale, ammesso e non concesso, che lo a/d lavori a 2us occorrono 20ms = 50 Hz, decisamente troppi......

                                Da vecchietto quale sono non vorrei frenare i tuoi giovanili ardori però ti consiglierei di riconsiderare il problema prima di andare incontro a delusioni anche del portafoglio .

                                Peace & Love
                                Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)

                                Commenta

                                Sto operando...
                                X