Parcours de constructionIntermédiaireUn week-end

Construire un bras 4 axes : PCA9685, servos, cinématique

Un bras robotique de bureau qui va aux poses commandées — piloté par un PCA9685 et réglé avec une cinématique inverse comprise en simulation avant de câbler un seul servo.

Schéma technique : Construire un bras 4 axes : PCA9685, servos, cinématiqueREACHABLE WORKSPACE

Un bras robotique est le premier projet où un robot cesse de se déplacer et commence à faire quelque chose au monde. Un suiveur suit ; un éviteur esquive ; un bras atteint, positionne et saisit. Ce basculement — de la conduite à la manipulation — apporte l’idée unique sur laquelle tout manipulateur est bâti : la cinématique, la géométrie qui relie les angles commandables au point dans l’espace réellement voulu.

Ce parcours traite le bras exactement comme cela : une leçon de cinématique à tenir en main. Vous commencez par comprendre comment un bras deux segments transforme des angles articulaires en position d’outil et inversement, rassemblez les pièces qu’exige un bras à servos et apprenez ce que chacune fait, puis — avant de dépenser quoi que ce soit ou de casser un engrenage — explorez la portée, les deux solutions de coude et les poses inaccessibles dans le simulateur en navigateur. Ensuite seulement vous câblez le vrai bras, calibrez ses servos à la main, et exécutez la cinématique inverse sur le matériel.

Suivez l’arbre technologique ci-dessous de haut en bas. Chaque nœud s’ouvre une fois ses prérequis terminés, et votre progression est enregistrée sur cet appareil, pour construire le bras sur un week-end sans perdre votre place.

Nomenclature

Pièce Qté Coût approx. Notes
Arduino Uno 1 $5–8 Toute carte convient — elle ne parle qu’I²C ici
PCA9685 pilote 16 voies 1 $3 Pas strictement exigé pour quatre servos, mais c’est le bon outil
Servomoteur SG90 4 $8 Achetez un MG90S pour l’épaule — pignons métal, et c’est l’articulation qui casse
Kit bras 4 axes 1 $12–25 L’acrylique suffit pour apprendre ; l’aluminium fléchit bien moins
Alim 5–6 V, ≥3 A 1 $8 Quatre servos calés ensemble font ~2,6 A
Condensateur 1000 µF 1 $1 Sur V+, près de la borne
Palonniers de rechange 1 jeu $2 Vous en monterez un de travers. Tout le monde le fait

Total : environ $40–60.

Deux achats méritent réflexion plutôt que défaut. Un MG90S à pignons métal à l’épaule coûte un dollar de plus et c’est l’articulation qui porte le poids de toutes les autres — les pignons nylon y cassent en charge prolongée, pas sous choc. Et une alimentation dimensionnée pour le calage, car la panne distinctive d’un bras est que quand il heurte son propre cadre ou saisit quelque chose de solide, chaque servo cale à la fois.

Mesurez votre bras avant d’écrire le moindre code

La cinématique inverse est de l’arithmétique sur des longueurs de segments. Ces quatre nombres sont toute l’entrée, et les prendre d’une fiche produit plutôt qu’au réglet est la raison la plus fréquente pour laquelle un bras atteint avec assurance le mauvais endroit.

Symbole Mesurez de À Typique
L1 Axe d’articulation d’épaule Axe d’articulation de coude 90–105 mm
L2 Axe de coude Le point de prise réel de la pince 80–95 mm

Cette dernière ligne fait plus de travail qu’il n’y paraît. « Le point de prise réel de la pince » bouge quand les mors se ferment, et dimensionner la pince elle-même est un problème séparé du positionnement — avec ses propres murs, sa propre arithmétique et ses propres modes de panne. Si votre bras atteint la pièce puis la lâche ou l’écrase, la réponse n’est pas dans cette page : commencez au simulateur de pince. | h | Surface de table | Axe d’épaule | 50–70 mm | | d | Axe de rotation de base | Axe d’épaule, horizontalement | 0–15 mm |

Mesurez entre axes d’articulations, pas bords de supports. L’axe est le centre de la cannelure de sortie du servo, souvent 5–10 mm à l’intérieur du support visible. Sur un segment 95 mm, 10 mm d’erreur font plus de 10 %, et cela produit un bras systématiquement court qu’aucun gain ne corrige.

Ces deux longueurs donnent aussitôt l’espace de travail :

maximum reach = L1 + L2          e.g. 100 + 90 = 190 mm
minimum reach = |L1 - L2|        e.g. |100 - 90| = 10 mm

L’espace de travail est un anneau, pas un disque. Il y a un trou au milieu que le bras ne peut physiquement pas atteindre, et une cible près de la base renvoyée « inaccessible » est un comportement correct plutôt qu’un bug.

