Table des matières:

Arduino Uno avec broche et moteur de pas : 19 étapes
Arduino Uno avec broche et moteur de pas : 19 étapes

Vidéo: Arduino Uno avec broche et moteur de pas : 19 étapes

Vidéo: Arduino Uno avec broche et moteur de pas : 19 étapes
Vidéo: [ Arduino ] comment utiliser un moteur pas à pas ( ULN2003A et 28BYJ-48 ) 2024, Juillet
Anonim
Image
Image
Ressources utilisées
Ressources utilisées

Aujourd'hui nous allons parler d'un sujet très important en mécanique et mécatronique: les éléments des machines. Dans cet article, nous aborderons spécifiquement les broches, présentant des fonctionnalités et des applications intéressantes. Néanmoins, nous montrerons quelques manières de calculer le mouvement provoqué par une broche et de présenter un montage d'essai.

J'ai donc fait le montage ci-dessous qui expose l'avance d'un axe de 2mm et un autre de 8mm. Ces broches TR8 que j'utilise sont couramment utilisées dans les petits routeurs et les imprimantes 3D, en particulier sur l'axe Z. En rappelant qu'en maîtrisant certains concepts sur lesquels nous allons travailler ici, vous serez capable de concevoir tout type de machine.

Étape 1: Ressources utilisées

  • Broche trapézoïdale de 8 mm de diamètre et pas de 2 mm
  • Broche trapézoïdale de 8 mm de diamètre et 8 mm de pas
  • 8x2 fuseau flasque châtaignier
  • 8x8 fuseau flasque châtaignier
  • Roulements pour broches diamètre 8 mm
  • Guide cylindrique linéaire de 10 mm de diamètre
  • Roulements à rouleaux cylindriques pour guides de 10 mm
  • Supports pour guides cylindriques de 10 mm
  • Moteurs NEMA 17
  • Accouplements d'arbres
  • Arduino Uno
  • Pilote DRV8825
  • Clavier matriciel 4x4
  • Affichage Nokia 5110
  • Diverses pièces en plastique
  • Boulons et écrous
  • Socle en bois
  • Alimentation externe 12V

Étape 2: À propos des broches - Que sont-elles ?

À propos des broches - Que sont-elles ?
À propos des broches - Que sont-elles ?

Les broches sont des éléments de machines, comme les vis. C'est-à-dire qu'il s'agit de barres droites formées de fils de marches continues. Ils sont utilisés dans des mécanismes qui nécessitent un mouvement et un positionnement linéaires. Ils peuvent exercer des forces de traction et de compression élevées et transmettre un couple. Ils permettent le mouvement avec verrouillage automatique. Ils peuvent être construits de différents matériaux, étant l'aluminium et l'acier les plus courants.

Comme les entreprises chinoises fabriquent les broches trapézoïdales, je vous suggère de vous procurer ce type de produit au lieu du boulon à écrou bien connu. Cela est dû au prix plus attractif et à la traînée, que je considère comme hideuse.

Sur la photo, j'ai mis le meilleur axe qui a, à mon avis, c'est l'axe à recirculation de billes. Il est généralement fait d'un acier très dur, et les billes tournent autour, à l'intérieur de la châtaigne. Outre la précision qui est excellente, je souligne également la durabilité, puisque ce type de broche peut reproduire des milliards de mouvements sans endommager le mécanisme. Une option moins chère, qui est celle que nous utilisons ici, est la broche trapézoïdale.

Étape 3: À propos des broches - Filetages simples et à billes

À propos des broches - Filetages simples et à billes
À propos des broches - Filetages simples et à billes

Les broches à billes, sur la photo de gauche, ont des canaux semi-circulaires où roulent les billes. Ils sont relativement plus chers et ont un faible frottement par rapport aux broches monovis, ce qui conduit à un rendement beaucoup plus élevé (frottement de roulement).

Les broches à filetage unique sur le côté droit de l'image ont généralement des profils trapézoïdaux, car cette géométrie est plus appropriée pour appliquer des forces dans la direction axiale et une transmission fluide du mouvement. Ils sont relativement peu coûteux et ont un frottement élevé par rapport aux broches à recirculation de billes, ce qui entraîne un faible rendement, c'est-à-dire un frottement de glissement.

