Sommario:

Braccio robotico controllato da Arduino con 6 gradi di libertà: 5 passaggi (con immagini)
Braccio robotico controllato da Arduino con 6 gradi di libertà: 5 passaggi (con immagini)

Video: Braccio robotico controllato da Arduino con 6 gradi di libertà: 5 passaggi (con immagini)

Video: Braccio robotico controllato da Arduino con 6 gradi di libertà: 5 passaggi (con immagini)
Video: Come ho costruito un BRACCIO ROBOTICO con ARDUINO e INTERFACCIA TOUCH - Come Funziona, Come è Fatto 2024, Luglio
Anonim
Braccio robotico controllato da Arduino con 6 gradi di libertà
Braccio robotico controllato da Arduino con 6 gradi di libertà
Braccio robotico controllato da Arduino con 6 gradi di libertà
Braccio robotico controllato da Arduino con 6 gradi di libertà
Braccio robotico controllato da Arduino con 6 gradi di libertà
Braccio robotico controllato da Arduino con 6 gradi di libertà

Faccio parte di un gruppo di robotica e ogni anno il nostro gruppo partecipa a una Mini-Maker Faire annuale. A partire dal 2014, ho deciso di costruire un nuovo progetto per l'evento di ogni anno. All'epoca, avevo circa un mese prima dell'evento per mettere insieme qualcosa e non avevo idea di cosa volessi fare.

Un altro membro ha pubblicato un collegamento a "un'interessante costruzione di un braccio robotico open source" che ha suscitato il mio interesse. I piani erano solo un braccio senza controlli o un controller. Considerando i miei limiti di tempo, mi è sembrato davvero un buon punto di partenza. L'unico problema era che non avevo strumenti per iniziare.

Con l'aiuto di alcuni membri del gruppo, sono riuscito a farmi tagliare e inviare le parti in acrilico, nonché le due parti stampate in 3D mostrate di seguito. In combinazione con alcuni ordini di hardware durante la notte e diversi viaggi al negozio di ferramenta locale, ho completato un progetto di lavoro la sera prima dell'evento!

Come di solito accade, c'è di più nella storia e diverse incarnazioni nella build che sono state condensate in ciò che vedi di seguito. Se sei interessato alla storia passata, puoi trovarne di più qui:

Passaggio 1: ciò di cui hai bisogno: hardware ed elettronica

Cosa ti serve - Hardware ed elettronica
Cosa ti serve - Hardware ed elettronica
Cosa ti serve - Hardware ed elettronica
Cosa ti serve - Hardware ed elettronica

Il progettista originale viveva in Europa e successivamente utilizzava misure metriche e materiali comuni lì. Ad esempio, il press-board che ha usato per il corpo era uno standard di 5 mm di spessore. Il materiale simile qui negli Stati Uniti è 1/8 , che ha uno spessore di circa 3,7 mm. Ciò ha lasciato uno spazio nelle aperture originariamente progettate per essere montate a pressione. Piuttosto che correggere i disegni, ho semplicemente usato la Gorilla Glue per fissare questi giunti.

Ha anche usato dadi e bulloni filettati M3 che non sono standard nel tuo negozio di ferramenta locale negli Stati Uniti. Piuttosto che convertirli in opzioni disponibili localmente, ho semplicemente ordinato l'hardware online come mostrato nell'elenco delle parti di seguito.

  • 22 - Distanziatori M3 x 0,5 x 23 mm
  • 15 - Distanziali M3 x 15 mm
  • 40 - Viti M3
  • Dadi esagonali M3
  • Viti M3 25mm
  • 1 - Primavera
  • Nastro di montaggio biadesivo da 3/4"
  • 5 - Servo SG 5010 TowerPro
  • 1 - SG92R TowerPro mini servo
  • 1 - Mini servo SG90 TowerPro
  • Testata a perno dritto a fila singola da 2,54 mm
  • 1 - Tagliere a metà misura
  • 1 - Cavi jumper "estensione" femmina/maschio - 40 x 6"
  • 1 - 12" x 24" Foglio acrilico blu o i pezzi tagliati al laser dal tuo fornitore di servizi preferito
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm distanziali per cuscinetti giunti stampati in 3D (vedi sotto)
  • 1 - Pannello di controllo *Vedi Nota nella Sezione Cablaggio
  • 1 - LED RGB (tricolore) diffuso da 10 mm
  • 1 - Arduino Uno
  • 1 - LCD standard 16x2 + extra - bianco su blu
  • 1 - Zaino LCD con caratteri i2c / SPI
  • 1 - Driver PWM/servo Adafruit a 16 canali e 12 bit
  • 1 - MCP3008 - ADC a 8 canali a 10 bit con interfaccia SPI
  • 3 - Sensore modulo breakout JoyStick *Vedere nota nella sezione cablaggio
  • Jack a canna DC
  • Adattatore da CA a CC
  • Cavi di prolunga servo - lunghezze assortite

