Maison bras robotisé à l’aide de pièces Standard en utilisant Arduino et un traitement GUI (15 / 17 étapes)

Étape 15 : Arduino Code

Permet d’observer certains éléments de l’esquisse de l’Arduino avant de commencer à essayer de l’utiliser pour déplacer le bras.

La première est la façon dont nous disons l’esquisse les paramètres pour les servos, puisque nous utilisons la bibliothèque mini-Maestro. J’ai fait cela en mettant en place un tableau de structures, chaque réglage des paramètres pour le servo de bras (lignes 31-43 de l’esquisse

 struct maestro_parameters { // servo_channel, name, min, max, home, speed, accel, and neutral come // directly from the min-maestro channel settings tab so it is a good // idea to take a screen shot and print it out. int servo_channel; char servo_name[20]; int servo_min; int servo_max; int servo_home; int servo_speed; int servo_accel; int servo_neutral; // The next two variables are required for Arduino mapping function. We will be mapping degrees to // microseconds. fromLow corresponds to the servo_min and and fromHigh corresponds to // servo_max. // If we use the shoulder as an example if your servo_min value is 672 microseconds, // which would correspond to +180 degrees and your servo_max value is 2248 microseconds // which corresponds to -180 degrees the fromLow and fromHigh values would be +180 // and -180 degrees respectively int servo_fromLow; int servo_fromHigh; // The next two variables are used to set the servo constraints. In, other //words the max allowable travel for each of servos int servo_constLow; int servo_constHigh; } servo[6]; 

Des valeurs spécifiques pour les servos sont fixés à lignes 66-71. Pour mon bras, ce serait :

 servo[0] = (maestro_parameters) {0, "Base", 1064, 1663, 1366, 0, 0, 1504, -90, 90, -80, 80}; servo[1] = (maestro_parameters) {1, "Shoulder", 672, 2248, 2040, 40, 0, 2040, -180, 180, -10, 180}; servo[2] = (maestro_parameters) {2, "Elbow", 928, 1872, 1738, 10, 0, 1505, 180, -180, -160, 45}; servo[3] = (maestro_parameters) {3, "Wrist_Pitch", 928, 2128, 928, 10, 0, 1500, 0, 180, 0, 180}; servo[4] = (maestro_parameters) {6, "Wrist_Rotate", 608, 2448, 1500, 40, 0, 1500, 90, -90, -90, 90}; servo[5] = (maestro_parameters) {7, "Gripper", 1312, 1792, 1358, 7, 0, 1500, 0, 10, 0, 10}; 

Nous allons parler de la fonction de mappage pendant quelques secondes. En général, les fonctions de mappage est sous la forme suivante :

 servoPosMs = 4*map(servoPosDeg, servo[servoNum].servo_fromLow, servo[servoNum].servo_fromHigh, servo[servoNum].servo_min, servo[servoNum].servo_max); 

Pour référence, qu'il faut multiplier la valeur résultante de la cartographie par 4 étant donné que la bibliothèque de mini-Maestro fonctionne attend valeurs par incréments de 1/4 microseconde. Ce que j’ai trouvé, c’est que la fonction de mappage n’est pas exact pour les réducteurs servo épaule et le coude, il était hors de quelques degrés, ce qui a causé des inexactitudes dans le bras de servo de positionnement. Ce que je me suis retrouvé faire est créer mes propres courbes de régression linéaire pour ces servos et leur incorporation dans la courbe. Cela a été fait en fonction de moveServo() des croquis.

Nous allons jeter un oeil à cette fonction :

void moveServo() {/ / les limites de fonction de contraindre le mouvement servo donc vous ne saturez pas le bras en positions vous / / ne veulent pas servoPosDeg = contraindre (servoPosDeg, servo [servoNum] .servo_constLow, servo[servoNum].servo_constHigh) ; //Mini Maestro valeurs du 1/4 ms il faut multiplier par 4. if(servoNum == 1) {servoPosMs = 4*(4.4406*servoPosDeg+1491.1);} else if(servoNum == 2) {servoPosMs = 4*(-2.4208*servoPosDeg+1436.2);} else { void moveServo() { // The Constrain function limits the servo movement so you do not overdrive the arm into positions you // do not want servoPosDeg = constrain(servoPosDeg, servo[servoNum].servo_constLow, servo[servoNum].servo_constHigh); //Mini Maestro values given in 1/4 ms so you have to multiply by 4. if(servoNum == 1) { servoPosMs = 4*(4.4406*servoPosDeg+1491.1); } else if(servoNum == 2) { servoPosMs = 4*(-2.4208*servoPosDeg+1436.2); } else { servoPosMs = 4*map(servoPosDeg, servo[servoNum].servo_fromLow, servo[servoNum].servo_fromHigh, servo[servoNum].servo_min, servo[servoNum].servo_max); } //Serial.println(servoPosDeg); // setSpeed tells the servo how fast you want the servo to move, // set Target tells the servo where to move maestro.setSpeed((uint8_t) servo[servoNum].servo_channel, (uint16_t) servo[servoNum].servo_speed); maestro.setTarget((uint8_t) servo[servoNum].servo_channel, (uint16_t) servoPosMs); // The while loop is here to tell the sketch to wait till the servo has finished moving before // sending a done message while(maestro.getMovingState() == 1) { //Serial.println("Moving Servo"); }; //Serial.print ("Position is: "); //Serial.println (maestro.getPosition(servo[servoNum].servo_channel)); Serial.println ("Done"); }<p> Serial.println ("Done");</p><p>}</p> 

Dans l’esquisse validée, j’ai commenté les lignes pour la régression linéaire. Vous devrez déterminer si vous devez cela ou non. Fondamentalement, Prévenez le servo pour passer à la + 90 ou -90 (selon le servo) et voir si c’est vraiment à 90 degrés. Si vous vous sentez comme si ce n’est pas satisfaisant utiliser le centre de contrôle de Maestro pour déplacer le servo à 0, 90 180 degrés (voir figure), copier les valeurs de la microseconde et utiliser MS Excel pour faire une courbe de tendance linéaire (Assurez-vous de dire pour montrer l’équation.

Pour tester l’esquisse, charger l’esquisse dans l’Arduino. Lorsque vous avez terminé de chargement ouverte jusqu'à la série fenêtre commande et envoyer des commandes à bras en forme de suite :

servoNum, cible degrés

Exemple,

0, 25 puis appuyez sur la touche Retour

Cela déplace le servo de base à gauche de 25 degrés.

Pour résumer :

Num de servo Servo
0 Base
1 épaule
2 coude
3 hauteur de poignet
4 faire pivoter le poignet
6 pince

Articles Liés

Bras robotique avec des gants, téléphone Android et Arduino

Bras robotique avec des gants, téléphone Android et Arduino

Aujourd'hui, nous avons presque 2 techniques pour jouer avec le bras robotisé, soit par les boutons , par exemple comme le bouclier de jeu ou en utilisant des gants qui incluent les capteurs. Pourtant, aujourd'hui je vais vous montrer une nouvelle te
Contrôler un bras robotisé à l’aide d’Arduino, 1Sheeld et un Android Smart Phone

Contrôler un bras robotisé à l’aide d’Arduino, 1Sheeld et un Android Smart Phone

Dans cet article que nous allons vous montrer comment utiliser 1Sheeld et votre Android smart phone capteurs (Orientation & proximité) pour contrôler un Robotic arm sans fil.Brève sur 1Sheeld :http://1sheeld.com/Étape 1: Nos outils 1 - télémanipulate
Commander votre Robot à l’aide d’un Wii Nunchuck (et un Arduino)

Commander votre Robot à l’aide d’un Wii Nunchuck (et un Arduino)

après les avoir portés moi-même en jouant à Wii boxe je suis arrivé à penser ne serait-il pas merveilleux si je pourrais l'utiliser pour contrôler mon robot, (à la recherche de ma main gauche).En regardant autour de l'internet j'ai trouvé une foule d
Inverseur d’eau de pluie à l’aide de pièces standards

Inverseur d’eau de pluie à l’aide de pièces standards

organes de dérivation de l'eau de pluie peuvent être achetés prêt-à- et j'en ai un moi-même. Cependant, $NZ80 est beaucoup plus qu'on a besoin de payer. Cette Instructible va vous montrer comment j'ai fait mon propre pour 2/3 du prix. L'idée elle-mêm
Interactive chemin les bras robotisé suivants à l’aide de pfodApp

Interactive chemin les bras robotisé suivants à l’aide de pfodApp

IntroductionCette instructable est une extension à Distance bras robotisé contrôlé à l'aide de pfodApp qui vous permet de manière interactive un chemin complex pour votre bras robotique du programme et ont ensuite le bras de faire défiler le chemin d
Bras robotisé Custom Actobotics

Bras robotisé Custom Actobotics

Bonjour tout le monde.Le but de ce projet est de construire un bras robotisé personnalisé avec des pièces de Servocity / Actobotics. Je sais il y a beaucoup de tutoriels de bras robotisé là-haut, mais mon but est de construire un bras robuste qui peu
Bras robotisé de contrôle mental

Bras robotisé de contrôle mental

Il s'agit d'un projet que j'ai fait pour mon Google Science Fair entrée. Si vous aimez cette s'il vous plaît vérifier dehors et vote pour moi lorsqu'il devient disponible.Il s'agit d'une vidéo de la main étant contrôlée par le cerveau d'ouverture et
Bras robotisé contrôlé de mouvement

Bras robotisé contrôlé de mouvement

* cette instructable n'est pas complète, je vais poster bientôt le codeLe bras :Cette instructable montre le processus de construction d'un bras robotisé à l'aide de servos, Arduino, microprocesseur, un gyroscope et plusieurs capteurs de pliage.L'uti
Bras robotisé Trifecta (Science Olympiade)

Bras robotisé Trifecta (Science Olympiade)

)Bienvenue 2016 Science Olympiade équipes ! L'événement du bras du Robot est de retour et êtes-vous prêt à faire certains robots kick butt ? S'il vous plaît laissez un commentaire ci-dessous plutôt que nous messagerie afin que la Communauté puisse se
Multi-contrôlé haut précision Bureau bras robotisé

Multi-contrôlé haut précision Bureau bras robotisé

Mise à jour: campagne de Dobot est maintenant disponible sur kickstarter, et ils ont juste mis au point une nouvelle pince avec la gamme fonctionnante 1 mm - 45 mm et mise à jour d'un projet d'impression supérieur précision 3D, si vous êtes intéressé
Construire le bras robotisé avec 3DP +Arduino(用3DP+Arduino製作機械手臂)

Construire le bras robotisé avec 3DP +Arduino(用3DP+Arduino製作機械手臂)

Il s'agit d'un axe 5 bras robotisés, je l'ai fait avec 3D Printer & Arduino.Vous pouvez suivre les étapes ci-dessous pour télécharger la ressource et en faire.Comment préparer le Stuff :1.MG995 servo x 52. SONY Joystick x13. Arduino x1.Étape 1: Voir
Servo bras robotisé Arduino basé

Servo bras robotisé Arduino basé

Introduction---Bonjour à thé cette fois je partage mon nouveau projet du bras robotisé à l'aide de Conseil ArduinoUNO et Micro 180 degré servomoteurs, j'espère que vous trouverez intéressant.Je vais essayer de vous montrer comment vous pouvez contrôl
Sans fil contrôler un Robot en utilisant Arduino et Modules RF !

Sans fil contrôler un Robot en utilisant Arduino et Modules RF !

/*Edit 05/05/2016Hé les gars, j'ai été occupé avec le Collège et ne pouvait pas répondre aux commments. La plupart de vous tous voulait le code et schémas faits un peu mieux alors j'ai fait les schémas sur Eagle 7.2.0 et téléchargées tout sur Github.
Le rêve... un Robot industriel de Hobby maison bras double...

Le rêve... un Robot industriel de Hobby maison bras double...

j'ai décidé que je devais me construire un « DAIR »... ou au moins un robot « SAIR »... alors j'ai commencé à concevoir des pièces basées sur l'utilisation de moteurs servo de passe-temps... ils sont partout et il est facile de programmer un Conseil