Table des matières:

UCL - Embedded - Pick and Place : 4 étapes
UCL - Embedded - Pick and Place : 4 étapes

Vidéo: UCL - Embedded - Pick and Place : 4 étapes

Vidéo: UCL - Embedded - Pick and Place : 4 étapes
Vidéo: What if… we really wanted evidence-informed practice in the classroom? 2024, Juillet
Anonim
UCL - Intégré - Pick and Place
UCL - Intégré - Pick and Place

Cette instructable ira si comment une unité de pick and place 2D est faite et comment la coder.

Étape 1: Compunets

Compunets
Compunets

1x Adrio Méga

2x moteurs pas à pas (nous avons utilisé le moteur pas à pas JLB, modèle 17H1352-P4130)

2x module de carte de contrôleur d'entraînement de moteur pas à pas L298N Dual H Bridge DC pour Arduino

1x servomoteur (nous n'avons pas la tache sur celui-ci)

3 résistances de 10k ohms

2x papules en nylon

1x alimentation 12v

Du bois pour le cadre

Fils

Étape 2: Construction

Construction
Construction
Construction
Construction
Construction
Construction

La première chose à faire lors de la phase de construction a été de déterminer la taille et la forme du pick and place mashine

D'abord, nous construisons le bois de forme de base. Nous avons construit notre cadre pick and place de 50 cm sur 25 cm sur 30 cm. Tout, à l'exception du cadre, du pont et du bras de levage, a été fabriqué au laser.

Voici un lien vers tous les fichiers

Ensuite, nous avons voulu le système de poulie. Ici, nous sommes allés avec deux bagues de 50 mm et une bague de 20 mm. Ensuite, nous mettons une paracorde à côté du 20mm avec de la colle. Après quoi nous avons pressé les deux anneaux de 50 mm de chaque côté de l'anneau de 20 mm.

20 mm

50mm

Ensuite, nous devons concevoir un guide coulissant sur le bras. Ici, nous avons fait deux côtés et une plaque arrière.

Qui a ensuite été collé en forme de U. Ensuite, nous l'avons connecté au pont.

Plaque latérale

Plaque arrière

Maintenant que les pièces pour déplacer le bras de haut en bas sont terminées. Nous devons le déplacer d'avant en arrière.

Lors de la conception, nous nous sommes assurés que les dents s'alignent les unes avec les autres. Les deux éléments ont donc été créés au même endroit du projet.

Étape 3: Coder

Code
Code
Code
Code
Code
Code

La programmation est assez simple et se compose de 5 parties

  1. Inclusion de bibliothèques et configuration de variables pour une utilisation interne et IO
  2. Charger les entrées dans la RAM
  3. Sekvens, en choisissant le mouvement que vous souhaitez.
  4. Contrôle de position pas à pas/servo
  5. Sortie vers le monde

Nous allons expliquer à grands traits chaque partie, mais rappelez-vous que ce n'est qu'une des nombreuses solutions.

1: Avant la configuration void, nous avons inclus les 2 bibliothèques dont nous avons besoin pour ce projet. Pas à pas et servo. L'utilisation des bibliothèques incluses vous évite d'apprendre tous les détails sur les moteurs pas à pas et les servomoteurs.

#comprendre

#comprendre

const int étapesParRévolution = 200; // changez cela pour adapter le nombre de pas par tour pour votre moteur

// initialise la bibliothèque pas à pas sur les broches 8 à 11:

Stepper XStepper(stepsPerRevolution, 22, 23, 24, 25); Stepper YSepper(stepsPerRevolution, 28, 29, 30, 31); Servo pince; // créer un objet servo pour contrôler un servo

le Gripper doit être attaché à la configuration du vide

void setup() { // initialise le port série: Serial.begin(9600); Pince.attache(9); // attache le servo sur la broche 9 à l'objet servo

Le reste de cette section est juste la configuration des variables et des constantes.

2: La première chose dans la boucle Void est de charger toutes les entrées utilisées dans une variable. Ceci est fait pour deux raisons. La première raison est de limiter les tâches lourdes du CPU de lecture d'une entrée. La deuxième raison, qui est la plus importante, est de s'assurer que si une entrée est utilisée plus d'une fois, elle aura la même valeur tout au long de l'analyse. Cela facilite l'écriture de code cohérent. C'est une pratique très courante dans la programmation des automates, mais elle s'applique également à la programmation embarquée.

//-------------------------Entrée dans la RAM-------------------- Xend = digitalRead(34); Yend = digitalRead (35); Ena = digitalRead(36);

3: Dans la partie sekvens du code, nous venons de créer un sekvens avec les commandes Switch et case. La partie sekvens donne juste des signaux à la partie contrôle de position du code. Cette partie peut facilement être personnalisée en fonction de votre application ou utilisée telle quelle.

4: La position du servo est juste contrôlée par le servo liberi et une instruction if pour la pince ouverte et fermée.

Le Stepper Control est un peu plus délicat. La fonction compare le point de consigne (la position à laquelle vous voulez que le bras aille) et la position actuelle. Si la position actuelle est lover the, la fonction s'ajoute à la position et demande à la fonction Stepper liberi de faire un pas positif. L'inverse est vrai pour une position haute. si la position est la même que le point de consigne, un bit XinPos est placé haut et le stepper s'arrête.

// Contrôle SP X

if (XstepCountXsp et non Home){

XstepCount=XstepCount-1; Xpas=-1; XinPos = 0; } si (XstepCount==Xsp){ Xstep=0; XinPos = 1; }

5: Ajouter la fin du code les moteurs sont contrôlés avec les fonctions liberi.

//--------------------Sortie---------------------- // étape une étape: Xstepper.step(Xstep); // étape une étape: YStep.step(Ystep);

Griper.write(GripSp);

Étape 4: Fabriqué par

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Conseillé: