| |
| | #1 (permalink) Top |
| User Data registr.: 11-06-2007 Residenza: Sansepolcro (Ar)
Messaggi: 1.948
| Progetto Dc ServoDrive per cnc
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 ).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 ) 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 ) che rende l'idea delle dimensioni e la printscreen del software.A presto nuovi aggiornamenti, spero!!! Ultima modifica di marcosinatti : 03 luglio 10 alle ore 01:48 |
| | |
| | #3 (permalink) Top |
| User Data registr.: 11-06-2007 Residenza: Sansepolcro (Ar)
Messaggi: 1.948
|
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 |
| | |
| | #4 (permalink) Top |
| User Data registr.: 23-05-2009 Residenza: Imperiese
Messaggi: 938
|
Interessante, e bravo a Marcosinatti! Peccato che la metà di ciò che hai scritto nel tuo ultimo messaggio, non tanto l'ho capito ![]() 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 , ma se mi faccio prendere la mano provo anche la tua !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 ).Ciao e ancora complimenti |
| | |
| | #5 (permalink) Top |
| User Data registr.: 11-06-2007 Residenza: Sansepolcro (Ar)
Messaggi: 1.948
|
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 |
| | |
| | #6 (permalink) Top |
| User Data registr.: 09-04-2008 Residenza: Brescia
Messaggi: 1.945
|
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 |
| | |
| | #7 (permalink) Top |
| User Data registr.: 11-06-2007 Residenza: Sansepolcro (Ar)
Messaggi: 1.948
|
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ù... Ultima modifica di marcosinatti : 18 agosto 10 alle ore 22:42 |
| | |
| | #8 (permalink) Top |
| User Data registr.: 11-06-2007 Residenza: Sansepolcro (Ar)
Messaggi: 1.948
|
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. |
| | |
| | #10 (permalink) Top |
| User | 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 ... ![]() Un gentilezza per fare dei test mi consigliate dove prendere online ed economicamente un motore ed un encoder ? Grazie davvero, forza Marco !!! |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| Progetto cnc e presentazione. | Alexontherocks | CNC e Stampanti 3D | 10 | 03 aprile 09 17:51 |
| aiuto progetto cnc | pessottino | CNC e Stampanti 3D | 8 | 13 agosto 08 01:49 |
| adesioni progetto cnc | bgvsan | CNC e Stampanti 3D | 29 | 14 gennaio 07 17:06 |