Taula de continguts:

Braç robòtic controlat Arduino amb 6 graus de llibertat: 5 passos (amb imatges)
Braç robòtic controlat Arduino amb 6 graus de llibertat: 5 passos (amb imatges)

Vídeo: Braç robòtic controlat Arduino amb 6 graus de llibertat: 5 passos (amb imatges)

Vídeo: Braç robòtic controlat Arduino amb 6 graus de llibertat: 5 passos (amb imatges)
Vídeo: Leap Motion SDK 2024, Juliol
Anonim
Braç robòtic controlat Arduino amb 6 graus de llibertat
Braç robòtic controlat Arduino amb 6 graus de llibertat
Braç robòtic controlat Arduino amb 6 graus de llibertat
Braç robòtic controlat Arduino amb 6 graus de llibertat
Braç robòtic controlat Arduino amb 6 graus de llibertat
Braç robòtic controlat Arduino amb 6 graus de llibertat

Sóc membre d'un grup de robòtica i cada any el nostre grup participa en una Fira Mini-Maker anual. A partir del 2014, vaig decidir construir un nou projecte per a l’esdeveniment de cada any. Aleshores, tenia aproximadament un mes abans de l’esdeveniment per preparar alguna cosa i no tenia ni idea del que volia fer.

Un company membre va publicar un enllaç a "una interessant construcció de braços robòtics de codi obert" que va assolir el meu interès. Els plans eren només un braç sense comandaments o un controlador. Tenint en compte les meves limitacions de temps, em va semblar un bon punt de partida. L’únic problema era que realment no tenia eines per començar.

Amb l’ajut d’alguns membres del grup, vaig poder tallar i enviar les parts d’acrílic, així com les dues parts impreses en 3D que es mostren a continuació. Combinat amb algunes comandes de maquinari durant la nit i diversos viatges a la ferreteria local, vaig acabar un projecte de treball la nit abans de l’esdeveniment.

Com sol passar, hi ha més a la història i diverses encarnacions a la construcció que s’ha condensat al que veieu a continuació. Si teniu interès en la història anterior, en podeu trobar més aquí:

Pas 1: què necessiteu: maquinari i electrònica

Què necessiteu: maquinari i electrònica
Què necessiteu: maquinari i electrònica
Què necessiteu: maquinari i electrònica
Què necessiteu: maquinari i electrònica

El dissenyador original del projecte va viure a Europa i, posteriorment, va utilitzar mesures mètriques i materials habituals allà. Per exemple, el tauler de premsa que va utilitzar per al cos tenia un estàndard de 5 mm de gruix. Un material similar aquí als EUA fa 1/8 , que fa aproximadament 3,7 mm de gruix. Això va deixar un buit a les obertures que originalment es van dissenyar per instal·lar-les a la premsa. En lloc de corregir els dibuixos, simplement vaig fer servir Gorilla Glue per assegurar aquestes juntes.

També va utilitzar cargols i rosques M3 que no són estàndard a la ferreteria local dels EUA. En lloc de convertir-los en opcions disponibles a nivell local, simplement he demanat el maquinari en línia tal com es mostra a la llista de peces que hi ha a continuació.

  • 22 - Distàncies M3 x 0,5 x 23 mm
  • 15 - Distàncies M3 x 15mm
  • 40 - Cargols M3
  • Femelles hexagonals M3
  • Cargols M3 de 25 mm
  • 1 - Primavera
  • Cinta de muntatge de doble cara de 3/4"
  • 5 - Servo SG 5010 TowerPro
  • 1 - Mini servo SG92R TowerPro
  • 1 - mini servo SG90 TowerPro
  • Capçal de pas recte d'una sola fila de 2,54 mm
  • 1 - Tauler de pa de mida mitjana
  • 1 - cables de pont "Extensió" femella / home - 40 x 6"
  • 1 - 12 "x 24" Full acrílic blau o les peces tallades amb làser del vostre proveïdor de serveis preferit
  • 2 - 3mm x 20mm + 4mm x 5mm separadors de coixinets impresos en 3D (vegeu més avall)
  • 1 - Tauler de control * Vegeu la nota a la secció de cablejat
  • 1 - LED RGB difús (tricolor) de 10 mm
  • 1 - Arduino Uno
  • 1 - LCD estàndard de 16x2 + extres - blanc sobre blau
  • 1 - Motxilla LCD de caràcter i2c / SPI
  • 1 - Adafruit PWM / Servo Driver de 16 canals de 12 bits
  • 1 - MCP3008 - ADC de 10 canals de 8 canals amb interfície SPI
  • 3 - Sensor del mòdul JoyStick Breakout * Vegeu la nota a la secció de cablejat
  • DC Barrel Jack
  • Adaptador de CA a CC
  • Cables d'extensió servo: longituds variades

Gairebé totes les parts d’aquest braç es van tallar a partir d’acrílic de 1/8 de polzada. No obstant això, cal imprimir els dos separadors de coixinets. A més, l'original dissenyat demanava que les dues bases espaiadores d'unió tinguessin una alçada de 7 mm respecte a l'eix del coixinet. Quan vaig començar el muntatge de la part superior del braç, es va saber ràpidament que eren massa alts a causa de l'alçada dels servos TowerPro. Vaig haver de tenir nous coixinets fabricats amb una base de només 3 mm d’alçada, que, per cert, encara era una mica massa alta però manejable. Voldreu prendre nota de l’alçada relativa dels servos i tenir en compte la distància entre els dos braços inferiors:

Servo d'alçada + banya de servo + coixinet d'articulació + cinta de doble cara = 47mm +/- 3mm.

Pas 2: Muntatge del braç

Muntatge del braç
Muntatge del braç
Muntatge del braç
Muntatge del braç
Muntatge del braç
Muntatge del braç
Muntatge del braç
Muntatge del braç

Abans de començar, assegureu-vos de centrar tots els servos. Si en algun moment de la construcció, si moveu manualment la posició del servo, haureu de fer-lo més recent abans de fixar-lo al marc. Això és especialment important amb els servos d'espatlla que sempre necessiten moure's a l'uníson.

  1. Connecteu el servo base a la placa base superior mitjançant cargols M3 de 25 mm i femelles hexagonals. NOTA: És possible que vulgueu aplicar un tancament hermètic als fils per minimitzar el despreniment de les femelles durant l'ús.
  2. Si feu servir la llista de peces que tinc a sobre, voldreu muntar els cinc separadors de base enfilant 2 cadascun dels separadors M3 x 0,5 x 23 mm i, tot seguit, fixant-los a la placa base superior amb femelles hexagonals.
  3. Connecteu la placa base inferior als separadors amb 5 cargols M3.
  4. Col·loqueu la placa d'espatlla a les dues plaques de muntatge servo amb un adhesiu acrílic segur. He utilitzat Gorilla Glue aquí. NOTA: Cadascuna de les dues plaques servo té un forat a la part posterior que permet inserir un separador de reforç que les connecti. Assegureu-vos que els forats s’alineen! * Mentre tingueu la cola a mà, aneu a la placa de muntatge del canell amb la placa principal de la pinça. * Opcionalment, també podeu enganxar la placa de servo del canell a les dues plaques d’unió del canell. En lloc d'això, no vaig fer aquesta elecció per unir-los junt amb separacions, tal com es descriu a continuació.

  5. Connecteu el conjunt de les espatlles ara curat al servo base. He utilitzat la trompa més ampla inclosa amb el servo que era la trompa de muntatge de sis tiges.
  6. Afegir el marc del braç inferior als servos de les espatlles pot ser complicat. Us suggereixo fixar les banyes als marcs del braç inferior abans de continuar. NOTA: Assegureu-vos de centrar els servos per al conjunt de l'espatlla ABANS de fixar-los al marc. Aquests dos servos s’han de moure a l’uníson i, si no estan alineats, provocaran com a mínim fluctuacions de servo i, si són prou desalineats, podrien danyar el quadre o els servos. * Cadascun dels servos d'espatlla es munta amb els suports a la part posterior de les plaques de muntatge en lloc de passar-los per les plaques; això us permetrà empènyer la banya sobre l'eix del servo en un angle i fixar el cargol. Encara no fixeu el servo a la placa de muntatge. * A continuació, afegiu el servo interior i munteu el braç
  7. Muntar el marc i els servos del braç superior empenyent els servos a través dels espais dels braços i inserir els separadors entre les dues plaques del braç superior i assegurar-los amb cargols M3.

  8. Afegiu cinta adhesiva de doble cara a la part posterior del separador de l'articulació del colze i retalleu l'excés.
  9. Connecteu l’espaiador a la part inferior del servo que actuarà com a actuador del colze.
  10. Feu lliscar el conjunt del braç superior al marc del conjunt del braç inferior i assegureu els cargols del servocorn.
  11. Afegiu separadors de reforç entre dues plaques inferiors del braç. Vaig fer servir dos en lloc de tots quatre per baixar el pes.
  12. Afegiu cinta adhesiva de doble cara a la part posterior de l’espaiador superior del canell i retalleu l’excés.
  13. Connecteu l’espaiador a la part inferior del servo que actuarà com a actuador de canell.
  14. Connecteu la placa externa del canell a la banya del servo del canell i fixeu-la amb un cargol de banya.
  15. Munteu la placa servo del canell amb les dues plaques d’unió del canell i els separadors.
  16. Assegureu el servo del canell a la placa servo amb la placa servo servo.
  17. Haureu d’assegurar la banya del canell al servo abans d’enganxar el conjunt de la pinça a la banya a causa de l’obertura del cargol de la banya bloquejat.
  18. Munteu lliurement les peces de la pinça per ajustar-les abans d’enganxar la trompa del servo de la pinça al servo. Això us permetrà espai per cargolar la banya al pas anterior.
  19. Col·loqueu la banya de la pinça al servo i estrenyeu encara més els cargols que subjecten les juntes de la pinça. NOTA: no estreneu completament aquestes femelles i cargols, ja que cal deixar-los anar perquè es pugui moure la pinça.

Pas 3: cablejat i tauler de control

Cablejat i tauler de control
Cablejat i tauler de control
Cablejat i tauler de control
Cablejat i tauler de control
Cablejat i tauler de control
Cablejat i tauler de control

Vaig construir aquest projecte com a plataforma de desenvolupament d’algunes idees que tinc per a un projecte educatiu posterior. Per tant, la majoria de les meves connexions són simples connectors dupont. L’única soldadura que vaig fer va ser per l’MCP3008. Si podeu trobar un tauler de ruptura per a aquest component, hauríeu de ser capaç de construir aquesta soldadura de braç lliure.

Hi ha 3 grups de components:

  1. Entrades: aquests elements agafen informació de l'usuari i es compon dels joysticks i el mcp3008 ADC.
  2. Sortides: aquests elements transmeten dades al món mostrant l'estat a l'usuari o actualitzant els servos amb dades de posició. Aquests elements són la pantalla LCD, la motxilla LCD, el LED RGB, la placa del controlador Servo i, finalment, els servos.
  3. Processament: l’Arduino completa l’últim grup que pren les dades de les entrades i les expulsa a les sortides segons les instruccions del codi.

L'esquema Fritzing anterior detalla les connexions de pins de tots els components.

Entrades

Començarem per les entrades. Els joysticks són dispositius analògics, és a dir, presenten una tensió variable com a entrada a l’Arduino. Cadascun dels tres joysticks té dues sortides analògiques per a X i Y (amunt, avall, esquerra dreta) fent un total de 6 entrades a l'Arduino. Tot i que l’Arduino Uno té 6 entrades analògiques disponibles, hem d’utilitzar dos d’aquests pins per a la comunicació I2C a la pantalla i al servocontrolador.

Per això, vaig incorporar el convertidor analògic a digital (ADC) MCP3008. Aquest xip admet fins a 8 entrades analògiques i les converteix en un senyal digital a través dels pins de comunicació SPI de l’Arduino de la següent manera:

  • Pins MCP 1-6> Sortides variables dels joysticks del polze
  • Pins MCP 7 i 8> Sense connexió
  • 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
  • Pin MCP 15 i 16> + 5V

Les connexions del joystick de l'esquema només es mostren com a exemple. Segons quins joysticks comprin i com es muntin, les vostres connexions poden diferir de les meves. Les diferents marques del joystick poden tenir un pinout diferent i també poden orientar X i Y de manera diferent. L’important és entendre què representen cada entrada de l’ADC. Cada pin representa les relacions següents al meu codi:

  • Pin 1 - Base: les dades analògiques d’aquest pin giraran el servo més baix del robot
  • Pin 2 - The Shoulder: les dades analògiques d’aquest pin giraran els dos servos per sobre del servo base
  • Pin 3: el colze: les dades analògiques d’aquest pin giraran el següent servo cap amunt des dels servos de l’espatlla
  • Pin 4: canell UP / DN: les dades analògiques d’aquest pin giraran el servo del canell, elevant i baixant el conjunt de la pinça
  • Pin 5: la pinça: les dades analògiques d’aquest pin obriran i tancaran la pinça
  • Pin 6: girar el canell: les dades analògiques d’aquest pin giraran la pinça

NOTA: Quan compreu i munteu els joysticks de polze referenciats a la llista de peces, tingueu en compte que l’orientació dels mòduls pot diferir de la meva, de manera que proveu les sortides xy per obtenir una connexió adequada amb l’ADC. A més, si utilitzeu el meu tauler de control imprès en 3D, és possible que els forats de muntatge es compensin dels meus.

Sortides

El controlador Adafruit PWM / Servo fa que aquest projecte sigui molt senzill. Simplement connecteu els Servos als capçalers del servo i es gestionen totes les connexions de potència i senyal. Tret que trobeu servos amb cables extra llargs, voldreu obtenir un conjunt d’extensions de cables de servo en diferents longituds perquè tots els cables de servo arribin a la placa del controlador.

Els servos es connecten de la següent manera:

  • Posició 0 - Servo base
  • Posició 1 - Servo d'espatlla (cable Servo Y)
  • Posició 2 - Servo de colze
  • Posició 3 - Servo de canell 1
  • Posició 4 - Servo de pinça
  • Posició 5 - Servo de canell 2

A més, VCC i V + estan connectats a +5 volts i GND a terra.

NOTA 1: Una gran nota aquí: la tensió d'alimentació per a tot el projecte entra a través del bloc de terminals d'alimentació de la placa de control de servo. El pin V + del Servo Controller realment subministra energia des del bloc de terminals a la resta del circuit. Si heu de programar l’Uno, us recomano desconnectar el pin V + abans de connectar l’Uno al vostre ordinador, ja que el tracte actual dels servos podria danyar el vostre port USB.

NOTA 2: Estic fent servir un adaptador de paret de 6 V CA a CC per alimentar el projecte. Recomano un adaptador que pugui subministrar almenys 4A de corrent, de manera que, quan un o més servos s’uneixin, l’augment sobtat de corrent no enrosseixi el sistema i restableixi l’Arduino.

La pantalla LCD 16X2 està connectada a la motxilla LCD Adafruit per aprofitar la interfície I2C que ja està utilitzant el Servo Controller. El SCL del Servo Controller i el CLK de la motxilla es connecten al pin A5 de l’Uno. De la mateixa manera, l’SDA del Servo Controller i el DAT de la motxilla es connecten al pin A4 de l’Uno. A més, 5V està connectat a +5 volts i GND a terra. LAT a la motxilla no està connectat a res.

Finalment, el LED RGB està connectat als pins 7 (VERMELL), 6 (verd) i 5 (blau) de l’Uno. La pota de terra del LED està connectada a terra mitjançant una resistència de 330 Ohm.

Processament

Per últim, però no menys important, la resta de connexions Arduino no esmentades anteriorment són les següents: el pin 5V està connectat a +5 volts i el GND està connectat a terra.

A la meva configuració, he utilitzat els rails laterals de la placa per connectar totes les línies d’alimentació i de terra, així com els pins I2C de tots els dispositius.

Pas 4: Codi

Codi
Codi

Com s'ha dit anteriorment, originalment vaig construir aquest projecte com a demostració per a la meva Maker Faire local. Tenia la intenció que fos per a nens i adults amb què jugar al nostre estand. Resulta que era molt més popular del que havia imaginat, tant, que els nens s’hi barallaven. Per tant, quan va arribar el moment de tornar a escriure, vaig incorporar un "Mode de demostració" que implementa un límit de temps.

El braç està allà esperant que algú mogui un joystick i, quan ho faci, comença un temporitzador de 60 segons. Al final dels 60 segons, deixa de rebre l'entrada de l'usuari i "Reposa" durant 15 segons. Aquests períodes de curta atenció són el que són, aquest període de descans va reduir considerablement la disputa pel temps de manteniment.

Operació bàsica

El codi que apareix a la secció de referència següent és força senzill. Una matriu fa un seguiment de les 6 juntes amb extensions mínimes, màximes, una posició inicial i la posició actual. Quan s’activa el braç, la funció d’inici defineix les biblioteques necessàries per parlar amb l’MCP3008, la motxilla LCD (i posteriorment la pantalla) i defineix els pins LED. A partir d’aquí fa una comprovació bàsica dels sistemes i es dirigeix cap al braç. La funció inicial comença amb la pinça i baixa fins a la base de manera que minimitzi la possibilitat d’enquadernació en condicions normals. Si el braç està completament estès, potser és millor acollir-lo manualment abans d’engegar-lo. Com que els servicis genèrics no proporcionen comentaris sobre la seva posició, hem de situar-los en un punt predefinit i fer un seguiment de fins a quin punt es van moure.

El bucle principal comença primer en un mode d’espera: busca els joysticks per allunyar-se de la seva posició central. Un cop això passi, el bucle principal canvia d'estats a estat de compte enrere. A mesura que l'usuari mou cada joystick, la posició relativa del joystick des del centre se sumarà o restarà de la posició actual coneguda i actualitzarà el servo adequat. Un cop un servo ha assolit el límit definit en una direcció, el joystick s’atura. L'usuari haurà de moure el joystick en l'altra direcció per tornar-lo a moure. Aquest és un límit de programari imposat als servos independentment de les parades de maquinari. Aquesta característica us permet mantenir els moviments del braç dins d'una àrea operativa especificada si cal. Si es deixa anar el joystick al centre, el moviment s'aturarà.

Aquest codi és només un punt de partida general. Podeu afegir els vostres propis modes com vulgueu. Un exemple pot ser un mode d’execució contínua sense temporitzador o potser afegir-hi els botons del joystick com a entrades i escriure un mode de gravació / reproducció.

Pas 5: enllaços i recursos

Referències de braços

  • Publicació que va inspirar aquest projecte
  • Publicacions del bloc de dissenyadors originals El meu propi braç robòtic Els meus mini servos de pinça i el braç robòtic complet Multiplica el braç robòtic i l’electrònica
  • Braç Thingiverse
  • Mini Servo Pinça Thingiverse

Llibres de programari

  • Adafruit PWM / Servo Controller Resources
  • Biblioteca MCP3008
  • MCP3008 Full de dades

Tauler de control i codi

  • Dibuix de Tinkercad del tauler que he fet
  • Dipòsit de codi actual

Recomanat: