annuncio

Comprimi
Ancora nessun annuncio.

quadricoso con 16f876 help

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

  • quadricoso con 16f876 help

    Salve a tutti , non e' facile che scriva , ma stasera ho provato il mio quadricottero , elettronica homemade , firmware realizzato col mikroC , esperienze di pilotaggio elicotteri , ed e' stata una inaspettata sorpresa.
    un paio di tentativi di decollo et viola' ovvero VOLA.


    Ho settato il tutto da buon ignorante , sotto le funzioni di traserimento:
    ch1=(dsc3-102)*2+305 + (dsc2-163) + (dsc4-163) + G_ele*s_g_ele + G_rud*s_g_rud ;
    ch2=(dsc3-102)*2+305 - (dsc2-163) + (dsc4-163) - G_ele*s_g_ele + G_rud*s_g_rud ;
    ch3=(dsc3-102)*2+305 + (dsc1-163) - (dsc4-163) + G_ail*s_g_ail - G_rud*s_g_rud ;
    ch4=(dsc3-102)*2+305 - (dsc1-163) - (dsc4-163) - G_ail*s_g_ail - G_rud*s_g_rud ;

    dove ch1,2,3,4 sono gli out che vanno a quattro regolatori convenzionali
    dsc1,2,3,4 sono gli ingressi dalla rx
    g_ele,g_ail,g_rud sono le uscite dei tre gyro relativi agli assi ail,rud,ele
    s_g_ail,s_g_ele,s_g_rud sono dei fattori di sensibilita' dei vari giro.

    riesco a tenerlo in volo per circa quattro minuti con una 3s da2200
    i motori sono brushless classe 370 da 1000G/V

    la stabilita' scarseggia ma il primo risultato e' stato oltremisura appagante , il tutto e' possibile migliorarlo poiche' in primis ho programmato il pic con un linguaggio ad alto livello ma in assembler le velocita' di reazione aumentano sicuramente.....

    i bracci sono di 35cm .

    le mie domande principali sono:
    aumentando la misura dei bracci acquisto in stabilita' (vorrei farli da 50 cm..)
    e' giusto correggere in maniera lineare ( es. ' - G_ail*s_g_ail ' ) oppure una correzione tipo - G_ail^2 e' piu' affidabile?

    sicuramente qualche guru storcera' il naso ma sono soddisfattissimo del primo volo .

    grazie a chi si sente di potermi dare una mano senza sconvolgere il progetto originale.
    Ciao Nicola

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

  • #2
    l'input dei giroscopi va "pulito", nel senso che se provi a farti un grafico, magari realtime degli output "saltano" molto... c'è chi usa filtri passa alto, chi passa basso, chi più ne ha più ne metta.
    La correzione lineare credo che vada bene, il massimo sarebbe trsformare l'output del giro nell'angolo in radianti, e poi calcolarsi l'output agli esc in base all'angolo. Non sono sicuro che la funzione che otterresti sia lineare, ma sicuramente non esponenziale.. ricorda che i giro leggono bene rotazioni improvvise ma sono molto inaffidabili per quelle lente

    Commenta


    • #3
      uso 3 gyro murata SMD montati su una basettina-supporto acquistata sul sito MK , ho visto il circuito consigliato , un filtro di primo ordine passa banda , ma ho fatto lo sborone e non li ho filtrati ( fara' parte questa modifica di un ulteriore step...) ho pero' tagliato via con un elettrolitico la componente continua (che ho visto e' influenzata dalla temperatura)ed ho applicato in ingresso all ADC del micro ( 16f876 --> 10 bit --> 1024 step) il segnale tramite un partitore fatto con un trimmer multigiri in modo da leggere senza rotazioni il valore 512 su un LCD che viene usato solo in fase di verifica software poiche' scrivere su tale dispositivo introduce dei rilevanti tempi di ritardo inammissibili utilizzando ESC tradizionali ( NON I2C !!!) con i quali ho bisogno di aggiornare il segnale con una frequenza compresa tra 40 e 60 Hz..
      Il mio non stravolgere il progetto originale si riferiva per lo piu' al compilatore MikroC ed all'utilizzo di un 16f876 (@ 20MHz ), poiche' sulla programmazione sono autodidatta e per ora di assembler mastico pochino , il micro poi so' che un atmega sarebbe piu' idoneo ma vedro' piu' avanti di utilizzare un 16f877 raddoppiando il clock (40MHz) oppure DSPIC(core a 16 bit)....
      grazie tante per queste tue prime risposte . consigli accettasi...
      Ultima modifica di nlenzini; 05 settembre 10, 09:11.

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

      Commenta


      • #4
        Ciao Nicola,
        complimenti vivissimi per il tuo primo volo e per il tuo primo codice per quad . Manca una cosa fondamentale anzi due o tre ... foto e video della tua creatura ...facci vedere siamo tutti curiosi , poi se vuoi immortalare su web la tua creatura postalo anche sulla network del FOXTEAM così provvediamo a diffondere .. ;) FOXTEAM UAV CLAN - a Virtual Robotix Network Team
        Se hai bisogno di qualche dritta fai un colpo di codice ne ho pubblicato parecchio in c tutto opensource quindi non c'e' che chiedere.
        Un saluto
        Roberto
        Redfox74
        Virtual Robotix ( Arducopter DEVTEAM )
        http://www.virtualrobotix.com
        Canale di supporto FB
        https://www.facebook.com/groups/1606596929592397/

        Commenta


        • #5
          ciao redfox74 ... siamo coetanei , credo.....( x il 74 )....
          appena Sailormoon mi posta il filmatino lo giro sul 3D ....infatti stamani sono andato al campo per condividere la mia soddisfazione con gli amici del gruppo , ho fatto un voletto di 30'' e poi ho messo tutto in mano ad UGOGOSTH pilota anchesso di elicottero , il suo commento : da cardiopalma ma un attrezzo cosi' non credevo proprio che si staccasse neppure da terra....
          i passi da fare sono molteplici , ho notato che , il quadricoso , come siete abituati a chiamarlo qua' , diventa assai piu' stabile uscendo dall'effetto suolo , sicuramente come suggerito da ELETTRO devo filtrare i gyro , ho ancora dei disturbi che credo siano portati dalla decodifica tramite il TRM1 del segnale DSC della RX , insistero' sugli ESC tradizionali , i motori sono gli EFITE 370 forse non proprio adatti allo scopo ma ne avevo in casa gia' due regolatori compresi e mi sono adattato a quelli , ai quali invio il segnale pwm dal main loop , qundi dato gli interrupt del TRM1 non sono aggiornati a 50 Hz come la letteratura vuole....
          sarei grato se mi potessi postare una sorta di flowshart (scema a blocchi) con ,le strategie di interrupt e le funzioni di traserimento anche indicative per vedere dove posso migliorare il Sw senza andare per tentativi , ho paura di peggiorare anziche' migliorare....
          grazie per ora , sono contento di venire seguito qua' sul forum . Ciao NICOLA

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

          Commenta


          • #6
            Il mio non stravolgere il progetto originale si riferiva per lo piu' al compilatore MikroC ed all'utilizzo di un 16f876 (@ 20MHz ), poiche' sulla programmazione sono autodidatta e per ora di assembler mastico pochino , il micro poi so' che un atmega sarebbe piu' idoneo ma vedro' piu' avanti di utilizzare un 16f877 raddoppiando il clock (40MHz) oppure DSPIC(core a 16 bit)....
            Quando acquisti un pic, oltre alla frequenza di clock devi controllare quanti clock impiega a effettuare un'istruzione. l'atmega credo basi una parte della sua fortuna proprio dall'avere molte istruzioni monoclock. (trovi le istruzioni assembly con tempo di clock sui datasheet)

            il segnale tramite un partitore fatto con un trimmer multigiri in modo da leggere senza rotazioni il valore 512 su un LCD
            i tuoi giro son molto migliori dei miei, anche da fermi i valori saltano normalmente da +/-1 dal valore medio e hanno anche picchi... Insomma il segnale va pulito pure in condizioni di laboratorio, spero che almeno in volo non presentino troppe sorprese.
            Però da quanto ho capito il tuo sistema non ricerca un angolo assoluto ma semplicemente compensa i movimenti letti dal giroscopio

            sarei grato se mi potessi postare una sorta di flowshart (scema a blocchi) con ,le strategie di interrupt e le funzioni di traserimento anche indicative per vedere dove posso migliorare il Sw senza andare per tentativi , ho paura di peggiorare anziche' migliorare....
            La strategia è non usare interrupt, ma basare tutto sulle funzioni tipo millis() e micro() (in che linguaggio programmi?), l'unico interrupt che terrei è quello dell'adc dei giroscopi.
            Millis() e micro() possono essere anche usate per trovare le parti di codice maledettamente lento e ottimizzare. Senza contare che la durata del ciclo è molto utile anche come dt per integrare l'input dei sensori.
            Le funzioni di trasferimento non sapevo manco cosa fossero fino a 2 secondi fa (umm ma qualcosa mi dice che potrei averle fatte.. ecco perchè non ho passato gli esami )

            Commenta


            • #7
              la cosa mi e' interessata in passato ed ora piu' che mai... come e' possibile cercare " l'angolo assoluto? " quanti accelerometri devo utilizzare assieme ai tre gyro ? tre credo..... e quali sono i calcoletti magici da fare ? dove posso trovare della letteratura in italiano ( sono duretto con le lingue...) esistono dei calcoli a spanne ma affidabili senza andare a scomodare il filtro Kalman ( l'ho visto citato in una miriade di post ma anche impegnandomi non c'ho mai capito una mazza...)
              dai dai che la cosa comincia a diventarmi interessantissima.....

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

              Commenta


              • #8
                Originariamente inviato da elettro Visualizza il messaggio
                Quando acquisti un pic, oltre alla frequenza di clock devi controllare quanti clock impiega a effettuare un'istruzione. l'atmega credo basi una parte della sua fortuna proprio dall'avere molte istruzioni monoclock. (trovi le istruzioni assembly con tempo di clock sui datasheet)


                i tuoi giro son molto migliori dei miei, anche da fermi i valori saltano normalmente da +/-1 dal valore medio e hanno anche picchi... Insomma il segnale va pulito pure in condizioni di laboratorio, spero che almeno in volo non presentino troppe sorprese.
                Però da quanto ho capito il tuo sistema non ricerca un angolo assoluto ma semplicemente compensa i movimenti letti dal giroscopio


                La strategia è non usare interrupt, ma basare tutto sulle funzioni tipo millis() e micro() (in che linguaggio programmi?), l'unico interrupt che terrei è quello dell'adc dei giroscopi.
                Millis() e micro() possono essere anche usate per trovare le parti di codice maledettamente lento e ottimizzare. Senza contare che la durata del ciclo è molto utile anche come dt per integrare l'input dei sensori.
                Le funzioni di trasferimento non sapevo manco cosa fossero fino a 2 secondi fa (umm ma qualcosa mi dice che potrei averle fatte.. ecco perchè non ho passato gli esami )
                @elettro ,
                scusa elettro , ma in realtà non puoi avere sono un interrupt per i gyro , nel senso che ti servono interrupt sui timer capture per ricevere i canali dalla radio , intterupt per gestire le uscite pwm e intterrupt per gestire i canali seriali ... non penso che puoi prescindere da questi interrupt per fare un buon programma per il tuo futuro quad

                @nlenzini,
                ci sono diverse strategie per calcolare l'angolo assoluto e la matrice di rotazione la piu' promettente in questo momento su micretti 8 bit è la dcm.

                il codice lo puoi trovare nel mio repositori che trovi sulla mia firma in particolare il software Aeroquad20 e Hexafox v2 gps

                Un saluto
                Roberto
                Redfox74
                Virtual Robotix ( Arducopter DEVTEAM )
                http://www.virtualrobotix.com
                Canale di supporto FB
                https://www.facebook.com/groups/1606596929592397/

                Commenta


                • #9
                  la dcm interessa anche a me, se non c'è di mezzo l'accelerometro. In caso fosse presente questa brutta bestia conosci qualche buon algoritmo per pulire l'input dei giroscopi? io per ora ho trovato solo filtri passa basso, ancora da testare, ma non mi ispira più di tanto -.-


                  Degli interrupt puoi fare a meno, se il tuo ciclo è abbastanza veloce.
                  Ogni volta chessò che cambi il segnale pwm ti segni i microsecondi a cui lo fai, poi ogni ciclo controlli se son passati abbastanza microsecondi e lo ricambi...
                  Stessa cosa per gli input, conti quanti microsecondi son passati da quando il segnale è cambiato l'ultima volta.

                  Certo complica un pò il codice e il ciclo deve essere abbastanza veloce da accorgersi/effettuare con abbastanza precisione dei cambiamenti, però prova a calcolarti la durata del ciclo senza interrupt (solo quello ADC che sinceramente non saprei come evitare) e vedi quanto ti cambia.

                  Commenta


                  • #10
                    vado a vedere domattina ora e' tardi eil mojto comincia a darmi un po' fastidio... domani festa al lavoro per il patrono , comincero' la nuova meccanica con i bracci da 50cm... dcm ? .... mi sa' che mi son perso qualcosa.....di che tipo di sensori ho bisogno?
                    Ultima modifica di nlenzini; 06 settembre 10, 01:52.

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

                    Commenta


                    • #11
                      qua' il video dell'aggeggio....

                      YouTube - QuadriCoso_V1_volo_1.MP4!

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

                      Commenta


                      • #12
                        vola proprio come se avesse il gain dei giroscopi troppo basso.
                        Aumenta il guadagno dei giroscopi e volerà molto meglio.

                        Commenta


                        • #13
                          ho dato alla sensibilita' dei gyro un fattore 2

                          ch1=(dsc3-102)*2+305 + (dsc2-163) + (dsc4-163) + G_ele*s_g_ele + G_rud*s_g_rud ;

                          infatti s_g_ele , s_g_rud e s_g_ail li pongo uguali a '2' provero' a raddoppiarla...

                          era proprio questo che cercavo : qualcuno che mi potesse consigliare vedendo come si comporta in volo l'accroccoo.....

                          Grazie.

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

                          Commenta


                          • #14
                            Originariamente inviato da nlenzini Visualizza il messaggio
                            qua' il video dell'aggeggio....

                            YouTube - QuadriCoso_V1_volo_1.MP4!
                            Wow ... beh ma sei già a buon punto complimenti ... ti invito a postare sul network di Fox Team il tuo bellissimo quadricoso ... dai battezzalo dagli un nome così lo uniamo alla truppa italiana composta ormai da un folto numero di velivoli .. quadricosici .. ;)

                            HexaFox
                            Fox Hybrid
                            HG3
                            BaronPilot,
                            Armquad
                            Quadricoso ... non suona benissimo ;)


                            E se me ne sono dimenticato qualcuno mi scuso in anticipo ... aggiungete pure .. ;)

                            il link è questo FOXTEAM UAV CLAN - a Virtual Robotix Network Team ... tassativamente in inglese e Italiano .. poi vediamo di diffondere le varie esperienze worldwide
                            Avanti così .. un saluto
                            Roberto
                            Redfox74
                            Virtual Robotix ( Arducopter DEVTEAM )
                            http://www.virtualrobotix.com
                            Canale di supporto FB
                            https://www.facebook.com/groups/1606596929592397/

                            Commenta


                            • #15
                              @ redfox74

                              Grazie ma non e' niente confronto ai video che vedo in giro...
                              dai dimmi dove posso lavorare per stabilizzare un po' di pu' l'accrocco , voglio provare con la sensibilita' dei gyro come suggeritomi , vorrei cambiare frame allungando 7-10 cm i bracci ed inclinarli verfo l'alto cosi' da avere un CG piu' basso e piu' autostabilizzante .

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

                              Commenta

                              Sto operando...
                              X