Construisez par étapes

L’ordre d’assemblage contient ici une étape presque impossible à défaire, et c’est l’étape 2.

N° Étape Le test Un succès ressemble à
1 Le pilote répond Balayez le bus I²C 0x40 apparaît ; V+ a sa propre alimentation
2 Servos au neutre avant assemblage Commandez chaque servo à 90° avant d’enfoncer un palonnier Chaque palonnier est monté à votre pose zéro voulue
3 Butées par servo Écartez depuis le centre jusqu’au grognement du servo Vous avez des comptes min/max par servo, pas les défauts de bibliothèque
4 Table des articulations notée Commandez chaque articulation sur sa plage Offset, signe et limites mécaniques notés pour les quatre
5 Contrôle de collision Balayez lentement chaque articulation sur toute sa plage Rien ne heurte le cadre ; les limites reflètent l’observé
6 Cinématique directe Fixez des angles connus, calculez la position d’outil, mesurez-la Calculé et mesuré concordent à quelques millimètres
7 Aller-retour Repassez la position calculée dans la CI Les angles sortis correspondent aux angles entrés
8 Les quatre quadrants Demandez des cibles devant, derrière, gauche, droite Les quatre marchent — si deux se miroirent, vous avez utilisé atan pas atan2
9 Accessibilité Demandez une cible bien au-delà de L1 + L2 Un « inaccessible » propre — pas un NaN, et pas un bond
10 Mouvement lisse Commandez un grand mouvement Interpolé par pas, toutes articulations ensemble, sans à-coup
11 Répétabilité Revenez dix fois à la même pose depuis des directions différentes Dispersion d’arrivée mesurée — ce nombre est votre jeu

L’étape 2 ne se récupère pas ensuite. Un palonnier de servo est cannelé — une vingtaine de dents — donc il ne s’emmanche qu’en positions discrètes espacées d’environ 18°. Assemblez d’abord et calibrez ensuite, et vous pouvez trouver une articulation dont la plage utile est décalée de 40° sans aucun moyen mécanique de corriger. Alimentez chaque servo, commandez 90°, puis enfoncez le palonnier.

Bougez-le toujours doucement

Un servo commandé vers un nouvel angle y va à pleine vitesse. Sur un bras cela signifie un mouvement violent, un pic de courant sur les quatre servos, et un choc mécanique dans des pignons nylon avec le levier propre du bras qui le multiplie.

// 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));
}

Interpoler toutes les articulations ensemble compte autant que le lissage lui-même. Bouger les articulations une par une envoie l’outil sur un arc étrange dans l’espace — plus lent, et bien plus susceptible de heurter quelque chose en route.

À quoi ressemble un bon résultat

Mesure Kit acrylique, SG90 Alu, MG90S
Répétabilité, même sens d’approche ±3–5 mm ±1–2 mm
Répétabilité, sens d’approche mixtes ±8–15 mm ±3–5 mm
Charge utile à pleine extension 20–30 g 40–60 g
Affaissement à pleine extension, à vide 3–8 mm 1–3 mm

L’écart entre les deux lignes de répétabilité est le jeu, et c’est la plus grande source d’erreur d’un bras amateur. Quatre degrés de jeu à l’épaule sur 190 mm de portée font plus de 13 mm à la pince. La réponse pratique n’est pas de meilleures maths — c’est de toujours approcher une cible depuis le même sens, ce qui supprime entièrement le changement de signe et transforme une erreur de ±13 mm en offset répétable calibrable.

Dépannage

Symptôme Cause probable Correctif
Le bras atteint complètement le mauvais point Palonnier monté à un angle arbitraire Mettez chaque servo au neutre 90° avant de monter les palonniers
La plage d’une articulation est décalée ~18° Palonnier décalé d’une dent Retirez et remontez — le logiciel ne peut pas corriger cela
Atteint correctement devant, miroir derrière atan au lieu d’atan2 atan2 résout les quatre quadrants
La CI renvoie NaN et le bras bondit Argument acos hors −1..1 Testez l’accessibilité avant la trigonométrie
Les cibles près de la base échouent Dans le trou de portée minimale Comportement correct — l’espace est un anneau
La carte redémarre quand le bras bouge Courant servo dans l’Arduino Alim V+ séparée, masse commune, condensateur 1000 µF
Le bras s’affaisse à pleine extension Épaule au-delà de son couple confortable MG90S à l’épaule ; contrepoids avec un élastique
Gronde en tenant une pose Servo luttant contre une charge à sa limite Réduisez la charge, ou detach quand le maintien est inutile
Pics de vitesse articulaire près de pleine extension Traversée d’une singularité Gardez les trajectoires prévues en marge de la frontière
Atterrit différemment selon le sens Jeu Approchez toujours depuis le même sens
Tous les angles systématiquement courts Oscillateur PCA9685 pas exactement 25 MHz Mesurez la vraie fréquence de sortie et appelez setOscillatorFrequency

