BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   CNC e Stampanti 3D (https://www.baronerosso.it/forum/cnc-e-stampanti-3d/)
-   -   Progetto Dc ServoDrive per cnc (https://www.baronerosso.it/forum/cnc-e-stampanti-3d/179173-progetto-dc-servodrive-per-cnc.html)

marcosinatti 14 agosto 10 15:11

Dopo lunga assenza, oggi sono arrivati i componenti per costruire 6 drive così ne metterò 3 al lavoro sulla nuova cnc che stò costruendo e 3 li testa un amico con dei motori più impegnativi di quelli che ho io a disposizione.
Qua ho messo un articolino, per chi vuole saperne di più Dc Servo Drive - Marco Sinatti
A presto, spero, qualche impressione e fimato...

HappyFly 16 agosto 10 20:16

Il tuo progetto è interessantissimo ...
 
Ti seguo con molto interesse per queste caratteristiche con le quali hai impostato il progetto :

- permette il pilotaggio step-dir come un tradizionale drive passo passo
- è utilissimo il pilotaggio in quadratura

Io ho il problema di volere realizzare un pantografo con un lungo asse x di quasi 2,5 metri ed ovviamente avendo gli assi x ed y completamente supportati devo usare per la x due viti e due motori.

Questo con sistemi open-loop si traduce nel rischio di un intraversamento del ponte sull'asse x se uno dei due sottosistemi motore/vite perde qualche passo.

Inoltre il rischio diventa una certezza se si pilotano i due motori con due canali accoppiati di Mach 3 il quale, per esempio allo start, non è in grado di evitare sfasamenti dei due motori stessi.

Una domanda: se io piloto una vite dell'asse x con un open-loop tradizionale con un passo passo, ci metto un encoder in quadratura e passo il tutto al secondo motore/vite dell'asse x posso evitare di fare tutta la macchina closed-loop e non rischiare intraversamenti dell'asse x ?

Ciao e grazie ;-)

Mauro

saviothecnic 17 agosto 10 20:19

Citazione:

Originalmente inviato da marcosinatti (Messaggio 2181846)
Qua ho messo un articolino, per chi vuole saperne di più Dc Servo Drive - Marco Sinatti
A presto, spero, qualche impressione e fimato...

Azz :o: niente da dire invidia per le tue capacità :wink:
Domanda dato tutta questa fatica per il controllo di gestione.

Come mai non l' hai pompato con più potenza tipo 100V 25A
Tanto il lavoro più difficile era il controllo di gestione la parte finale credo sia stata la più semplice a quel punto l' avrei pompata in modo da essere concorrenziale con i prodotti commerciali che hanno tutti come limite proprio la ponteza in gioco:wink:

Ad esempio io ho preso questo MCDC 506 All Digital DC Servo Drive

Non ho avuto ancora il tempo per giocarci su ma sicuramente un utente come me che vuole andare sul ecvonomico e giocare con i DC aprezerebbe nella scelta un modello piu potente :wink: Curiosità su che costo si aggira questo modello che hai realizzato Grazie

saviothecnic 17 agosto 10 20:26

Citazione:

Originalmente inviato da HappyFly (Messaggio 2183935)
Io ho il problema di volere realizzare un pantografo con un lungo asse x di quasi 2,5 metri ed ovviamente avendo gli assi x ed y completamente supportati devo usare per la x due viti e due motori.Mauro

Ciao non ho capito perche sei obligato ad usare due motori in X ?
Non ne puoi mettere uno grande e accopiare le due viti meccanicamente ?
Cmq il pilotaggio con motori DC rispetto al passo passo ha molti vantaggi anche io sono curioso di provarlo il vantaggio maggiore e che si hanno accellerazioni inimaginabili con i passo passo oltre alla belezza dle Loop Chiuso con Encoder :wink: che nei passo passo hanno solo controller industriali del costo sicuramente non acessibile all' obista come noi :(

Il lavoro qui presentato è ottimo poi fatto da un italiano e amico del forum.
Il fatto di poter pilotare con step e dir poi lo rende compatibile con tutti i controller ottima cosa :wink:
L' unica cosa che mi fa paura come per quello che ho preso io
o anche per i geko e simili e l' incapacita del utente nel regolare
in modo esatto il PID e controllo di retroazione :fiu:

marcosinatti 18 agosto 10 22:34

Il pid non è niente di trascendentale, una volta capito il sistema non è poi così difficile tararlo.
Ci sono dei metodi matematici che sfruttano dei modelli e si basano su rilevamento di dati e calcoli, ma io non li conosco e poi a me piaciono le cose pratiche, quindi utilizzo il metodo "sperimetale"!
Provo a descriverlo , in maniera semplice, basandomi su informazioni raccolte durante lo sviluppo del drive e integrate con quelle derivate mie esperienze.
Cerco di non riempire il post di formule anche perchè non lo saprei fare !!!
Le formule che descrivo sono semplificate ma utili a capire il procedimento.
Magari leggendo questo post non avrete le idee chiare, ma passando qualche ora a fare prove pratiche la cosa diventa abbastanza intuitiva.

Il pid lavora eseguendo campionamenti e correzioni ogni tot tempo, che nel mio drive è di 300nS.
Quindi ogni 300nS analizza la situazione corrente e calcola la correzione da apportare.

Le variabili utilizzate sono:

PosizioneComandata = posizione che viene comandata all'azionamento
Posizione = posizione reale del motore
Errore= Errore instantaneo
dt = tempo di campionamento
Kp = Guadagno proporzionale
Ki = Guadagno Integrale
Kd = Guadagno Derivata

Per prima cosa viene calcolato l'errore instantaneo
Errore= PosizioneComandata - Posizione

Una volta calcolato l'errore procede a calcolare le 3 azioni di correzione:

Proporzionale:
P= Errore x Kp
E' la componente che corregge maggiormente l'errore, l'azione è instantanea, possiamo dire che è la prima operazione di "sgrossatura".
Un Kp basso porta una risposta inadeguata, se troppo alto porta il sistema in pendolazione.

Integrale:
I= I + Errore x dt
Lo dice la parola, lavora per integrazione, infatti è una correzione che tiene conto degli errori precedenti.
L'integrale è utile a correggere l'errore a regime, è poco influente su cambiamenti repentini e tende a rendere più "morbido" e "pastoso" il sistema, rallentadolo un pò.
Un valore basso non permette mai di portarsi a errore prossimo allo 0 durante il funzionamento a regime, ad esempio durante uno spostamento a velocità costante.
Un valore troppo alto produce una elongazione del comando, che all'atto pratico è ben visibile se durante la rotazione a velocità costante andiamo a fermare il motore, noteremo che avrà tendenza a oltrepassare la quota desiderata per poi tornare lentamente indietro, questo perchè l'integrale rimane "carico", facendo un confronto poco adatto, si comporta in maniera simile ad un condensatore.

Derivata:
D=Errore - Errore (CampionamentoPrecedente) x dt
La derivata lavora sulle differenze di errore, quindi si fa sentire quando ci sono grosse variazione.
Un valore basso non porta controindicazioni ma tende a rendere il sistema meno pronto, specialmente in presenza di un forte fattore integrale.
Un valore troppo alto può rendere instabile il sistema durante il funzionamento a regime.
In molti sistemi la derivata non viene utilizzata, a mio parere non gusta.

Al termine le correzioni vengono sommate per determinare l'uscita:
Out= P + I + D

Questo è il pid nudo e crudo poi ci possono essere altre funzioni aggiuntive tipo il bias, il feedforward di primo e secondo ordine, la banda morta, le limitazioni per l'anti windup, etc... ma questi sono parametri spesso non settabili dall'utent.e

La taratura del pid si esegue in linea di massima in questo modo, o per lo meno è quello che faccio io:
-Si porta Ki e Kd a 0
-Facendo prove di movimento si alza Kp fino a portare il sistema in pendolazione
-Un volta "pendolante" si abbassa Kp del 20-30%
-Si inizia ad alzare il Ki fino a che non si notano le elongazioni dopo lo stop della rotazione
-Si ritocca un pò Kp rialzandolo ed eventualmente si riabbassa leggermente Ki per eliminare le elongazioni
-Si alza Kd fino a quando il motore girando a regime non tente a "impuntare"
-Si riabbassa Kd di un 30%

Una volta fatto questo primo setting poi si inizia a fare delle prove con movimenti più o meno veloci e impostando rampe più o meno ripide, osservando il comportamento e apportando correzioni ai guadagni tenendo conto di come ogni fattore va ad influire.
Durante questo processo è importante, secondo me, avere uno strumento che visualizza le curve con le azioni e l'errore in modo da capire come la modifica di un valore va ad influire il comportamento del motore.
Ecco perchè ho voluto curare abbastanza anche questa parte di software.
Una volta presa un pò di pratica, se il carico applicato è abbastanza stabile, si riesce a tarare il pid in 10 minuti.

Spero di non aver annoiato nessuno e di non aver confuso le idee ancora di più...

marcosinatti 19 agosto 10 00:13

Scusate, rileggendo ho visto che non ho messo il fattore K sulle formule di I e D, mentre su P è corretto.
In pratica le formule sono:

Integrale:
I= (I + Errore x dt) x KI

Derivata:
D=(Errore - Errore (CampionamentoPrecedente) x dt) x Kd

In pratica vanno solo moltiplicate per il relativo K.

daniele 1973 19 agosto 10 00:41

daniele
 
dopo questa spiegazione una cosa l'ho capita .............sono ignorante in materia..........cmq scherzi a parti complimenti anche se per me sei su un altro pianeta....

HappyFly 19 agosto 10 19:42

Grazie della delucidazione ...
 
Mi è stata chiarissima, in generale i sistemi a retroazione sono sempre ostili, ma il tuo modo di spiegare mi è piaciuto molto ... anche la parte di tuning, per quanto semplificata, mi piace proprio come è spiegata ...

In maniera molto più semplificata in aeremodellismo si trova questo tipo di problematiche quando si tarano i giroscopi, dove bisogna settare gain e tipo di retroazione ...

Per quanto riguarda la domanda, giustissima, di Savio nel progetto ho in ordine di possibili risoluzioni :

1) cinghia e motore centrale
2) due motori e una cinghia tra loro di "sincronizzazione"
3) se proprio non risolvo mi interessa moltissimo la soluzione encoder sul motore master e motore slave che segue ...

