Composant · Châssis

4-DOF Robot Arm Kit

Un kit 4 axes transforme quatre servomoteurs loisir en manipulateur de bureau : base rotative, épaule, coude et pince à positionner.

Présentation

Un kit bras robotique 4 axes est le squelette mécanique d’un manipulateur de bureau : un ensemble de supports en acrylique ou aluminium découpé au laser, une base rotative, et des emplacements pour quatre servomoteurs. Seul, il ne fait rien — c’est le cadre qui transforme des servomoteurs en une machine qui atteint, positionne et saisit. Fixez les servomoteurs, pilotez-les avec un PCA9685, et il devient un bras que vous pouvez commander vers un point dans l’espace.

Vue latérale légendée d'un bras robotique servo 4 axes : un servomoteur de base rotative en bas, un servomoteur d'épaule soulevant le bras supérieur, un servomoteur de coude pliant l'avant-bras, et un servomoteur de pince à l'extrémité de l'outil, avec l'arc atteignable esquissé autour de la base.
Quatre articulations, quatre servomoteurs : une base rotative, une épaule et un coude qui placent l'outil dans un plan vertical, et une pince à l'extrémité. Télécharger le SVG

Les quatre articulations

Chaque degré de liberté est un servomoteur faisant un travail :

  • Base — fait pivoter tout le bras à gauche et à droite (lacet), orientant le plan de travail.
  • Épaule — soulève le bras supérieur ; la première des deux articulations qui règlent portée et hauteur.
  • Coude — plie l’avant-bras ; avec l’épaule, il place l’outil partout dans un plan vertical.
  • Pince — ouvre et ferme les mâchoires pour tenir un objet.

L’épaule et le coude sont la paire que la cinématique inverse à deux segments résout : pour un point cible dans le plan de travail du bras, elles calculent les deux angles articulaires qui l’atteignent. La base fait ensuite pivoter ce plan vers la direction de la cible, et la pince effectue la saisie.

Quand l’utiliser

Prenez un kit bras 4 axes quand vous voulez apprendre la manipulation plutôt que la mobilité — prise et dépose, empilage de cubes, dessin, ou une caméra sur un support orientable. C’est l’équivalent pour bras d’un châssis 2WD : la structure partagée sur laquelle se fixe toute une classe de projets. Il est délibérément léger ; considérez-le comme une plateforme pédagogique, pas comme un outil de travail.

Pour des travaux plus lourds ou plus précis, passez à des servomoteurs à engrenages métalliques, à un cadre plus rigide, ou à un bras 5–6 axes qui ajoute un poignet. Pour des robots mobiles, c’est le châssis le cadre qu’il vous faut.

Câblage et pièges

  • Un servomoteur par articulation, un canal chacun. Numérotez les canaux (0 = base, 1 = épaule, …) et gardez la correspondance dans votre code pour qu’une commande « bouger le coude » pilote le bon servomoteur.
  • Alimentez les servomoteurs séparément. Quatre servomoteurs bougeant ensemble appellent un pic de courant ; alimentez-les depuis la borne V+ du PCA9685, jamais depuis l’Arduino.
  • Mettez-le à la position initiale avant montage. Réglez chaque servomoteur à un angle connu (p. ex. 90°) avant d’enfoncer les palonniers, pour que la pose zéro du bras corresponde au zéro de votre code.
  • Respectez la portée. L’outil ne peut atteindre que l’intérieur d’un anneau défini par les longueurs des segments ; commander un point hors de portée est inatteignable quels que soient les angles — voir le simulateur de bras robotique.
  • Attention au bras de levier. La charge utile chute vite à mesure que le bras s’étend ; gardez des charges légères ou les servomoteurs calent et les engrenages nylon se détruisent.

Les mesures à prendre avant d’écrire le moindre code

La cinématique inverse est de l’arithmétique sur des longueurs de segments. Si elles sont fausses, le bras atteint avec assurance le mauvais endroit, sans que le code soit en cause.

Mesure Où mesurer Typique
L1 — bras supérieur Axe d’épaule à axe de coude 90–105 mm
L2 — avant-bras Axe de coude au point de prise de la pince 80–95 mm
Hauteur de base Table à l’axe d’épaule 50–70 mm
Déport de base Axe de rotation de base à l’axe d’épaule, horizontalement 0–15 mm

Mesurez entre les axes articulaires, pas entre les bords des supports. L’axe est le centre de la cannelure de sortie du servomoteur, et il se trouve souvent 5–10 mm à l’intérieur du support visible. Sur un segment de 95 mm, une erreur de 10 mm dépasse 10 % — ce qui donne un bras systématiquement trop court, et qu’aucun réglage ne corrigera.

Ces deux longueurs donnent directement l’espace de travail :

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

Avec L1 = 100 et L2 = 90, le bras atteint entre 10 mm et 190 mm depuis l’épaule — un anneau, pas un disque. Il y a un trou au milieu qu’il ne peut physiquement pas atteindre, et c’est une vraie surprise la première fois qu’une cible près de la base revient inatteignable. Si les deux segments sont égaux, le trou disparaît et le bras peut se replier sur lui-même.

