
Retroscena
Stampa 3D: quattro risposte utili per i principianti
di Marc Schaffer
Puoi acquistare degli adattatori, se disponibili. Oppure puoi progettarne e stamparne uno tu stesso in 3D. In questo caso, voglio montare una stazione base HTC Vive su un'asta per microfono. Purtroppo entrambi hanno filettature di dimensioni diverse (inglese/imperiale), quindi ho bisogno di un adattatore.
In questo tutorial ti mostrerò come programmare in modo semplice e veloce un oggetto con OpenSCAD. OpenSCAD è un programma con cui puoi creare modelli 3D. Il software è gratuito e funziona su Linux, Windows e Mac. Tuttavia, invece dei soliti programmi CAD, qui non si disegna un oggetto, ma lo si digita con la tastiera sotto forma di codice. Ma non preoccuparti, non è incredibilmente complicato e non ti servono altre conoscenze matematiche rispetto ad altri programmi di disegno. Per aiutarti a ricordare, puoi trovare un CheatSheet qui.
Il processo di lavoro è suddiviso in quattro fasi:
Prima di iniziare a disegnare, o in questo caso a programmare, devi raccogliere i materiali che hai a disposizione. Utilizzando vari strumenti come un righello, una squadra o un calibro, misura tutto con precisione. Più sarai preciso in questa fase, meno problemi avrai quando assemblerai gli oggetti alla fine.
Il supporto, che ho misurato nel passo precedente, ha le seguenti dimensioni: lunghezza = 84,2 mm; larghezza = 44 mm. La vite ha un diametro di 3 mm e una lunghezza di 18 mm. Per ottenere il cubo di base, digitiamo nel campo di testo: cube([84.2,44,18],centre=true);
Dopo di che, basta premere "F5" e il cubo sarà visibile come modello 3D.
L'oggetto è stato centrato con l'istruzione "center=true". Il punto zero si trova quindi esattamente al centro. Questo è molto pratico nel nostro caso, poiché l'oggetto è simmetrico, cioè entrambi i lati hanno la stessa dimensione. Di conseguenza, i fori per la filettatura e la vite si trovano al centro e dobbiamo calcolare meno per i fori M5 successivi.
A questo punto potremmo aggiungere i fori, ma non si adatta così bene al Faro quando è così angolare.
Siccome solo i bordi esterni sono arrotondati, utilizziamo la funzione "scafo", che disegna uno scafo intorno agli oggetti. Ora la questione si fa un po' matematica: l'arrotondamento ha un raggio di 10 mm, quindi posizioniamo 4 cilindri agli angoli e allunghiamo lo scafo intorno ad essi:
scafo(){
translate([(84.2/2)-10,(44/2)-10,0]) cylinder(r=10, h=18,centre=true);
translate([(-84.2/2)+10,(44/2)-10,0]) cilindro(r=10, h=18,centro=vero);
translate([(84.2/2)-10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);
translate([(-84.2/2)+10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);
};
Partendo dal punto zero centrale (centro), allontano metà della lunghezza e metà della larghezza di un cilindro dal punto zero ("trasla" determina la nuova posizione) e sottraggo il raggio. Devo scriverlo solo una volta e poi posso riutilizzarlo per gli altri cilindri: a volte più dal punto zero e a volte meno dal punto zero. (Oh, se solo la matematica ci fosse stata spiegata in modo così chiaro e facile da capire a scuola. Devi solo applicarla per capirla)
Puoi rendere gli oggetti trasparenti scrivendo un "%" davanti ad essi, senza il quale l'oggetto completo dovrebbe essere visibile.
Ora aggiungiamo i fori aggiungendo vari cilindri. Questi vengono poi calcolati a partire dall'oggetto grande ("forato"):
SILF=0.6;
translate([0,0,0]) cylinder(r=5+SILF, h=50,center=true);
È importante che gli oggetti (meno) da fatturare siano più grandi e sporgenti, altrimenti i bordi non saranno belli e la stampante 3D cercherà di chiudere il foro con uno strato sottile.
La stampante 3D, o meglio alcuni slicer che calcolano gli oggetti per la stampante 3D, hanno la fastidiosa particolarità di stampare i fori più piccoli di quanto specificato. Il foro deve quindi essere progettato più grande di questa mancanza. Ho chiamato questo errore "Errore del foro interno dello slicer" e ho aggiunto la variabile "SILF" al foro. Puoi dare un nome libero alla variabile, ma non devi programmare l'importo della correzione come un valore fisso. Ogni stampante è diversa e i programmi cambiano. Quando apporti delle modifiche, devi cambiare la variabile solo all'inizio e non in tutti i fori.
Questo richiede solo 1 riga per gli oggetti:
for (i = [0:.5:7]) { translate([(ii2)+i*2,0,0]) cylinder(r=i, h=5+i,center=true); }
I cicli "for" sono uno strumento pratico per la programmazione, ma torniamo all'adattatore. Facciamo il foro formando la differenza tra A e B. Oggetto scafo grande meno cilindro a vite con la funzione "differenza":
differenza(){
scafo(){
translate([(84.2/2)-10,(44/2)-10,0]) cylinder(r=10, h=18,center=true);
translate([(-84.2/2)+10,(44/2)-10,0]) cilindro(r=10, h=18,center=true);
translate([(84.2/2)-10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);
translate([(-84.2/2)+10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);
};
translate([0,0,0]) cilindro(r=5+SILF, h=50,centro=verità);
}
Adesso aggiungiamo i due fori per le viti M5. Per fare ciò, espandiamo la parte "B", che consiste solo nel cilindro per la filettatura, in un gruppo:
gruppo(){
translate([0,0,0]) cilindro(r=5+SILF, h=50,center=true); //Filettatura del treppiede
translate([32,0,0]) cilindro(r=2.5+SILF, h=50,centro=true); //vite M5
translate([-32,0,0]) cilindro(r=2.5+SILF, h=50,centro=true); //vite M5
}//gruppo
Un consiglio importante: Il testo dopo il "//" è un commento e viene ignorato dal programma. Se vuoi aggiustare qualcosa due mesi dopo, risparmierai un sacco di tempo, perché potrai leggere nei commenti cosa e perché, ad esempio, doveva esserci 1 mm in più!
Ora manca solo il foro per la vite grande. Per farlo, aggiungiamo i due cilindri (per la vite e uno per il bordo). Tuttavia, questi non devono essere continui, ma devono poggiare su 3 mm di materiale. L'asse Z deve quindi essere adattato:
translate([0,0,-(18/2)+3]) cilindro(r=(15.5/2)+SILF, h=25,centro=false); //Adattatore
translate([0,0,-(18/2)+3+10]) cylinder(r=(18/2)+SILF, h=10,center=false); //Bordo dell'adattatore
Abbiamo quasi finito. L'oggetto potrebbe essere stampato in questo modo, ma la vite dovrebbe essere faticosamente serrata e per svitarla bisognerebbe smontare tutto, poiché la vite non ha un punto di arresto e girerebbe a vuoto. Quindi aggiungiamo un punto di arresto e tagliamo una parte del bordo della vite per creare un "taglio a D".
Alla fine, aggiungiamo il punto di arresto sull'oggetto - un'unica frase alla fine:
Translate([(15.5/2)+0.3,-10,(18/2)-5]) cube([4,20,5],centre=false); //D-Supporto al taglio
Per rendere i bordi ancora più uniformi, aumentiamo il numero di bordi per cerchio: $fn=150;
Questa operazione, tuttavia, dovrebbe essere eseguita solo alla fine, in quanto aumenta il tempo di calcolo. Tra l'altro, puoi usarlo anche per generare angoli a 6, ad esempio: cylinder(d=20,h=10,$fn=6);
Ora il programma deve solo calcolare il modello 3D in alta risoluzione. Questa operazione si chiama rendering e può essere esportata come STL premendo "F6". Il file STL può quindi essere convertito dallo slicer per la stampante 3D e la stampa può iniziare! Puoi leggere esattamente come funziona qui:
Se hai lavorato in modo modulare, puoi continuare a utilizzare il file e adattarlo ad altre applicazioni. Ad esempio, come supporto per una lampada da cantiere.
Se vuoi costruire questo adattatore da solo, puoi copiare l'intero codice sorgente e incollarlo nel tuo OpenSCAD.
$fn=150; // Numero di bordi di un cerchio
SILF=0.6; // Errore foro interno dello slicer, se lo slicer stampa i fori interni troppo piccoli
//%cube([84.2,44,18],centre=true);
//#cube([68.4-5,44,18],centre=true); //test di differenza
differenza(){
scavo(){
translate([(84.2/2)-10,(44/2)-10,0]) cylinder(r=10, h=18,center=true);
translate([(-84.2/2)+10,(44/2)-10,0]) cilindro(r=10, h=18,center=true);
translate([(84.2/2)-10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);
translate([(-84.2/2)+10,(-44/2)+10,0]) cylinder(r=10, h=18,center=true);
};
gruppo(){
translate([0,0,0]) cylinder(r=5+SILF, h=50,centre=true); //Filo del treppiede
translate([0,0,-(18/2)+3]) cylinder(r=(15.5/2)+SILF, h=25,center=false); //Adapter
translate([0,0,-(18/2)+3+10]) cylinder(r=(18/2)+SILF, h=10,centre=false); //Bordo dell'adattatore
translate([32,0,0]) cilindro(r=2.5+SILF, h=50,centro=vero); //vite M5
translate([-32,0,0]) cilindro(r=2.5+SILF, h=50,centro=true); //vite M5
}//gruppo
}//diff
translate([(15.5/2)+0.3,-10,(18/2)-5]) cube([4,20,5],centre=false); //D-Cut edition
Buona fortuna!
Sono un aborigeno digitale della generazione Commodore 64, online dal quadrante e dall'accoppiatore acustico. Oltre ai videogiochi, mi piace portare le cose dal cyberspazio al makerspace con la stampante 3D. La tecnologia è semplicemente affascinante.