M
mougp09
Compagnon
Bonjour,
Je me suis bricolé il y a quelques temps une regle de coupe pour effectuer des coupes droite au plasma ou au chalumeau quand je suis en déplacement.
J'ai récupéré un programme sur internet pour piloter mon moteur pas à pas au travers d'un arduino et d'un driver de moteur pas à pas (pololu).
Mon système est très sommaire et j'aimerais lui apporter quelques améliorations.
Pour l'instant je branche l'alim, ce qui met tout sous tension et donc fait tourner le moteur. Pour l’arrêter je débranche ...
Je n'ai pas d'inversion de sens depuis l'arduino donc quand j'arrive au bout de la règle, soit je ramène le moteur à la main ou j’inverse une phase du moteur.
L'idée ce serait d'implémenter au programme :
- 2 fins de courses pour éviter la casse
- un petit switch pour aller d'un coté ou de l'autre
- un bouton qui lance la rotation du moteur quand on appuie dessus et qui l’arrête quand on rappuie
Voici le programme originale :
Et voilà ce que j'ai essayer de faire au moins pour inverser le sens ...
Toute la partie mécanique, élec, câblage et lecture de programme ne me pose pas de problème mais pour crée ou modifier un programme j'ai beaucoup de mal.
Je cherche donc quelqu'un qui pourrait m'aider ou m'orienter.
Merci à vous.
Je me suis bricolé il y a quelques temps une regle de coupe pour effectuer des coupes droite au plasma ou au chalumeau quand je suis en déplacement.
J'ai récupéré un programme sur internet pour piloter mon moteur pas à pas au travers d'un arduino et d'un driver de moteur pas à pas (pololu).
Mon système est très sommaire et j'aimerais lui apporter quelques améliorations.
Pour l'instant je branche l'alim, ce qui met tout sous tension et donc fait tourner le moteur. Pour l’arrêter je débranche ...
Je n'ai pas d'inversion de sens depuis l'arduino donc quand j'arrive au bout de la règle, soit je ramène le moteur à la main ou j’inverse une phase du moteur.
L'idée ce serait d'implémenter au programme :
- 2 fins de courses pour éviter la casse
- un petit switch pour aller d'un coté ou de l'autre
- un bouton qui lance la rotation du moteur quand on appuie dessus et qui l’arrête quand on rappuie
Voici le programme originale :
- /* Simple Stepper Motor Control Exaple Code
- *
- * by Dejan Nedelkovski, www.HowToMechatronics.com
- *
- */
- // Defines pins numbers
- const int stepPin = 3;
- const int dirPin = 4;
- int customDelay,customDelayMapped; // Defines variables
- void setup() {
- // Sets the two pins as Outputs
- pinMode(stepPin,OUTPUT);
- pinMode(dirPin,OUTPUT);
- digitalWrite(dirPin,HIGH); //Enables the motor to move in a particular direction
- }
- void loop() {
- customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
- // Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
- digitalWrite(stepPin, HIGH);
- delayMicroseconds(customDelayMapped);
- digitalWrite(stepPin, LOW);
- delayMicroseconds(customDelayMapped);
- }
- // Function for reading the Potentiometer
- int speedUp() {
- int customDelay = analogRead(A0); // Reads the potentiometer
- int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
- return newCustom;
- }
Et voilà ce que j'ai essayer de faire au moins pour inverser le sens ...
/* Simple Stepper Motor Control Exaple Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
// Defines pins numbers
const int stepPin = 3;
const int dirPin = 4;
const byte rev = 5;
int customDelay,customDelayMapped; // Defines variables
void setup()
{
// Sets the two pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(rev,INPUT);
}
void loop(){
if (digitalRead(rev) == HIGH)
{
digitalWrite(dirPin, HIGH); //Enables the motor to move in a particular direction
}
else
{
digitalWrite(dirPin,LOW); //Changes the rotations direction
}
{
customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
// Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
digitalWrite(stepPin, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(stepPin, LOW);
delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp()
{
int customDelay = analogRead(A0); // Reads the potentiometer
int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
return newCustom;
}
}
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/
// Defines pins numbers
const int stepPin = 3;
const int dirPin = 4;
const byte rev = 5;
int customDelay,customDelayMapped; // Defines variables
void setup()
{
// Sets the two pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(rev,INPUT);
}
void loop(){
if (digitalRead(rev) == HIGH)
{
digitalWrite(dirPin, HIGH); //Enables the motor to move in a particular direction
}
else
{
digitalWrite(dirPin,LOW); //Changes the rotations direction
}
{
customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
// Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
digitalWrite(stepPin, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(stepPin, LOW);
delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp()
{
int customDelay = analogRead(A0); // Reads the potentiometer
int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
return newCustom;
}
}
Toute la partie mécanique, élec, câblage et lecture de programme ne me pose pas de problème mais pour crée ou modifier un programme j'ai beaucoup de mal.
Je cherche donc quelqu'un qui pourrait m'aider ou m'orienter.
Merci à vous.