380 likes | 464 Views
U. TorVergata. REALIZZAZIONE E CONTROLLO DI UNA STAMPANTE 3D. RELATORE: Ing. Daniele Carnevale. CANDIDATO: Danilo Diaferia. (1) Introduzione. Pag. 1/28. La stampante 3D La stampante 3D è un robot capace di stampare oggetti tridimensionali. I prototipi
E N D
U TorVergata REALIZZAZIONE E CONTROLLO DI UNA STAMPANTE 3D RELATORE: Ing. Daniele Carnevale CANDIDATO: Danilo Diaferia
(1) Introduzione Pag. 1/28 La stampante 3D La stampante 3D è un robot capace di stampare oggetti tridimensionali. I prototipi stampante Rep Rap (figura 1) Stampante Galileo Obiettivo: Realizzare un robot versatile, capace di cambiare funzionalità in base all’end effector. Ingombranti e costose. Figura 1
(1) Struttura portante Pag. 2/28 Il robot realizzato Il robot realizzato è un manipolatore a tre gradi di libertà, in cui tutte le coppie sonoprismatiche. La struttura è composta da Piano di lavoro Figura 1
(1) Struttura portante Pag. 2/28 Il robot realizzato Il robot realizzato è un manipolatore a tre gradi di libertà, in cui tutte le coppie sonoprismatiche. La struttura è composta da Piano di lavoro Tre coppie prismatiche, movimenti x,y,z x 4 5 y 2 7 3 z y 6 1 z x y Figura 1
(1) Coppie prismatiche Pag. 3/28 Nomenclatura coppia prismatica La coppia prismatica è composta da due o piu membri, che realizzano un modo relativo puramente traslazionale Realizzazione membri 1,2 aste in alluminio a profilo circolare membro 3, in plexiglass, presenta due fori facile da realizzare, moto traslazionale 3 Rn Rn Rn 1 Rn 2 traslazione del carrello (Figura 2)
(1) Coppie prismatiche Pag. 4/28 X Azionamento elettrico Al fine muovere elettronicamente la coppia sono necessari: motore, cinghia e puleggia. Il funzionamento Rotazione albero motore -> traslazione della cinghia -> traslazione del carrello soli-dale alla cinghia. 2 Ruota dentata Puleggia Motore 1 Cinghia Carrello (Figura 3)
(1) Il robot realizzato Pag. 5/28 (Figura 4)
(2) Hardware Hardware
(2) Azionamento elettrico Pag. 6/28 Scheda elettrica dedicata pilotaggio motori gestione dei segnali di controllo (Figura 5)
(2) Azionamento elettrico Pag. 7/28 Il ponte H Azionamento di un motore tramite segnali digitali: enable -> abilitazione ponte In1,In2 -> gestione verso rotazione Inverter Risparmio segnali microcontrollore. Stepper Motore DC step.h (Figura 6)
(2) Motori passo passo Pag. 8/28 • Rotore • due ruote dentate di polarità opposta • corrispondenza dente-valle • Statore • quattro poli elettromagnetici • collegamento in serie di poli opposti -> 2 avvolgimenti all’esterno (A,B) (Figura 7)
(2) Motori passo passo Pag. 9/28 Rotazione Ogni volta che si alimenta un polo elettromagnetico il dente più vicino al polo viene attirato generando una rotazione, nel nostro caso 1.8 [gradi]. Per ottenere la rotazione basta eccitare i poli magnetici in: Ordine crescente -> verso orario Ordine decrescente -> verso antiorario Sequenza di rotazioneLa sequenza in cui devono essere polarizzati i due avvolgimenti (A e B) esterni è: A-B-A*-B* senso orario B*-A*-B-A senso antiorario Controllo stepper A B A*B* (Figura 9)
(2) Motore DC Pag. 10/28 Rotazione Ve>0, rotazione oraria Ve<0, rotazione antioraria Sistema a ciclo chiuso con controllore proporzionale di tipo 1 Motore 1s Ve w θ (Figura 10)
(3) Controllo Controllo
(3) Controllo Pag. 11/28 • Controllo • due stepper • un motore DC • Obiettivo • Realizzare un controllo che assicuri: • precisione nel raggiungimento della posizione desiderata • astatismo ai disturbi
(3) Esecuzione di un passo Pag. 12/28 Esecuzione di un passo Questa funzione di occupa di alimentare correttamente gli avvolgimenti dello stepper al fine di eseguire un singolo passo. 1. void passo1(String verso){ 2. if (verso=="avanti") polo1++; 3. if (verso=="indietro") polo1--; 4. if (avvolgimento1==4) polo1=0; 5. if (avvolgimento1==-1) polo1=3; 6. 7. if (avvolgimento1==0){ 8. digitalWrite(In12m1,HIGH); //abilito prima avvolgimento in fase 9. digitalWrite(Enable1A,HIGH);} . .
(3) Esecuzione di un passo Pag. 12/28 Esecuzione di un passo Questa funzione di occupa di alimentare correttamente gli avvolgimenti dello stepper al fine di eseguire un singolo passo. 1. void passo1(String verso){ 2. if (verso=="avanti") polo1++; 3. if (verso=="indietro") polo1--; 4. if (avvolgimento1==4) polo1=0; 5. if (avvolgimento1==-1) polo1=3; 6. 7. if (avvolgimento1==0){ 8. digitalWrite(In12m1,HIGH); //abilito prima avvolgimento in fase 9. digitalWrite(Enable1A,HIGH);} . . Nella prima parte si decide quale dei quattro poli magnetici deve essere eccitato al fine di ottenere la rotazione nel verso desiderato. La variablie globale polo1=0,1,2,3 ricorda l'ultimo polo magnetico eccitato consentendo di sceglie il successivo.
(3) Esecuzione di un passo Pag. 12/28 Esecuzione di un passo Questa funzione di occupa di alimentare correttamente gli avvolgimenti dello stepper al fine di eseguire un singolo passo. Nella seconda parte invece, in base al polo magnetico da eccitare si abilita effettivamente il ponte h corrispettivo, indicando la polarizzazione della bobina. 1. void passo1(String verso){ 2. if (verso=="avanti") polo1++; 3. if (verso=="indietro") polo1--; 4. if (avvolgimento1==4) polo1=0; 5. if (avvolgimento1==-1) polo1=3; 6. 7. if (avvolgimento1==0){ 8. digitalWrite(In12m1,HIGH); //abilito prima avvolgimento in fase 9. digitalWrite(Enable1A,HIGH);} . . Gestione ritardo: Al termine della funzione bisognerebbe effettuare un ritardo di qualche ms per consentire al motore di effettuare il passo, ma tale operazione viene svolta successivamente in modo unico per tutti i motori.
(3) Controllo Stepper Pag. 13/28 • RitardoIl ritardo è unico per tutti i motori evitando variazioni della velocità. • Funzione ritardo • Il ritardo viene controllato con millis() lasciando libera la loop() di controllare il motore DC. E=npassi - npassi0 E>0, npassi0++, fare un singolo passo avanti E<0, npassi0--, fare un singolo passo indietro ritardo
(3) Controllo proporzionale DC Pag. 14/28 • Il controllo: • e > 0 : impostare velocità positiva, • e < 0: impostare velocità negativa, • e = 0: la velocità è nulla, posizione desiderata raggiunta. e= nencoder – nencoder0Pos; u = Kp*e; Anti Dead Zone: E’ il minimo valore di tensione (o meglio duty cycle) che bisogna applicare al motore per vincere l'attrito statico e consentire il moto. u = abs(u)+Dead Zone Control dead zone: Raggiunta la posizione desiderata a causa di disturbi che simulano un errore si continua ad alimentare il motore. Per ovviare a questo problema se (|e| < ControlDeadzone If (|e| < ControlDeadzone) u = 0;
(3) Controllo proporzionale DC Pag. 14/28 e= nencoder – nencoder0Pos; u = Kp*e; Anti Dead Zone: E’ il minimo valore di tensione (o meglio duty cycle) che bisogna applicare al motore per vincere l'attrito statico e consentire il moto. Attrito tra rotore e statore: (Eq 1) u = abs(u)+Dead Zone Control dead zone: Raggiunta la posizione desiderata a causa di disturbi che simulano un errore si continua ad alimentare il motore. Per ovviare a questo problema se (|e| < ControlDeadzone If (|e| < ControlDeadzone) u = 0;
(3) Controllo PID Pag. 15/28 Perché usare un controllore PID: Il PID può essere impiegato anche se non si conosce la funzione di trasferimento del processo. Azioni del PID: Il PID si basa su tre azioni: proporzionale, integrale e derivativa. Risultati: Il controllo ottenuto con un PID rispetto al proporzionale è: sperimentalmente più preciso (piccoli spostamenti, sovraelongazione ridotta) astatico ai disturbicostanti tra C(s) e P(s) errore nullo a regime permanente per ingressi a rampa (Figura 11)
(3) Sovraelongazione Pag. 16/28 Azione derivata: Azione di compensazione dell’errore, riduzione sovraelongazione intorno alla posizione finale. Mφ aumenta S = f(ξ) = sin( ψ)=f(M φ) Approssimato (rete anticipatrice) ψ sin(ψ)=ξ Decadimento sovraelongazione S (Figura 15)
(3) Integrale Pag. 17/28 Azione integrale: Astatismo del sistema a ciclo chiuso a disturbi costanti tra C(s) e P(s), grazie al polo in s=0 di C(s) Sistema a ciclo chiuso di tipo 2
(3) Realizzazione PID Pag. 18/28 Il controllore a tempo discreto PID(z) si ottiene con il metodo indiretto: (Eq 9) (Eq 11) Il controllore non realizzabile perche C(s) non è una funzione propria. (Eq 10) Approssimazione con un metodo che preservi la stabilità, ad esempio Tustin (Eq 12) Antitrasformata: Il controllore PID(k) è conforme al linguaggio dell’Arduino.
(3) Cinematica del robot Pag. 19/28 raggiungere una posizione (x,y,z) z Cinematica inversa Passo traslazione/passo motore Controllo 1 determinazione delle variabili di giunto 2 determinazione dei passi/passi encoder 3 (Figura 14) raggiungimento dei passi/passi encoder
(3) Passo di traslazione Pag. 20/28 Precisione motori passo passo: θs=1.8 [gradi]=cost, d=8mm -> ∆z =d/2*θs = 0.1265 ≈ 1/8 [mm/passo] ∆x = d/2 *∆θ d/2 ∆σ Ruota dentata (Figura 13)
(4) Stampa Stampa
(4) Stampa Pag. 21/28 • Obiettivo • Per valutare l’affidabilità della struttura meccanica realizzata e la bontà del controllo software si creano delle funzioni di stampa che avvicinano il robot ai possibili impieghi di: • stampante 3D • fresa automatica. Test affidabilità struttura meccanica realizzata Funzioni di stampa Bontà del controllo software
(4) Stampa cerchio Pag. 22/28 Perché il cerchio: Complicato per un robot cartesiano (movimenti lineari). Coordinate polari: La funzione proposta si basa sull'uso delle coordinante polari, incrementando l'angolo theta di Delta_theta per ogni iterazione. X=r*cos(theta);Y=r*cos(theta); theta+=Delta_theta controllo
(4) Stampa cerchio Pag. 23/28 Test funzione Asse xy: motore DC e stepper, linea frastagliata Asse xz: stepper e stepper, linea omogenea y z x x ∆ѳ=3 mm ∆ѳ=1 mm (Figura 16) (Figura 15)
(4) Stampa testo Pag. 24/28 Obiettivo: Si vuole stampare un immagine di testo ovvero un immagine bicolore ove il bianco rappresenta zone vuote e il colore rappresenta il testo da stampare. Soluzione preparazione dati conversione pixel posizioni e stampa
(4) Stampa testo Pag. 25/28 Preparazione dati: Immagine JPG Pixel p1,p2 per ogni linea di ogni colonna p1 p2 File con sequenza di pixel p1, p2 Trasformazione file in vettore Vettore di pixel per arduino (Figura 16)
(4) Stampa testo Pag. 25/28 Preparazione dati: Immagine JPG Pixel p1,p2 per ogni linea di ogni colonna File con sequenza di pixel p1, p2 Trasformazione file in vettore Vettore di pixel per arduino (Figura 16)
(4) Stampa testo Pag. 26/28 Obiettivo Si vuole stampare un immagine di testo ovvero un immagine bicolore ove il bianco rappresenta zone vuote e il colore rappresenta il testo da stampare. Soluzione preparazione dati conversione pixel-posizioni e stampa Raggiungere la posizione p1=f(p1) Abbassare l’effettore Tracciamento linea Raggiungere la posizione p2=f(p2) Alzare l’effettore
(4) Stampa testo Pag. 27/28 Obiettivo Si vuole stampare un immagine di testo ovvero un immagine bicolore ove il bianco rappresenta zone vuote e il colore rappresenta il testo da stampare. Soluzione preparazione dati conversione pixel-posizioni e stampa Risultato ottenuto (Figura 17)
(5) Conclusioni Pag. 28/28 Conclusioni: Realizzazione della struttura meccanica e dell’azionamento elettrico Studio cinematica del robot Sistema di controllo per 2 motori passo passo e per un motore DC (P,PID) Software per riconoscimento e stampa di immagini di testo 2D