Bonjour,
Encore une petite question concernant Arduino, cette fois-ci un problème avec un moteur pas à pas. Dans mon projet je voudrais assez simplement contrôler ce type de moteur, en l’occurrence celui-ci : http://www.active-robots.com/3325-0-...er-with-5-18-1.
Pour le module de contrôle, j’ai fait le choix d’un DRV8825 (https://www.pololu.com/product/2133) placé sur ce driver : https://www.gearbest.com/other-acces...hoCklsQAvD_BwE. Ce dernier a l’avantage de posséder directement un condensateur et trois pins externes pour le contrôle du micro-stepping. J’ai en effet besoin de mouvements précis avec un micro-stepping à 1/16 de pas minimum, ce que peux faire le DRV8825, et mon moteur aussi.
J’utilise une alimentation de 12V pouvant délivrer 8.33A (le projet final comportera trois moteurs). J’ai réglé la limitation du courant, comme indiqué sur le site, grâce au potentiomètre intégré sur le module de manière à délivrer environ 1.5A (max 1.68A pour ce moteur). J’ai ensuite réglé les pins 1,2 et 3 sur bas, bas et haut (low, low et high ?) pour obtenir un micro-stepping a 1/16 (comme indiqué sur le site du fabricant du DRV8825). J’ai téléchargé la librairie que l’on peut trouver ici : https://github.com/laurb9/StepperDriver, et utilisé l’exemple BasicStepperDriver.ino ci-dessous.
Le moteur tourne (hourra), mais il ne fait pas un tour complet comme il le devrait selon le code. J’ai beau chercher des pistes sur le net, je n’ai pas réussi à trouver ce que je dois changer.
Merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 /* * Simple demo, should work with any driver board * * Connect STEP, DIR as indicated * * Copyright (C)2015-2017 Laurentiu Badea * * This file may be redistributed under the terms of the MIT license. * A copy of this license has been included with this distribution in the file LICENSE. */ #include <Arduino.h> #include "BasicStepperDriver.h" // Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step #define MOTOR_STEPS 200 #define RPM 120 // Since microstepping is set externally, make sure this matches the selected mode // If it doesn't, the motor will move at a different RPM than chosen // 1=full step, 2=half step etc. #define MICROSTEPS 16 // All the wires needed for full functionality #define DIR 8 #define STEP 9 //Uncomment line to use enable/disable functionality #define ENABLE 13 // 2-wire basic config, microstepping is hardwired on the driver //BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP); //Uncomment line to use enable/disable functionality BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP, ENABLE); void setup() { stepper.begin(RPM, MICROSTEPS); } void loop() { // energize coils - the motor will hold position stepper.enable(); /* * Moving motor one full revolution using the degree notation */ stepper.rotate(360); /* * Moving motor to original position using steps */ stepper.move(-MOTOR_STEPS*MICROSTEPS); // pause and allow the motor to be moved by hand stepper.disable(); delay(2000); }
Partager