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 03 luglio 10 00:42

Progetto Dc ServoDrive per cnc
 
2 Allegato/i
Finalmente dopo tanto tempo speso dietro a esperimenti vari stà venendo fuori qualcosa...
E' un drive per motori Dc retroazionati con encoder, che permette il pilotaggio step-dir come un tradizionale drive passo passo, può essere installato sulle nostre cnc dando la possibilità, di togliere finalmente le varie risonanze causate dai passo passo e di rendere più fluida e performante la nostra meccanica (forse :lol:).
L'azionamento teoricamente non dovrebbe avere problemi a comandare motori fino a 70-80V con correnti di 10-15A, anche se al momento le prove le ho fatte con tensioni di 50V e massimo 3A, dal momento che non ho disponibile un alimentatore migliore.
Stò sviluppando il software dentro al pic (un DsPic che gira a quasi 120Mhz :o: ) e sul pc per poter parametrizzare il pid di regolazione.
Per ora metto il link ad un video con le prime prove mentre il motore viene pilotato da mach3
YouTube - servo1
Quello sul video era montato per metà sul pcb (la logica) e per metà sulla bradboard (la potenza) ma praticamente è lo stesso schema.
Inoltre allego una foto del drive (versione molto beta :D) che rende l'idea delle dimensioni e la printscreen del software.
A presto nuovi aggiornamenti, spero!!! :P

saviothecnic 05 luglio 10 12:56

Citazione:

Originalmente inviato da marcosinatti (Messaggio 2133843)
A presto nuovi aggiornamenti, spero!!! :P

