Bras Robot Educatif
← Accueil ← Nos Projets
Association VoRoBoTics
Date : 09/05/2017
Auteur : J.SORANZO
Relecteur :
Thème: robotique, bras, modélisation3D, ARDUINO, SERVO
Projet : VOR015 - Bras Robotique Educatif - servo 20Kg
Problématique
C’est en voyant fonctionner le bras fabriqué par Gilles (cf. projet sur le wiki plus bas dans webographie) à partir d’un projet Thingivers lors d’une de nos démonstrations à la ludothèque de Marine que ça m'a donné envie d’en faire un.
Je trouvais juste que le sien à base de petits servo moteur dit 9g me paraissait vraiment trop faible. Incapable de soulever la moindre charge. J'ai voulu savoir ce que cela pourrait donner avec des servo moteurs un poil plus costauds sans pour autant taper dans les Dynamixel à 500€ pièces
Mini cahier des charges
Design sous fusion 360
Utilisation de servos moyenne gamme pour le modélisme disponibles chez Banggood
Réutilisation de la même électronique que sur le projet à Gilles pour pouvoir réutiliser son code.
Caractéristiques des servomoteur
Etude des caractéristiques des servomoteurs
Brand:JX Item:PDI-6221MG 20KG Large Torque Digital Standard Servo Dead band: 2μs Working frequence: 1520μs / 330hz – faire des essais à différentes fréquences Operating Speed (4.8V): 0.18 sec/60° Operating Speed (6V): 0.16 sec/60° Stall Torque (4.8V): 17.25 kg.cm (239.55oz/in) Stall Torque (6V): 20.32 kg-cm (281.89 oz/in) on pourrait monter à 6V pour avoir plus de couple Dimensions: 40.5X20.2X38mm /1.59 X0.80X49 in Weight: 62 g (2.18oz) Connector Wire Length: JR 265 mm (10.43in) Bearing: 2BB Usage:For RC Models
Vitesse
60° pour 170ms @5V
1° pour 2.83ms
Carte adafruit init 60Hz soit 16667us pour 4096 q= 16667/4096 = 4,07us
On veut de 1000 à 2000us ou (700 à 2300us) donc les valeur possible ADF vont théoriquement de 245 à 491. Dans le code du calibrateur on a mis 100 à 500 soit 407us à 2035us
Le dernier relevé effectué avec ce type de servo et le calibrateur est 120 à 570 u_ADF pour 359*0.5°= 179.5° en un temps de 720ms (240ms/60° - 1°/4ms). Si on considère 120u_adf comme 0° on a (570-120)u_adf pour 180° soit 1u_adf = 180/450°
A titre de comparaison les SG90 (du bras de Gilles):
Item Name: TowerPro SG90 Mini Analog ServoOperating Speed (4.8V no load): 0.12sec/60 degreesStall torque: 1.2kg / 42.3oz(4.8V);1.6 kg / 56.4oz (6.0V)operating voltage: 3.0-7.2VTemperature range: -30℃~60℃Dead band width: 7usItem size: 3.2 x 3 x 1.2cmItem weight: about 9gConnector wire length: 24.5cm
Design mécanique
Le design mécanique a été réalisé sous Fusion360. Sauf la pince : empruntée à BCN3D et ce robot :
Les servomoteurs utilisés ne possèdent qu'un seul axe de sortie donc il faut en créer un deuxième artificiellement.
L'idée de base est de créer une sorte de U comme le montre les vues ci-dessous d'une des articulation :
Ici – vidéo assemblage
Le bras est alors constitué des articulations suivante: la plateform (rotation dans le plan horizontale) puis l'épaule, le coude, le poignet, la rotation du poignet et la pince. Total : 6 degrés de liberté.
Le problème de la masse intrinsèque des éléments constitutifs du bras lui-même viennent en déduction de la charge utile. Le bras mesure environ 30cm. A cette distance 0.339g pèsent pour le premier servomoteur (celui de l'épaule) l'équivalent de 10kg. Il faut donc, rien que pour mouvoir la pince en bout de bras, un couple de 10kg/cm. A ce calcul, il faut ajouter les autres éléments du bras mais qui sont moins éloignés de l'axe de
rotation de l'épaule.
Pour information : pesée : poignet + rotationPoignet + pince = 339g (3servo à 60g)
Une base = 18g
Un U = 12g
Un vis ecrou 3x8 = 1.1g (sur la pince il y en déjà 9)
noix alu = 2g
Ce petit calcul est important, on le verra par la suite...
Analyse de code
Répertoire de travail : 0021-brasROBOT\04-realisation\brasServo20kg\arduinoTestServo60kg
Dans le prog de Gilles, on « parle » aux servo en ° d'angle grâce à un map dans la fonction rotationServo()
longueurImpulsion = map(i, 0, 180, SERVOMIN, SERVOMAX );
Avec SERVOMIN = 100 et max 600.
De plus dans cette fonction, on fait du 1°/15ms max soit en gros à Vmax/5 pour les JX6221
60°/0.9s ou les 180 en quasi 3s
Dans ma version du jour (10/5/2017) on est à 1°/20ms
Quelques recodages
Pour mettre au point la mécanique, j'ai du faire un peu de code.
Notamment, je n'ai pas mis en oeuvre le Bluetooth tout de suite.
J'ai ajouté un Joystick avec bouton de clic. Le bouton permet de passer d'un servo au suivant pour le commander. Bon c'est bien mais au bout d'un moment on se sait plus quel moteur on commande (sauf de le faire bouger un peu, mais dans les phases délicates ça peu devenir gênant). J'ai décidé d'ajouter une LED par moteur en profitant des sorties disponibles (10) sur la carte PCA9685 afin d'indiquer lequel était actif. Un membre du fablab, Pedro, m'a suggéré de mettre un bouton par servo. J'ai donc ajouté un petit clavier 4x4.
Mappage du clavier dans le code ARDUINO :
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'-','0','+','D'}
En plus sur le clavier, outre le fait qu’on peut sélectionner les 6 servo individuellement, on peut choisir 4 vitesse 3, 10, 20 et 50 (respectivement 1°/3ms, 1°/10ms, 1°/20 et 1°/50ms) grâce aux 4 touches de droite (A, B, C, D). 50(D) est la vitesse la plus lente et 3(A) est la plus rapide.La touche '0' permet de revenir en position initiale et + et – permettent d’augmenter ou de réduire la vitesse par pas de 1 rien sur les touches 7,8,9
Les essais
Le clavier c’est très pratique surtout de pouvoir choisir la vitesse et le servo piloté. Cela donne une bonne configuration.
Pb le servo 2 de l’épaule est, malgré une alimentation en 6V, un peu faible. Mesuré le bras fait 30 cm de long. A cette distance le servo peut soulever 20kg/30 soit 667g en théorie. Lorsqu’on laisse le servo en charge bras tendu.Il fini par lâcher (sécurité thermique interne?). Courant 1.5A
Peut-être est-il possible de remplacer par un 60kg.
60kg servo
36.79€ prix avril 2018 chez Banggod |
32 kg servo
HV = high voltage Coreless motor = brush less ? Non il existe en BSL mais à environ 45€. 36.96€ prix avril 2018 chez Banggood |
Description:
Brand: JX Servo Item: PDI-HV2060MG Dead band: 4μs 1520μs / 330hz Max PW:650-2350us ,180° compatible (don't exceed max PW) Standard PW: 850-2150us Motor: High quality core motor Operating Voltage: DC 6.0V-7.4V Operating Temperature Range: -20 — + 60°C Operating Speed: (6.0V) 0.15 sec/60° Operating Speed: (7.4V) 0.13 sec/60° Stall Torque: (6.0V) 48kg.cm Stall Torque: (7.4V) 62kg.cm Dimensions: 65.8X30X57.4mm Weight: 200g Bearing: 2BB Connector Wire Length: JR 265mm |
Description:
Brand: JX Servo Item: PDI-HV7232MG Dead band: 1μs 1520μs / 330hz Max PW:500-2500us Angle: 180° compatible Motor: Coreless motor Operating Voltage: DC 4.8V-8.4V Operating Speed: (6.0V) 0.12 sec/60° Operating Speed: (8.4V) 0.09 sec/60° Stall Torque: (6.0V) 26.2 kg.cm (363.83oz/in) Stall Torque: (8.4V) 31.5kg-cm 437.43 oz/in) Dimensions: 40.5X20.5X36mm /1.59 X0.80X1.43 in Weight: 72g Bearing: 2BB Connector Wire Length: JR 265mm
|
A titre de comparaison les NEMA23 du bras BCN sont à 28kg/cm, il y en a 2 et coute 50€ pièce. | En comparaison PDI-6221MG 20KG : 40.5X20.2X38mm |
NEMA17 (avec Mechaduino): 311g
NEMA17 court: 219g |
|
NEMA14
|
La pince pause également problème quand elle sert fort un objet, le courant peu facilement dépasser 3A.
Elle fini par se mettre en sécurité elle aussi et le courant chute brusquement.
Il est alors impossible de commander la pince même après plusieurs minutes d'attente.
Il faut sortir de cette situation à la main.
Il serait bien de mettre une mesure du courant sur ce servo et de limiter à 800mA par exemple.
La plate-forme est aussi un peu faible, 3 points d'appuis c'est trop peu, il faudrait augmenter le nombre de roulement.
Essai du 22/05
après démontage et remontage de 2 servo/6, il semble que ma référence max est changé. Les SERVOMAX à 627 ne permettent plus d'atteindre 180° ! Phénomène inexpliqué !
Etrange, en même temps le mode de travail est différent. PC déporté et passage par le répertoire réseau. Donc impossible de garantir le code qui était présent dans l'ARDUINO.
Redesign plateform pour servo 60kG
Le diamètre de la plateforme est : 105mm x 60mm de hauteur. Hauteur réduite à 50mm le 08/7
Roulement à bille selont Rollumix: 2 rangée de billes. L'une horizontale pour supporter le poids du bras et l'autre oblique pour centrer.
Voir la vidéo sur cet assemblage (attention deuxième partie du film).
Sur la vu ci-dessus en coupe, les bagues ocre jaune formes les chemins de billes. Un chemin horizontal et un incliné
L'idée est d'avoir une bague centrale extérieur dans laquelle on met 2 anneaux de bille : une horizontale dessus et une en dessous oblique. On fait une gorge pour celle du haut.
Ensuite on coiffe par dessus avec une bague fileté qui passe verticalement à l'inérieur (chemin pour les bille lisse)
A la bague supérieure on vis la bague inférieure (qui comporte un chemin pour les billes obliques) on bloque avec des vis pointeau la bague inférieure.
J'ai 20 billes de 7,9mm de diamètre disponibles.
21/10/17 où en est-on: 2 pièces du nouveau roulement imprimées
Essais bague cannelée v5 encore trop juste. Retouché en v6 et imprimée et KO. V7 exportée.
V7 : ko. V8 : jeu 0,8 + dépouille de 1° KO
v10: nouveau design : épaisseur 5mm, diamètre intérieur nettement plus petit. Jeu 0,9. Cette fois-ci le jeu est peut être trop important OK
v11: même que v10 avec un jeu de 0,8mm => exporté à imprimer le 24/10 OK
Retouche bague oblique pour qu'elle s'imprime sans support
Décision couper en 3 la bague extérieur et procéder par collage pour éviter les supports.
Bride support Servo60kG à couper en deux pour la rendre imprimable. Autre solution trouvée. Pièce dessinnée.
Bague bille oblique trop juste au niveau des billes et du centre (v24).
Mise au point de la bague billes Hrz d'abord. Diam des billes 8mm jeu : 0,3*2 OK
réimprimer la bague Inférieure. OK
20/11/17: le nouveau roulement à 2 rangées de billes est fonctionnel. Le support du servo60kg aussi. Il ne manque plus que le pied redessiné pour accueillir le nouveau roulement. Malheureusement l'imprimante 3D est tombée en panne...
03/12/2017 : robot entièrement remonté et fonctionnel.
Reste à faire pour une version ultérieure :
- Piloter le Output Enable de la carte Adafruit
- Séparer les alimentations
- Pince (max 6V/ I 2A)
- 60kg (max 7.4V)
- et les autres servomoteurReste
- mesure de courant (surtout la pince) (fait mais pour tout le robot),
- donner du grippe à la pince
Schéma électrique
Attention : ne pas utiliser la vue schématique du fichier source Fritzing. Je ne l'ai pas du tout travaillée.
Mon but était seulement de présenter ici un schéma de câblage symbolique.
Pakage design
Il s'agit d'un projet dans le projet. La problématique posée par ce type de bras robotisé, et celui-ci n'y échappe pas, est le transport. Au départ, le robot était visser sur une simple plaque de bois.
J'ai donc designer une sorte de mallette de transport sur la bas des Bobies (voir projet correspondant ce sur même wiki.)
Cette pseudo mallette comporte : un fond (sur lequel est fixé le BRE), 2 grands cotés, un couvercle avec poignée de transport et un système de verrouillage/charnière.
Package design: nomenclature
Designation | Qté | Commentaire | Repère |
Plaque Base | 1 | MDF 10mm | 1 |
Plaque de fond | 1 | MDF 10mm | 2 |
Plaque supérieure | 1 | MDF 10mm | 3 |
Plaque poignée | 1 | MDF 10mm | 4 |
Charnière dessus | 2 | Imprimée | 5 |
Charnière inférieur | 1 | Imprimée | 6 |
Charnière inf. courte | 1 | Imprimée | 7 |
Verrou: cale | 2 | Imprimée | 8 |
Verrou: plot | 2 | Imprimée | 9 |
Verrou base | 2 | Imprimée | 10 |
Allonge verrou | 2 | Imprimée | 11 |
Allonge charnière | 2 | Imprimée | 12 |
Demi poignée | 2 | Imprimée | 13 |
axepoignée | 2 | Imprimée | 14 |
Renfort poignée | 3 | Tige filtée M6x70mm + 2x28mm M3 | 15 |
Agraffes | 4 | Imprimée | 16 |
visserie | Magasin de bricolage | 17 | |
Charnière métal | 3 | Magasin de bricolage | 18 |
Targette | 1 | Imprimée | 19 |
Package design : pièces en mdf 10mm découpée
Package design: pièce imprimées en 3D
La majorité des pièces 3D utilisées ici appartiennent au projet BOBies
Package design: assemblage
Voir la vidéo : sur youtube
Conclusion et évolutions
La bague dentée qui transmet le mouvement de rotation à la plateforme a trop de jeu. Pour le reste, je trouve le résultat assez sympa avec le servo 60kg.
Lors des premier essais de notre nouvelle découpeuse laser, j'ai pu découper 3 jeu de pignon dentés avec des jeux différents, 0.1, 0.2 et 0.3mm. C'est le 0.2mm qui donne les meilleurs résultats mais le jeu intrinsec du servomoteur reste trop important.
Une autre évolution concernerait la partie alimentation à la fois des servomoteurs et de l'ARDUINO.
Petite galerie d'images
Pilotage en 330Hz
Il ne suffit pas de changer la fréquence, les largeurs d'impulsion changent :
60Hz : période : 16667us soit un quantum à 4,07us
SERVOMIN 123 <=> 500us
SERVOMAX 627 <=> 2551us
Nouvelle valeur : 687 soit environ 2800us !
Au 24/03/2018 : essais à faire...
Appro
Servo JX PDI-6221MG 20KG moteurs vendu par 4 site Banggood.
Carte 16 PWM I2C imitation Adafruit en moins cher et oui les temps sont durs ! 4.34€ au lieu de 14 à 18€.
Servo JX Servo PDI-HV7232MG 30KG
Liste des fichiers sources disponible
F360
Plan 2D du canon de l'articulation
stl des pièces imprimées de la mallinette
Code source ARDUINO
Schéma Fritzing du BRE
sources Libre Office article
webographie
http://fr.wikipedia.org/wiki/Licence_Creative_Commons
Projet de bras robotique de Gilles :
http://www.vorobotics.com/wiki/index.php?title=Bras_manipulateur
Tous les sevo torturés pour cette expérience ont été honnêtement acquis sur le site :
BCN3D MOVEO – A fully Open Source 3D printed robot arm
ARDUINO biensûr.
Logiciel de montage vidéo VSDC
Pour présenter les schéma : Fritzing
Licence
Ce document est mis à disposition selon les termes de la Licence Creative Commons Attribution 4.0 International.
Paternité 'by' :L'œuvre peut être librement utilisée, à la condition de l'attribuer à l'auteur en citant son nom.
Note aux auteurs de documents du VoLAB, Vous avez la possibilité de changer de licence. Mais ce serait bien de rester libre et ouvert. Encore une fois ceci est une recommandation et pas une obligation.
Rédaction en langue française
Partant du constat de terrain qu'une énorme masse d'information concernant les sujets qui nous intéressent comme entre autres l'impression 3D n'étaient disponibles que dans la langue de Shakespeare
et que de nombreuses personnes dans notre entourage ne maîtrisaient pas la dite langue et soucieux de diffuser encore plus l'information,
nous avons pris le parti, au VoLAB, de rédiger nos documents de préférence en langue française.
VoLAB
Un mot sur le VoLAB. VoLAB est un fablab implanté à environ 28km au nord-ouest de Paris dans l'agglomération de Cergy Pontoise.
Il est animé par l'association VoRoBoTics.
Site internet www.vorobotics.com
← Accueil ← Nos Projets