Étape 4: À propos des broches - Applications

À propos des broches - Applications
À propos des broches - Applications

Les broches peuvent être appliquées à tout mécanisme nécessitant un mouvement linéaire. Ils sont largement utilisés dans l'industrie dans les machines et les processus.

Certaines applications incluent:

  • Monte-charges
  • Presses
  • Fraises et tours
  • Équipement de commande numérique par ordinateur
  • Machines d'emballage
  • Imprimantes 3D
  • Découpe laser et équipement de découpe
  • Processus industriels
  • Systèmes de positionnement et de mouvement linéaire

Étape 5: À propos des broches - Paramètres

À propos des broches - Paramètres
À propos des broches - Paramètres

Plusieurs caractéristiques d'une broche doivent être prises en compte lors de la conception d'un mécanisme. Outre son diamètre et son pas, il faut reconnaître sa résistance à la compression, son moment d'inertie (résistance au changement de son état de rotation), le matériau de construction, la vitesse de rotation à laquelle il sera soumis, le sens de fonctionnement (horizontal ou verticale), la charge appliquée, entre autres.

Mais, à partir de mécanismes déjà construits, on peut deviner plusieurs de ces paramètres.

Reconnaissons un bien commun. Commençons par STEP.

Étape 6: À propos des broches - Étape (déplacement et vitesse)

À propos des broches - Pas (déplacement et vitesse)
À propos des broches - Pas (déplacement et vitesse)

Détermine la longueur parcourue par l'écrou à chaque tour. C'est généralement en mm/tour.

Une broche de 2 mm par tour entraînera un déplacement de 2 mm à chaque tour effectué par la broche. Il influencera la vitesse linéaire de l'écrou, car avec l'augmentation de la vitesse de rotation, le nombre de tours par unité de temps augmentera et par conséquent la distance parcourue également.

Si une rotation de 2 mm par tour tourne à 60 tr/min (un tour par seconde), l'écrou se déplacera à 2 mm par seconde.

Étape 7: Assemblage

Assemblée
Assemblée
Assemblée
Assemblée

Dans notre assemblage, j'ai deux moteurs et notre clavier avec l'écran, qui ressemblait à une calculatrice, car je leur ai fait un cache dans l'imprimante 3D. Sur l'écran Nokia, nous avons les options suivantes:

F1: Croissant - Fuso passe de la position actuelle à la position que je détermine

F2: Descendant - Tourner

F3: Vitesse - Puis-je changer la largeur d'impulsion

F4: ÉCHAP

Étape 8: Montage - Matériaux

Montage - Matériaux
Montage - Matériaux

A - Guides linéaires de 10 mm

B - Broches trapézoïdales de pas 2 et 8mm

C - Base de perçage

D - Roulements pour broches

E - Porte-guides

F - Châtaignes

G - Roulements

H - Accouplements

I - Moteurs