Quasi tutte le parti di questo braccio sono state tagliate in acrilico da 1/8 di pollice. Tuttavia, i due distanziatori dei cuscinetti articolari devono essere stampati. Inoltre, il design originale prevedeva che le due basi del distanziatore del giunto fossero alte 7 mm rispetto all'albero del cuscinetto. Quando ho iniziato a montare il braccio superiore, è diventato subito chiaro che questi erano troppo alti a causa dell'altezza dei servi TowerPro. Ho dovuto farmi realizzare dei nuovi cuscinetti di giunzione con una base di soli 3 mm di altezza, che, tra l'altro, era ancora un po' troppo alta ma maneggevole. Dovrai prendere nota dell'altezza relativa dei tuoi servi e tenere conto della distanza tra i due bracci inferiori:

Altezza servo + squadretta servo + cuscinetto giunto + nastro biadesivo = 47 mm +/- 3 mm.

Passaggio 2: assemblaggio del braccio

Assemblaggio del braccio
Assemblaggio del braccio
Assemblaggio del braccio
Assemblaggio del braccio
Assemblaggio del braccio
Assemblaggio del braccio
Assemblaggio del braccio
Assemblaggio del braccio

Prima di iniziare, assicurati di centrare tutti i tuoi servi! Se in qualsiasi momento durante la costruzione, se si sposta manualmente la posizione del servo, sarà necessario ricentrarlo prima di fissarlo al telaio. Ciò è particolarmente importante con i servi a spalla che devono sempre muoversi all'unisono.

  1. Fissare il servo di base alla piastra di base superiore utilizzando le viti M3 da 25 mm e i dadi esagonali. Non stringere troppo!NOTA: potresti voler applicare un bloccaggio alle filettature per ridurre al minimo l'allentamento dei dadi durante l'uso.
  2. Se stai usando l'elenco delle parti che ho sopra, dovrai assemblare i 5 distanziatori di base infilando insieme 2 ciascuno dei distanziatori M3 x 0,5 x 23 mm e quindi fissandoli alla piastra di base superiore con dadi esagonali.
  3. Fissare la piastra di base inferiore ai distanziatori con 5 viti M3.
  4. Fissare la piastra della spalla alle due piastre di montaggio del servo utilizzando un adesivo acrilico sicuro. Ho usato Gorilla Glue qui. NOTA: Ognuna delle due piastre servo ha un foro nella parte posteriore che permette di inserire un distanziale di rinforzo collegandole. Assicurati che i fori siano allineati!* Mentre hai la colla a portata di mano, vai avanti e unisci la piastra di montaggio del polso con la piastra principale della pinza.* Facoltativamente, puoi anche incollare la piastra del servo del polso alle due piastre di articolazione del polso. Non l'ho fatto scegliendo invece di imbullonare questi insieme con i distanziatori come descritto di seguito.

  5. Fissare il gruppo spalla ora polimerizzato al servo di base. Ho usato il corno più largo incluso con il servo che era il corno di montaggio a sei stelo.
  6. L'aggiunta del telaio del braccio inferiore ai servi della spalla può essere difficile. Suggerisco di fissare le trombe ai telai del braccio inferiore prima di procedere. NOTA: assicurarsi di centrare i servi per il gruppo spalla PRIMA di fissarli al telaio. Questi due servi devono muoversi all'unisono e se sono disallineati causeranno al minimo il jitter del servo e, se disallineati a sufficienza, potrebbero danneggiare il telaio oi servi. * Ciascuno dei servi a spalla è montato con le staffe sul retro delle piastre di montaggio invece di far passare i servi attraverso le piastre - questo ti permetterà di spingere il quadrilatero sull'albero del servo in un angolo e fissare la vite. Non fissare ancora il servo alla piastra di montaggio. * Quindi, aggiungi il servo interno e monta il braccio
  7. Assemblare il telaio del braccio superiore e i servi spingendo i servi attraverso gli spazi nei bracci e quindi inserendo i distanziatori tra entrambe le piastre del braccio superiore e fissandoli con le viti M3.

  8. Aggiungi del nastro biadesivo sul retro del distanziatore dell'articolazione del gomito e taglia l'eccesso.
  9. Fissare il distanziatore alla parte inferiore del servo che fungerà da attuatore a gomito.
  10. Infilare il gruppo del braccio superiore nel telaio del gruppo del braccio inferiore e fissare le viti della squadretta del servo.
  11. Aggiungi distanziali di rinforzo tra due piastre del braccio inferiore. Ne ho usati due invece di tutti e quattro per abbassare il peso.
  12. Aggiungi del nastro biadesivo sul retro del distanziatore dell'articolazione del polso superiore e taglia l'eccesso.
  13. Attacca il distanziale alla parte inferiore del servo che fungerà da attuatore da polso.
  14. Fissare la placca da polso esterna alla squadretta del servo da polso e fissarla con una vite della squadretta.
  15. Assemblare la piastra del servo del polso con le due piastre dell'articolazione del polso e i distanziatori.
  16. Fissare il servo da polso sulla piastra del servo con la piastra del morsetto del servo.
  17. Dovrai fissare la squadretta del polso al servo prima di attaccare il gruppo pinza a quella squadretta a causa dell'apertura per la vite della squadretta bloccata.
  18. Montare in modo allentato i pezzi della pinza per adattarli prima di collegare la squadretta del servo della pinza al servo. Questo ti darà lo spazio per avvitare il clacson nel passaggio precedente.
  19. Attacca la squadretta della pinza al suo servo e stringi ulteriormente le viti che tengono i giunti della pinza. NOTA: non serrare completamente questi dadi e bulloni poiché devono essere allentati per consentire il movimento della pinza.

Passaggio 3: cablaggio e pannello di controllo

Cablaggio e pannello di controllo
Cablaggio e pannello di controllo
Cablaggio e pannello di controllo
Cablaggio e pannello di controllo
Cablaggio e pannello di controllo
Cablaggio e pannello di controllo

Ho costruito questo progetto come piattaforma di sviluppo per alcune idee che ho per un progetto educativo successivo. Quindi, la maggior parte delle mie connessioni sono semplici connettori Dupont. L'unica saldatura che ho fatto è stata per l'MCP3008. Se riesci a trovare una scheda breakout per questo componente, dovresti essere in grado di costruire questo braccio senza saldatura.

Ci sono 3 gruppi di componenti:

  1. Ingressi - Questi elementi raccolgono informazioni dall'utente ed è composto dai joystick e dall'ADC mcp3008.
  2. Uscite - Questi elementi trasmettono dati al mondo mostrando lo stato all'utente o aggiornando i servi con i dati di posizione. Questi elementi sono lo schermo LCD, lo zaino LCD, il LED RGB, la scheda del servoazionamento e infine i servi.
  3. Elaborazione - L'Arduino avvolge l'ultimo gruppo che riceve i dati dagli input e invia i dati agli output secondo le istruzioni del codice.

Lo schema di Fritzing sopra descrive in dettaglio le connessioni dei pin per tutti i componenti.

Ingressi

Inizieremo con gli input. I joystick sono dispositivi analogici, il che significa che presentano una tensione variabile come input per Arduino. Ciascuno dei tre joystick ha due uscite analogiche per X e Y (su, giù, sinistra destra) per un totale di 6 ingressi all'Arduino. Sebbene Arduino Uno abbia a disposizione 6 ingressi analogici, è necessario utilizzare due di questi pin per la comunicazione I2C con lo schermo e il servocontrollore.

