Scaricare la presentazione
1
REALIZZAZIONE E CONTROLLO DI UNA STAMPANTE 3D
TorVergata U REALIZZAZIONE E CONTROLLO DI UNA STAMPANTE 3D RELATORE: Ing. Daniele Carnevale CANDIDATO: Danilo Diaferia
2
(1) Introduzione La stampante 3D I prototipi Obiettivo: Pag. 1/28
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
3
(1) Struttura portante Il robot realizzato La struttura è composta da
Pag. 2/28 Il robot realizzato Il robot realizzato è un manipolatore a tre gradi di libertà, in cui tutte le coppie sono prismatiche. La struttura è composta da Piano di lavoro Figura 1
4
(1) Struttura portante x 4 5 y 2 7 3 z y 6 1 z x y Il robot realizzato
Pag. 2/28 Il robot realizzato Il robot realizzato è un manipolatore a tre gradi di libertà, in cui tutte le coppie sono prismatiche. 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
5
(1) Coppie prismatiche Nomenclatura coppia prismatica Realizzazione
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 2 1 3 Rn (Figura 2) traslazione del carrello
6
(1) Coppie prismatiche Azionamento elettrico Il funzionamento
Pag. 4/28 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. Puleggia Ruota dentata Motore 1 2 Carrello X Cinghia (Figura 3)
7
(1) Il robot realizzato Pag. 5/28 (Figura 4)
8
(2) Hardware Hardware
9
(2) Azionamento elettrico
Pag. 6/28 Scheda elettrica dedicata pilotaggio motori gestione dei segnali di controllo (Figura 5)
10
(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)
11
(2) Motori passo passo Rotore Statore Pag. 8/28
(Figura 7) 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)
12
(2) Motori passo passo Rotazione
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 rotazione La 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)
13
(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 1 s Ve w θ (Figura 10) Tipo\u u(t)=c u(t)=t u(t)=t²/2 E0≠0 infinito 1 nullo E1≠0 Infinito 2 E2≠0
14
(3) Controllo Controllo
15
(3) Controllo Controllo Obiettivo Pag. 11/28 due stepper un motore DC
Realizzare un controllo che assicuri: precisione nel raggiungimento della posizione desiderata astatismo ai disturbi
16
(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);} .
17
(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.
18
(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.
19
(3) Controllo Stepper Pag. 13/28 Ritardo Il 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>0, npassi0++, fare un singolo passo avanti E<0, npassi0--, fare un singolo passo indietro E= npassi - npassi0 ritardo
20
(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;
21
(3) Controllo proporzionale DC
Pag. 14/28 (Eq 1) Attrito tra rotore e statore: 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;
22
(3) Controllo PID Perché usare un controllore PID: Azioni del 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 disturbi costanti tra C(s) e P(s) errore nullo a regime permanente per ingressi a rampa (Figura 11)
23
(3) Sovraelongazione Azione derivata: Pag. 16/28
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)
24
Sistema a ciclo chiuso di tipo 2
(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 Tipo\u u(t)=c u(t)=t u(t)=t²/2 E0≠0 infinito 1 nullo E1≠0 Infinito 2 E2≠0
25
(3) Realizzazione PID Pag. 18/28
Il controllore a tempo discreto PID(z) si ottiene con il metodo indiretto: (Eq 9) 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 11) Antitrasformata: (Eq 12) Il controllore PID(k) è conforme al linguaggio dell’Arduino.
26
(3) Cinematica del robot
Pag. 19/28 raggiungere una posizione (x,y,z) Cinematica inversa Passo traslazione/passo motore Controllo determinazione delle variabili di giunto determinazione dei passi/passi encoder (Figura 14) 3 2 1 z raggiungimento dei passi/passi encoder
27
(3) Passo di traslazione
Pag. 20/28 Precisione motori passo passo: θs=1.8 [gradi]=cost, d=8mm -> ∆z =d/2*θs = ≈ 1/8 [mm/passo] ∆σ ∆x = d/2 *∆θ d/2 Ruota dentata (Figura 13)
28
(4) Stampa Stampa
29
(4) Stampa Obiettivo Pag. 21/28
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
30
X=r*cos(theta); Y=r*cos(theta);
(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
31
(4) Stampa cerchio Test funzione Pag. 23/28
Asse xy: motore DC e stepper, linea frastagliata Asse xz: stepper e stepper, linea omogenea x y z x ∆ѳ=3 mm ∆ѳ=1 mm (Figura 15) (Figura 16)
32
(4) Stampa testo Obiettivo: Soluzione Pag. 24/28
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
33
(4) Stampa testo Preparazione dati: p1 p2 Pag. 25/28 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)
34
(4) Stampa testo Preparazione dati: Pag. 25/28 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)
35
(4) Stampa testo Obiettivo Soluzione Pag. 26/28
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) Tracciamento linea Abbassare l’effettore Raggiungere la posizione p2=f(p2) Alzare l’effettore
36
(4) Stampa testo Obiettivo Soluzione Risultato ottenuto Pag. 27/28
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)
37
(5) Conclusioni Conclusioni: Pag. 28/28
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
38
Grazie per l’attenzione
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.