Couple des servomoteurs : pourquoi le bras s’affaisse en extension

Le servomoteur d’épaule porte tout ce qui est au-delà, et la demande de couple augmente avec la distance à laquelle la masse se trouve de l’articulation.

Pour un bras totalement étendu avec L1 = L2 = 95 mm, tenant une charge de 30 g, avec des segments pesant environ 20 g chacun :

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

Le couple de blocage d’un SG90 est d’environ 1,8 kg·cm sous 4,8 V. Tenir 1,05 kg·cm signifie fonctionner à 58 % du blocage en continu, ce qui dépasse largement le point où un servomoteur loisir reste précis — il s’affaissera sous l’angle commandé, bourdonnera et chauffera.

Configuration Demande à l’épaule SG90 (1,8 kg·cm) MG90S (2,2 kg·cm)
Replié, sans charge ~0,2 kg·cm Confortable Confortable
Étendu, sans charge ~0,5 kg·cm Correct Correct
Étendu, charge 30 g ~1,05 kg·cm S’affaisse visiblement Limite
Étendu, charge 50 g ~1,4 kg·cm Cale S’affaisse

Trois conséquences pratiques. La précision du bras est la pire en pleine extension, qui est exactement là où vit aussi une singularité, alors planifiez les trajectoires à l’intérieur de la limite. Utilisez des servomoteurs MG90S à engrenages métalliques pour l’épaule même si les autres sont des SG90 — c’est l’articulation qui lâche en premier, et les engrenages nylon se détruisent sous une charge soutenue. Et équilibrez si possible : un élastique du bras supérieur vers la base soulage gratuitement une part surprenante de la charge statique du servomoteur d’épaule.

L’assembler pour que les calculs soient justes

L’ordre compte, et une étape en particulier est quasiment impossible à défaire.

1. Centrez chaque servomoteur avant de monter un palonnier. Alimentez le servomoteur, commandez 90°, puis seulement enfoncez le palonnier. Un palonnier est cannelé — environ 20 ou 24 dents — donc il ne peut être monté que dans des positions discrètes, et le réglage le plus fin disponible est d’environ 15–18°. Si vous assemblez le bras d’abord et calibrez ensuite, vous risquez de trouver une articulation dont la plage utile est décalée de 40° et ne peut pas du tout être corrigée mécaniquement.

2. Montez les palonniers dans la pose voulue comme zéro. Pour l’épaule, cela signifie généralement le bras supérieur vertical. Pour le coude, l’avant-bras horizontal. Décidez de la convention, notez-la, et construisez en conséquence.

3. Vérifiez la course complète de chaque articulation avant de tout serrer. Commandez 0° et 180° et vérifiez que rien ne touche le cadre. Une articulation qui heurte son propre support à 160° a une limite effective de 160°, et votre code doit le savoir.

4. Notez les décalages et les signes par articulation. Certaines articulations tourneront à l’opposé de votre convention mathématique à cause de la disposition de la tringlerie. Capturez-le une fois :

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

Cette structure est tout le pont entre la cinématique et le matériel, et l’avoir explicite fait la différence entre un bras sur lequel on peut raisonner et un bras que l’on ajuste sans cesse.

Alimenter quatre servomoteurs

Quatre micro-servomoteurs bougeant ensemble dépassent largement ce qu’un microcontrôleur peut fournir, et le mode de défaillance du bras aggrave les choses : quand le bras heurte son propre cadre ou saisit quelque chose de solide, chaque servomoteur de la chaîne cale en même temps.

Situation Courant
Au repos, maintien de position ~40 mA au total
En mouvement, sans charge ~600 mA – 1 A
Les quatre calés ~2,6 A

Dimensionnez l’alimentation pour le chiffre de blocage. Une alimentation séparée 5–6 V vers la borne V+ du PCA9685, avec un condensateur de 470–1000 µF en parallèle, et les masses reliées au contrôleur. Faire passer tout cela par la broche 5 V de l’Arduino provoquera un décrochage de la carte — et comme cela n’arrive que lorsque le bras atteint une position particulière, cela ressemble de façon convaincante à un bogue logiciel.

Le déplacer en douceur

Un servomoteur commandé vers un nouvel angle y va à pleine vitesse. Sur un robot mobile c’est simplement brutal ; sur un bras c’est un vrai problème : un mouvement violent, un pic de courant, et un choc mécanique dans des engrenages nylon avec le bras de levier du bras qui le multiplie.

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

Interpoler toutes les articulations ensemble compte autant que l’adoucissement. Déplacer les articulations une à la fois envoie l’outil sur un chemin étrange dans l’espace de travail, ce qui est à la fois plus lent et beaucoup plus susceptible de heurter quelque chose en route.

Dépannage

