MECCANICA e DINTORNI
http://meccanicaedintorni.morpel.it/phpbb/

Electronic lead screw
http://meccanicaedintorni.morpel.it/phpbb/viewtopic.php?f=80&t=11877
Pagina 1 di 6

Autore:  mimoletti [ dom feb 23, 2014 23:26 ]
Oggetto del messaggio:  Electronic lead screw

Spinto dalla voglia di voler personalizzare questo progetto:

http://www.chipmaker.ru/topic/118083/

ed essendo un fans dei microcontrollori della microchip, l'ho riprodotto sul Pic16F876A.
Aggiungendo una funzione che ritengo molto utili: Posso interrompere la filettatura, memorizzando la posizione angolare del mandrino e riprenderla senza perdere la sincronizzazione della vite madre. Il tutto composto da un Pic, un'encoder incrementale da 1800 impulsi a giro, ed un'azionamentcon micro passo e relativo motore passo passo. Al momento dopo averlo simulato con Proteus, lo realizzato e provato al banco:

http://www.youtube.com/watch?v=KoK5JZPVwF8,

a breve sarà installato sul mio tornio.

Autore:  yrag [ lun feb 24, 2014 00:50 ]
Oggetto del messaggio:  Re: Electronic lead screw

Bel progetto, complimenti Massimo.

Autore:  McMax [ lun feb 24, 2014 01:00 ]
Oggetto del messaggio:  Re: Electronic lead screw

bellissimo! ma 1800 passi di encoder sono davvero tanti? come mai hai scelto questa risoluzione?

Autore:  mimoletti [ lun feb 24, 2014 17:53 ]
Oggetto del messaggio:  Re: Electronic lead screw

Essenzialmente per ottenere una risoluzione di un decimo di grado.

Autore:  McMax [ lun feb 24, 2014 20:15 ]
Oggetto del messaggio:  Re: Electronic lead screw

Ma secondo te qual'è la minima risoluzione accettabile per un encoder ? Intendo, che risoluzione minima è richiesta per poter eseguire filettature ?

Autore:  mimoletti [ lun feb 24, 2014 21:34 ]
Oggetto del messaggio:  Re: Electronic lead screw

Il russo da cui ho preso spunto per il progetto mi ha consigliato di non scendere al disotto dei 900 impulsi a giro.

Autore:  mecha [ mar feb 25, 2014 00:12 ]
Oggetto del messaggio:  Re: Electronic lead screw

Molto interessato :mrgreen:
Avevo letto un po in giro ma mi sono arenato perche' la mia conoscenza dei pic non arriva tanto in alto e perche' non sono riuscito a capire come funziona il programma.
Saresti cosi' gentile da illuminarmi.
Mi spiego.
Il programma rimane sempre in ascolto dei segnali dell'encoder e in base a quelli invia gli inpulsi di step al driver o funziona sotto interrup ma sempre nel medesimo modo e cioe' conta l'encoder e in base a quello invia i segnali? ...se devo fare un passo 1mm ho 1800 impulsi encoder e (supponendo una risoluzione del carro di 0.002 x 1mm) ho 500 step ma se faccio un passo 3 ne devo dare 1500 di step, quasi 1 a 1 ... come si puo' gestire questa tempistica cosi' stretta?
A onor del vero su un tornio cnc che abbaimo in ditta e' capitato di dover fare una "filettatura" passo 100 e il carro si muoveva tutto a scatti, il tecnico interpellato ha suggerito di aumentare i giri (anziche calarli come facevamo noi) dando la colpa agli impulsi encoder mandrino troppo lenti che impedivano al cnc di trovare la velocita' costante giusta per il carro. ...Anche il programma del pic cerca una velocita' di spostamento idonea e poi usa i segnali encoder per "tararla di fino"?
Ultima curiosita': ma il disimpegno utensile deve essere comandato dal pic altrimenti come si fa manualmente a seguire l'elettronica?

Mandi Mecha

Autore:  mimoletti [ gio feb 27, 2014 00:38 ]
Oggetto del messaggio:  Re: Electronic lead screw

Essenzialmente ci sono due modi per procedere: Abilitare l'interrupt sul cambio di stato di una delle porte, ed ogni interruzione si incrementa una variabile, oppure come ho fatto si puo utilizzare uno dei timer del microcontrollore per contare il numero di impulsi. Con una routine di polling controllo continuamente il valore del timer0 e incremento una variabile tutte le volte che avviene un cambiamento del valore del timer0, quando il numero degli impulsi e uguale al fattore di divisione, genero un'impulso. Spero di essermi spiegato. Eventualmente chiedi pure.

Autore:  mecha [ gio feb 27, 2014 01:34 ]
Oggetto del messaggio:  Re: Electronic lead screw

