annuncio

Comprimi
Ancora nessun annuncio.

MULTIROTORE basato su ARM ( CORIDIUM board )

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

  • MULTIROTORE basato su ARM ( CORIDIUM board )

    Apro questo thread per verificare quanti sono interessati a scrivere codice in C per la suddette schede al fine di creare un multirotore.
    Coridium Corporation - Technical Support

    Multirotore che io ho creato in BASIC con l'armmite pro.
    Per iniziare posto il mio codice basic "base" per leggere i canali da ricevente ppm seriale.
    Mentre in basic sono presenti le istruzioni ON e INTERRUPT SUB in C le routine interrupt bisogna sciversele.
    Per leggere i canali in sostanza attivo l'interrupt in fail edge e conto il tempo tra un edge ed un altro e lo assegno ai canali.
    Il canale 1 viene determinato dopo aver trovato il gap tra uno stream e l'altro. In questo modo si possono leggere tutti i canali che arrivano dalla Tx, nel codice ne leggo 8 perche uso una tx ad 8 canali.
    Con questo sistema appena un canale viene letto l'interrupt si chiude e in sostanza viene assegnato subito, pronto per essere elaborato prima che si attivi il nuovo interrupt per il canale successivo. Niente attesa che lo stream sia completato.

    codice:
    ' ARMQUAD
    ' Quadricottero basato su ARM
    ' Primo volo: 23/04/10 
    '                              
    ' ARMMITE PRO
    '
    '
    '      ***QUAD***                              *** Y6 ***
    '
    '
    '         M1,CW                >M1,CW pwm1(IO0)----------- >M2,CWpwm2(IO1)
    '           |                  <M4,CCWpwm4(IO5)-----+----- <M5,CCWpwm5(IO14)
    '           |                                       |
    ' M3,CCW----+----M2,CCW                             |
    '           |                                       |
    '           |                                  <M3,CCWpwm3(IO8)
    '         M4,CW                                >M6,CWpwm6 (IO10)
    
    ' INT IO9 eint0   
    ' test batteria AD0
    ' out batt allarm IO11
    
    
    MAIN:
     ON EINT0 fall MisuraRadio                       ' FAIL EDGE interrupt
      
    
    DO                
     
    'Misura esecuzione Loop in microsecondi
    CicloLoop = Timer                           
     ValoreLoop = CicloLoop - CicloLoopPrecedente   
     CicloLoopPrecedente = CicloLoop  
     
    
    Call Radio               
    Call InizESC
    Call Gyro
    Call Acc
    Call Pid
    Call Mixer
    Call Motori
    Call Batteria
     
    LOOP
    codice:
    '--------  MISURARADIO    -------
    Sub MisuraRadio                                   ' Segnale PPM seriale 
     
    dim EdgeAttuale as integer                        
    dim EdgePrecedente as integer
     
     EdgeAttuale = Timer                           
     Impulso = EdgeAttuale - EdgePrecedente        ' Calcola il valore del canale in microsecondi
     EdgePrecedente = EdgeAttuale                  ' pronto per il prossimo edge
     
     if Impulso > 4000 and impulso < 21000  then   ' Cerca lo spazio tra 2 stream  per la sicronizzazione
      sync = 1                                  ' Spazio sincro trovato                        
      contcanale = 0                            ' prossimo canale e' il numero 1
     end if
     
     
      if sync = 1 then                              
      canale(contcanale) = impulso         
      contcanale = contcanale + 1
      
     end if
     
     if contcanale > 8 then sync = 0                
     end sub
    
    
    Sub Radio           '-------------  R A D I O -----------------
    
     
    
    '--Filto Rumore canali radio--
    For CFiltro = 1 To 4
      CentroCan(CFiltro) = CentroCan(CFiltro) * 3
      CentroCan(CFiltro) = CentroCan(CFiltro) + Canale(CFiltro)    		' Filtro passaBasso 
      Centrocan(CFiltro) = CentroCan(CFiltro) >> 2           			' diviso 4
    Next CFiltro
    
    
    ' Assegnazione canali MX16S con Modulo Jeti 2.4 GHZ
    ' -100 + 100  ---> -100 = 1100 microsecondi   0 = 1500 us  +100 = 1900 us
    Gas =  abs(centrocan(1))     ' Gas
    DeSi = abs(centrocan(2))     ' Roll
    AvDi = abs(centrocan(3))     ' Pitch
    Yaw = abs(centrocan(4))      ' Yaw
    Can5 = abs(canale(5))
    Can6 = abs(canale(6))
    Can7 = abs(canale(7))
    Can8 = abs(canale(8))
    
    
    'ARMATURA
    if can5 > 1300 and can5 < 1900 and gas < 1150 and gas > 1000 then flagon = 1 
    
    'DISARMATURA
    if can5 < 1300 then flagon = 0
    if Gas > 2010 then flagon = 0
    
    end Sub
    Quadricottero News
    http://www.facebook.com/Quadricottero

  • #2
    Originariamente inviato da danveal Visualizza il messaggio
    Apro questo thread per verificare quanti sono interessati a scrivere codice in C per la suddette schede al fine di creare un multirotore.
    Coridium Corporation - Technical Support

    Multirotore che io ho creato in BASIC con l'armmite pro.
    Per iniziare posto il mio codice basic "base" per leggere i canali da ricevente ppm seriale.
    Mentre in basic sono presenti le istruzioni ON e INTERRUPT SUB in C le routine interrupt bisogna sciversele.
    Per leggere i canali in sostanza attivo l'interrupt in fail edge e conto il tempo tra un edge ed un altro e lo assegno ai canali.
    Il canale 1 viene determinato dopo aver trovato il gap tra uno stream e l'altro. In questo modo si possono leggere tutti i canali che arrivano dalla Tx, nel codice ne leggo 8 perche uso una tx ad 8 canali.
    Con questo sistema appena un canale viene letto l'interrupt si chiude e in sostanza viene assegnato subito, pronto per essere elaborato prima che si attivi il nuovo interrupt per il canale successivo. Niente attesa che lo stream sia completato.

    codice:
    ' ARMQUAD
    ' Quadricottero basato su ARM
    ' Primo volo: 23/04/10 
    '                              
    ' ARMMITE PRO
    '
    '
    '      ***QUAD***                              *** Y6 ***
    '
    '
    '         M1,CW                >M1,CW pwm1(IO0)----------- >M2,CWpwm2(IO1)
    '           |                  <M4,CCWpwm4(IO5)-----+----- <M5,CCWpwm5(IO14)
    '           |                                       |
    ' M3,CCW----+----M2,CCW                             |
    '           |                                       |
    '           |                                  <M3,CCWpwm3(IO8)
    '         M4,CW                                >M6,CWpwm6 (IO10)
    
    ' INT IO9 eint0   
    ' test batteria AD0
    ' out batt allarm IO11
    
    
    MAIN:
     ON EINT0 fall MisuraRadio                       ' FAIL EDGE interrupt
      
    
    DO                
     
    'Misura esecuzione Loop in microsecondi
    CicloLoop = Timer                           
     ValoreLoop = CicloLoop - CicloLoopPrecedente   
     CicloLoopPrecedente = CicloLoop  
     
    
    Call Radio               
    Call InizESC
    Call Gyro
    Call Acc
    Call Pid
    Call Mixer
    Call Motori
    Call Batteria
     
    LOOP
    codice:
    '--------  MISURARADIO    -------
    Sub MisuraRadio                                   ' Segnale PPM seriale 
     
    dim EdgeAttuale as integer                        
    dim EdgePrecedente as integer
     
     EdgeAttuale = Timer                           
     Impulso = EdgeAttuale - EdgePrecedente        ' Calcola il valore del canale in microsecondi
     EdgePrecedente = EdgeAttuale                  ' pronto per il prossimo edge
     
     if Impulso > 4000 and impulso < 21000  then   ' Cerca lo spazio tra 2 stream  per la sicronizzazione
      sync = 1                                  ' Spazio sincro trovato                        
      contcanale = 0                            ' prossimo canale e' il numero 1
     end if
     
     
      if sync = 1 then                              
      canale(contcanale) = impulso         
      contcanale = contcanale + 1
      
     end if
     
     if contcanale > 8 then sync = 0                
     end sub
    
    
    Sub Radio           '-------------  R A D I O -----------------
    
     
    
    '--Filto Rumore canali radio--
    For CFiltro = 1 To 4
      CentroCan(CFiltro) = CentroCan(CFiltro) * 3
      CentroCan(CFiltro) = CentroCan(CFiltro) + Canale(CFiltro)    		' Filtro passaBasso 
      Centrocan(CFiltro) = CentroCan(CFiltro) >> 2           			' diviso 4
    Next CFiltro
    
    
    ' Assegnazione canali MX16S con Modulo Jeti 2.4 GHZ
    ' -100 + 100  ---> -100 = 1100 microsecondi   0 = 1500 us  +100 = 1900 us
    Gas =  abs(centrocan(1))     ' Gas
    DeSi = abs(centrocan(2))     ' Roll
    AvDi = abs(centrocan(3))     ' Pitch
    Yaw = abs(centrocan(4))      ' Yaw
    Can5 = abs(canale(5))
    Can6 = abs(canale(6))
    Can7 = abs(canale(7))
    Can8 = abs(canale(8))
    
    
    'ARMATURA
    if can5 > 1300 and can5 < 1900 and gas < 1150 and gas > 1000 then flagon = 1 
    
    'DISARMATURA
    if can5 < 1300 then flagon = 0
    if Gas > 2010 then flagon = 0
    
    end Sub
    Sai che io ci sono ;)
    Bello leggibile il codice in basic mi ricorda i vecchi tempi del vic20 e del commodore 64 io ho iniziato da li' ;) Grande BASIC ...
    Saluti
    Roberto
    Redfox74
    Virtual Robotix ( Arducopter DEVTEAM )
    http://www.virtualrobotix.com
    Canale di supporto FB
    https://www.facebook.com/groups/1606596929592397/

    Commenta


    • #3
      Coridium

      Originariamente inviato da danveal Visualizza il messaggio
      Apro questo thread per verificare quanti sono interessati a scrivere codice in C per la suddette schede al fine di creare un multirotore.
      Coridium Corporation - Technical Support

      ...
      Ciao,

      come ti ho scritto in MP, sto per partire anch'io con un quad basato su ARM, da programmare in C.
      Penso che prenderò la SuperPro, ha la memoria Flash che potrebbe tornare utile.

      WorkInProgress per me quindi, quando avrò preso una scheda Coridium vedrò di sviluppare qualcosa, open ovviamente.

      Intanto vado avanti con la meccanica e lo studio.

      Ciao.
      Domenico.

      Commenta


      • #4
        Originariamente inviato da redfox74 Visualizza il messaggio
        Grande BASIC ...
        Quando tu iniziavi, io stavo smettendo, essendo partito con questo:

        Commenta


        • #5
          Io ho iniziato con questo, montava il mitico z80 ed era msx compatibile, ma la marca (spectravideo) era pressoche sconosciuta

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

          Commenta


          • #6


            caro mitico, assieme ad un amico smanettavo in "assembler"...... (codice macchina)

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

            Commenta


            • #7
              quanto mi fate sentire anziano.................



              ma anche no !

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

              Commenta


              • #8
                Vecchietto(i)

                ecco, così ho iniziato io: alternativa al popolarissimo Vic20 e C64.

                Sord m5 (Japan 1982)
                Sord Computer Corporation in Japan produced this Z80A based computer running at 3.58 MHz in 1982. I was equipped with 4 k RAM and 8 K ROM. Supplied with the computer was game pads and a power supply. This is very much a game computer. Underneath a flip top is a socket for game modules. On back are connections for printer, video and rf display, game pads, power, cassette recorder and sound device.

                Clicca sull'immagine per ingrandirla. 

