Sommario:
- Forniture
- Passaggio 1: stampa tutti i componenti 3D
- Passaggio 2: (Facoltativo) Attacca un'asse di legno sul fondo della tua scatola per rafforzarla
- Passaggio 3: misura e taglia un'asse di legno per adattarla alla scatola
- Passaggio 4: contrassegnare le posizioni dei motori
- Passaggio 5: contrassegnare le posizioni delle staffe e del tubo
- Passaggio 6: praticare un foro per i cavi che escono dalla scatola (USB e alimentazione)
- Passaggio 7: praticare e segare tutti i fori contrassegnati
- Passaggio 8: collegare i motori e il tubo alla tavola
- Passaggio 9: attaccare la tavola alla scatola con le staffe a L
- Passaggio 10: prendi le morsettiere e salda i fili insieme
- Passaggio 11: tagliare l'estremità del cavo di alimentazione dell'adattatore e spellare i fili
- Passaggio 12: identificare e contrassegnare i fili più e meno
- Passaggio 13: collegare i fili alle morsettiere in modo che tutti i fili + servo e il filo + dal cavo di alimentazione siano collegati, lo stesso vale per i fili
- Passaggio 14: tagliare la testa da un filo di breadboard
- Passaggio 15: praticare tre fori nella parte inferiore della scatola per i cavi che escono dal braccio
- Passaggio 16: collegare il connettore della base alla scatola
- Passaggio 17: utilizzare un coltello o una lima per unghie per rendere più profonde le scanalature del filo
- Passaggio 18: costruire il braccio
- Passaggio 19: installare Processing e Arduino
- Passaggio 20: incolla i programmi di codice
- Passaggio 21: collegare i pin di controllo del servo ad Arduino
- Passaggio 22: premere il pulsante di ripristino in elaborazione, questo imposterà tutti i bracci a 90 gradi
- Passaggio 23: fissare i bracci del servo al motore orizzontalmente
- Passaggio 24: infilare i fili attraverso le braccia in modo che non ci siano allentamenti
- Passaggio 25: testare il braccio e stringere o allentare i fili secondo necessità
- Passaggio 26: incollare a caldo i fili ai bracci del servo per renderlo permanente
- Passaggio 27: note
- Passaggio 28: risoluzione dei problemi
- Passaggio 29: collegamenti
- Passaggio 30: codice
- Passaggio 31: altre immagini
Video: Braccio robotico controllato da filo: 31 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Questo è un tutorial su come realizzare un braccio robotico controllato da fili. Il vantaggio dell'utilizzo dei cavi è che il tuo braccio è più leggero e puoi avere tutti i motori nella parte inferiore del braccio, facilitando la costruzione e la manutenzione. Ecco un video del braccio in azione. Ho intenzione di aggiungere un artiglio in futuro in modo che possa raccogliere le cose e non solo spingerle in giro.
Stampabili 3D:
Qui e qui
Forniture
6 servomotori (MG995)
Arduino Uno
Circa 6 metri di filo di acciaio rivestito in plastica (0,5 mm)
Scatola 23x33x10 (può essere più stretta, sicuramente non dovrebbe essere più corta)
Plancia di legno 33x10
Dadi e bulloni
Tubo 14 cm (necessario per guidare le corde)
4 staffe a L
Adattatore da 5 volt
2 morsettiere a 7 vie
Fili per tagliere
Componenti stampati in 3D (non progettati da me, collegamenti agli elementi nella descrizione):
3 “bulloni”
2 “Elemento 1”
1 “Elemento 2”
2 “Elemento 3”
1 connettore di base
Passaggio 1: stampa tutti i componenti 3D
Potrebbe essere necessario il supporto per i fori dei bulloni e gli archi, ma assicurati di non aggiungere supporto al corpo dei componenti; questo chiuderà i piccoli fori del filo e dovrai fare nuovi fori
Passaggio 2: (Facoltativo) Attacca un'asse di legno sul fondo della tua scatola per rafforzarla
La mia scatola era piuttosto debole, la tua potrebbe non esserlo
Passaggio 3: misura e taglia un'asse di legno per adattarla alla scatola
Passaggio 4: contrassegnare le posizioni dei motori
assicurati che nessuna delle braccia si tocchi l'un l'altra
Passaggio 5: contrassegnare le posizioni delle staffe e del tubo
Il tubo deve essere posizionato circa un centimetro davanti al foro
Passaggio 6: praticare un foro per i cavi che escono dalla scatola (USB e alimentazione)
Passaggio 7: praticare e segare tutti i fori contrassegnati
Passaggio 8: collegare i motori e il tubo alla tavola
Passaggio 9: attaccare la tavola alla scatola con le staffe a L
Passaggio 10: prendi le morsettiere e salda i fili insieme
Passaggio 11: tagliare l'estremità del cavo di alimentazione dell'adattatore e spellare i fili
Passaggio 12: identificare e contrassegnare i fili più e meno
Passaggio 13: collegare i fili alle morsettiere in modo che tutti i fili + servo e il filo + dal cavo di alimentazione siano collegati, lo stesso vale per i fili
Passaggio 14: tagliare la testa da un filo di breadboard
Attacca l'estremità spellata del filo della breadboard alla morsettiera meno e l'estremità del pin al pin di terra nel tuo arduino. Se non lo fai, i motori si muoveranno in modo irregolare senza alcun input.
Passaggio 15: praticare tre fori nella parte inferiore della scatola per i cavi che escono dal braccio
I fori devono corrispondere ai fori nel connettore di base.
Passaggio 16: collegare il connettore della base alla scatola
Passaggio 17: utilizzare un coltello o una lima per unghie per rendere più profonde le scanalature del filo
Le scanalature del filo per gli elementi 2 e 3 sono troppo basse.
Passaggio 18: costruire il braccio
Costruisci il braccio secondo le istruzioni qui, potresti dover archiviare le parti in modo che si adattino
Passaggio 19: installare Processing e Arduino
Elaborazione e Arduino
Passaggio 20: incolla i programmi di codice
Il codice è in fondo a questa pagina
Passaggio 21: collegare i pin di controllo del servo ad Arduino
Ho collegato il primo motore al terzo pin digitale, il secondo motore al quarto pin digitale e così via. Assicurarsi che il pin di terra sia ancora collegato alla morsettiera.
Passaggio 22: premere il pulsante di ripristino in elaborazione, questo imposterà tutti i bracci a 90 gradi
Passaggio 23: fissare i bracci del servo al motore orizzontalmente
Passaggio 24: infilare i fili attraverso le braccia in modo che non ci siano allentamenti
Assicurati di infilare il filo attraverso il maggior numero di fori possibile, questo lo terrà temporaneamente e sarà facile da rimuovere.
Passaggio 25: testare il braccio e stringere o allentare i fili secondo necessità
Passaggio 26: incollare a caldo i fili ai bracci del servo per renderlo permanente
Passaggio 27: note
Ho usato un filo per gioielli da 0,5 mm, ma 0,4 mm dovrebbe andare bene. Il design originale utilizzava filo in PVC ma si rompeva troppo facilmente ed era difficile lavorarci.
Se devi muovere il braccio in macchina o in bicicletta, avvolgi le articolazioni del braccio con del nastro adesivo per assicurarti che non fuoriescano. Questo è particolarmente importante per l'elemento 1.
Quando ho iniziato questo progetto mi chiedevo perché riuscivo a trovare solo un tutorial su come realizzare un braccio controllato da fili. Ora capisco perché questo non è il modo più comune per realizzare un braccio robotico per hobby. I fili a volte cadono dalle loro scanalature e il tutto è un po' fragile. Non so se i problemi sono perché non ho molta esperienza o se l'intera idea è problematica anche se sono sicuro che sarebbe più solido se sapessi cosa stavo facendo.
Passaggio 28: risoluzione dei problemi
I fori del filo sono chiusi negli elementi stampati in 3D:
Hai aggiunto il supporto per l'intero elemento invece che solo per i fori dei bulloni. Ristampa l'elemento o apri i fori con un ago molto caldo.
La porta COM è chiusa, non puoi comunicare con arduino:
Il tuo arduino potrebbe non accettare porte USB 3 (il mio no), puoi acquistare un cavo di prolunga USB 2 o utilizzare un computer dotato di porte USB 2
Il codice non funziona:
Segui questo tutorial e modificalo per creare il tuo codice
Una parte del braccio non si muove:
I fili potrebbero essersi aggrovigliati, per verificare ciò togliere il braccio del servo dal servo e provare a tirare i fili a mano. Districa i fili e se è ancora difficile tirare i fili prova a usare del WD-40 o un lubrificante per facilitare il movimento
Passaggio 29: collegamenti
Braccio non robotico:
Braccio stampabili 3D:
My Arm 3D Printable:
Arduino ed elaborazione:
Passaggio 30: codice
Modificato da questo codice
Codice Arduino:
#include //Dichiara i motori Servo myservo1; Servo mioservo2; Servo myservo3; Servo mioservo4; Servo mioservo5; Servo mioservo6; //Tutti i motori sono impostati a 90 gradi di default int current1 = 90; int corrente2 = 90; int corrente3 = 90; int corrente4 = 90; int corrente5 = 90; int corrente6 = 90; //Gradi Minimo e Massimo i motori possono raggiungere int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; //Gradi da aggiungere o sottrarre dalla posizione corrente int degreeFoward = 5; //Ritarda in modo che due funzioni non vengano eseguite nell'ordine sbagliato int delayBetweenSteps = 100; void setup() { //Imposta i pin di controllo per ogni motore myservo1.attach(3); myservo2.attach(4); myservo3.attach(5); myservo4.attach(6); myservo5.attach(7); myservo6.attach(8); //Imposta tutti i motori sull'impostazione predefinita myservo1.write(current1); myservo2.write(current2); myservo3.write(current3); myservo4.write(current4); myservo5.write(current5); myservo6.write(current6); //avvia comunicazione seriale @9600 bps Serial.begin(9600); } void loop(){ if(Serial.available()){ //se i dati sono disponibili per la lettura char val = Serial.read(); //inseriscilo in questo carattere //Controlli motore if(val == 'a' && current1 + degreeForward mini1){ myservo1.write(current1 - degreeForward); corrente1 = corrente1 - gradiAvanti; delay(delayBetweenSteps); } if(val == 'c' && current2 mini2){ myservo2.write(current2 - degreeForward); corrente2 = corrente2 - gradiAvanti; delay(delayBetweenSteps); } if(val == 'e' && current3 mini3){ myservo3.write(current3 - degreeForward); corrente3 = corrente3 - gradiAvanti; delay(delayBetweenSteps); } if(val == 'g' && current4 mini4){ myservo4.write(current4 - degreeForward); corrente4 = corrente4 - gradiAvanti; delay(delayBetweenSteps); } if(val == 'i' && current5 mini5){ myservo5.write(current5 - degreeForward); corrente5 = corrente5 - gradiAvanti; delay(delayBetweenSteps); } if(val == 'k' && current6 mini6){ myservo6.write(current6 - degreeForward); corrente6 = corrente6 - gradiAvanti; delay(delayBetweenSteps); } //Controlli la velocità if(val == 'w'){ //Se il pulsante della velocità 1 è stato premuto degreeForward = 1; delay(delayBetweenSteps); } if(val == 'x'){ //Se il pulsante della velocità 5 è stato premuto degreeForward = 5; delay(delayBetweenSteps); } if(val == 'y'){ //Se il pulsante della velocità 10 è stato premuto degreeForward = 10; delay(delayBetweenSteps); } if(val == 'z'){ //Se il pulsante della velocità 20 è stato premuto degreeForward = 20; delay(delayBetweenSteps); } if(val == 'r'){ //Se il pulsante della velocità 20 è stato premuto myservo1.write(90); corrente1 = 90; myservo2.write(90); corrente2 = 90; myservo3.write(90); corrente3 = 90; myservo4.write(90); corrente4 = 90; myservo5.write(90); corrente5 = 90; myservo6.write(90); corrente6 = 90; delay(delayBetweenSteps); } } }
Codice del trattamento:
import processing.serial.*; controllo importazione P5.*; //import la libreria ControlP5 Porta seriale; Controllo P5 cp5; //crea l'oggetto ControlP5 font PFont; void setup(){ //uguale alla dimensione del programma arduino (300, 700); //dimensione della finestra, (larghezza, altezza) printArray(Serial.list()); //stampa tutte le porte seriali disponibili //Se hai un problema probabilmente viene da qui String portName = Serial.list()[0]; port = new Serial(this, portName, 9600); // ho collegato arduino a com3, sarebbe diverso in linux e mac os // aggiungiamo il pulsante alla finestra vuota cp5 = new ControlP5 (questo); font = createFont("Arial", 13); // caratteri personalizzati per pulsanti e titolo // Pulsanti di controllo della velocità cp5.addButton("One") //"One" è il nome del pulsante.setPosition(50, 50) //coordinate x e y dell'angolo superiore sinistro del pulsante.setSize(55, 25) //(larghezza, altezza).setFont(font); cp5.addButton("Cinque").setPosition(110, 50).setSize(55, 25).setFont(font); cp5.addButton("Ten").setPosition(170, 50).setSize(55, 25).setFont(font); cp5.addButton("Venti").setPosition(230, 50).setSize(55, 25).setFont(font); cp5.addButton("Reset").setPosition(110, 2).setSize(55, 25).setFont(font); cp5.addButton("Servo_1_Foward").setPosition(50, 90).setSize(190, 40).setFont(font); // Pulsanti di controllo motore cp5.addButton("Servo_1_Back").setPosition(50, 140).setSize(190, 40).setFont(font); cp5.addButton("Servo_2_Foward").setPosition(50, 190).setSize(190, 40).setFont(font); cp5.addButton("Servo_2_Back").setPosition(50, 240).setSize(190, 40).setFont(font); cp5.addButton("Servo_3_Foward").setPosition(50, 290).setSize(190, 40).setFont(font); cp5.addButton("Servo_3_Back").setPosition(50, 340).setSize(190, 40) //(larghezza, altezza).setFont(font); cp5.addButton("Servo_4_Foward").setPosition(50, 390).setSize(190, 40).setFont(font); cp5.addButton("Servo_4_Back").setPosition(50, 440).setSize(190, 40) //(width, height).setFont(font); cp5.addButton("Servo_5_Foward").setPosition(50, 490).setSize(190, 40).setFont(font); cp5.addButton("Servo_5_Back").setPosition(50, 540).setSize(190, 40).setFont(font); cp5.addButton("Servo_6_Foward").setPosition(50, 590).setSize(190, 40).setFont(font); cp5.addButton("Servo_6_Back").setPosition(50, 640).setSize(190, 40).setFont(font); } void draw(){ //uguale al loop in arduino background(192, 215, 249); // colore di sfondo della finestra (r, g, b) o (da 0 a 255) //Aggiungi il testo che dice che il controllo della velocità è riempimento del controllo della velocità (0, 10, 25); //colore del testo (r, g, b) textFont(font); text("Controllo velocità", 50, 40); // ("testo", coordinata x, coordinata y) } //aggiungiamo alcune funzioni ai nostri pulsanti //così quando premi un pulsante qualsiasi, invia particolari caratteri sulla porta seriale //Sono sicuro che è possibile inviare stringhe invece di caratteri, e avrebbe più senso ma non so come farlo //Comandi di controllo velocità void One(){ port.write('w'); } void Five(){ port.write('x'); } void Dieci(){ port.write('y'); } void Twenty(){ port.write('z'); } //Comandi di controllo motore void Servo_1_Foward(){ port.write('a'); } void Servo_1_Back(){ port.write('b'); } void Servo_2_Foward(){ port.write('c'); } void Servo_2_Back(){ port.write('d'); } void Servo_3_Foward(){ port.write('e'); } void Servo_3_Back(){ port.write('f'); } void Servo_4_Foward(){ port.write('g'); } void Servo_4_Back(){ port.write('h'); } void Servo_5_Foward(){ port.write('i'); } void Servo_5_Back(){ port.write('j'); } void Servo_6_Foward(){ port.write('k'); } void Servo_6_Back(){ port.write('l'); } void Reset(){ port.write('r'); }
Passaggio 31: altre immagini
Consigliato:
Braccio robotico controllato da encoder rotativo: 6 passaggi
Braccio robotico controllato da encoder rotativo: ho visitato howtomechatronics.com e ho visto il braccio robotico controllato da bluetooth. Non mi piace usare il bluetooth, inoltre ho visto che possiamo controllare il servo con un encoder rotativo, quindi l'ho riprogettato per poter controllare il robot braccio usa l'encoder rotativo e registralo
Un semplice braccio robotico controllato sul movimento effettivo della mano: 7 passaggi (con immagini)
Un semplice braccio robotico controllato sul movimento effettivo della mano: questo è un braccio robotico DOF molto semplice per principianti. Il braccio è controllato da Arduino. È collegato a un sensore fissato sulla mano dell'operatore. Pertanto l'operatore può controllare il gomito del braccio piegando il proprio movimento del gomito. Al
Braccio robotico controllato da Arduino e PC: 10 passaggi
Braccio robotico controllato da Arduino e PC: i bracci robotici sono ampiamente utilizzati nell'industria. Che si tratti di operazioni di assemblaggio, saldatura o anche utilizzato per l'attracco sulla ISS (International Space Station), aiutano l'uomo nel lavoro o lo sostituiscono totalmente. Il braccio che ho costruito è più piccolo re
Braccio robotico con servomotore RC controllato da Fpga - Concorso Digilent: 3 passaggi
Braccio robotico con servomotore RC controllato da Fpga - Digilent Contest: braccio robotico con servomotore controllato da FPGA L'obiettivo di questo progetto è creare un sistema programmabile in grado di eseguire operazioni di saldatura su scheda perf. Il sistema è basato sulla scheda di sviluppo Digilent Basys3 e sarà in grado di saldare co
Strumento per braccio robotico taglierina a filo caldo: 8 passaggi (con immagini)
Strumento per braccio robotico taglierina a filo caldo: come parte del mio progetto di tesi presso il KADK di Copenaghen ho esplorato il taglio a filo caldo e la fabbricazione robotica. Per testare questo metodo di fabbricazione ho realizzato un attacco a filo caldo per il braccio del robot. Il filo doveva essere lungo 700 mm, ma il materiale