Saludos a todos
Tengo un proyecto que consiste en el control de velocidad de un motor paso a paso nema 17 mediante una aplicación vía bluetooth, ha estado funcionando muy bien hasta que cambié el motor por otro nema 17 aún más potente, ahora en la aplicación el motor varía todas las velocidades menos 50 rpm, coge velocidades más bajas y más altas pero solo con esa presenta problemas
Configuré la corriente para el nuevo motor (estoy usando un shield cnc con el driver a4988) el cálculo queda así: 1.8A/2=0.9v
El último motor fue 42HD4027-01 y el nuevo es 17hs8401b de un solo eje
si aumento el voltaje del 8825 llegará a 50 rpm pero el motor y el driver se calientan tanto que no quiero dañarlos.
#include <SoftwareSerial.h>
#include <AccelStepper.h>
// Definimos los pines utilizados
const int pinStep = 2; // esta configurado en x
const int pinDir = 5;
const int pinEnable = 8;
// Creamos un objeto de tipo AccelStepper
AccelStepper stepper = AccelStepper(1, pinStep, pinDir);
SoftwareSerial BTSerial(10, 11); // Creamos un objeto SoftwareSerial para la comunicación Bluetooth
float rpm = 0;
const int dir = -1; // 1 para CW, -1 para CCW
void setup() {
// Configuramos los pines
pinMode(pinEnable, OUTPUT);
digitalWrite(pinEnable, LOW); // Habilitamos el driver
// Configuramos el objeto AccelStepper
stepper.setMaxSpeed(2000); // Velocidad máxima en RPM
BTSerial.begin(38400); // Iniciamos la comunicación Bluetooth
}
void loop() {
char c;
if(BTSerial.available()) {
c = BTSerial.read();
if (c == '1') {
rpm = 50;
}
if (c == '2') {
rpm = 100;
}
if (c == '3') {
rpm = 150;
}
if (c == '4') {
rpm = 200;
}
if (c == '5') {
rpm = 250;
}
if (c == '6') {
rpm = 300;
}
if (c == '7') {
rpm = 350;
}
if (c == '8') {
rpm = 0;
}
if (c == '9') {
rpm = 10;
}
if (c == 'A') {
rpm = 20;
}
if (c == 'B') {
rpm = 30;
}
if (c == 'C') {
rpm = 40;
}
stepper.setSpeed((dir * (float) rpm / 60.0) * 200.0);
}
stepper.runSpeed();
}
Es una situacion bastante extraña, que creen que deba hacer? Realmente es importante mantener los 50 RPM