Construye un brazo robótico de 4 DOF: cinemática y PCA9685
Un brazo robótico de sobremesa que alcanza las posiciones comandadas: controlado por PCA9685 y cinemática inversa comprendida en el simulador antes de conectar nada.
Un brazo robótico es el primer proyecto en el que un robot deja de moverse por ahí y empieza a hac algo en el mundo. Un seguidor de línea sigue; un esquivador de obstáculos esquiva; un brazo alcanza, posiciona y agarra. Ese cambio —de conducir a manipular— trae la única idea sobre la que se construye todo manipulador: la cinemática, la geometría que conecta los ángulos que puede comandar con el punto del espacio que realmente quiere.
Este itinerario de construcción trata el brazo exactamente como eso: una lección de cinemática que puede sostener en la mano. Empieza entendiendo cómo un brazo de dos eslabones convierte ángulos articulares en posición de la herramienta y de vuelta, reúne las piezas que necesita un brazo con servos y aprende qué hace cada una, y luego —antes de gastar nada o destrozar un engranaje— explora el alcance, las dos soluciones de codo y las posturas inalcanzables en el simulador del navegador. Solo entonces cablea el brazo real, calibra sus servos a mano y ejecuta la cinemática inversa en hardware.
Recorra el árbol tecnológico de abajo arriba. Cada nodo se abre una vez hechos sus prerrequisitos, y su progreso se guarda en este dispositivo, así que puede construir el brazo en un fin de semana sin perder el sitio.
Lista de materiales
| Componente | Cant. | Coste aprox. | Notas |
|---|---|---|---|
| Arduino Uno | 1 | $5–8 | Cualquier placa sirve: aquí solo habla I²C |
| Driver de 16 canales PCA9685 | 1 | $3 | No es estrictamente necesario para cuatro servos, pero es la herramienta adecuada |
| Servo SG90 | 4 | $8 | Compre un MG90S para el hombro: engranajes metálicos, y es la articulación que falla |
| Kit de brazo de 4 GDL | 1 | $12–25 | El acrílico va bien para aprender; el aluminio flexa mucho menos |
| Fuente de 5–6 V, ≥3 A | 1 | $8 | Cuatro servos en bloqueo a la vez son ~2.6 A |
| Condensador de 1000 µF | 1 | $1 | En paralelo a V+, cerca del terminal |
| Horquillas de servo de repuesto | 1 juego | $2 | Va a colocar una mal. Le pasa a todo el mundo |
Total: aproximadamente $40–60.
Dos compras merece la pena pensar en vez de darlas por supuestas. Un MG90S con engranajes metálicos en el hombro cuesta un dólar más y es la articulación que soporta el peso de todas las demás: los engranajes de nailon ahí se rompen bajo carga sostenida, no bajo un golpe. Y una fuente dimensionada para el bloqueo, porque el fallo distintivo de un brazo es que cuando colisiona con su propio bastidor o agarra algo sólido, todos los servos se bloquean a la vez.
Mida su brazo antes de escribir una línea de código
La cinemática inversa es aritmética sobre longitudes de eslabón. Estos cuatro números son toda la entrada, y obtenerlos de la ficha de producto en vez de con una regla es el motivo más común de que un brazo alcance con confianza al sitio equivocado.
| Símbolo | Medir desde | Hasta | Típico |
|---|---|---|---|
L1 |
Eje de la articulación del hombro | Eje de la articulación del codo | 90–105 mm |
L2 |
Eje de la articulación del codo | El punto real de prensión de la pinza | 80–95 mm |
Esa última fila hace más trabajo de lo que parece. «El punto real de prensión de la pinza» se mueve
cuando se cierran las mordazas, y
dimensionar la propia pinza es un problema aparte
de posicionarla, con sus propios límites, su propia aritmética y sus propios modos de fallo. Si su
brazo alcanza la pieza y luego la suelta o la aplasta, la respuesta no está en esta página: empiece
por el simulador de pinzas.
| h | Superficie de la mesa | Eje de la articulación del hombro | 50–70 mm |
| d | Eje de rotación de la base | Eje del hombro, en horizontal | 0–15 mm |
Mida entre ejes de articulación, no entre bordes de soporte. El eje es el centro del estriado de salida del servo, a menudo 5–10 mm por dentro del soporte visible. En un eslabón de 95 mm un error de 10 mm es más del 10 %, y produce un brazo sistemáticamente corto de una forma que ninguna ganancia corrige.
Esas dos longitudes le dan el espacio de trabajo de inmediato:
maximum reach = L1 + L2 e.g. 100 + 90 = 190 mm
minimum reach = |L1 - L2| e.g. |100 - 90| = 10 mm
El espacio de trabajo es una corona, no un disco. Hay un hueco en el centro al que el brazo no puede llegar físicamente, y que un objetivo cerca de la base vuelva como «inalcanzable» es un comportamiento correcto y no un fallo.
Construir por hitos
El orden de montaje de aquí contiene un paso casi imposible de deshacer, y es el paso 2.
| # | Hito | La prueba | Un aprobado se ve así |
|---|---|---|---|
| 1 | El driver responde | Escanee el bus I²C | Aparece 0x40; V+ tiene su propia alimentación |
| 2 | Servos Referenciados antes del montaje | Mande cada servo a 90° antes de presionar una horquilla | Cada horquilla queda montada en la pose de cero que usted quiere |
| 3 | Topes por servo | Avance hacia fuera desde el centro hasta que el servo zumbe | Tiene cuentas mínima y máxima por servo, no las de la biblioteca |
| 4 | Mapa articular registrado | Mande cada articulación a lo largo de su rango | Offset, signo y límites mecánicos anotados para las cuatro |
| 5 | Comprobación de colisiones | Recorra despacio cada articulación por todo su rango | Nada golpea el bastidor; los límites reflejan lo que observó |
| 6 | Cinemática directa | Fije ángulos conocidos, calcule la posición de la herramienta y mídala | Lo calculado y lo medido coinciden dentro de unos pocos milímetros |
| 7 | Ida y vuelta | Pase la posición calculada de vuelta por la IK | Los ángulos que salen coinciden con los que entraron |
| 8 | Los cuatro cuadrantes | Pida objetivos delante, detrás, izquierda, derecha | Los cuatro funcionan: si dos se reflejan, usó atan y no atan2 |
| 9 | Alcanzabilidad | Pida un objetivo muy lejos de L1 + L2 |
Un «inalcanzable» limpio, no un NaN ni un estiramiento |
| 10 | Movimiento suave | Mande un movimiento grande | Interpolado en pasos, todas las articulaciones a la vez, sin tirón |
| 11 | Repetibilidad | Vuelva a la misma pose diez veces desde direcciones distintas | Dispersión de llegada medida: ese número es su backlash |
El hito 2 no se recupera después. Una horquilla de servo tiene estriado —unos 20 dientes— así que solo encaja en posiciones discretas separadas unos 18°. Monte primero y calibre después, y puede encontrar una articulación cuyo rango usable está desplazado 40° sin forma mecánica de arreglarlo. Alimente cada servo, mande 90°, y entonces presione la horquilla.
Muévalo con suavidad, siempre
Un servo al que se le manda un ángulo nuevo va allí a plena velocidad. En un brazo eso significa un movimiento violento, un pico de corriente a través de los cuatro servos y un golpe mecánico por los engranajes de nailon, multiplicado por la palanca del propio brazo.
// Interpolate every joint together, so the tool takes a sensible path and
// no single servo carries the whole transition.
void moveTo(float base, float shoulder, float elbow, int steps, int stepMs) {
static float cur[3] = {0, 0, 0};
const float target[3] = {base, shoulder, elbow};
for (int s = 1; s <= steps; s++) {
const float t = (float)s / steps;
for (int j = 0; j < 3; j++) {
const float a = cur[j] + (target[j] - cur[j]) * t;
pwm.setPWM(JOINT[j].channel, 0, countsFor(JOINT[j], a));
}
delay(stepMs);
}
memcpy(cur, target, sizeof(cur));
}
Interpolar todas las articulaciones a la vez importa tanto como el suavizado en sí. Mover las articulaciones una a una envía la herramienta por un arco extraño a través del espacio de trabajo: más lento, y con mucha más probabilidad de chocar con algo por el camino.
Cómo se ve un buen resultado
| Medición | Kit de acrílico, SG90 | Aluminio, MG90S |
|---|---|---|
| Repetibilidad, mismo sentido de aproximación | ±3–5 mm | ±1–2 mm |
| Repetibilidad, sentidos de aproximación mezclados | ±8–15 mm | ±3–5 mm |
| Carga útil a plena extensión | 20–30 g | 40–60 g |
| Flecha a plena extensión, sin carga | 3–8 mm | 1–3 mm |
La diferencia entre las dos filas de repetibilidad es el backlash, y es la mayor fuente de error de un brazo de hobby. Cuatro grados de juego en el hombro sobre un alcance de 190 mm son más de 13 mm en la pinza. La respuesta práctica no es mejor matemática: es acercarse siempre a un objetivo desde la misma dirección, lo que elimina por completo el cambio de signo y convierte un error de ±13 mm en un desvío repetible que puede calibrar fuera.
Resolución de problemas
| Síntoma | Causa probable | Arreglo |
|---|---|---|
| El brazo alcanza a un punto completamente equivocado | Horquilla montada en un ángulo arbitrario | Referencie todos los servos a 90° antes de montar las horquillas |
| El rango de una articulación está desplazado ~18° | Horquilla con un diente de estriado de más | Quítela y vuelva a montarla: el software no puede arreglar esto |
| Alcanza bien por delante, se refleja por detrás | atan en vez de atan2 |
atan2 resuelve los cuatro cuadrantes |
| La IK devuelve NaN y el brazo se estira | Argumento de acos fuera de −1..1 |
Compruebe la alcanzabilidad antes de la trigonometría |
| Los objetivos cerca de la base fallan | Dentro del hueco de alcance mínimo | Comportamiento correcto: el espacio de trabajo es una corona |
| La placa se reinicia cuando se mueve el brazo | Corriente de servo a través del Arduino | Alimentación V+ aparte, masa común, condensador de 1000 µF |
| El brazo se hunde a plena extensión | Hombro más allá de su par cómodo | MG90S en el hombro; compense con una goma elástica |
| Zumba mientras mantiene una pose | El servo luchando contra una carga en su límite | Reduzca la carga, o use detach cuando no haga falta mantener |
| Picos de velocidad articular cerca de la extensión total | Atravesar una singularidad | Mantenga las trayectorias dentro de un margen del borde |
| Aterriza distinto según de dónde venga | Backlash | Acérquese siempre desde la misma dirección |
| Todos los ángulos quedan sistemáticamente cortos | El oscilador del PCA9685 no es exactamente de 25 MHz | Mida la frecuencia real de salida y llame a setOscillatorFrequency |
Hacia dónde llevarlo después
Añada un movimiento en línea recta. Interpolar en espacio articular, como hace el código de arriba, hace que la herramienta siga una curva. Interpolar en espacio cartesiano —calculando la IK en cada paso a lo largo de una recta— hace que viaje recto, que es lo que necesita cualquier pick-and-place real. Es un cambio pequeño, y es donde las singularidades dejan de ser teóricas: una trayectoria recta atravesando casi la extensión total exige velocidades articulares enormes.
Añada una cámara y cierre el lazo. Todo lo de aquí es a lazo abierto: el brazo va donde se le dice y nunca comprueba. Una cámara que lea un marcador ArUco en el objeto deja que el brazo corrija el error que dejan el backlash y la flecha, que es como un brazo barato se vuelve preciso.
Suba el hardware una vez que choque con el techo. Los eslabones de aluminio eliminan casi toda la flexión, los servos MG90S eliminan casi todo el backlash, y un brazo de 6 GDL añade una muñeca para que el ángulo de aproximación de la herramienta sea cosa suya. Nada de eso cambia la matemática: el solucionador de dos eslabones que escribió aquí es el mismo que usa un brazo mejor, que es exactamente por lo que mereció la pena construir primero el bastidor barato.
Hoja de ruta del proyecto
La ruta de construcción
Sigue el árbol tecnológico desde las piezas hasta un robot que funciona. Cada nodo se desbloquea cuando completas sus requisitos previos, y tu progreso se guarda en este dispositivo.
0 / 13 completados
Componentes
- ControladorArduino UnoLa tolerante placa de 8 bits con la que la mayoría descubre la robótica.
- DriverPCA9685 16-Channel PWM DriverEl multiplicador de servos de 16 canales con resolución de 12 bits mediante bus I2C.
- ActuadorSG90 Micro ServoEl ligero actuador rotativo de 9 gramos con control de ángulo absoluto mediante PWM.
- Chasis4-DOF Robot Arm KitEl brazo manipulador de 4 grados de libertad para dominar la cinemática articular y el pick-and-place.
- AlimentaciónBattery Power PackLa fuente de energía determinante: por qué la química y la resistencia interna importan más que los voltios.
Tutoriales de esta ruta
- Avanzado · 22 min de lecturaCinemática inversa de un brazo robótico planar de dos eslabonesPor qué un brazo de dos eslabones tiene dos soluciones, qué puntos puede alcanzar y qué es realmente una singularidad.
- Intermedio · 18 min de lecturaControla servos con el PCA9685 (driver PWM por I2C)Ajusta la frecuencia, pasa ángulos a anchuras de pulso y mueve 16 servos con dos pines I2C, bien alimentados y calibrados.
Practica antes de cablear
Ajústalo en el simulador en vivo
La ruta de construcción pasa por un laboratorio en el navegador. Consigue aquí el comportamiento correcto y luego traslada tus ajustes al robot real.
Preguntas frecuentes
¿Cómo se construye un brazo robótico con Arduino?
Monta cuatro servomotores en una estructura de 4 grados de libertad (base, hombro, codo y pinza) y contrólalos mediante un módulo PCA9685 por bus I²C para no saturar los temporizadores ni pines PWM de la placa Arduino. Calibra el rango de pulsos de cada actuador y conecta las coordenadas objetivo a un solver analítico de cinemática inversa de dos eslabones que determine los ángulos de hombro y codo. Este proyecto estructura todo el proceso, permitiendo validar la cinemática en un simulador antes de conectar el hardware.
¿Cuántos servos requiere un brazo robótico de 4 DOF?
Cuatro servomotores: uno por cada grado de libertad (rotación de base, articulación de hombro, articulación de codo y mecanismo de apertura de la pinza). Cada articulación exige un canal PWM dedicado e independiente, razón por la cual se utiliza un controlador auxiliar PCA9685 en lugar de depender exclusivamente de los pines de hardware limitados del microcontrolador.
¿Es indispensable un controlador PCA9685 para este proyecto?
Es la solución técnica recomendada, aunque no estrictamente obligatoria. Cuatro servos pueden gobernarse directamente desde un Arduino si se alimentan de forma externa, pero el PCA9685 descarga a la CPU de la generación de pulsos, reduce el cableado de control a dos líneas I²C (SDA/SCL) y canaliza la corriente pesada de los motores a través de su bornera V+, previniendo caídas de tensión que reinicien el microcontrolador.
¿Tengo que comprar los componentes antes de empezar?
No. Tanto la formulación cinemática como la resolución geométrica de posiciones se ejecutan en el simulador interactivo del navegador web. Puedes familiarizarte con el espacio de trabajo, las configuraciones de codo arriba/abajo y las singularidades mecánicas antes de adquirir ningún componente físico. Solo las fases de montaje mecánico, calibración y conexión requieren el hardware real.
¿Cómo se aplica la cinemática inversa en un brazo articulado?
La cinemática directa determina las coordenadas cartesianas del extremo final a partir de los ángulos articulares; la cinemática inversa realiza la operación opuesta: dadas unas coordenadas cartesianas deseadas en el espacio, calcula analíticamente los ángulos requeridos en las articulaciones. En este brazo, hombro y codo forman un sistema plano de dos eslabones, la base orienta el plano azimutal y la pinza ejecuta la sujeción. El simulador permite visualizar cómo opera el solver y delimita el espacio alcanzable.