Per questo motivo, ho incorporato il convertitore analogico-digitale (ADC) MCP3008. Questo chip accetta fino a 8 ingressi analogici e li converte in un segnale digitale sui pin di comunicazione SPI di Arduino come segue:

  • MCP Pin 1-6 > Uscite variabili dei joystick a pollice
  • MCP Pin 7 e 8 > Nessuna connessione
  • MCP Pin 9 (DGND) > Terra
  • MCP Pin 10 (CS/SHDN) > Uno Pin 12
  • MCP Pin 11 (DIN) > Uno Pin 11
  • MCP Pin 12 (DOUT) > Uno Pin 10
  • MCP Pin 13 (CLK) > Uno Pin 9
  • MCP Pin 14 (AGND) > Terra
  • MCP Pin 15 e 16 > +5V

Le connessioni del joystick nello schema sono solo mostrate a titolo di esempio. A seconda dei joystick acquistati e di come sono montati, le tue connessioni potrebbero differire dalle mie. Marche diverse del joystick possono avere un pinout diverso e possono anche orientare X e Y in modo diverso. Ciò che è importante è capire cosa rappresenta ogni input sull'ADC. Ogni pin rappresenta le seguenti relazioni nel mio codice:

  • Pin 1 - La base - I dati analogici su questo pin ruoteranno il servo più basso sul robot
  • Pin 2 - La spalla - I dati analogici su questo pin ruoteranno i due servi sopra il servo di base
  • Pin 3 - Il gomito - I dati analogici su questo pin ruoteranno il servo successivo verso l'alto dai servi a spalla
  • Pin 4 - Polso UP/DN - I dati analogici su questo pin ruoteranno il servo del polso, alzando e abbassando il gruppo pinza
  • Pin 5 - La pinza - I dati analogici su questo pin apriranno e chiuderanno la pinza
  • Pin 6 - Ruota polso - I dati analogici su questo pin ruoteranno la pinza

NOTA: quando si acquistano e si montano i joystick con pollice a cui si fa riferimento nell'elenco delle parti, tenere presente che l'orientamento dei moduli potrebbe essere diverso dal mio, quindi verificare le uscite x e y per una corretta connessione all'ADC. Inoltre, se stai usando il mio pannello di controllo stampato in 3D, i fori di montaggio potrebbero essere sfalsati dai miei.

Uscite

L'Adafruit PWM/Servo Controller rende questo progetto estremamente semplice. Basta collegare i servi ai connettori dei servi e tutte le connessioni di alimentazione e segnale sono gestite. A meno che tu non trovi servi con cavi extra lunghi, ti consigliamo di ottenere un set di prolunghe per cavi servo di lunghezze variabili in modo che tutti i cavi dei tuoi servo raggiungano la scheda del controller.

I servi sono collegati come segue:

  • Posizione 0 - Servo base
  • Posizione 1 - Servo a spalla (cavo servo a Y)
  • Posizione 2 - Servo a gomito
  • Posizione 3 - Polso 1 Servo
  • Posizione 4 - Servo pinza
  • Posizione 5 - Polso 2 Servo

Inoltre, VCC e V+ sono entrambi collegati a +5 Volt e GND è collegato a Ground.

NOTA 1: Una GRANDE nota qui: la tensione di alimentazione per l'intero progetto sta entrando attraverso la morsettiera di alimentazione sulla scheda di controllo servo. Il pin V+ sul servocontrollore sta effettivamente fornendo alimentazione dalla morsettiera al resto del circuito. Se hai bisogno di programmare il tuo Uno, ti consiglio vivamente di scollegare il pin V+ prima di collegare Uno al PC poiché l'assorbimento di corrente dai servi potrebbe danneggiare la tua porta USB.

NOTA 2: sto usando un adattatore a parete da 6 V CA a CC per alimentare il progetto. Raccomando un adattatore in grado di fornire almeno 4 A di corrente in modo che quando uno o più dei servi vengono collegati, l'improvviso picco di corrente non spegne il sistema e ripristina Arduino.

Lo schermo LCD 16X2 è collegato all'Adafruit LCD Backpack per sfruttare l'interfaccia I2C già utilizzata dal Servo Controller. L'SCL sul Servo Controller e il CLK sullo Zaino si collegano entrambi al Pin A5 sull'Uno. Allo stesso modo, l'SDA sul Servo Controller e il DAT sullo Zaino si collegano entrambi al Pin A4 sull'Uno. Inoltre, 5V è collegato a +5 Volt e GND è collegato a terra. LAT sullo zaino non è collegato a nulla.

