Componente · Telaio

Kit braccio robotico 4-DOF

Un kit per braccio robotico a 4-DOF trasforma quattro servomotori hobbistici in un manipolatore da scrivania: base rotante, spalla, gomito e pinza regolabile.

Che cos’è

Un kit per braccio robotico a 4-DOF è lo scheletro meccanico di un manipolatore da scrivania: un insieme di staffe in acrilico o alluminio tagliate al laser, una base rotante e slot di montaggio per quattro servomotori. Da solo non fa nulla: è la struttura che trasforma i servomotori in una macchina capace di raggiungere, posizionare e afferrare. Monta i servomotori, azionati con un PCA9685 e avrai un braccio che puoi comandare verso un punto nello spazio.

Vista laterale etichettata di un braccio robotico servoassistito a 4-DOF: in basso un servomotore per la base rotante, un servomotore alla spalla che solleva il braccio superiore, un servomotore al gomito che piega l'avambraccio e un servomotore per la pinza all'estremità dello strumento, con l'arco raggiungibile tracciato attorno alla base.
Quattro articolazioni, quattro servomotori: una base rotante, una spalla e un gomito che posizionano lo strumento in un piano verticale e una pinza all'estremità. Scarica SVG

Le quattro articolazioni

Ogni grado di libertà corrisponde a un servomotore con una sola funzione:

  • Base — ruota l’intero braccio a sinistra e a destra (imbardata), orientando il piano di lavoro.
  • Spalla — solleva il braccio superiore; è la prima delle due articolazioni che determinano sbraccio e altezza.
  • Gomito — piega l’avambraccio; insieme alla spalla posiziona lo strumento in qualsiasi punto di un piano verticale.
  • Pinza — apre e chiude le dita per trattenere un oggetto.

La spalla e il gomito sono la coppia risolta dalla cinematica inversa a due link: dato un punto bersaglio nel piano di lavoro del braccio, calcolano i due angoli delle articolazioni necessari per raggiungerlo. La base ruota poi quel piano verso la direzione del bersaglio e la pinza esegue la presa.

Quando usarlo

Scegli un kit per braccio a 4-DOF quando vuoi imparare la manipolazione anziché la mobilità: presa e posizionamento, impilamento di blocchi, disegno o una fotocamera su un supporto regolabile. È l’equivalente di un braccio robotico rispetto a un telaio 2WD: la struttura condivisa su cui si monta un’intera classe di progetti. È deliberatamente leggero; trattalo come una piattaforma didattica, non come un utensile da lavoro.

Per lavori più pesanti o precisi, passa a servomotori con ingranaggi metallici, una struttura più rigida o un braccio a 5–6-DOF che aggiunge un polso. Per i robot mobili vuoi invece un telaio.

Cablaggio e trappole

  • Un servomotore per articolazione, un canale per ciascun servomotore. Numera i canali (0 = base, 1 = spalla, …) e mantieni la mappa nel codice, così il comando “move the elbow” aziona il servomotore giusto.
  • Alimenta separatamente i servomotori. Quattro servomotori in movimento insieme causano un picco di corrente; alimentali dal morsetto V+ del PCA9685, mai dall’Arduino.
  • Esegui l’azzeramento prima del montaggio. Imposta ogni servomotore su un angolo noto (ad esempio 90°) prima di innestare gli attacchi, così la posizione zero del braccio corrisponde allo zero del codice.
  • Rispetta lo sbraccio. Lo strumento può raggiungere solo la fascia anulare delimitata dalle lunghezze dei link; comandare un punto esterno è irraggiungibile, quali che siano gli angoli delle articolazioni: vedi il simulatore di braccio robotico.
  • Fai attenzione al braccio di leva. Il carico utile diminuisce rapidamente all’estendersi del braccio; mantieni i carichi leggeri, altrimenti i servomotori si bloccano e gli ingranaggi in nylon si rompono.

Le misure necessarie prima di scrivere il codice

La cinematica inversa è aritmetica applicata alle lunghezze dei link. Se sbagli, il braccio raggiunge con sicurezza il posto sbagliato, senza che il codice offra una spiegazione.

Misura Dove misurare Valore tipico
L1 — braccio superiore Dall’asse dell’articolazione della spalla all’asse del gomito 90–105 mm
L2 — avambraccio Dall’asse del gomito al punto di presa della pinza 80–95 mm
Altezza della base Dal tavolo all’asse dell’articolazione della spalla 50–70 mm
Scostamento della base Dall’asse di rotazione della base all’asse della spalla, in orizzontale 0–15 mm

