Flynn e Arduino - EnergeticAmbiente.it

annuncio

Comprimi
Ancora nessun annuncio.

Flynn e Arduino

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

  • Flynn e Arduino

    Ciao

    Prima di tutto un saluto a tutti coloro che animano il forum, e un "DAJEEE" a kecco e mac (e collaboratori/amici/appassionati vari) per il loro fantastico lavoro, credo di non essere l'unico che aspetta giorno dopo giorno notizie e aggiornamenti...

    Ma vengo alla domanda

    C'è qualcuno che ha provato o pensa di provare il "Flynn" insieme alla scheda Arduino?

    Partendo da un post di btbbass (http://www.energeticambiente.it/para...#post118835978) ho cercato in rete e il "cosetto" è davvero intrigante (ed economico).

    Chiedo perchè non essendo del "mestiere" se decidessi di provare a fare qualcosina, al di la delle difficoltà tecniche (piu' o meno - forse - superabili) sicuramente mi inchioderei sulle modifiche del codice su Arduino.
    Non vorrei (ne sarei in grado) di fare i "mostri" di kecco e mac, ma solo veder girare qualcosa...

    Per finire, come già proposto, perchè non mettere in "evidenziata" un post che spieghi (per chi volesse fare dei piccoli test) cose come:

    1) scegliere la giusta dimensione dei magneti, bobina, fili ecc. Un po come già scritto su

    Parallel Path: esperimento definitivo sul suo funzionamento

    ma con più esempi...

    Per finire considerate che chi ha scritto fa l'impiegato.... non sparate sul pianista :-)

    Ciao e dajeeeeee

  • #2
    Il grosso problema che ha incontrato kekko nella sua super centralina è la velocità del processore (leggi i suoi ultimi post) e penso che dovrà delegare alcuni compiti del processore ad altri integrati analogici/digitali per allegerire la CPU dai calcoli sopratutto quando il motore va ad alto numero di giri.
    Credo che anche la scheda arduino usi dei processori relativamente lenti e il problema si ripresenterà come per la centralina di Kekko.

    Commenta


    • #3
      Originariamente inviato da triac60 Visualizza il messaggio
      ...Il grosso problema che ha incontrato kekko nella sua super centralina è la velocità del processore (leggi i suoi ultimi post) ......
      Ciao Triac,
      Ho letto e riletto i post , ma come detto "non sono del mestiere"....
      Pensavo di "giocare" con un microFlynn (micro nel senso di piccolo)

      Le caratteristiche di Arduino sono (prese dal sito)
      MicrocontrollerATmega168 Operating Voltage5V Input Voltage (recommended)7-12V Input Voltage (limits)6-20V Digital I/O Pins14 (of which 6 provide PWM output) Analog Input Pins6 DC Current per I/O Pin40 mA DC Current for 3.3V Pin50 mA Flash Memory16 KB (of which 2 KB used by bootloader) SRAM1 KB EEPROM512 bytes Clock Speed16 MHz
      Poi esiste anche un clone "Sanguino" che monta un ATmega644P

      picoPower technology AVR Microcontroller.
      64-Kbyte self-programming Flash Program Memory, 4-Kbyte SRAM, 2-KByte EEPROM, 8 Channel 10-bit A/D-converter. JTAG interface for on-chip-debug. Up to 20 MIPS throughput at 20 MHz. 1.8 - 5.5 Volt Operation.

      Ma qui mi fermo visto che "non so di che parlo, ops scrivo"

      Come scritto, mi piacerebbe solo fare dei test/esperimenti

      Ciao

      Commenta


      • #4
        Salve a tutti! I problemi che ho riscontrato nell'uso di processori sono proprio quelli elencati da triac, e la soluzione sarà quella di fare qualcosa di analogico per alleggerire i calcoli che deve fare il processore.

        Io ho usato un ATmega32, che sarebbe il successore dell'ATmega168 (quello usato su arduino).

        Con un ATmega64 si potrebbe provare, ma credo cambi di poco, il vero problema non è la "capacità" del processore ma la sua velocità, e siccome questi processori lavorano in genere a 16 MHz, sarà difficile andare su con i giri...

        Ci vorrebbe qualcosa di gorsso tipo un 150 MHz, ma facendo così rischiamo di dover costruire una centralina shuttle intorno al motore, e la cosa non è molto pratica...

        Per questo sto cercando di risolvere il problema per via analogica, cercando di semplificare un po' il tutto... Alla fine le cose più semplici sono sempre quelle che hanno funzionato meglio!!

        Saluti kekko!
        La sapienza è figlia dell'esperienza... Leonardo da Vinci

        Commenta


        • #5
          mmmm 150mhz.....
          ma siete sicuri....questa cosa mi ha fatto sempre pensare.....20 mhz sono un botto!!!!!
          Come programmate in C o in assembler???

          Nel motore 8 poli romagna,ho pensato a una ruota fonica con 10 livelli di fori,in pratica con 10 coppie di foto-ricevitori,riesco a controllare l'anticipo......poi con un shift-register regolo i 10 led.....in pratica con 3 pin digitali(clock,dati e strobe)piloto 10 led.....Per regolare il dyuty ho pensato a un normale encoder....parte il segnale di Anticipo-ritardo(uno dei 10 led sulla ruota fonica) la bobina si attiva,dopo N-impulsi dell'encoder(livello di dyuty) la bobina si disattiva......la cosa ricomincia al seguente impulso(ruota fonica,anticipo)
          Quindi il uP deve solo:Accendere uno dei 10 led(per decidere il grado di anticipo) e contare gli impulsi dell'encoder.....Non ci sono calcoli complicati Bastano anche 8mhz.....
          Questa è una prima idea.....


          Dai mac e kekko....cosa state combinando?????Stete tramando qualche cosa!!!

          Ciao
          Framoro...

          Commenta


          • #6
            Ciao gianfranco! E' proprio così che stavo facendo! Ricordi l'encoder con quella miriade di foto a giro?? Servivano proprio a quello, variare la fase, l'avevamo fatto con un fotodiodo ogni grado, ma purtroppo un grado di escursione sul 12 poli è un botto ma proprio tanto, e quindi non avevamo margine di escursione, e appena si superavano X gradi, il motore si sfasava e sboooooom!

            Purtroppo per il duty ti confermo che con 8 MHz non ci fai nulla... Poi nn so se ci riesci magariiiiiiiiiiiiiiiiiiiiiiiii !!!!!!!! Anche a lavoro ho chiesto agli ingegneri e mi hanno detto, che gestendo solo ed esclusivamente il duty, con un 16 MHz, non puoi arrivare sopra i 2 KHz di gestione (parlo di acquisizione segnale, conteggio del tempo, calcolo in %, e uscita finale). Questo perchè il tempo di calcolo diventa più lungo degli impulsi che arrivano dall'encoder.

            Per fare quella cosa che dici di usare un encoder per gestire il duty, stiamo sempre lì, per avere una buona escursione dovresti fare un botto di tacchette, e stiamo da capo a 12

            Cmq continua per la tua strada, perchè magari io sbaglio su qualcosa, se invece tu ci riuscisti sarebbe proprio una svolta!!!!

            saluti kekko e sempre dajeeeeeeeeeeeeeeeeeeeeeeeeeeeee
            La sapienza è figlia dell'esperienza... Leonardo da Vinci

            Commenta


            • #7
              Ciao Gianfranco
              Se stai studiando un encoder con 10 led ti conviene farlo assoluto, in modo da leggere in ogni istante la posizione in gradi del rotore, a quel punto il processore deve solo comparare la cifra binaria (a 10 bit) con una tabella residente in memoria, e attivare le uscite che pilotano il ponte ad H.

              Commenta


              • #8
                Il motore ha bisogno del regolatore di fase e di duty....per quello di fase ho pensato a 10 o 12 o 16 led-ricevitori il primo in linea con il dentino il secondo sfasato di 1 o 2 gradi il terzo 4 o 8 gradi e così via .....a questo punto basta alimentare il gruppo "uno dei tanti" led-ricevitore per avere lo sfasamento desiderato.....poi per il duty ci vuole un encoder assoluto che dica dopo quanti impulsi(dopo il segnale di sfasamento) la bobina si deve spegnere.
                Quindi ....il led(uno dei 10 o 12 0 16 led-fasatura)riceve l'impulso per attivare la bobina,inizio a contare gli impulsi dell'encoder assoluto e dopo tot impulsi(duty)stacco la bobina....
                Sembra semplice e nn ci vogliono calcoli.....se usiamo solo un'encoder bisogna fare un sacco di calcoli,per non parlare del duty.....le operazioni specie le divisioni,fanno perdere un sacco di tempo......bisogna fare le cose semplici.....
                Framoro...

                Commenta


                • #9
                  in pratica triac....dici di usare solo un'encoder........?????mi sfugge qualcosa........ma è possibile che questo motore, sia più difficoltoso di un brushless che ha tre fasi..uffaa
                  Framoro...

                  Commenta


                  • #10
                    Ciao,

                    Visto che siamo (siete ) in tema, in allegato un piccolo prg per la stampa del disco encoder.

                    Fonte:http://www.mindspring.com/~tom2000/Delphi/Codewheel.html

                    File allegati

                    Commenta


                    • #11
                      Originariamente inviato da Gianfranco Visualizza il messaggio
                      Il motore ha bisogno del regolatore di fase e di duty....per quello di fase ho pensato a 10 o 12 o 16 led-ricevitori il primo in linea con il dentino il secondo sfasato di 1 o 2 gradi il terzo 4 o 8 gradi e così via .....a questo punto basta alimentare il gruppo "uno dei tanti" led-ricevitore per avere lo sfasamento desiderato.....poi per il duty ci vuole un encoder assoluto che dica dopo quanti impulsi(dopo il segnale di sfasamento) la bobina si deve spegnere.
                      Quindi ....il led(uno dei 10 o 12 0 16 led-fasatura)riceve l'impulso per attivare la bobina,inizio a contare gli impulsi dell'encoder assoluto e dopo tot impulsi(duty)stacco la bobina....
                      Sembra semplice e nn ci vogliono calcoli.....se usiamo solo un'encoder bisogna fare un sacco di calcoli,per non parlare del duty.....le operazioni specie le divisioni,fanno perdere un sacco di tempo......bisogna fare le cose semplici.....
                      Guarda qui
                      encoder

                      L'encoder assoluto non ti da una semplice sequenza di onde quadre, ma un codice binario che ti indica esattamente l'angolo.
                      Con 8 fototransistor hai 8 bit e quindi puoi spacchettare un angolo giro in 256 parti, con 'soli' 9 fotodiodi in 512, e quindi hai una precisione maggiore del grado.
                      L'unica cosa da fare è tarare il disco ottico con lo zero del rotore.
                      Leggi i 9 bit da nove porte/pin del processore e metti il risultato in una variabile(con un processore RISC sono due cicli di clock), poi la confronti con variabili o costanti preimpostate:

                      ES:

                      ON_SX = 10 'Gradi
                      OFF_SX = 20 'Gradi

                      if angolo = < ON_SX then Attiva_parte_sinistra_ponte_H
                      if angolo = > OFF_SX then disattiva_parte_sinistra_ponte_H
                      ecc..
                      E anche qui sono pochi cicli (specialmente se li scrivi in codice nativo)

                      Spero di essere stato di aiuto

                      PS: Sto facendo anche io una centralina, ma senza processore, e con IC che possono andare a qualche MHz.

                      Commenta


                      • #12
                        Originariamente inviato da Gianfranco Visualizza il messaggio
                        Sembra semplice e nn ci vogliono calcoli.....
                        In bocca al lupoooooooooooooooooooooooooo!

                        ...Io ho fatto esattamente così, per questo ti dico che non è così semplice, nel senso che così come vuoi fare, fai un encoder incrementale e non assoluto, per farlo assoluto devi fare come dice triac!

                        ...Ti accorgerai che avrai bisogno di maggiore risoluzione, e qui cominceranno i guai

                        Ma lungi da me lo scoraggiarti, magari trovi una qualche soluzione a cui io non ho pensatoo!!

                        Sempre dajeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
                        La sapienza è figlia dell'esperienza... Leonardo da Vinci

                        Commenta


                        • #13
                          Grazie triac e kekko....ora studio.

                          Triac....quando ho finito il motore ti vengo a prendere.....tanto abitiamo vicini....
                          ciao
                          Framoro...

                          Commenta


                          • #14
                            Nel tuo modo sembra ancora più semplice.........basta l'encoder

                            Questa notte ho pensato a un sistema

                            >un fotodiodo che rileva il dentino.....inizio e fine......."pieno"
                            poi basta il solito encoder....A singolo bit....che ti dice quanto il rotore si sposta da inizio dentino e fine dentino......basta contare il numero di impulsi e regoli l'anticipo e duty.....In pratica bastano due segnali.....diodo-fotodiodo e encoder(a un bit)......
                            Si potrebbe fare l'encoder con due bit....uno 1000 passi "poi si calcolano" e l'altro con il numero di dentini del rotore.....
                            Framoro...

                            Commenta


                            • #15
                              Domanda se noi programmiamo bene il pic......il sistema riesce a leggere il numero di impulsi dell'encoder......a 10000 giri?????Non è per caso che noi quando leggiamo il dato e facciamo la verifica del dato,nn riusciamo a modificare lo stato dell'uscita in tempo??
                              Se facciamo operazioni complicate(moltiplicazioni o divisioni) sicuramente non riusciamo.....poi bisogna programmare in assembler ...e non affidarsi a programmatori ad alto livello ....tipo C o peggio besic...Nel tuo modo triak basta fare solo una comparazione.....beh anche nel mio modo
                              Framoro...

                              Commenta


                              • #16
                                Originariamente inviato da Gianfranco Visualizza il messaggio
                                ...Questa notte ho pensato a un sistema
                                Allora non sono l'unico che a volte non ci dorme

                                @Kecco (e tutti gli atri):
                                1) secondo la tua esperienza, che risoluzione dovrebbe avere un encoder? (in gradi e/o passi) per avere un buon controllo del motore?
                                Immagino che sia anche in funzione della geometria del motore, ma lo chiedo per avere un'idea di massima

                                2) Ho visto sempre che si scrive di grandi velocita in giri al minuto, la domanda da (super)profano è.... Perchè??? A velocità piu' umane non si entra in coppia? Non rende? ecc ecc

                                Grazie

                                Commenta


                                • #17
                                  Originariamente inviato da Halfblack Visualizza il messaggio
                                  Allora non sono l'unico che a volte non ci dorme

                                  @Kecco (e tutti gli atri):
                                  1) secondo la tua esperienza, che risoluzione dovrebbe avere un encoder? (in gradi e/o passi) per avere un buon controllo del motore?
                                  Immagino che sia anche in funzione della geometria del motore, ma lo chiedo per avere un'idea di massima

                                  2) Ho visto sempre che si scrive di grandi velocita in giri al minuto, la domanda da (super)profano è.... Perchè??? A velocità piu' umane non si entra in coppia? Non rende? ecc ecc

                                  Grazie
                                  il discorso encoder con alta risoluzione, serve per capire esattamente sto motore a quanto e come deve girare , il problema è che noi non lo sappiamo, per quello ci serve una centralina regolabile in anticipo ritardo duty ecc

                                  se sapevamo, data la geometria del motore, a quanti giri coppia volt A doveva girare, la centralina si fa in 2 ore

                                  abbiamo visto che un decimo di grado con il 12 poli già è tanto..per fare delle regolazioni buone servirebbe la metà del decimo di grado..

                                  quando al motore dai una fase fissa(anticipo) un duty fisso(50%) hai delle prestazioni, ma poi vedi che spostando di pochissimo l'anticipo cambia tutto drasticamente, consumo, giri, rendimento...per non parlare se poi quel duty lo porti al 60%, di conseguenza deve ricambiare l'anticipo e i V e A che gli dai..

                                  ecco perchè ci serve una centralina che possa regolare in tempo reale tutti questi valori, solo così potremo capire i punti di lavoro ideali di queso motore e fare una curva di rendimento..

                                  Commenta


                                  • #18
                                    Potrebbero essere utili ?
                                    PC/104 & PC/104 Plus Single Board Computers | CoreModule | Ampro Computers, Inc.
                                    soprattutto il CoreModule 420 dovrebbe essere un modulo a basso costo.....

                                    Commenta


                                    • #19
                                      Mi sembra che state descrivendo l'encoder della haidenem.. ( non so se si scrive cosi)
                                      encoder assoluti con risoluzione 18.000 e 24.000 tacche ma costano un occhio.. Vengono usati sulle macchine a controllo numerico sono molto precisi.. Mi riferisco sempre ad encoder radiali che gestiscono il motore n. dei giri e velocità.. simili alla tachimetrica

                                      Commenta


                                      • #20
                                        Originariamente inviato da Meccatronico1 Visualizza il messaggio
                                        Mi sembra che state descrivendo l'encoder della haidenem.. ( non so se si scrive cosi)
                                        encoder assoluti con risoluzione 18.000 e 24.000 tacche ma costano un occhio.. Vengono usati sulle macchine a controllo numerico sono molto precisi.. Mi riferisco sempre ad encoder radiali che gestiscono il motore n. dei giri e velocità.. simili alla tachimetrica
                                        Te lo immagini un motore che costa 100€ con un encoder da 1000€ e una centralina da 500€.
                                        Se riesco più tardi invio uno schema di massima per allegerire la CPU.

                                        Commenta


                                        • #21
                                          Originariamente inviato da Gianfranco Visualizza il messaggio
                                          Nel tuo modo sembra ancora più semplice.........basta l'encoder

                                          Questa notte ho pensato a un sistema

                                          >un fotodiodo che rileva il dentino.....inizio e fine......."pieno"
                                          poi basta il solito encoder....A singolo bit....che ti dice quanto il rotore si sposta da inizio dentino e fine dentino......basta contare il numero di impulsi e regoli l'anticipo e duty.....In pratica bastano due segnali.....diodo-fotodiodo e encoder(a un bit)......
                                          YES
                                          Questa è una piccola parte dello schema che NON fa uso del processore.
                                          Il 4020 conteggia gli impulsi dell'encoder (sull'ingresso di clock) e la forcella ottica collegata all'ingresso di reset fa partire(o resetta) il conteggio quando rileva il 'dentino' o Polo del rotore.
                                          Il comparatore 688 confronta la cifra binaria ( o angolo percorso dal rotore) e se è uguale alla cifra impostata nel dip-switch la sua uscita andrà bassa ( logica negata).
                                          Nello schema completo che ho disegnato di 688 ce ne sono 4, il primo per lo start della parte SX del ponte e il secondo per lo stop, il terzo per lo start della parte destra del ponte e il quarto per lo stop della parte destra.
                                          Il circuito elettronico è già testato ed è OK( non ci sono problemi neanche a 1 MHz), mi manca solo il motore( in allestimento).
                                          File allegati

                                          Commenta


                                          • #22
                                            domanda......oltre a regolare il duty e l'anticipo.....come possiamo regolare la velocità del motore???basta variare la tensione ???opp variando duty e anticipo?? Ieri sera si parlava prorpio di questo......la velocità.
                                            E fare una retroazione con pll ??

                                            triac...secondo te....che encoder ci vuole per un 8 poli????a quanti passi???
                                            Ho un encoder rimediato da un macchna a controllo numerico....però nn conosco i passi...... mi sa che facio un circuitino con il pic per misurare il numero dei passi......
                                            Framoro...

                                            Commenta


                                            • #23
                                              Poi posto la foto dell'encoder.
                                              Triac......quando il motore è pronto, sarai il benvenuto per sperimentare la tua centralina......
                                              Framoro...

                                              Commenta


                                              • #24
                                                Con la tacchimetrica imposti la velocità, decidi quante tacche al secondo, invi il segnale all'inverter o modulo assi.. gli encoder ce ne sono da 1024 .. impulsi o tacche i più comuni.. poi abbiamo quelli più sosffisticati da 18.000 e 24.000 impulsi o tacche .. tutte serigrafate radialmente su un dischetto di cristallo..
                                                più tacche riesci a fare più precisa sarà la gestione, ancora più il dischetto è grande più tacche riesci a fare, nei 360 gradi del dischetto puoi stabilire un punto 0. Pero sono convinto che si sfora il badget.. come diceva triac

                                                Commenta


                                                • #25
                                                  modello del mio encoder....
                                                  marca Eltra

                                                  Mod. EL40A50075L6S3PR.086
                                                  Framoro...

                                                  Commenta


                                                  • #26
                                                    Dovrebbe essere questo

                                                    ELTRA S.p.A.

                                                    Max 6000rpm hai hai hai
                                                    Framoro...

                                                    Commenta


                                                    • #27
                                                      Originariamente inviato da Gianfranco Visualizza il messaggio
                                                      domanda......oltre a regolare il duty e l'anticipo.....come possiamo regolare la velocità del motore???basta variare la tensione ???opp variando duty e anticipo?? Ieri sera si parlava prorpio di questo......la velocità.
                                                      E fare una retroazione con pll ??

                                                      triac...secondo te....che encoder ci vuole per un 8 poli????a quanti passi???
                                                      Ho un encoder rimediato da un macchna a controllo numerico....però nn conosco i passi...... mi sa che facio un circuitino con il pic per misurare il numero dei passi......
                                                      Se fai il motore come quello di Mac, la velocità la puoi variare in due modi o forse più,il primo (come fa mac) variando la tensione col Variac, il secondo ovviamente variando il duty (la strada che sta percorrendo Kekko).
                                                      Per la risoluzione dell'encoder (impulsi a giro) Mac dice che basta un decimo di grado per cambiare notevolmente le cose, e se così fosse confermato siamo nei guai fino al collo.
                                                      Un decimo di grado significa 3600 impulsi a giro x 10.000 giri al minuto siamo a frequenze stratosferiche e i processori da hobbista(PIC POC PUC) sono assolutamente insufficenti, credo che per fare qualche calcolo decente tra un impulso e l'altro a 36.000.000 Hz (36 MHz) ci vuole un processore da PC di ultima generazione.
                                                      NIET!!!!

                                                      L'unica soluzione che vedo io è quella di di fare una centralina senza processore e fare tutto con IC digitali veloci.
                                                      Forse il circuito sarà più complesso ma non bisogna scrivere una riga di codice.

                                                      Commenta


                                                      • #28
                                                        Originariamente inviato da triac60 Visualizza il messaggio
                                                        Se fai il motore come quello di Mac, la velocità la puoi variare in due modi o forse più,il primo (come fa mac) variando la tensione col Variac, il secondo ovviamente variando il duty (la strada che sta percorrendo Kekko).
                                                        Per la risoluzione dell'encoder (impulsi a giro) Mac dice che basta un decimo di grado per cambiare notevolmente le cose, e se così fosse confermato siamo nei guai fino al collo.
                                                        Un decimo di grado significa 3600 impulsi a giro x 10.000 giri al minuto siamo a frequenze stratosferiche e i processori da hobbista(PIC POC PUC) sono assolutamente insufficenti, credo che per fare qualche calcolo decente tra un impulso e l'altro a 36.000.000 Hz (36 MHz) ci vuole un processore da PC di ultima generazione.
                                                        NIET!!!!

                                                        L'unica soluzione che vedo io è quella di di fare una centralina senza processore e fare tutto con IC digitali veloci.
                                                        Forse il circuito sarà più complesso ma non bisogna scrivere una riga di codice.
                                                        raga..per fare una regolazione decente.. il decimo di grado è in minimo minimo! che diametro avete di rotore? quanto è lungo il polo in mm? giusto per fare due calcoli di quanto è un decimo di grado.. ma già vi dico che è un botto

                                                        devi vedere con l'anticipo che succede.. basta un piccolissimo spostamento e succede l'impossibile..ragazzi la strada non è facile.. ma la vostra creatività e la vostra volontà vi darà grande soddisfazione..e mi raccomando non mollate mai..

                                                        dajeeeeeeeee

                                                        Commenta


                                                        • #29
                                                          diametro rotore: 210 mm
                                                          lunghezza polo: 32.9 mm

                                                          -D-

                                                          Commenta


                                                          • #30
                                                            sono praticamente sul diametro 2mm ogni grado.. due decimi di mm per il decimo di grado..mazza che padella, ci mandate avanti un frantoio

                                                            Commenta

                                                            Attendi un attimo...
                                                            X