Ottimo lavoro chiudere l' anello con Ecnoder è una delle cose
che migliora molto le nostre CNC :wink: io ne ho preso uno cinese
ma ancora non ho avuto il tempo di provarlo :(

Curiosità ma alla fine sara un lavoro commerciale o free:o:

Grazie

marcosinatti 05 luglio 10 22:52

Se sarà un lavoro free oppure no non lo so ancora, credo di averci dedicato molto più di un centinaio di ore di lavoro per ora, certamente non sarà un qualcosa di commerciale ma magari se raggiungo risultati soddisfacenti a livello di prestazioni e affidabilità posso pensare di farne qualcuno per riprenderci le spese.
Ho fatto una cassetta di pcb prima di arrivare alla soluzione definitiva, considera che sono partito dall'utilizzo di un pic della serie 18, poi sono passato all'atmel ed infine sono arrivato ai dspic (altra musica).
Per la parte di potenza ho provato varie configurazioni di ponti H fatti con mosfet p e n con pilotaggio a transistor poi sono passato a ponti totalmente N con l'utilizzo di mosdriver.
Ho provato mosdriver della National, della Maxim e della IR, con varie configurazioni di pilotaggio per il gate.
Per molte di queste prove sono stato costretto a ridisegnare i pcb per poter avere risultati affidabili, visto che in questo tipo di circuiti con induttanze e correnti importanti i giri di massa e altri elementi legati alla disposizione dei componenti possono fare la differenza.

Metto un altro video un pò più interessante... YouTube - DcServo3

stepper 06 luglio 10 08:25

Interessante, e bravo a Marcosinatti!
Peccato che la metà di ciò che hai scritto nel tuo ultimo messaggio, non tanto l'ho capito :lol:
Comunque ho appena terminato di fare l'elettronica di Fiser, non avendo grande dimestichezza in elettronica, è già tanto che ci sia riuscito a primo colpo :wink:, ma se mi faccio prendere la mano provo anche la tua :P!
Dimenticavo che devo (ormai è una questione di principio) rifare la Chimera di Danielxan che non so perchè ma non voleva saperne di andare (probabilmente colpa di qualche falsa saldatura o tipo di resistenze :huh:).
Ciao e ancora complimenti

marcosinatti 07 luglio 10 21:47

Ho implementato anche il pilotaggio in quadratura oltre che step-dir, configurabile ovviamente tramite il sw su pc.
E' un ingresso in quadratura "reale" nel senso che controlla tutti i fronti dei canali A e B e incrementa o decrementa la posizione solo se la combinazione è valida, quindi è molto affidabile come pilotaggio.
A cosa serve?
-Alcuni software o controlli cnc hanno come uscita la quadratura
-Per fare un albero elettrico, ammettendo di avere 2 motori che muovono lo stesso asse, si pilota con il pc un motore e il secondo si fa pilotare dall'encoder del primo avendo la certezza che rimarranno sempre sincronizzati.
Metto un video in cui lo comando con un encoder da 500ppr YouTube - DcServo4 Quadrature

AleBS 07 luglio 10 22:47

Io seguo in silenzio tutti questi progressi di ingegneria/fai da te, comunque caro ragazzo permettimi la confidenza ma sei troppo avanti, purtroppo per scelte di lavoro diverse dopo le superiori ho abbandonato l'elettronica applicata e quando vedo queste realizzazioni mi manca il mio "primo amore" ^_^

Complimenti

P.S. approfitto per un saluto a stepper che mi ha salutato in un altro post :wink:

marcosinatti 08 luglio 10 19:31

Grazie AleBS

Finalmente muovo un pò di ferro...:D YouTube - DcServo5

marcosinatti 09 luglio 10 18:43

Inizia a prendere una buona forma, ho aggiunto qualche funzione:
-Ingressi settabili come step-dir o come quadratura, in quadratura controllo propio la sequenza dei segnali per discriminare eventuali disturbi esterni ed in modo da inchiodare in caso di rottura di un canale. La quadratura è utilissima se si monta due motori nelllo stesso asse per tenerli sincronizzati perfettamente.
-Controllo sovracorrente per tempo limite, il tempo si imposta dal sw, quando il motore assorbe troppo per un certo tempo interviene mandando il drive in fault.
-Controllo errore di inseguimento impostabile, se l'errore si discosta troppo manda il drive in fault.
-Implementate le trap routine per errori interni del pic, oscillatore, errore matematico, errore stack o errore di indirizzamento
-Inserito dei parametri aggiuntivi sul pid che normalmente sono esclusi ma possono essere usati con la sezione avanzata del sw, sono le limitazioni di ogni azione di correzione, il bias, correzione diretta proporzionale al comando e correzione derivata del comando. (durante le prove li ho usati ma poi in pratica tengo tutto escluso)
-Aggiunto uscita di allarme in modo che se un motore va in allarme è possibile fermare anche gli altri e la lavorazione (devo ancora modificare il pcb)
-Sul software di parametrizzazione ho aggiunto le indicazioni riguardanti gli errori e gli stati.

Questo un video dove uso un encoder per gli ingressi in quadratura:
YouTube - DcServo6
Qui invece la prova con una discreta massa (la mia futura mill) mossa a 18000mm/m:
http://www.youtube.com/watch?v=rHOORZZi ... re=channel

Mrk89 09 luglio 10 18:51

Si può parlare ancora di "Passi" con questi drivers/motori ? Comunque, errori nel pilotaggio ( i passi persi di una normale cnc con motori stepper ) ?
Complimenti, stai facendo un lavorone!! Magari sapessi programmare anche io con il pacchetto visual...:(

marcosinatti 09 luglio 10 19:26

VB6 è abbastanza semplice, non lo so programmare bene, ma alla fine qualcosa ci tiro fuori.
Una volta entrato nell'ottica della programmazione ad eventi e capito come funzionano le propietà degli oggetti e l'utilizzo delle variabili, usando l'help si riesce ad andare avanti anche se piano piano...
Il duro è stato il pic, praticamente obbligato a programmarlo in C, anche quello l'ho impostato ad eventi, considera che la routine main fa solo la gestione del led, e si occupa di fare il polling della seriale di servizion per rilevare la presenza di caratteri dul buffer.
Il resto lavora tutto ad interrupt, uno sul timer per temporizzare i campionamenti del pid e il resto su interrupt degli ingressi e QEI.
Sul drive rimane il pilotaggio a passi come se fosse uno stepper, ma poi dai passi ogni 300microsecondi viene ricavata la posizione comandata che va ad alimentare il pid insieme all'errore letto (posizione comandata - posizione attuale).
In pratica come fanno tutti i drive brushless commerciali, che di solito chiudono il loop in 250-500 microsecondi.
I passi non si perdono mai, ovviamente se il motore ha sufficiente forza per attuarli e comunque se non riuscisse ad andare in posizione il drive lo può segnalare tramite l'uscita di allarme.

marcosinatti 14 agosto 10 14: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 19: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 19: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 19: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 21: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 18 agosto 10 23: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 18 agosto 10 23: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 18: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 00: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 00: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...

saviothecnic 04 ottobre 10 09:22

Azz 800W complimenti :D
A quanto venderai questi gioiellini:wink:

marcosinatti 04 ottobre 10 22:32

Beh 800w sono l'obbiettivo da raggiungere, teoricamente dovrebbero farcela ma per ora sono arrivato a 100-150w perchè non ho un motore più grande per provarli.

Scj 04 dicembre 10 15:33

a che punto sono le prove?

marcosinatti 05 dicembre 10 12:31

Ho avuto un sacco di impegni quindi non ho dedicato molto tempo ai drive, spero di fare prove più significativa a breve.
C'è un utente di un altro forum che ne stà costruendo 3 per fare dei test in modo da avere risultati non di parte :P.

marcosinatti 18 giugno 11 22:16

E' passato diverso tempo e il drive è andato avanti, ho fatto diverse prove e l'ho montati su una cnc, metto dei link a dei filmati, miei e non, dove si vedono dei motori dc comandati dal drive.
Questi sono filmati della mia cnc
YouTube - ‪Cnc con ServoDc‬‏
YouTube - ‪Cnc con ServoDc 2‬‏
Queste sono prove a banco di un motore da 300w pilotato dal drive
YouTube - ‪Servo Dc - Motore 300W a 60V‬‏
YouTube - ‪Servo Dc - Motore 300W a 60V - Prova Sforzo‬‏
E questo è il filmato della cnc di un amico che monta appunto i motori da 300w con i miei drive
YouTube - ‪Sede cuscinetto 40 mm‬‏

Ovviamente motori di questo genere pretendono cnc di una certa importanza, se montato in un a cnc di latta o compensato si accartoccia tutto :D

Scj 18 giugno 11 22:52

stupendo lavoro.
Mi sembra di capire che il drive è maturo e promosso a pieni voti!

Hai intenzione di farne del commercio?

marcosinatti 18 giugno 11 23:22

Ciao Simone,
pensavo che avevi seguito il post sull'altro forum, li c'è tutto quello che serve alla costruzione, ad esclusione del firmware del pic che per ovvie ragioni non diffondo, in caso posso fornire i pic programmati.
I drive non li commercializzo, posso eventualmente farne qualcuno per chi non è pratico con il saldatore, sempre compatibilmente con il mio poco tempo libero.

Scj 18 giugno 11 23:26

oddio, è da un pò che non seguo i 2 forum di cnc perchè (e non ho capito il motivo) non mi arrivano più gli aggiornamenti delle discussioni a cui sono iscritto.
Metteresti per cortesia qui il link diretto o trovo tutto sul tuo sito?

marcosinatti 18 giugno 11 23:39

Non so se è corretto mettere il link di un altro forum, casomai chiedo ai Moderatori di provvedere a cancellare il messaggio, accettando cortesemente le mie scuse.
Questo è il link Forum cnc italia • Leggi argomento - NEW Servo Drive Dc 100W
La discussione è un pò lunga, ma se sei interessato al drive ti consiglio di scorrerla tutta in quanto ci sono molte informazioni utili.
Potri mettere i files qui, ma sono diversi mega e non ho abbastanza quota sul server del forum.

Scj 19 giugno 11 08:59

sempre messi i link degli altri forum (non modellistici). In fin dei conti qui l'argomento cnc è una sottosezione della sezione elettronica, quindi è trattato molto marginalmente rispetto agli argomenti salienti.
COmunque ringrazio per l'aver pubblicato il tuo lavoro.
Al momento sono fermo causa mancanza di fondi ma valuterò seriamente l' uso dei tuoi drivers quando la meccanica sarà finita. Mi indottrinerò per bene nel frattempo :wink:


Tutti gli orari sono GMT +2. Adesso sono le 03:23.

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/2026