Se Marco alla fine del lavoro vorrà condividere il progetto, magari come giustamente fa Fiser lasciando la realizzazione dell'elettronica open e vendendo il firmware mi prenoto da subito ... tra l'altro sono di Perugia e siamo proprio vicini ... B)

Un gentilezza per fare dei test mi consigliate dove prendere online ed economicamente un motore ed un encoder ?

Grazie davvero, forza Marco !!!

marcosinatti 20 agosto 10 01:16

Per la soluzione al tuo problema io andrei di sicuro su quella meccanica, un motore al centro e cinghia, eviti cose antipatiche come dover fare l'home quando accendi la macchina andando a cercare un sensore per ogni asse per essere sicuro che il ponte non sia fuori allineamento.
Encoder più motore io li avevo presi su ebay, ma al momento non c'è un gran che.
Per quanto riguarda il futuro dei drive non mi sbilancio fino a quando non ho la certezza al 100% del corretto funzionamento, e potrò averla solo quando li avrò provati su questa MiniMill, poco mini...
Grazie per i complimenti...

marcosinatti 04 ottobre 10 01:15

Il progetto stà andando avanti anche se lentamente, qui gli ultimi sviluppi del drive, a presto le prove su motori di taglia maggiore Dc Servo Drive - Marco Sinatti
Qui invece gli sviluppi relativi alla scheda di controllo azionamenti 0-10V
Controllo Posizione Servo - Marco Sinatti
Ho messo i links al sito almeno ci sono le foto e i video a portata di mano...


Tutti gli orari sono GMT +2. Adesso sono le 17:49.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002