Pour aller plus loin

Ajoutez un mouvement en ligne droite. Interpoler en espace articulaire, comme le code ci-dessus, fait suivre une courbe à l’outil. Interpoler en espace cartésien — calculer la CI à chaque pas le long d’une droite — le fait voyager droit, ce qu’exige tout vrai pick-and-place. C’est un petit changement et c’est là que les singularités cessent d’être théoriques : une trajectoire droite en quasi-pleine extension exige des vitesses articulaires énormes.

Ajoutez une caméra et bouclez. Tout ici est en boucle ouverte : le bras va où on lui dit et ne vérifie jamais. Une caméra lisant un marqueur ArUco sur l’objet permet au bras de corriger l’erreur laissée par jeu et affaissement — et c’est ainsi qu’un bras bon marché devient précis.

Montez en gamme une fois le plafond atteint. Les segments alu suppriment l’essentiel de la flexion, les servos MG90S l’essentiel du jeu, et un bras 6 axes ajoute un poignet pour que l’angle d’approche de l’outil devienne votre choix. Rien ne change les maths : le solveur deux segments écrit ici est le même qu’utilise un meilleur bras, et c’est exactement pourquoi le cadre bon marché valait d’être construit d’abord.

Parcours du projet

Le parcours de construction

Suivez l'arbre technologique, des pièces jusqu'à un robot qui fonctionne. Chaque nœud se débloque quand ses prérequis sont terminés, et votre progression est enregistrée sur cet appareil.

0 / 13 terminés

100%
Parcours d'apprentissage

Cinématique du bras robotique

Parcours d'apprentissage

Ouvrir le parcours
Réalisation

Câbler le bras

40 min

Réalisation

Calibrer le neutre et les limites

30 min

Réalisation

Exécuter la cinématique inverse sur matériel

45 min

Objectif

Bras robotique 4 axes terminé

Vous l'avez construit

Composants

Tutoriels de ce parcours

Entraînez-vous avant de câbler

Réglez-le dans le simulateur interactif

Le parcours de construction passe par un labo dans le navigateur. Obtenez ici le bon comportement, puis reportez vos réglages sur le vrai robot.

Questions fréquentes

Comment fabriquer un bras robotique avec Arduino ?

Montez quatre servos dans un cadre 4 axes — base, épaule, coude et pince — et pilotez-les avec un PCA9685 en I²C pour que l'Arduino ne manque pas de broches PWM. Calibrez la plage angle-impulsion de chaque servo, puis donnez les points cibles à un solveur de cinématique inverse deux segments qui renvoie les angles épaule et coude. Ce parcours couvre toute la chaîne, et vous réglez la géométrie en simulateur avant de câbler quoi que ce soit.

Combien de servos faut-il pour un bras 4 axes ?

Quatre — un par degré de liberté : une base tournante, une épaule, un coude et une pince. Chaque servo exige sa propre voie PWM, et c'est exactement pourquoi un bras multi-articulations utilise un pilote PCA9685 au lieu de la poignée de PWM matériels de l'Arduino.

Faut-il un PCA9685 pour un bras robotique ?

C'est le bon outil, quoique pas strictement exigé. Quatre servos tourneront depuis un Arduino si vous les alimentez séparément, mais le PCA9685 libère les timers du microcontrôleur, pilote chaque articulation depuis deux broches I²C, et route le courant servo via sa propre alimentation V+ — ce qui tient le fort courant loin de votre logique et empêche la microcoupure de la carte.

Faut-il acheter les pièces avant de commencer ce projet ?

Non. La cinématique et la résolution de poses tournent dans le simulateur en navigateur, donc vous pouvez comprendre et explorer la portée du bras, ses deux solutions et ses poses inaccessibles avant tout achat. Seules les étapes finales — câblage, calibration et exécution de la CI — exigent le vrai Arduino, le PCA9685, les servos, le cadre et l'alimentation.

Comment la cinématique inverse est-elle utilisée dans un bras robotique ?

La cinématique directe dit où l'outil finit avec les angles articulaires ; la cinématique inverse fait l'inverse utile — avec un point cible, elle renvoie les angles qui l'atteignent. Pour ce bras l'épaule et le coude forment un solveur plan deux segments, la base oriente ce plan, et la pince fait la prise. Le simulateur montre le solveur au travail, y compris où une cible est hors d'atteinte.