Infine, il LED RGB è collegato ai pin 7 (ROSSO), 6 (Verde) e 5 (Blu) sull'Uno. La gamba di terra del LED è collegata a terra tramite un resistore da 330 Ohm.

in lavorazione

Ultimo ma non meno importante, il resto delle connessioni Arduino non elencate sopra sono le seguenti: il pin 5V è collegato a +5 Volt e GND è collegato a massa.

Nella mia configurazione, ho usato le guide laterali della breadboard per legare insieme tutte le linee di alimentazione e di terra, nonché i pin I2C per tutti i dispositivi.

Passaggio 4: codice

Codice
Codice

Come affermato in precedenza, originariamente ho realizzato questo progetto come dimostrazione per la mia Maker Faire locale. Volevo che fosse qualcosa con cui bambini e adulti potessero giocare mentre erano al nostro stand. A quanto pare, era molto più popolare di quanto avessi immaginato, al punto che i bambini stavano litigando per questo. Quindi, quando è arrivato il momento di riscrivere, ho incorporato una "Modalità demo" che implementa un limite di tempo.

Il braccio sta lì in attesa che qualcuno muova un joystick e quando lo fanno, inizia un timer di 60 secondi. Alla fine dei 60 secondi, smette di ricevere input dall'utente e "Riposa" per 15 secondi. I brevi periodi di attenzione essendo quello che sono, questo periodo di riposo ha notevolmente ridotto la contesa per il tempo di bastone.

Operazione base

Il codice elencato nella sezione di riferimento di seguito è piuttosto semplice. Un array tiene traccia dei 6 giunti con le estensioni minime, massime, una posizione iniziale e la posizione corrente. Quando il braccio è acceso, la funzione di avvio definisce le librerie necessarie per parlare con l'MCP3008, lo zaino LCD (e successivamente lo schermo) e definisce i pin LED. Da lì esegue un controllo di base dei sistemi e procede a casa del braccio. La funzione home inizia con la pinza e arriva fino alla base in modo da ridurre al minimo la possibilità di grippaggio in condizioni normali. Se il braccio è completamente esteso, potrebbe essere meglio posizionare manualmente il braccio prima di accenderlo. Dal momento che i servi generici non forniscono un feedback della sua posizione, dobbiamo posizionarli ciascuno in un punto predefinito e tenere traccia di quanto lontano ciascuno si è spostato.

Il ciclo principale inizia prima in una modalità di attesa, cercando che i joystick si allontanino dalla loro posizione centrale. Una volta che ciò accade, il ciclo principale cambia stato in stato di conto alla rovescia. Man mano che l'utente sposta ciascun joystick, la posizione relativa del joystick dal centro si somma o sottrae dalla posizione corrente nota e aggiorna il servo appropriato. Una volta che un servo ha raggiunto il limite definito in una direzione, il joystick si ferma. L'utente dovrà spostare il joystick nell'altra direzione per spostarlo di nuovo. Questo è un limite software da imporre ai servo indipendentemente dai loro arresti hardware. Questa funzione consente di mantenere i movimenti del braccio all'interno di un'area operativa specificata, se necessario. Se il joystick viene rilasciato al centro, il movimento si interrompe.

Questo codice è solo un punto di partenza generale. Puoi aggiungere le tue modalità come desideri. Un esempio potrebbe essere una modalità di esecuzione continua senza timer o forse aggiungere i pulsanti del joystick come input e scrivere una modalità di registrazione/riproduzione.

Passaggio 5: collegamenti e risorse

Riferimenti del braccio

  • Post che ha ispirato questo progetto
  • Original Designers blog postsIl mio braccio roboticoLe mie mini pinze servo e il braccio robotico completato Moltiplica il braccio robotico e l'elettronica
  • Braccio Thingiverse
  • Mini servo pinza Thingiverse

Libri software

  • Risorse del controller PWM/servo di Adafruit
  • Libreria MCP3008
  • Scheda tecnica MCP3008

Pannello di controllo e codice

  • Disegno Tinkercad del Pannello che ho realizzato
  • Archivio del codice corrente

Consigliato: