Braccio robotico da scrivania

Un braccio a quattro assi stampato in 3D e comandato da un ESP32, nato per spostare componenti SMD sul banco di saldatura senza farli volare per terra.

Completato

Giulia Ferrari, Marco Bini · · agg.

Il braccio robotico montato sul banco di lavoro, visto di tre quarti

Saldare componenti SMD a mano è un esercizio di pazienza finché una pinzetta non parte per la tangente e il condensatore da 0402 sparisce nel parquet. Da lì è nata l’idea: un braccio piccolo, lento e preciso, che tenga il pezzo fermo mentre le mani fanno altro.

Specifiche

Assi
4 (base, spalla, gomito, pinza)
Attuatori
3× MG996R + 1× SG90
Controllo
ESP32-WROOM-32, PCA9685
Sbraccio utile
310 mm
Portata
180 g a sbraccio massimo
Materiale
PETG, 40% riempimento

Il primo prototipo era storto

La prima versione aveva la base stampata in un pezzo unico e i cuscinetti inseriti a pressione. Sbagliato su entrambi i fronti: il PLA si deformava sotto il carico continuo dei servo e i cuscinetti si disallineavano dopo mezz’ora di lavoro.

Il primo prototipo, visibilmente storto sull'asse della spalla

La seconda versione ha risolto con due scelte banali ma decisive: PETG al posto del PLA, e alloggiamenti dei cuscinetti separati, avvitati alla base invece che stampati insieme.

Cinematica: meno matematica del previsto

Il braccio lavora quasi sempre su un piano, quindi la cinematica inversa si riduce a un problema a due gradi di libertà risolvibile con il teorema del coseno. Nessuna libreria, una trentina di righe.

// Angoli di spalla e gomito per raggiungere il punto (x, y).
// L1, L2 = lunghezze dei segmenti in mm.
bool solve(float x, float y, float &shoulder, float &elbow) {
  const float d2 = x * x + y * y;
  const float d = sqrtf(d2);
  if (d > L1 + L2 || d < fabsf(L1 - L2)) return false;  // fuori portata

  const float cosElbow = (d2 - L1 * L1 - L2 * L2) / (2 * L1 * L2);
  elbow = acosf(constrain(cosElbow, -1.0f, 1.0f));
  shoulder = atan2f(y, x) - atan2f(L2 * sinf(elbow), L1 + L2 * cosf(elbow));
  return true;
}

Cosa rifaremmo diversamente

  • Servo con feedback di posizione: senza, non c’è modo di accorgersi se il braccio ha urtato qualcosa.
  • Pinza intercambiabile con attacco magnetico, invece che avvitata.
  • Un vero finecorsa sulla base: l’homing a battuta funziona, ma consuma la stampa.

File del progetto

Contenuto pubblicato da Giulia Ferrari, Marco Bini sotto licenza CC BY-SA 4.0.