Difference between revisions of "Drawbot"

From FabLabGenovaWiki
Jump to: navigation, search
(Drivers motori)
m
 
(25 intermediate revisions by 2 users not shown)
Line 1: Line 1:
drawbot come visto [http://www.youtube.com/watch?v=O7J0FbKcCjw qui]
+
[[File:DrawbotWip1.jpg|thumb|right|drawbot v1]]
 
+
[[File:Drawbotfirst.jpg|thumb|left|Il primo disegno del drawbot v1]]
 +
Il Drawbot 2.0 ha fatto il suo debutto come primo lavoro del fablab al [http://www.facebook.com/events/511424662251079/ Minimo vol. 5]. In questa sua prima uscita pubblica era così assemblato:
 +
* Dimensioni : circa 1.8m di interasse delle pulegge con 3-3.5 m di catenelle per lato
 +
* Motori PM55L recuperati da una stampante ( stile Ranxerox ) da 47 step/giro. ( [http://www.nmbtc.com/pdf/motors/PM55L-048-HHD0.pdf] )
 +
* Driver motori di Simo con una scheda Darlinghton alimentata con tensione duale +12 / 0 / -12, e controllata da un PIC12 a 8 pin, che prende in input il classico step/dir. [[Simostepper]]
 +
* Pulegge fatte a stampante 3D con catenelle da tenda e contrappesi per non rischiare di perdere passi per la scarsa coppia dei motori.
 +
* Software python scritto da noi sia per il pathgenerator, sia per il controller ( raspberrypi ), direi ormai ampiamente testato e funzionante, solo da rifinire qua e là.[[software]]
 +
In questa configurazione tutt'altro che ideale, per problemi legati sia all'inadeguatezza dell'alimentatore ( un povero ATX che doveva dare assai più corrente di quella per cui era progettato ) sia alle pessime performance dei motori sia in termini di velocità ( non siamo riusciti a salire oltre i 12 step/s ) sia in termini di precisione, siamo comunque riuscito a fare un disegno accettabile, per festeggiare i 10 anni del Laboratorio Sociale Occupato Autogestito Buridda di cui facciamo parte.
 +
[[File: Drawbot_minimo.jpg|thumb|left|Il disegno svolto dal drawbot 2.0 la sera del minimo]]
 +
[[File: Drawbot_minimo_file.jpg|thumb|right|Il disegno fatto da Irene per il drawbot]]
 +
Continueremo a portare avanti il progetto per arrivare ad una versione 3.0 (vedi [[Drawbot_3]]) di dimensioni notevolmente maggiori, in pratica in grado di disegnare su una parete di qualche metro di lunghezza.
 +
I punti principali sono:
 +
* Sostituzione degli attuali driver con dei nuovi, sempre fatti da noi, ma basati sul DRV8825 della Texas Instruments, un driver integrato ad alte prestazioni che implementa anche il microstep sino ad 1/32 e la regolazione diretta della corrente con resistenze di sensing, che permette di fatto di velocizzare enormemente i motori aumentando la tensione anche molto al di sopra di quella nominale dei motori.
 +
* Sostituzione dei motori con dei nuovi ( li abbiamo già comprati ) più grossi e più potenti, ma anche più precisi ( ritorniamo ai 200 step/giro )
 +
* Sperimenteremo sostituti delle catenelle, non realizzabili per molti.
 +
Segue una descrizione aggiornata delle varie parti del drawbot.
 
== Motori ==
 
== Motori ==
Usiamo i nema 17 della Makerbot
+
Stiamo usando una coppia di PM55L ( [http://www.nmbtc.com/pdf/motors/PM55L-048-HHD0.pdf] ) recuperati da una fotocopiatrice. Avendo solo 47 step contro i 200 dei nema ( portati a 400 con l'half-step ) la risoluzione è diminuita brutalmente ad un ottavo rispetto alla prima versione (La precisione massima che otteniamo con questa è 2.5mm contro gli 0.6-0.8mm della prima versione). Per ottenere risultati accettabili bisogna fare immagini molto più grandi rispetto alla prima versione. Potrebbe migliorare un po' con l'half step. Studiare quale densità di punti rende meglio. In extremis si possono pure cercare di recuperare due motori da 200 passi/giro per tornare alla risoluzione di prima.
 
== Alimentazione ==
 
== Alimentazione ==
Un ATX si è immolato per la causa
+
Un ATX si è immolato per la causa, ma la -12V utilizzata dal driver duale può fornire al massimo .3A, un po' pochini.
== Drivers motori
+
Stiamo lavorando ad un nuovo alimentatore che fornisca una +12/0/-12 adeguata (~1.5A) e una 5V stabilizzata
Ce li ha prestati la stampante, sono [http://reprap.org/wiki/Stepper_Motor_Driver_2.3 questi]
+
== Drivers motori ==
Sono invece in fase di testing dei driver per stepper bipolari completamente progettati da noi basati sulla coppia di Darlington complementari TIP130/TIP136, alimentati con una tensione duale. Questi se alimentati a dovere, e dissipati adeguatamente, sono in grado di erogare 8A ciascuno, e quindi di pilotare motori da 8A/fase. Inoltre il guadagno elevatissimo ( hFE stimato 2000 ) permette di controllarli pilotando direttamente le basi con dei circuiti integrati in grado di fornire solo piccole correnti.
+
Li abbiamo progettati e costruiti noi. Utilizzano una alimentazione duale e 4 transistor darlinghton di potenza. Sono la seconda versione curata da Simo ( e quella definitiva? ) con l'interfaccia logica migliorata. Ottimi anche dopo un ora di stampa non scaldano niente ( possono gestire fino a 8A/canale ). L'adattatore clock/dir è un PIC micro della serie 12F ( 8 PIN ). Dobbiamo ancora implementare l'half step. Per maggiori informazioni [[Bond]]
Per pilotarli con un normale segnale logico a 5V tuttavia è necessario portare i 5V del segnale logico rispettivamente alla tensione di alimentazione positiva e negativa ( al momento +15v e -15v ), con cui si possono pilotare le basi dei transistor mandandoli completamente in saturazione. Allo scopo si sono prestati degli amplificatori operazionali configurati come amplificatori invertenti ( per le basi degli NPN ) e non invertenti ( per le basi dei PNP ) con guadagno 3.
 
Il risultato è che il segnale in ingresso è negato ovvero per mandare in conduzione un transistor, bisogna portare a livello logico 0 il relativo input logico.
 
Bisogna prestare attenzione affinché due transistor dallo stesso lato del "ponte" non vadano in conduzione a tempo: in queste circostanze la coppia TIP130/TIP136 costituisce un cortocircuito tra V+ e V-, e le correnti che l'attraverserebbero distruggerebbero immediatamente o i transistor stessi o più probabilmente l'alimentatore, se non ampiamente sovradimensionato.
 
 
 
Le entrate 4 e 3 del connettore della logica ( vd schema eagle, e stampato ) controllano l'avvolgimento 1, la 2 e 1 l'avvolgimento 2.
 
 
 
 
== Controller ==
 
== Controller ==
 
RaspberryPI. [[File:PinRaspberry.png|thumb|alt=piedinatura raspBerryPI.|piedinatura del raspberry|400px|right|piedinatura Raspberry PI]]
 
RaspberryPI. [[File:PinRaspberry.png|thumb|alt=piedinatura raspBerryPI.|piedinatura del raspberry|400px|right|piedinatura Raspberry PI]]
 +
== Software ==
 +
Abbiamo portato tutto il codice in due programmi python.
 +
Il primo prende in input un'immagine opportunamente elaborata con un editor grafico e genera un file path contenente le indicazioni che servono a un qualsiasi sistema drowbot per muoversi; è necessario farlo girare su un computer con una buona potenza ( è sconsigliabile lanciarlo dal raspi! ), vista la pesantezza dei calcoli che deve svolgere; è possibile scegliere più livelli di ottimizzazione e visualizzare i risultati prima di salvare il path. Richiede le librerie numpy matplotlib, gira su tutti gli os.
 +
Il secondo viene fatto girare su un raspi connesso ai motori del drawbot. Prende in input il suddetto path e fa muovere i motori  secondo i parametri del sistema drawbot a cui è connesso.
 +
Prima di eseguire fornisce indicazioni sulle dimensioni reali del disegno e una stima del tempo richiesto e chiede conferma.
 +
In più abbiamo realizzato altri due script in python che sono risultati utili nel corso delle prove: uno fa automaticamente la pre-elaborazione delle immagini, l'altro visualizza i path.
 +
Il codice aggiornato è su [[software]]
 +
e anche su sourceforge http://sourceforge.net/projects/drawbot/
  
== Software ==
 
Un pò in processing e un pò in python. Il codice su [[software]]
 
 
== Connessioni ==
 
== Connessioni ==
In tutto ci sono 4 schede da connettere insieme. 2 Motor Stepper Driver (S.M.D.), 1 raspberry (PI) e la scheda con l'alimentatore ATX.
+
Lo schema delle connessioni è il seguente:
  
Di seguito c'è la tabella delle connessioni. Va poi aggiunto un interruttore tra il PS_ON dell'atx (cavo verde) e il ground per controllare l'alimentazione di tutto l'ambaradan
+
ATX --> RasPi --> Scheda PIC dx-sx ( anche l'alim. 3.3V viene dal raspi ) --> Scheda Darlinghton --> Motori
  
{| class="wikitable"
+
I_________________alimentazione +12/-12______________________________________________^
|-
 
! ATX
 
! Pi
 
! S.M.D.1
 
! S.M.D.2
 
|-
 
| +12
 
| X
 
| abcd<sub>(molex)</sub>
 
| abcd<sub>(molex)</sub>
 
|-
 
| +5
 
| pin 2
 
| abcd<sub>(molex)</sub>
 
| abcd<sub>(molex)</sub>
 
|-
 
| Ground
 
| pin 6
 
| pin 2,8,9,10
 
| pin 2,8,9,10
 
|-
 
| X
 
| pin 7
 
| pin 3
 
| X
 
|-
 
| X
 
| pin 11
 
| pin 4
 
| X
 
|-
 
| X
 
| pin 12
 
| X
 
| pin 3
 
|-
 
| X
 
| pin 13
 
| X
 
| pin 4
 
|-
 
| X
 
| pin 15
 
| pin 5
 
| pin 5
 
|-
 
|}
 

Latest revision as of 09:50, 23 January 2014

drawbot v1
Il primo disegno del drawbot v1

Il Drawbot 2.0 ha fatto il suo debutto come primo lavoro del fablab al Minimo vol. 5. In questa sua prima uscita pubblica era così assemblato:

  • Dimensioni : circa 1.8m di interasse delle pulegge con 3-3.5 m di catenelle per lato
  • Motori PM55L recuperati da una stampante ( stile Ranxerox ) da 47 step/giro. ( [1] )
  • Driver motori di Simo con una scheda Darlinghton alimentata con tensione duale +12 / 0 / -12, e controllata da un PIC12 a 8 pin, che prende in input il classico step/dir. Simostepper
  • Pulegge fatte a stampante 3D con catenelle da tenda e contrappesi per non rischiare di perdere passi per la scarsa coppia dei motori.
  • Software python scritto da noi sia per il pathgenerator, sia per il controller ( raspberrypi ), direi ormai ampiamente testato e funzionante, solo da rifinire qua e là.software

In questa configurazione tutt'altro che ideale, per problemi legati sia all'inadeguatezza dell'alimentatore ( un povero ATX che doveva dare assai più corrente di quella per cui era progettato ) sia alle pessime performance dei motori sia in termini di velocità ( non siamo riusciti a salire oltre i 12 step/s ) sia in termini di precisione, siamo comunque riuscito a fare un disegno accettabile, per festeggiare i 10 anni del Laboratorio Sociale Occupato Autogestito Buridda di cui facciamo parte.

Il disegno svolto dal drawbot 2.0 la sera del minimo
Error creating thumbnail: Unable to save thumbnail to destination
Il disegno fatto da Irene per il drawbot

Continueremo a portare avanti il progetto per arrivare ad una versione 3.0 (vedi Drawbot_3) di dimensioni notevolmente maggiori, in pratica in grado di disegnare su una parete di qualche metro di lunghezza. I punti principali sono:

  • Sostituzione degli attuali driver con dei nuovi, sempre fatti da noi, ma basati sul DRV8825 della Texas Instruments, un driver integrato ad alte prestazioni che implementa anche il microstep sino ad 1/32 e la regolazione diretta della corrente con resistenze di sensing, che permette di fatto di velocizzare enormemente i motori aumentando la tensione anche molto al di sopra di quella nominale dei motori.
  • Sostituzione dei motori con dei nuovi ( li abbiamo già comprati ) più grossi e più potenti, ma anche più precisi ( ritorniamo ai 200 step/giro )
  • Sperimenteremo sostituti delle catenelle, non realizzabili per molti.

Segue una descrizione aggiornata delle varie parti del drawbot.

Motori

Stiamo usando una coppia di PM55L ( [2] ) recuperati da una fotocopiatrice. Avendo solo 47 step contro i 200 dei nema ( portati a 400 con l'half-step ) la risoluzione è diminuita brutalmente ad un ottavo rispetto alla prima versione (La precisione massima che otteniamo con questa è 2.5mm contro gli 0.6-0.8mm della prima versione). Per ottenere risultati accettabili bisogna fare immagini molto più grandi rispetto alla prima versione. Potrebbe migliorare un po' con l'half step. Studiare quale densità di punti rende meglio. In extremis si possono pure cercare di recuperare due motori da 200 passi/giro per tornare alla risoluzione di prima.

Alimentazione

Un ATX si è immolato per la causa, ma la -12V utilizzata dal driver duale può fornire al massimo .3A, un po' pochini. Stiamo lavorando ad un nuovo alimentatore che fornisca una +12/0/-12 adeguata (~1.5A) e una 5V stabilizzata

Drivers motori

Li abbiamo progettati e costruiti noi. Utilizzano una alimentazione duale e 4 transistor darlinghton di potenza. Sono la seconda versione curata da Simo ( e quella definitiva? ) con l'interfaccia logica migliorata. Ottimi anche dopo un ora di stampa non scaldano niente ( possono gestire fino a 8A/canale ). L'adattatore clock/dir è un PIC micro della serie 12F ( 8 PIN ). Dobbiamo ancora implementare l'half step. Per maggiori informazioni Bond

Controller

RaspberryPI.
piedinatura raspBerryPI.
piedinatura Raspberry PI

Software

Abbiamo portato tutto il codice in due programmi python. Il primo prende in input un'immagine opportunamente elaborata con un editor grafico e genera un file path contenente le indicazioni che servono a un qualsiasi sistema drowbot per muoversi; è necessario farlo girare su un computer con una buona potenza ( è sconsigliabile lanciarlo dal raspi! ), vista la pesantezza dei calcoli che deve svolgere; è possibile scegliere più livelli di ottimizzazione e visualizzare i risultati prima di salvare il path. Richiede le librerie numpy matplotlib, gira su tutti gli os. Il secondo viene fatto girare su un raspi connesso ai motori del drawbot. Prende in input il suddetto path e fa muovere i motori secondo i parametri del sistema drawbot a cui è connesso. Prima di eseguire fornisce indicazioni sulle dimensioni reali del disegno e una stima del tempo richiesto e chiede conferma. In più abbiamo realizzato altri due script in python che sono risultati utili nel corso delle prove: uno fa automaticamente la pre-elaborazione delle immagini, l'altro visualizza i path. Il codice aggiornato è su software e anche su sourceforge http://sourceforge.net/projects/drawbot/

Connessioni

Lo schema delle connessioni è il seguente:

ATX --> RasPi --> Scheda PIC dx-sx ( anche l'alim. 3.3V viene dal raspi ) --> Scheda Darlinghton --> Motori

I_________________alimentazione +12/-12______________________________________________^