Les cuento que me estoy volviendo loco al intentar controlar un motor nema 17 paso a paso
lo he intentado con muchos controladores siempre acompañado de arduino nano en el pasado se calentaba mucho no giraba suavemente, me recomendaron de cambiar de diver así que ahora uso un
DRV8825
con esta placa de extensión
y trato de animar el motor con un simple ejemplo siguiendo este tutorial
pero el motor no hace nada de nada el driver no se calienta ni ruidos ni vibraciones ni resistencia cuando trato de girar el motor con la mano nada. así que cheque todas las conexiones y todo parece bien sin falsos contactos.
ya comencé de cero como unas 10 veces y nada cambia
Un detalle mas acavo de probar con el mismo Arduino y con el mismo motor pero esta vez utilizando un EasyDriver con el diagrama y el código que se muestra a qui
y funciona bien ... creo desde mi punto de viste el motor gira de un lado al otro suele mente según la velocidad que elija. así que prove otro código y en este no funciona que pasa que es lo que cambia ?
int smDirectionPin = 3; //Direction pin Nano Pin 3 connected to DIR pin of Easy Driver
int smStepPin = 2; //Stepper pin Nano Pin 2 connected to STEP pin of Easy Driver
void setup(){
/*Sets all pin to output; the microcontroller will send them(the pins) bits, it will not expect to receive any bits from thiese pins.*/
pinMode(smDirectionPin, OUTPUT);
pinMode(smStepPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
digitalWrite(smDirectionPin, HIGH); //Writes the direction to the EasyDriver DIR pin. (HIGH is clockwise).
/*Slowly turns the motor 1600 steps*/
for (int i = 0; i < 1600; i++){
digitalWrite(smStepPin, HIGH);
delayMicroseconds(700);
digitalWrite(smStepPin, LOW);
delayMicroseconds(700);
}
delay(1000); //Pauses for a second (the motor does not need to pause between switching direction, so you can safely remove this)
digitalWrite(smDirectionPin, LOW); //Writes the direction to the EasyDriver DIR pin. (LOW is counter clockwise).
/*Turns the motor fast 1600 steps*/
for (int i = 0; i < 1600; i++){
digitalWrite(smStepPin, HIGH);
delayMicroseconds(70);
digitalWrite(smStepPin, LOW);
delayMicroseconds(70);
}
delay(1000);
}
debería ser igual a este
/* Arduino Stepper Control with Potentiometer
Created by Yvan / https://Brainy-Bits.com
This code is in the public domain...
You can: copy it, use it, modify it, share it or just plain ignore it!
Thx!
*/
#include
// Library created by Mike McCauley at http://www.airspayce.com/mikem/arduino/AccelStepper/
// AccelStepper Setup
AccelStepper stepper(1, 2, 3); // 1 = Easy Driver interface
// Nano Pin 2 connected to STEP pin of Easy Driver
// Nano Pin 3 connected to DIR pin of Easy Driver
// Variables to store current, previous and move position
int val = 0;
int previous = 0;
int long newval = 0;
void setup() {
stepper.setMaxSpeed(4800); // Set speed fast enough to follow pot rotation
stepper.setAcceleration(4800); // High Acceleration to follow pot rotation
}
void loop() {
val = analogRead(A4); // Read Potentiometer current value
if ((val > previous+6) || (val < previous-6)) { // Check that a move of the pot is at least > or < than 6
newval = map(val, 0, 1023, 0, 1600); // Map value (1600 = 1 stepper shaft rotation)
stepper.runToNewPosition(newval); // Move stepper to new position
previous = val; // save current value into variable previous
}
}
Entonces no hay error salvo que si el segundo funciona y lo comparas con el primero veras que los pines STEP y DIR estan cambiados. Por eso la primer versión la puse como debe ir y no como sugieres que la has usado.
Buenas! Que fuente usas? Capaz no le da la capacidad como para moverlo al motor,o capaz no lo regulaste como corresponde, recorda que en full-steps tenes que entregarle al menos el 70% de la corriente nominal al motor.
Otra cosa, tenes algun datasheet del nema 17? Hay varios tipos y por lo que vi el easy driver tiene un tope de 750mA, si el motor tiene un consumo mas elevado que eso podrias quemar el driver por lo que se (si estoy equivocado espero me corrijan)