Nome:   rcm_025.gif 
Visite: 1 
Dimensione: 4.9 KB 
ID: 614178

                BasicG (Basic Grafico). Altri tempi.

                Ora si vola con ARM!

                Ciao.
                Domenico.

                Commenta


                • #9
                  immagino quando i "sorgenti" cadevano per terra :-)

                  Originariamente inviato da ElNonino Visualizza il messaggio
                  quanto mi fate sentire anziano.................



                  ma anche no !

                  Commenta


                  • #10
                    Originariamente inviato da elettro Visualizza il messaggio
                    immagino quando i "sorgenti" cadevano per terra :-)
                    Le schede erano numerate oltre colonna 72, ma per riordinarle in fretta tracciavo con un pennarello una riga rossa in diagonale sul pacchetto.

                    Possiamo fare un salto e ritornare al futuro? Vorrei sapere qualcosa riguardo la portabilità del codice da Arduino (ma mi sà che riandiamo OT).

                    Grazie, E.

                    Primum vivere, deinde philosophare.

                    Commenta


                    • #11
                      Originariamente inviato da galaeta Visualizza il messaggio
                      Le schede erano numerate oltre colonna 72, ma per riordinarle in fretta tracciavo con un pennarello una riga rossa in diagonale sul pacchetto.

                      Possiamo fare un salto e ritornare al futuro? Vorrei sapere qualcosa riguardo la portabilità del codice da Arduino (ma mi sà che riandiamo OT).

                      Grazie, E.
                      Ciao Galatea,
                      cosa intendi portabilità del codice di arduino ? Io mi sono studiato un po' l'ambiente in realtà arduino non è nient'altro che un wrapper di codice c++ standard se la tua domanda era come portare il tutto su ARM , bisogna crearsi un wrapper tra le librerie standard del micro e le chiamate standard arduino .. non è un lavoro ciclopico , ma un po' di cose sono sicuramente da fare ... secondo me va' costruito un ambiente di librerie partendo da qualcosa di consolidato , per esempio le APM del progetto Arducopter e poi pian piano si transcodifica il tutto su ARM , dentro il codice di arduino nel compilato trovi la transcodifca tra il linguaggio standard arduino dove il codice si inizializza nel setup e il mani è dentro la funzione loop
                      come vedi alla fine prima di compilare diventa tutto c++ puro e non è molto differente dalla partenza .. sarebbe utile partire pero' magari da un codice per arm già fatto che poggia su gcc che è il compilatore universale che usano tutti ... io mi ero guardato xduino ... ma non era molto completo , ce ne anche un altro di cui ora pero mi sfugge il nome e secondo me se non ricordo male il micro utilizatto è lo stesso di coridium .. ora vedo se trovo qualcosa ..
                      Un saluto
                      Roberto
                      Redfox74
                      Virtual Robotix ( Arducopter DEVTEAM )
                      http://www.virtualrobotix.com
                      Canale di supporto FB
                      https://www.facebook.com/groups/1606596929592397/

                      Commenta


                      • #12
                        Originariamente inviato da redfox74 Visualizza il messaggio
                        Ciao Galatea,
                        cosa intendi portabilità del codice di arduino ? Io mi sono studiato un po' l'ambiente in realtà arduino non è nient'altro che un wrapper di codice c++ standard se la tua domanda era come portare il tutto su ARM , bisogna crearsi un wrapper tra le librerie standard del micro e le chiamate standard arduino .. non è un lavoro ciclopico , ma un po' di cose sono sicuramente da fare ... secondo me va' costruito un ambiente di librerie partendo da qualcosa di consolidato , per esempio le APM del progetto Arducopter e poi pian piano si transcodifica il tutto su ARM , dentro il codice di arduino nel compilato trovi la transcodifca tra il linguaggio standard arduino dove il codice si inizializza nel setup e il mani è dentro la funzione loop
                        come vedi alla fine prima di compilare diventa tutto c++ puro e non è molto differente dalla partenza .. sarebbe utile partire pero' magari da un codice per arm già fatto che poggia su gcc che è il compilatore universale che usano tutti ... io mi ero guardato xduino ... ma non era molto completo , ce ne anche un altro di cui ora pero mi sfugge il nome e secondo me se non ricordo male il micro utilizatto è lo stesso di coridium .. ora vedo se trovo qualcosa ..
                        Un saluto
                        Roberto
                        In verità se si volesse fare il porting basterebbe farlo a livello di DCM e basta.
                        Per tutto il resto come i2c, pwm etc esistono gia istruzioni e liberire coridium adatte allo scopo.
                        L'unico problema e' che da oggi mi chiedo quanto puo essere utile imbarcarsi in questa cosa visto che da ieri e' disponibile una cosa come questa che costa poco piu di 300 euro. pxIMU: Autopilot and IMU
                        E' gia tutto fatto groundstation compresa, ed e' disponibile il codice.
                        Questa secondo me e' superiore ad MK con costo molto inferiore, i vari progetti arduino, e arducopter non avranno mai la potenza necessaria, e il costo e' quasi equivalente.
                        Quadricottero News
                        http://www.facebook.com/Quadricottero

                        Commenta


                        • #13
                          Originariamente inviato da danveal Visualizza il messaggio
                          In verità se si volesse fare il porting basterebbe farlo a livello di DCM e basta.
                          Per tutto il resto come i2c, pwm etc esistono gia istruzioni e liberire coridium adatte allo scopo.
                          L'unico problema e' che da oggi mi chiedo quanto puo essere utile imbarcarsi in questa cosa visto che da ieri e' disponibile una cosa come questa che costa poco piu di 300 euro. pxIMU: Autopilot and IMU
                          E' gia tutto fatto groundstation compresa, ed e' disponibile il codice.
                          Questa secondo me e' superiore ad MK con costo molto inferiore, i vari progetti arduino, e arducopter non avranno mai la potenza necessaria, e il costo e' quasi equivalente.
                          Gia vista ,
                          se leggi bene ... si parla di una pre produzione di 30 schede ... e cmq è un software sperimentale .. quindi un po' c'e' sempre da sbatterci le corna ... il micro è quello che avevamo pensato di usare anche noi ... puo' essere una delle tante nuove piattaforme basate su arm .. ;)
                          Io non mi fascerei la testa anche se loro sono bravi .. ma arduino ha il vantaggio di essere una piattaforma molto piu' alla portata .. quel prodotto di sicuro darà molto fastidio a MK , come anche Arducopter ... diciamo che a livello sperimentale un arducopter su arm esiste già ... non dico altro
                          Saluti
                          Roberto
                          Redfox74
                          Virtual Robotix ( Arducopter DEVTEAM )
                          http://www.virtualrobotix.com
                          Canale di supporto FB
                          https://www.facebook.com/groups/1606596929592397/

                          Commenta


                          • #14
                            !!

                            Originariamente inviato da danveal Visualizza il messaggio
                            In verità se si volesse fare il porting basterebbe farlo a livello di DCM e basta.
                            Per tutto il resto come i2c, pwm etc esistono gia istruzioni e liberire coridium adatte allo scopo.
                            L'unico problema e' che da oggi mi chiedo quanto puo essere utile imbarcarsi in questa cosa visto che da ieri e' disponibile una cosa come questa che costa poco piu di 300 euro. pxIMU: Autopilot and IMU
                            E' gia tutto fatto groundstation compresa, ed e' disponibile il codice.
                            Questa secondo me e' superiore ad MK con costo molto inferiore, i vari progetti arduino, e arducopter non avranno mai la potenza necessaria, e il costo e' quasi equivalente.
                            Notevole !!

                            Sembra piuttosto stabile !! Ben realizzato !!

                            Commenta


                            • #15
                              Continuare?

                              Originariamente inviato da danveal Visualizza il messaggio
                              L'unico problema e' che da oggi mi chiedo quanto puo essere utile imbarcarsi in questa cosa visto che da ieri e' disponibile una cosa come questa che costa poco piu di 300 euro. pxIMU: Autopilot and IMU
                              E' gia tutto fatto groundstation compresa, ed e' disponibile il codice.
                              Ciao danvel,

                              non entro nel merito della qualità del progetto segnalato perché non sono in grado di giudicare.

                              Però il bello di queste cose è che si possono anche fare... Per tutto il resto c'è la carta di credito: si fa prima, funziona meglio (forse...), lo uso subito! Però, vuoi mettere la soddisfazione nel capire perché le cose funzionano?

                              Io vado avanti, in questi due-tre giorni di 'studi' ho imparato il funzionamento di cose che per anni ho comprato e usato. Ora ne so più di prima, non tutto, per me già è una bella cosa.

                              Ciao.
                              Domenico.

                              Commenta

                              Sto operando...
                              X