Misura tra gli assi delle articolazioni, non tra i bordi delle staffe. L’asse è il centro della scanalatura di uscita del servomotore e spesso si trova 5–10 mm all’interno della staffa visibile. Su un link di 95 mm, un errore di 10 mm supera il 10%: si manifesta come un braccio sistematicamente corto che nessuna regolazione può correggere.

Queste due lunghezze ti danno direttamente lo spazio di lavoro:

maximum reach = L1 + L2
minimum reach = |L1 - L2|

Con L1 = 100 e L2 = 90, il braccio raggiunge tra 10 mm e 190 mm dalla spalla: un anello, non un disco. Al centro c’è un vuoto che il braccio non può raggiungere fisicamente ed è una sorpresa autentica la prima volta che un bersaglio vicino alla base risulta irraggiungibile. Se i due link sono uguali, il vuoto scompare e il braccio può ripiegarsi su sé stesso.

Coppia del servomotore: perché il braccio cede a piena estensione

Il servomotore della spalla sostiene tutto ciò che si trova oltre di essa e la coppia richiesta aumenta all’aumentare della distanza della massa dall’articolazione.

Per un braccio completamente esteso con L1 = L2 = 95 mm, che sostiene un carico utile di 30 g, con link di circa 20 g ciascuno:

Shoulder torque ~= (forearm+elbow mass x 0.095) + (payload x 0.190)
                ~= (0.05 kg x 9.5 cm) + (0.03 kg x 19 cm)
                ~= 0.48 + 0.57 = 1.05 kg.cm

La coppia di stallo di un SG90 è di circa 1.8 kg·cm a 4.8 V. Sostenere 1.05 kg·cm significa funzionare continuamente al 58% della coppia di stallo, ben oltre il punto in cui un servomotore hobbistico rimane preciso: scenderà sotto l’angolo comandato, ronzierà e si scalderà.

Configurazione Richiesta alla spalla SG90 (1.8 kg·cm) MG90S (2.2 kg·cm)
Ripiegato, senza carico utile ~0.2 kg·cm Comodo Comodo
Esteso, senza carico utile ~0.5 kg·cm Sufficiente Sufficiente
Esteso, carico utile di 30 g ~1.05 kg·cm Scende in modo visibile Al limite
Esteso, carico utile di 50 g ~1.4 kg·cm Si blocca Scende

Tre conseguenze pratiche. La precisione del braccio è peggiore alla massima estensione, che è esattamente dove si trova anche una singolarità, quindi pianifica percorsi all’interno del limite. Usa servomotori MG90S con ingranaggi metallici per la spalla, anche se gli altri sono SG90: è l’articolazione che cede per prima e gli ingranaggi in nylon si rompono sotto un carico prolungato. E controbilancia, se puoi: un elastico dal braccio superiore alla base elimina senza costi una frazione sorprendente del carico statico sulla spalla.

Montaggio in modo che i calcoli funzionino

L’ordine conta e un passaggio in particolare è quasi impossibile da annullare.

1. Imposta ogni servomotore al centro prima di montare un attacco. Alimenta il servomotore, comanda 90° e solo dopo innesta l’attacco. Un attacco per servomotore è scanalato, con circa 20 o 24 denti, quindi può essere montato soltanto in posizioni discrete e la regolazione più fine disponibile è all’incirca 15–18°. Se monti prima il braccio e lo calibri dopo, potresti trovare un’articolazione il cui intervallo utilizzabile è sfalsato di 40° e non correggibile meccanicamente.

2. Monta gli attacchi nella posizione che vuoi usare come zero. Per la spalla di solito significa il braccio superiore verticale. Per il gomito, l’avambraccio orizzontale. Decidi la convenzione, annotala e costruisci il braccio secondo quella.

3. Controlla l’intera escursione di ogni articolazione prima di serrare qualsiasi cosa. Comanda 0° e 180° e verifica che nulla entri in collisione con la struttura. Un’articolazione che urta la propria staffa a 160° ha un limite effettivo di 160°, e il codice deve conoscerlo.

4. Registra gli scostamenti e i segni per articolazione. Alcune articolazioni ruoteranno nel verso opposto alla convenzione matematica a causa della disposizione del cinematismo. Registralo una volta sola:

struct Joint {
  uint8_t channel;
  int      offsetDeg;   // servo angle when the joint is at its mathematical zero
  int8_t   sign;        // +1 or -1
  int      minDeg, maxDeg;  // mechanical limits, measured
};

const Joint BASE     = {0,  90, +1,  -85,  85};
const Joint SHOULDER = {1,  90, -1,  -10, 120};
const Joint ELBOW    = {2,  90, +1, -120,  10};
const Joint GRIPPER  = {3,  20, +1,    0,  55};

int servoAngle(const Joint &j, float jointDeg) {
  float clamped = constrain(jointDeg, j.minDeg, j.maxDeg);
  return constrain((int)(j.offsetDeg + j.sign * clamped), 0, 180);
}

Questa struttura è l’unico ponte tra la cinematica e l’hardware, ed è averla esplicita la differenza tra un braccio che puoi analizzare e uno a cui continui ad applicare valori improvvisati.

Alimentazione di quattro servomotori

Quattro microservomotori in movimento insieme richiedono ben più corrente di quanta un microcontrollore possa fornire, e il modo di guasto del braccio lo peggiora: quando il braccio urta la propria struttura o afferra qualcosa di solido, tutti i servomotori della catena si bloccano contemporaneamente.

Situazione Corrente
Inattivo, in posizione ~40 mA totali
In movimento, a vuoto ~600 mA – 1 A
Tutti e quattro bloccati ~2.6 A

Dimensiona l’alimentatore sul valore di stallo. Un’alimentazione separata da 5–6 V verso il morsetto V+ del PCA9685, con un condensatore da 470–1000 µF ai suoi capi e le masse collegate al controllore. Far passare corrente tramite il pin 5 V dell’Arduino causa il brownout della scheda e, poiché accade solo quando il braccio raggiunge una certa posizione, sembra convincentemente un errore software.

Muovilo in modo graduale

A un servomotore comandato verso un nuovo angolo ci arriva alla massima velocità. Su un robot mobile è soltanto brusco; su un braccio è un vero problema: movimento violento, picco di corrente e shock meccanico attraverso gli ingranaggi in nylon, amplificato dal braccio di leva del braccio stesso.

// Interpolate every joint together so the tool moves in a straight-ish line
// and no single servo takes the whole load at once.
void moveTo(float base, float shoulder, float elbow, int steps, int stepMs) {
  static float cur[3] = {0, 0, 0};
  float target[3] = {base, shoulder, elbow};

  for (int s = 1; s <= steps; s++) {
    float t = (float)s / steps;
    for (int j = 0; j < 3; j++) {
      float a = cur[j] + (target[j] - cur[j]) * t;
      pwm.setPWM(JOINTS[j].channel, 0, countsFor(JOINTS[j], a));
    }
    delay(stepMs);
  }
  memcpy(cur, target, sizeof(cur));
}

Interpolare tutte le articolazioni insieme conta quanto l’attenuazione del movimento. Muovere le articolazioni una alla volta porta lo strumento lungo un percorso strano nello spazio di lavoro, ed è sia più lento sia molto più incline a collidere con qualcosa lungo il tragitto.

Risoluzione dei problemi

Sintomo Causa probabile Soluzione
Il braccio raggiunge del tutto il punto sbagliato Attacco montato a un angolo arbitrario Esegui l’azzeramento di ogni servomotore a 90° prima di montare gli attacchi
L’intervallo di un’articolazione è sfalsato di ~20° L’attacco è montato con un dente dell’ingranaggio fuori posizione Smontalo e rimontalo: non si può correggere in software
La scheda si riavvia quando il braccio si muove Corrente dei servomotori attraverso il controllore Alimentazione V+ separata, massa comune, condensatore grande
Il braccio cede alla massima estensione Il servomotore della spalla supera la coppia comoda MG90S alla spalla; controbilancia; riduci il carico utile
Ronzio durante il mantenimento di una posizione Il servomotore combatte un carico al limite Riduci il carico oppure scollegalo quando non serve tenere
Le vicinanze della base sono irraggiungibili Bersaglio dentro l’anello di sbraccio minimo Geometria prevista: |L1 − L2| è irraggiungibile
IK restituisce NaN Bersaglio oltre L1 + L2 Verifica la raggiungibilità prima della trigonometria
Il raggiungimento differisce a seconda della direzione Gioco del riduttore, amplificato dalla lunghezza del link Avvicina ogni bersaglio dalla stessa direzione
Movimento violento dopo un nuovo comando Il servomotore si muove alla massima velocità Interpola il movimento in più passaggi
La pinza schiaccia o fa cadere gli oggetti Nessuna retroazione sulla forza Limita l’angolo di chiusura; aggiungi schiuma alle dita

Quando passare a un kit superiore

Un kit in acrilico a 4-DOF è una piattaforma didattica e lo dichiara apertamente. I suoi limiti, nell’ordine in cui li incontrerai:

Carico utile. Decine di grammi. Qualcosa di più pesante e il servomotore della spalla non può sostenerlo.

Ripetibilità. Il gioco nei riduttori dei servomotori, più la flessione dei link in acrilico, fa sì che il ritorno alla stessa posizione comandata termini a pochi millimetri di distanza. Quattro gradi di gioco alla spalla su uno sbraccio di 190 mm equivalgono a oltre 13 mm allo strumento.

Orientamento del polso. Con quattro gradi di libertà puoi posizionare lo strumento da qualche parte, ma non scegliere indipendentemente l’angolo da cui lo raggiungi. Un braccio a 5 o 6-DOF aggiunge un polso ed è ciò che rende possibile “prendere questo oggetto dal lato”.

Aggiornamento Che cosa offre
Servomotori MG90S ovunque Ingranaggi metallici: resistono agli urti e hanno meno gioco
Link in alluminio Molto meno gioco flessibile e ripetibilità migliore
Servomotori MG996R + struttura più grande Carico utile reale, centinaia di grammi
Braccio a 6-DOF Orientamento indipendente dello strumento
Braccio azionato da motore passo-passo o BLDC Ripetibilità misurata in decimi di millimetro

Niente di tutto questo cambia i calcoli. La cinematica a due link che scrivi per questo kit è lo stesso risolutore usato da un braccio migliore: è esattamente per questo che vale la pena costruire prima la struttura economica.

Esplora il grafo

Usato in queste costruzioni

Progetti, percorsi di apprendimento e simulatori che includono Kit braccio robotico 4-DOF.

Domande

FAQ su Kit braccio robotico 4-DOF

Che cos'è un braccio robotico a 4-DOF?

Un braccio robotico a 4-DOF (quattro gradi di libertà) ha quattro articolazioni controllate in modo indipendente: di solito una base rotante, una spalla, un gomito e una pinza. Questi quattro movimenti permettono allo strumento di raggiungere un'ampia gamma di posizioni su un piano da scrivania e di afferrare oggetti. È il braccio più piccolo che sembra un vero manipolatore, mantenendo bassi costi e semplicità di controllo.

Quanti servomotori servono a un braccio robotico?

Uno per articolazione. Un braccio a 4-DOF usa quattro servomotori: rotazione della base, spalla, gomito e pinza. I bracci più grandi aggiungono inclinazione e rotazione del polso per ottenere 5 o 6-DOF. Poiché ogni servomotore richiede un proprio canale PWM, i bracci sono il motivo classico per aggiungere un driver PCA9685 invece di collegare i servomotori direttamente al microcontrollore.

Che cos'è MeArm?

MeArm è un popolare kit open source per braccio a 4-DOF in acrilico tagliato al laser, azionato da quattro microservomotori. È il modello di riferimento del braccio robotico economico da scrivania: molti kit oggi in commercio sono cloni di MeArm o varianti simili. Tutti si cablano e si programmano allo stesso modo, quindi le competenze di cinematica e driver sono trasferibili.

Quanto può sollevare un braccio robotico hobbistico?

Non molto: decine di grammi alla pinza. Il limite è la coppia del servomotore moltiplicata per il braccio di leva. La coppia di stallo di ~1.8 kg·cm di un SG90 sembra elevata, ma quando la distribuisci su un braccio di 15 cm il carico utile utilizzabile scende a poche decine di grammi. I servomotori con ingranaggi metallici e un braccio più corto aiutano; per sollevare davvero serve un braccio più grande e con riduttore.

Mi serve un PCA9685 per un braccio robotico?

Non strettamente, ma è lo strumento giusto. Quattro servomotori possono funzionare dai pin PWM di un Arduino se alimentati separatamente, ma un PCA9685 libera i timer del microcontrollore, comanda tutte le articolazioni da due pin I²C e fa scorrere la corrente dei servomotori tramite la propria alimentazione: esattamente ciò di cui ha bisogno un braccio multi-articolazione.

Per approfondire

Fonti