controllo servomotore AC in velocità e posizionamento

Sezione dedicata a Linuxcnc
Rispondi
andreadm0104
Newbie
Newbie
Messaggi: 36
Iscritto il: mercoledì 28 marzo 2012, 13:35
Località: roma

controllo servomotore AC in velocità e posizionamento

Messaggio da andreadm0104 » martedì 8 dicembre 2015, 19:30

ciao a tutti,
utilizzo linuxcnc da anni con la mia fresatrice a quattro assi con motori stepper, comandandola con la parallela e dei driver basati su tb6600.
Ora mi è stato chiesto un aiuto per realizzare un tornio a due assi con la rotazione mandrino realizzata con un servomotore AC che deve funzionare sia in velocità che in posizionamento (con i comandi M3 e M19).

Per semplicità guardando questo video:

https://www.youtube.com/watch?v=rZdqo7blY-A

ecco le due operazioni che mi occorrono
a 0:40 siamo in tornitura
a 1:52 siamo in posizionamento per effettuare dei fori
poi ce ne sono altre più complesse ma non ne ho bisogno.

il servomotore in questione è questo:
http://www.ebay.it/itm/130mm-1KW-4Nm-25 ... 1574206022

Ora, ho vagato ore in internet ma non sono veramente riuscito a capire proprio gli elementi base del sistema.
C'è qualcuno di voi che mi spiega un attimo una configurazione hardware da cui partire? Non sono nemmeno riuscito a capire se bisogna interporre un controller (tipo schede Mesa) o posso realizzare tutto mediante la parallela...
O mi sapete indicare qualche utente qui sul forum che ha realizzato un tornio CNC con questa funzionalità a cui provare a chiedere?

Grazie
Andrea
Un giorno, da bambino, accostai due ingranaggi tra di loro e li guardai girare... la mia vita non è mai più stata la stessa...

billielliot
Senior
Senior
Messaggi: 1747
Iscritto il: martedì 16 ottobre 2007, 23:23
Località: Trezzo sull'Adda

Re: controllo servomotore AC in velocità e posizionamento

Messaggio da billielliot » martedì 8 dicembre 2015, 20:21

Ciao andreadm0104,

non saprei dari indicazioni sul sistema completo. Per certo escluderei la parallela.

Per quanto ne so, per realizzare quanto ti sei proposto, NON puoi prescindere dall'uso dell'encoder per la gestione della rotazione/posizione del mandrino.

Due conti veloci ipotizzando come sensore della rotazione del mandrino, un encoder da 2500 impulsi-giro (come quello usato dal driver per pilotare il motore).

Il motore arriva al massimo a 2500 giri-minuto. Alla massima velocita' ottieni:

2500 impulsi-giro * 2500 giri-minuto = 6.250.000 impulsi-minuto

6.250.000 impulsi-minuto / 60 (secondi per minuto) = 104.167 impulsi-secondo.

Dovresti leggere gli impulsi che arrivano dall'encoder almeno 4 volte piu' velocemente per ottenere un dato utile e affidabile. Il kernel di Linuxcnc dovrebbe viaggiare a 416.668Hz per interrogare in modo adeguato la porta parallela.

Non sono a conoscenza di hardware (schede madri) abbastanza veloce da permettere a Linuxcnc di gestire una simile richiesta di calcolo.

Se ti orienti sulle schede MESA questi ostacoli non si pongono.

Nel mio conto non ho considerato la lettura in quadratura dell'encoder. Se leggi l'encoder in quadratura aumenti la risoluzione di 4 volte e, ovviamente, gli impulsi generati saranno 4 volte di piu' (104.167 * 4 = 416688 impulsi-secondo) e dovrai leggerli sempre quattro volte piu' velocemente.

In quadratura hai una risoluzione teorica di 360 gradi / 10.000 impulsi-giro = 0.036 gradi (se la meccanica ti assiste). Se non usi la quadratura la risoluzione teorica si riduce a 0.144 gradi (sempre se la meccanica ti assiste).

Ciao :-)

Mauro
Amat victoria curam

Dino
Senior
Senior
Messaggi: 815
Iscritto il: lunedì 13 novembre 2006, 23:08
Località: Dolomiti (BL)
Contatta:

Re: controllo servomotore AC in velocità e posizionamento

Messaggio da Dino » martedì 8 dicembre 2015, 23:11

Ciao,
se riesci a trovare il manuale del driver sarebbe meglio, mi sembra di capire che il driver può essere pilotato sia a treno di impulsi (step-dir/fase A-B/CW-CCW) che in analogico, quindi lo potresti pilotare sia in posizione che velocità, non so però se c'è un modo per passare da un tipo di controllo all'altro senza riprogrammare i parametri interni. Se è possibile potresti comandare il servo con segnale analogico per le normali lavorazioni di tornitura e a treno di impulsi per i posizionamenti.
Come scheda di interfaccia credo sia meglio utilizzare una dedicata tipo le MESA, è comunque possibile con degli accorgimenti utilizzare anche la parallela, con le limitazioni che implica. potresti utilizzare dei pin della parallela per pilotare in posizione ed altri configurati in PWM con un amplificatore e filtro ad-hoc per il comando in analogico, ma secondo me è molto più semplice con una MESA, ad esempio la 5I25 + daughtercard adeguata (credo 7I76 faccia al caso tuo) o 7I76E oppure altre configurazioni in base alle tue esigenze.
Secondo me potresti utilizzare anche per gli assi lineari dei servomotori.
NON più moderatore della sezione EMC ( http://www.linuxcnc.org/ )
Felice utilizzatore di GNU/Linux http://www.gnu.org/ http://www.kernel.org/
Linux Registered User #192043 http://counter.li.org/
Sito internet http://dino.delfavero.it/

andreadm0104
Newbie
Newbie
Messaggi: 36
Iscritto il: mercoledì 28 marzo 2012, 13:35
Località: roma

Re: controllo servomotore AC in velocità e posizionamento

Messaggio da andreadm0104 » mercoledì 9 dicembre 2015, 9:12

innanzitutto grazie per le risposte!

la soluzione che più mi piacerebbe adottare è quelle di utilizzare la parallela, per aggiungere meno complessità hardware al sistema ma nulla esclude di passare alle interfacce della Mesa.

Per individuare quale dei due sistemi adottare vorrei sottolineare il livello di interpolazione che mi serve è molto basso: la maggior parte delle operazioni saranno in tornitura (velocità) o in posizionamento ma senza sincronizzazione con gli assi (posiziono il pezzo e fermo il mandrino e poi muovo l'asse con il secondo mandrino motorizzato per forare, proprio come nel video). Per le filettature, dove serve l'inseguimento tra gli assi, potrei andare anche lentamente. Questo è il motivo della mia affermazione iniziale, ovvero preferire la parallela.

Per fare delle prove - solo dal punto di vista del controllo in velocità - quando mi hanno dato questo incarico del tornio cnc ho preso il mio quarto asse e ho tolto lo stepper e montato un motore in CC e ne regolo la velocità sfruttando la configurazione del mandrino a PWM 0 (scusate ma ora non ho un pc con linuxcnc sotto mano) così da avere in output su un pin della parallela da 0 a 5 volt, poi mi tratto questo segnale e creo un PWM per il motore. Non ci metterei niente a trasformare questi 0-5 volt in 0-10volt per darli in pasto al controller.
Dino, è questo che intendi quando dici
"...ed altri configurati in PWM con un amplificatore e filtro ad-hoc per il comando in analogico..." ?

Poi c'è l'aspetto della gestione step/dir per il posizionamento e della possibilità di alternare le due modalità di comando e per questo allego il link del controller. E' un file pesante e con caratteri cinesi e dropbox non ce la fa ad aprirlo in preview, dovete scaricarlo. Con LibreOffice su Ubuntu non sono riuscito ad aprirlo mentre sempre con LibreOffice ma su Windows si... mistero...

https://www.dropbox.com/s/rxx0vqj0228bd ... m.doc?dl=0

Per quanto attiene invece i servomotori sugli assi in questa prima configurazione li escluderei: la velocità e precisione degli stepper mi è più che sufficiente per il tipo di lavorazioni e dimensioni che la macchina dovrà fare.
Un giorno, da bambino, accostai due ingranaggi tra di loro e li guardai girare... la mia vita non è mai più stata la stessa...

Dino
Senior
Senior
Messaggi: 815
Iscritto il: lunedì 13 novembre 2006, 23:08
Località: Dolomiti (BL)
Contatta:

Re: controllo servomotore AC in velocità e posizionamento

Messaggio da Dino » mercoledì 9 dicembre 2015, 23:35

andreadm0104 ha scritto: Per fare delle prove - solo dal punto di vista del controllo in velocità - quando mi hanno dato questo incarico del tornio cnc ho preso il mio quarto asse e ho tolto lo stepper e montato un motore in CC e ne regolo la velocità sfruttando la configurazione del mandrino a PWM 0 (scusate ma ora non ho un pc con linuxcnc sotto mano) così da avere in output su un pin della parallela da 0 a 5 volt, poi mi tratto questo segnale e creo un PWM per il motore. Non ci metterei niente a trasformare questi 0-5 volt in 0-10volt per darli in pasto al controller.
Dino, è questo che intendi quando dici
"...ed altri configurati in PWM con un amplificatore e filtro ad-hoc per il comando in analogico..." ?
Si è quello che intendevo, non sono riuscito ad aprire il file, ma credo che hai capito cosa bisogna fare.

Ciao
NON più moderatore della sezione EMC ( http://www.linuxcnc.org/ )
Felice utilizzatore di GNU/Linux http://www.gnu.org/ http://www.kernel.org/
Linux Registered User #192043 http://counter.li.org/
Sito internet http://dino.delfavero.it/

Rispondi

Torna a “Linuxcnc”