Se ho capito bene tu utilizzi come clock per il timer0 il segnale dell'encoder sul mandrino.
Non l'avevo considerato sotto questo aspetto :mrgreen:
Ma quindi, una volta deciso il passo e fatti gli opportuni calcoli fra impulsi encoder per ogni passo-motore-asse-z si potrebbe tarare il timer per chiamare un interrup raggiunto tale valore e far fare il passo al motore.
Una volta impostato il punto di inizio filettatura e settato il timer non devo far altro che dare start e inizia la filettatura.
Quando do l'inversione e disimpegno l'utensile il pic riporta indietro l'asse dei passi che ha eseguito in avanzamento (ovviamente memorizzati durante la lavorazione) fino al punto di inizio filettatura.
Se devo riprendere un filetto devo impostare il punto di inizio filettatura e far prendere al mandrino lo zero encoder per poter contare lo spostamento angolare.
mi sposto inpulsando con il motore ppasso e girando il mandrino mi centro bene nella filettatura.
Il pic ha tenuto in memoria tutti questi valori (encoder e passi) e con opportuni calcoli decide in che posizione angolare far trovare il mandrino nel momento dello start e
rispetto al punto di inizio filettatura.
Ho capito bene?

Grazie
Mecha

Autore:  mimoletti [ sab mar 01, 2014 22:28 ]
Oggetto del messaggio:  Re: Electronic lead screw

Come dice il proverbio tutte le strade portano a Roma, io in questa frase ho preferito non utilizzare gli interrupt. Con la funzione che ho implementato è come se il tornio avesse la frizione. Al momento non sono interessato ad implementare altre funzioni. Lo voglio provare praticamente.

Autore:  mecha [ sab mar 01, 2014 23:57 ]
Oggetto del messaggio:  Re: Electronic lead screw

Scusa la mia insistente curiosita' :mrgreen: ..ma una funzione che controlla continuamente il timer ha meno latenza nel creare gli impulsi per il passopasso? chiedo perche' ho visto che molti usano il polling invece degli interrup (che pensavo fossero piu' pratici, ripeto che non sono un esperto).
Tornando al mio processo, puo' funzionare o gia' in partenza vedi delle criticita'?
Hai un'idea della velocita' di rotazione massima del mandrino in filettatura?
Per interruzione della filettatura pensavo fosse inteso come ripresa di un filetto quando il pezzo viene reinserito sul tornio e quindi si deve riprendere il passo corretto (cosa che nella mia azienda capita per correggere filetti che non si accoppiano bene)
Attendo ansioso gli sviluppi.

Buon lavoro

Mecha

Autore:  mimoletti [ dom mar 02, 2014 00:31 ]
Oggetto del messaggio:  Re: Electronic lead screw

Considera che io non sono e non mi ritengo un'esperto, che intendi per latenza nel creare gli impulsi? L'interrupt è sicuramente più difficile da gestire correttamente che una routine di polling. Riprendere un filetto quando il pezzo viene reinserito sul tornio la vedo dura. Appena avrò terminato il montaggio sul tornio potrò essere più preciso.

Autore:  mecha [ dom mar 02, 2014 00:48 ]
Oggetto del messaggio:  Re: Electronic lead screw

Leggendo un po' ho visto che per passare a una funzione interrup prima si devono salvare certe variabili e poi, all'uscita dalla stessa, si devono ricaricare per far proseguire il programma principale; pensavo che questo processo ritardasse la generazione del passo ,rispetto alla lettura timer0 e immediata generazione del passo che avviene con il polling, e che fosse questo il motivo per il quale non si usano gli interrup.
Riguardo alla complessita' di realizzazione di questi ultimi ...non so, io pensavo di usarli per avere una sicura gestione dell'encoder e il tempo "libero" dedicato all'interfaccia.
Ancora una curiosita': programmi in assembler o cosa?

Mandi Mecha

Autore:  yrag [ dom mar 02, 2014 01:12 ]
Oggetto del messaggio:  Re: Electronic lead screw

Sono ignorante ma mi pare di ricordare che il polling è meno efficiente dell'interrupt.
Il salvataggio e la rilettura dei pochi dati necessari per il ritorno dalla ruotine di servizio dell'interrupt non richiede lo stesso tempo del polling che invece ne spreca parecchio.
Poi dipende da cosa si vuol fare e come lo si intende fare, esistono vari metodi per giungere allo stesso risultato.

Autore:  mimoletti [ dom mar 02, 2014 09:06 ]
Oggetto del messaggio:  Re: Electronic lead screw

Interrupt non ti costringe a verificare continuamente il contenuto del timer0 e quindi il micro si può occupare di altre cose, io programma in Basic con il compilatore PicBasic Pro della microEngineering Labs, Inc., in futuro vorrei usare il compilatore in C della Mikro.

Pagina 1 di 6 Tutti gli orari sono UTC +1 ora
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/