J - Diverses pièces plastiques (curseurs, supports moteur, cales, support clavier et afficheur

Étape 9: Assemblage - Étape 01

Assemblage - Étape 01
Assemblage - Étape 01

Suite au perçage de la base (C), nous assemblons les deux moteurs (I). Pour les fixer, nous utilisons des supports fabriqués dans l'imprimante 3D (J). Ne serrez aucune des vis dans cette étape de positionnement. Cela permettra les ajustements nécessaires dans l'étape d'alignement.

Étape 10: Assemblage - Étape 02

Assemblage - Étape 02
Assemblage - Étape 02

Toujours en suivant le perçage de la base (C), positionner les rails de guidage (E) et les roulements (D). Détail de la cale plastique (J) permettant de régler les hauteurs des roulements.

Étape 11: Montage - Étape 03

Montage - Étape 03
Montage - Étape 03

Nous créons un curseur à l'aide d'une pièce imprimée pour relier le roulement (G) à l'écrou (F). Nous avons utilisé deux curseurs, l'un à droite et l'autre à gauche. Sa fonction est d'indiquer la position sur une échelle chaque fois que l'on veut déterminer le déplacement provoqué par la broche.

Étape 12: Assemblage - Étape 04

Assemblage - Étape 04
Assemblage - Étape 04
Assemblage - Étape 04
Assemblage - Étape 04

Insérer le guide (A) et l'axe (B) dans leur palier (D) et support (E) respectifs, à l'opposé du moteur, puis insérer le guide et l'axe dans le palier (G) et la châtaigne (F) et au pointe de la broche, nous insérons également le coupleur (H). Nous les emmenons tous les deux jusqu'à ce qu'ils atteignent leurs points définitifs (appui et moteur opposés).

Serrez légèrement les vis pour permettre un réglage ultérieur. Répétez la procédure en utilisant le guide et la broche restants. Avec tous les composants positionnés, nous effectuons l'alignement des pièces, terminant l'étape d'assemblage mécanique.

Étape 13: Montage - Électronique

Montage - Électronique
Montage - Électronique
Montage - Electronique
Montage - Electronique
Montage - Électronique
Montage - Électronique

À l'aide d'un support en plastique imprimé, nous avons sécurisé l'écran Nokia 5110 et un clavier matriciel 4x4. Dans l'espace inférieur du stand résidera l'Arduino Uno, le driver DRV8825.

En utilisant le perçage disponible dans la base, nous fixons l'assemblage.

Étape 14: Schéma électrique

Schéma électrique
Schéma électrique

Le schéma de câblage est simple. Nous avons le DRV8825 et les deux mêmes 17 miroirs, c'est-à-dire que la même étape que nous envoyons à l'un va à l'autre. Ce qui change, c'est que dans l'un des moteurs j'ai une broche de 8 mm et dans l'autre une broche de 2 mm. Evidemment, alors, que le premier, avec une broche de 8 mm, va plus vite. Toujours dans le schéma se trouvent l'affichage et le clavier 4x4, qui doit être matriciel.

Étape 15: Code source

Inclusion de bibliothèques et création d'objets

Nous avons ici une Lib que j'ai faite, qui est StepDriver.h. Il est préparé pour les drivers 8825, 4988 et aussi TB6600. Je crée dans cette étape l'objet DRV8825, le d1.

//Biblioteca responsável por capturar a tecla que foi pressionada no teclado#include //Biblioteca responsável pelos graficos do display #include //Biblioteca responsável pela comunicacao do display #include //Configuracao de pinos do Display // broche 6 - Sortie de l'horloge série (SCLK) // broche 5 - Sortie de données série (DIN) // broche 4 - Sélection données/commande (D/C) // broche 3 - Sélection puce LCD (CS/CE) // broche 2 - Réinitialisation LCD (RST) Affichage Adafruit_PCD8544 = Adafruit_PCD8544 (6, 5, 4, 3, 2); //Biblioteca de motor de passo #include //Instancia o driver DRV8825 DRV8825 d1;

Constantes et variables globales

Dans cette partie du code, je traite la matrice, que j'ai enseignée dans une autre leçon vidéo (LINK KEYBOARD). Pourtant, je parle de l'objet Clavier, en plus de la distance et de la vitesse.

octet const LINHAS = 4; //número de linhas do tecladoconst byte COLUNAS = 4; //número de colunas do teclado //define uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS[LINHAS][COLUNAS] = { {'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '} }; octet PINOS_LINHA[LINHAS] = {A2, A3, A4, A5}; //pinos que indicam as linhas do teclado byte PINOS_COLUNA[COLUNAS] = {0, 1, A0, A1}; //pinos que indicam as colunas do teclado //instancia de Keypad, responsável por capturar a tecla pressionada Keypad customKeypad = Keypad(makeKeymap(SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); //variáveis resposnsáveis por armazenar o valor digitado char customKey; longue distance non signée = 0; vélocité longue non signée = 2000;

Fonction de lecture du clavier

Dans cette étape, nous avons le code se référant à l'affichage, qui fonctionne l'impression croissante et décroissante.

//Funcao responsavel por ler o valor do usuario pelo teclado --------------------------------------- ---unsigned long lerValor() { //Escreve o submenu que coleta os valores no display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(27, 2); display.setTextColor(BLANC); display.print("VALEUR"); display.setTextColor(BLACK); display.fillRect(0, 24, 21, 11, 2); display.setCursor(2, 26); display.setTextColor(BLANC); display.print("CLR"); display.setTextColor(BLACK); display.setCursor(23, 26); display.print("LIMPAR"); display.fillRect(0, 36, 21, 11, 2); display.setCursor(5, 38); display.setTextColor(BLANC); display.print("F4"); display.setTextColor(BLACK); display.setCursor(23, 38); display.print("VOLTAR"); display.setCursor(2, 14); display.display(); Valeur de chaîne = ""; car tecla = faux;

boucle en attente de la touche enfoncée

Nous expliquons ici la programmation en boucle, c'est-à-dire où vous entrez les valeurs.

//Loop infinito enquanto nao chamar o return while (1) { tecla = customKeypad.getKey(); if (tecla) { switch (tecla) { //Se teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '0': valeur += tecla; display.print(tecla); display.display(); Pause; //Se tecla CLR foi pressionada case 'c': //Limpa a string valor valor = ""; // Apaga o valor affiche display.fillRect(2, 14, 84, 8, 0); display.setCursor(2, 14); display.display(); Pause; //Se tecla ENT pour pressionada case 'e': //Retorna o valor return valor.toInt(); Pause; //Se tecla F4 (ESC) foi pressionada case 'D': return -1; par défaut: pause; } } //Limpa o char tecla tecla = false; } }

Fonction d'entraînement du moteur

La fonction "déplacer" est travaillée dans cette étape. J'obtiens le nombre d'impulsions et la direction puis je fais un "pour".

//Funcao responsavel por mover o motor ----------------------------------void mover (non signé pulsos longs, bool direcao) { for (unsigned long i = 0; i < pulsos; i++) { d1.motorMove(direcao); } }

mettre en place ()

Maintenant, je déplace l'affichage et la configuration du pilote, et j'ai même mis l'épinglage à l'intérieur du code source pour le rendre plus facile. J'initialise certaines valeurs et m'occupe des méthodes qui génèrent les paramètres.

void setup() { //Configuracao affiche ---------------------------------------- -------- display.begin(); display.setContrast(50); display.clearDisplay(); display.setTextSize(1); display.setTextColor(BLACK); //Configuration du pilote DRV8825 ----------------------------------------- // broche GND - Enable (ENA) // broche 13 - M0 // broche 12 - M1 // broche 11 - M2 // broche 10 - Reset (RST) // broche 9 - Sleep (SLP) // broche 8 - Step (STP)) // broche 7 - Direction (DIR) d1.pinConfig(99, 13, 12, 11, 10, 9, 8, 7); d1.sommeil(BAS); d1.reset(); d1.pasParMm(100); d1.pasParRound(200); d1.stepConfig(1); d1.motionConfig(50, vélocité, 5000); }

boucle () - 1ère partie - Menu Dessin

void loop() { //Escreve o Menu do Programa no display ------------------------------------ display.clearDisplay(); display.fillRect(0, 0, 15, 11, 2); display.setCursor(2, 2); display.setTextColor(BLANC); display.print("F1"); display.setTextColor(BLACK); display.setCursor(17, 2); display.print("CRESCENTE"); display.fillRect(0, 12, 15, 11, 2); display.setCursor(2, 14); display.setTextColor(BLANC); display.print("F2"); display.setTextColor(BLACK); display.setCursor(17, 14); display.print("DIMINUER"); display.fillRect(0, 24, 15, 11, 2); display.setCursor(2, 26); display.setTextColor(BLANC); display.print("F3"); display.setTextColor(BLACK); display.setCursor(17, 26); display.print("VELOCIDADE");

boucle () - Partie 2 - Menu Dessin

display.fillRect(0, 36, 15, 11, 2); display.setCursor(2, 38); display.setTextColor(BLANC); display.print("F4"); display.setTextColor(BLACK); display.setCursor(17, 38); display.print("ESC"); display.display(); bool esc = faux;

boucle () - Partie 3 - Courir

//Loop enquanto a tecla F4 (ESC) nao pour pressionada while (!esc) { //captura a tecla pressionada do teclado customKey = customKeypad.getKey(); //Caso alguma tecla foi pressionada if (customKey) { //Trata a tecla apertada switch (customKey) { //Se tecla F1 foi pressionada case 'A': distancia = lerValor(); //Se tecla ESC foi pressionada if (distancia == -1) { esc = true; } else { //Escreve a tela "Movendo" no display display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor(BLANC); display.print("MOVENDO"); display.setTextColor(BLACK); display.setCursor(2, 14); display.print(distance); display.print(" Passes"); display.display();

boucle () - Partie 4 - Courir

//Move o motor mover(distancia, LOW); //Volta ao menu esc = true; } Pause; //Se tecla F2 pour pressionada case 'B': distancia = lerValor(); //Se tecla ESC foi pressionada if (distancia == -1) { esc = true; } else { //Escreve a tela "Movendo" no display display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor(BLANC); display.print("MOVENDO"); display.setTextColor(BLACK); display.setCursor(2, 14); display.print(distance); display.print(" Passes"); display.display();

boucle () - Partie 5 - Courir

//Move o motor mover(distancia, HIGH); //Volta ao menu esc = true; } Pause; //Se tecla F3 pour pressionada case 'C': velocidade = lerValor(); if (vitesse == -1) { esc = vrai; } else { //Escreve a tela "Velocidade" no display display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(12, 2); display.setTextColor(BLANC); display.print("VELOCIDADE"); display.setTextColor(BLACK); display.setCursor(2, 14); display.print(velocidade); display.print(char(229)); display.print("s");

boucle () - Partie 6 - Courir

display.fillRect(31, 24, 21, 11, 2); display.setCursor(33, 26); display.setTextColor(BLANC); display.println("OK!"); display.setTextColor(BLACK); display.display(); //Configura nova velocidade ao motor d1.motionConfig(50, velocidade, 5000); retard (2000); //Volta ao menu esc = true; } Pause; //Se tecla F4 (ESC) pour pressionada case 'D': //Se tecla CLR pour pression case 'c': //Se tecla ENT pour pressionada case 'e': //Volta ao menu esc = true; par défaut: pause; } } //Limpa o char customKey customKey = false; } }

Étape 16: À propos des broches - Configurations de la machine

À propos des broches - Configurations de la machine
À propos des broches - Configurations de la machine

Dans les machines CNC telles que les imprimantes 3D et les routeurs par exemple, le programme chargé du contrôle du positionnement a besoin de savoir comment vont se produire les mouvements en fonction du nombre d'impulsions données au moteur pas à pas.

Si le pilote de moteur pas à pas permet l'application de micro-pas, cette configuration doit être prise en compte dans le calcul du déplacement produit.

Par exemple, si un moteur à 200 pas par tour est connecté à un driver réglé sur 1/16, alors 16 x 200 impulsions seront nécessaires pour un seul tour de la broche, c'est-à-dire 3200 impulsions pour chaque tour. Si cette broche a un pas de 2 mm par tour, il faudra 3200 impulsions dans le pilote pour que l'écrou se déplace de 2 mm.

En fait, les contrôleurs logiciels utilisent souvent une raison pour spécifier ce rapport, le "nombre d'impulsions par millimètre" ou "pas/mm".

Étape 17: Marlin

Marlin
Marlin

Dans Marlin, par exemple, on voit dans la section @section motion:

/ **

* Pas d'axe par défaut par unité (pas / mm)

* Remplacer avec M92

* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]

* /

#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}

Dans cet exemple, nous pouvons conclure que les axes X et Y ont une précision de 80 impulsions pour se déplacer de 1 mm, tandis que le Z a besoin de 3200 impulsions et l'extrudeuse E0 en a besoin de 100.

Étape 18: GRBL

GRBL
GRBL

Ci-dessous, nous voyons les commandes de configuration GRBL. Avec la commande 100$, on peut ajuster le nombre d'impulsions nécessaires pour provoquer un décalage d'un millimètre sur l'axe X.

Dans l'exemple ci-dessous, nous pouvons voir que la valeur actuelle est de 250 impulsions par mm.

Les axes Y et Z peuvent être réglés respectivement à 101 $ et 102 $.

Conseillé: