Mise à jour le 13/02/2022 .
Sommaire :
- Câblage et principe de fonctionnement d’un moteur pas a pas avec frein électromagnétique.
- Masse commune.
- Alimentation 5Vdc circuit microcontrôleur.
- Alimentation 24Vdc driver moteur pas a pas.
- Connexions du driver en collecteur ouvert (anode commune)
- Cablage du signal de direction
- Cablage du signal de vitesse de rotation
- Principe de fonctionnement pour la partie débrayage
- Programme pour le pilotage du moteur pas à pas avec frein
- Tutoriel
- A savoir sur l’utilisation des informations de cet article .
- Retour au menu les moteurs pas à pas
.
|
.
Câblage et principe de fonctionnement d’un moteur pas a pas avec frein électromagnétique.
Information importante pour le réglage du courant : Pour un moteur donné, plus le courant du driver est élevé, plus le couple est élevé, mais cela entraîne plus d’échauffement dans le moteur et le driver. Par conséquent, le courant de sortie est en général ajusté de façon à éviter une surchauffe du moteur lors d’une utilisation prolongée. Le raccordement en série ou en parallèle des bobinages modifie de manière significative les inductance et résistance résultantes d’où l’importance d’en tenir compte lors du choix du courant de sortie.
L’intensité communiquée par le fabricant du moteur est importante pour sélectionner le courant, mais il faut également tenir compte du mode de raccordement.
En règle générale pour optimiser les performances du moteur il suffit d’utiliser une tension aussi élevée que possible (attention de ne pas dépasser la tension max du driver par sécurité choisissez toujours une tension max -10%) ce qui permet d’avoir un couple plus élevé. Mais il faut impérativement limiter le courant nominale du driver à celui du moteur.
À savoir: certains drivers nous donnent la possibilité d’avoir un système d’auto-configuration , ce qui permet d’obtenir des performances optimum ( sur le DM860 par exemple )
Retour au sommaireCréation de la masse commune
Retour au sommaireAlimentation 5Vdc circuit microcontrôleur
Retour au sommaireAlimentation 24Vdc du driver
Retour au sommaireConnexions du driver en collecteur ouvert (anode commune)
Retour au sommaireCablage du signal pour le choix de la direction
- Validation de DIR (fil violet) ce signal doit être appliqué minimum 5 μs avant le signal PUL. La tension du signal DIR doit être de 4,5 à 5 V pour un état HAUT et 0 à 0,5 V pour un état BAS,et activation du frein electromagnetique
Retour au sommaire
Câblage de l’information vitesse.
Validation de PUL(fil vert). Défini la vitesse de rotation et le nombre de pas (distance ) La largeur d’impulsion doit être de minimum 2,5 μs pour un fonctionnement correct.
Retour au sommaire.
|
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 |
// // // ********************************************************* // // Pilotage d'un moteur pas a pas avec frein de maintien // // mise en position d'initialisation en phase de demarrage // deplacement des axes en manuel // rotation en automatique // // Le 29/06/2021 // H.Mazelin pour RedOhm // // ********************************************************* // // Active la broche 11 sur Arduino pour piloter la broche PULSE // Pulse signal : en mode impulsion simple (pulse/direction), // une impulsion montante sur cette entrée fait avancer le moteur // d’un pas.La tension de l’impulsion doit etre de 4,5 a 5 V // pour un état HAUT et 0 a 0,5 V pour un état BAS. La largeur // d’impulsion doit être au minimum a 2,5 μs pour un fonctionnement // correct. int PUL=11; // Active la broche 12 sur Arduino pour piloter la broche DIR // DIR signal : en mode impulsion simple, ce signal a des niveaux de tension // haut et bas qui représentent les deux directions de rotation du moteur. int DIR=12; // Active la broche 13 sur Arduino pour piloter la broche ENA // Enable signal : ce signal est utilise pour permettre ou d'interdire // l’utilisation du driver. Un signal haut permet d’utiliser // le driver tandis qu’un signal bas le bloque. int ENA=13; // Rappel sur les variables // Les variables déclarées en tête de programme sont des // variables globales et peuvent être utilisées partout // dans le programme. int basse_de_temps ; // ********************************************************* // Declaration des axes // ********************************************************* // le potentiomètre, branché sur la broche analogique 1 int potar_rotation = 1; // creation de la variable rotation int valeur_rotation ; // --------------- demande de rotation ---------------------- // déclaration de l'entrée du bouton branché sur la broche 6 // de votre carte Arduino int bouton6 = 6; // variable du type int pour stocker les valeurs de passage du bouton6 int bouton6v; // --------------- mise en place manuel --------------------- // déclaration de l'entrée du bouton branché sur la broche 7 // de votre carte Arduino int bouton7 = 7; // variable du type int pour stocker les valeurs de passage du bouton6 int bouton7v; int sortie_frein = 8; // -------- Variable annexe -------------------------------- //variable pour la mise en position manuelle int menu7 ; //Variable pour le menu int cobot_attend = 1 ; // --------------------------------------------------------------------------- // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécutée une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // --------------------------------------------------------------------------- void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret while (!Serial) { ; } // ********************************************************* // Configuration des entrees pour les boutons de selection // ********************************************************* // pinMode :Configure la broche spécifiée pour qu'elle se comporte soit // en entrée, soit en sortie // bouton de rotation pinMode (bouton6,INPUT ); // bouton de deverouillage tourelle pinMode (bouton7,INPUT ); // sortie pilotage frein pinMode (sortie_frein,OUTPUT ); // ********************************************************* // Configuration des sorties pour le pilotage du driver // ********************************************************* // vitesse et deplacement pour le driver pinMode (PUL, OUTPUT); // sens de rotation pour le driver pinMode (DIR, OUTPUT); // activation ou non du driver pinMode (ENA, OUTPUT); // base de temps par defaut basse_de_temps = 1300; // affichage a l'ecran de la presentation Serial.println(" - Cobot Oryon - "); Serial.println(" Construction RedOhm" ); Serial.println (""); // Temporisation pour les circuits electriques for (int delai = 0; delai<5;delai++) { Serial.print(".");delay(300); } Serial.println("Pret "); // Position actuel Serial.println(""); Serial.print("Position de la tourelle => "); Serial.println(valeur_rotation = analogRead (potar_rotation)); // ******************************************************* // Mise en position du cobot en position central // controle si on se trouve a droit // ******************************************************* if ( valeur_rotation<527 ) { digitalWrite(ENA,HIGH);//Verouillage du driver digitalWrite(DIR,LOW);//choix de la direction digitalWrite(sortie_frein, LOW);//deblocage frein delay(100);// temps de securite entre le frein et le deverouillage // La boucle while est une boucle sans fin, jusqu'à ce que la // condition ou l'expression entre les parenthèses deviennent fausses while ( valeur_rotation<528 ) { digitalWrite(PUL,HIGH);// etat haut de la sortie delayMicroseconds(500); digitalWrite(PUL,LOW); // mise a l'etat bas de la sortie delayMicroseconds(500); //lecture de la position actuelle valeur_rotation = analogRead (potar_rotation); // affichage de la position actuel Serial.println(valeur_rotation ); } } // ******************************************************* // Mise en position du cobot en position central // controle si on se trouve a gauche // ******************************************************* else if ( valeur_rotation>526 ) { digitalWrite(ENA,HIGH);//Verouillage du driver digitalWrite(DIR,HIGH);//choix de la direction digitalWrite(sortie_frein, LOW);//deblocage frein delay(100);// temps de securite entre le frein et le deverouillage // La boucle while est une boucle sans fin, jusqu'à ce que la // condition ou l'expression entre les parenthèses deviennent fausses while ( valeur_rotation>526 ) { digitalWrite(PUL,HIGH); delayMicroseconds(500); digitalWrite(PUL,LOW); delayMicroseconds(500); //lecture de la position actuelle valeur_rotation = analogRead (potar_rotation); // affichage de la position actuelle Serial.println(valeur_rotation ); } } } // --------------------------------------------------------------------------- // Le programme principal s’exécute par une boucle infinie appelée Loop () // --------------------------------------------------------------------------- void loop() { // ********************************************************* // creation du menu du cobot // ********************************************************* if (cobot_attend == 1) { // appel de la fonction -> cobot_en_attente cobot_en_attente(); } else if (cobot_attend == 0) { // libre de code } // teste du bouton de demarrage cycle bouton6v = digitalRead(bouton6); if (bouton6v == 1) { Serial.println(" Demarrage cycle "); //Lancement du sous programme de rotation rotation(); delay(100); // appel de la fonction -> cobot_en_attente cobot_en_attente (); } else if (bouton6v == 0) { } // teste du bouton fonctionnement en mode apprentissage bouton7v = digitalRead(bouton7); if (bouton7v == 1) { if (menu7 == 0) { Serial.println(" Mise en position en manuel "); Serial.println(" Deblocage frein "); } //deblocage frein digitalWrite(sortie_frein, LOW); // temps de securite entre le frein et le deverouillage delay(100); //deverouillage driver digitalWrite(ENA,LOW); // Lecture de l'entree analogique et transfert dans la // variable valeur_rotation valeur_rotation = analogRead (potar_rotation); // Affichage de la valeur de la position de la rotation valeur_rotation = analogRead (potar_rotation); Serial.print("Valeur de la rotation =>"); Serial.println(valeur_rotation); menu7 = 1; } else if (bouton7v == 0) { digitalWrite(sortie_frein, HIGH);//blocage frein digitalWrite(ENA,HIGH);//verouillage driver menu7=0; } } //************************************************* // cobot en rotation //************************************************* void rotation() { Serial.println("ok" ); digitalWrite(sortie_frein, LOW);//deblocage frein // temps de securite entre le frein et le deverouillage du driver delay(100); // boucle de repetition de cycle for (int repete=0; repete<1; repete++) { basse_de_temps = random ( 300,850); Serial.print(" Base de temps vitesse avant => " ); Serial.println( basse_de_temps ); digitalWrite(DIR,LOW); digitalWrite(ENA,HIGH); for (int i=0; i<5200; i++) { digitalWrite(PUL,HIGH); delayMicroseconds(basse_de_temps); digitalWrite(PUL,LOW); delayMicroseconds(basse_de_temps); } delay (1000); basse_de_temps = random ( 500,2500); Serial.print(" Base de temps vitesse arriere => " ); Serial.println( basse_de_temps ); digitalWrite(DIR,HIGH); digitalWrite(ENA,HIGH); for (int i=0; i<5200; i++) { digitalWrite(PUL,HIGH); delayMicroseconds(basse_de_temps); digitalWrite(PUL,LOW); delayMicroseconds(basse_de_temps); } delay (1000); } // blocage frein digitalWrite(sortie_frein, HIGH); // temps de securite entre le frein et le deverouillage du driver delay(100); } //************************************************* // cobot en attente //************************************************* void cobot_en_attente () { cobot_attend = 0; Serial.println(""); Serial.println(""); Serial.println("================================================="); Serial.println(" Cobot Oryon en attente "); Serial.println("================================================="); Serial.println(""); Serial.println("bouton rouge -> Deverouillage frein"); Serial.println("bouton vert -> Lancement programme "); Serial.println(""); } |
.
Retour au sommaire
|
.
.
Retour au sommaire
A savoir sur l’utilisation des informations |
.
Les informations sur les caractéristiques et spécificités des moteurs pas à pas et des materiels qui sont fournis sur cette page correspondent aux informations des fiches techniques du constructeur si malgré le soin apporté à la réalisation de cet article une erreur s’est glissée dans ces lignes nous ne pourrions en être tenu responsable.
Les programmes , schémas et autres que ceux donnés par le constructeur font parti des montages utiles à nos applications si malgré le soin apporté à nos montages une erreur s’est glissée dans ces lignes nous ne pourrions en être tenu responsable .
L’ensemble des informations techniques de cet article a été utilisé pour nos applications, elles vous sont fournies comme un exemple de document de travail. Mais nous ne pourrions être tenu responsables d’une mauvaise utilisation de celle-ci.
.
Retour au sommaire