Symptôme Cause probable Solution
Le bras atteint un point totalement faux Palonnier monté à un angle arbitraire Mettez chaque servomoteur à 90° avant de monter les palonniers
La plage d’une articulation est décalée d’environ 20° Palonnier décalé d’une dent de cannelure Démontez et remontez — impossible à corriger en logiciel
La carte redémarre quand le bras bouge Courant des servomoteurs via le contrôleur Alimentation V+ séparée, masse commune, gros condensateur
Le bras s’affaisse en pleine extension Servomoteur d’épaule au-delà de son couple confortable MG90S à l’épaule ; équilibrage ; réduire la charge
Bourdonnement en maintien de pose Servomoteur luttant contre une charge à sa limite Réduire la charge, ou détacher quand le maintien est inutile
Échecs près de la base Cible dans l’anneau de portée minimale Géométrie normale — |L1 − L2| est inatteignable
La CI renvoie NaN Cible au-delà de L1 + L2 Tester l’atteignabilité avant la trigonométrie
Atteint différemment selon la direction Jeu des réducteurs, amplifié par la longueur des segments Approcher chaque cible depuis la même direction
Mouvement violent sur nouvelle commande Servomoteur allant à pleine vitesse Interpoler le mouvement en étapes
La pince écrase ou lâche les objets Pas de retour de force Limiter l’angle de fermeture ; ajouter de la mousse aux mâchoires

Quand passer à un kit supérieur

Un kit acrylique 4 axes est une plateforme pédagogique, et il l’assume. Ses limites, dans l’ordre où vous les rencontrerez :

Charge utile. Quelques dizaines de grammes. Au-delà, le servomoteur d’épaule ne peut pas tenir.

Répétabilité. Le jeu dans les réducteurs des servomoteurs, plus la flexion des segments acryliques, signifie que revenir à la même pose commandée atterrit à quelques millimètres d’écart. Quatre degrés de jeu à l’épaule sur une portée de 190 mm représentent plus de 13 mm à l’outil.

Orientation du poignet. Avec quatre degrés de liberté, vous pouvez placer l’outil quelque part mais vous ne pouvez pas choisir indépendamment l’angle d’approche. Un bras 5 ou 6 axes ajoute un poignet, qui rend possible « saisir ceci par le côté ».

Amélioration Ce qu’elle apporte
Servomoteurs MG90S partout Engrenages métalliques — survit aux chocs, moins de jeu
Segments aluminium Beaucoup moins de flexion, meilleure répétabilité
Servomoteurs MG996R + cadre plus grand Vraie charge utile, centaines de grammes
Bras 6 axes Orientation indépendante de l’outil
Bras entraîné par pas à pas ou BLDC Répétabilité au dixième de millimètre

Rien de tout cela ne change les calculs. La cinématique à deux segments que vous écrivez pour ce kit est le même solveur qu’utilise un meilleur bras, ce qui est précisément pourquoi le cadre bon marché vaut d’être construit en premier.

Explorer le graphe

Utilisé dans ces réalisations

Projets, parcours d'apprentissage et simulateurs qui intègrent le composant 4-DOF Robot Arm Kit.

Questions

FAQ : 4-DOF Robot Arm Kit

Qu'est-ce qu'un bras robotique 4 axes ?

Un bras robotique 4 axes (quatre degrés de liberté) possède quatre articulations commandées indépendamment — généralement une base rotative, une épaule, un coude et une pince. Ces quatre mouvements permettent à l'outil d'atteindre une gamme de positions sur un bureau et de saisir des objets. C'est le plus petit bras qui ressemble à un vrai manipulateur tout en restant bon marché et facile à commander.

Combien de servomoteurs faut-il pour un bras robotique ?

Un par articulation. Un bras 4 axes utilise quatre servomoteurs — rotation de base, épaule, coude et pince. Les bras plus grands ajoutent une inclinaison et une rotation du poignet pour 5 ou 6 axes. Comme chaque servomoteur a besoin de son propre canal PWM, les bras sont la raison classique d'ajouter un pilote PCA9685 au lieu de câbler les servomoteurs directement au microcontrôleur.

Qu'est-ce que le MeArm ?

Le MeArm est un kit populaire de bras 4 axes open source en acrylique découpé au laser, entraîné par quatre micro-servomoteurs. C'est l'archétype du bras de bureau bon marché — beaucoup de kits vendus aujourd'hui sont des clones du MeArm ou des variantes proches. Tous se câblent et se programment de la même façon, donc les compétences en cinématique et en pilote se transfèrent entre eux.

Combien peut soulever un bras robotique loisir ?

Pas grand-chose — quelques dizaines de grammes à la pince. La limite est le couple du servomoteur multiplié par le bras de levier. Le couple de blocage d'environ 1,8 kg·cm d'un SG90 semble élevé jusqu'à ce qu'on le répartisse sur un bras de 15 cm, où la charge utile tombe à quelques dizaines de grammes. Des servomoteurs à engrenages métalliques et un bras plus court aident ; pour un vrai levage, il faut un bras plus grand et démultiplié.

Faut-il un PCA9685 pour un bras robotique ?

Pas strictement, mais c'est l'outil adapté. Quatre servomoteurs fonctionneront sur les broches PWM d'un Arduino si vous les alimentez séparément, mais un PCA9685 libère les temporisateurs du microcontrôleur, pilote toutes les articulations depuis deux broches I²C, et fait passer le courant des servomoteurs par sa propre alimentation — exactement ce dont un bras multi-articulations a besoin.

Pour aller plus loin

Références