ExemplaryLigas

Ciencia, tecnología y algo más…

Cambia las RPM de tu NEMA con este código

En este post te voy a mostrar el código para cambiar las RPM de un motor NEMA 34 de ciclo cerrado, este motor utilizó un driver HSB860H y una fuente de alimentación de 48 V DC. El pin 5 debe ir conectado al pin ENA del driver. El pin 6 debe ir conectado al pin PUL del driver. El pin 7 debe ir conectado al pin DIR del driver.

El código es el siguiente:

int driverENA = 5; //ENA pin
int driverPUL = 7; //PUL pin
int driverDIR = 6; //DIR pin

void setup() {
pinMode (driverENA, OUTPUT);
pinMode (driverPUL, OUTPUT);
pinMode (driverDIR, OUTPUT);
digitalWrite(driverENA, LOW);
}

void loop() {
// DIR = HIGH = CW
// Resumen de fórmulas:
// RPS = 2500/SUMA(microsegundos)
// RPM = 150,000/SUMA(microsegundos)
digitalWrite(driverDIR, 1); // Cambiar el 1 por 0 si se quiere cambiar la dirección de giro
for (int x = 0; x <= 8000; x++)
{
digitalWrite(driverPUL, HIGH);
delayMicroseconds(300); //Duración del pulso
digitalWrite(driverPUL, LOW);
delayMicroseconds(6100); //Delay entre pulsos
}

// SUMA(microsegundos) = 300 + 6100 = 6400

// RPS = 2500/6400 = 0.39 revoluciones por segundo

// RPM = 150,000/6400 = 23.44 revoluciones por minuto

En el video de abajo podrás ver la conexión de cada componente de manera detallada.

Pero, ¿Cómo voy a cambiar las revoluciones por minuto? No te preocupes a continuación te explico exactamente qué es lo que tienes que hacer.

Primero debes copiar y pegar este código en la interfaz gráfica de Arduino, una vez lo tengas ahí, guárdalo con el nombre que tu desees, después vas a subirlo a tu Arduino previamente conectado a tu computadora. Ahora vas a observar si tu motor Nema en efecto se esta moviendo o no con las rpm establecidas por defecto, esto es 23.44 rpm. Por obvias razones todos queremos controlar nuestro motor Nema a unas revoluciones por minuto especificas y para eso debes hacer 2 pequeños cálculos, el primero es para las revoluciones por segundo, estas se calculan con la siguiente ecuación:

(1)   \begin{equation*}  RPS = \frac{2500}{(Duración~del~pulso)+(Delay~entre~pulsos)} \end{equation*}

Por lo tanto a la hora de sustituir tendríamos:

(2)   \begin{equation*}  RPS = \frac{2500}{(300)+(6100)} \end{equation*}

Y esto nos daría como resultado:

(3)   \begin{equation*}  RPS = \textbf{0.39~revoluciones~por~segundo} \end{equation*}

Pero usualmente no se trabaja con revoluciones por segundo, entonces vamos a convertir las revoluciones por segundo a revoluciones por minuto o RPM con la siguiente ecuación:

(4)   \begin{equation*}  RPM = \frac{150,000}{(Duración~del~pulso)+(Delay~entre~pulsos)} \end{equation*}

O bien simplemente puedes multiplicar por 60 la ecuación de RPS como se indica abajo:

(5)   \begin{equation*}  RPM = RPS*60 \end{equation*}

Con esto dicho nos daremos cuenta de que con ambas ecuaciones llegamos al mismo resultado:

(6)   \begin{equation*}  RPM = \textbf{23.44} \end{equation*}

Pero, aún no se ha dicho como cambiar las RPM, ok, no te desesperes, el cálculo es sencillo, solamente modifica el valor de: Duración del pulso y el del Delay entre pulsos.

¿Todos los valores son posibles? La respuesta a esta pregunta es: NO!!, ¿Por qué no? Bueno pues la duración de los pulsos debe estar entre 30 hasta 300 aunque esto también depende de cuantos pulsos por revolución tengas por default en tu motor nema, pero eso es otra historia. Lo que si puedes cambiar libremente es el Delay entre pulsos, este valor puede ser modificado para que puedas obtener diferentes valores de revoluciones por segundo y por minuto. Por ejemplo supongamos que queremos un valor de 200 revoluciones por minuto, entonces lo que tenemos que hacer es despejar la formula y obtener el valor correcto de Delay entre pulsos para obtener dichas 200 RPM. Ok vamos a hacerlo.

Primero despejamos la ecuación como sigue:

(7)   \begin{equation*}  RPM * [(Duración~del~pulso)+(Delay~entre~pulsos)] = 150,000 \end{equation*}

Realizamos un segundo despeje:

(8)   \begin{equation*}  [(Duración~del~pulso)+(Delay~entre~pulsos)] = \frac{150,000}{RPM} \end{equation*}

Y por último despejamos nuestra variable de interés:

(9)   \begin{equation*}  Delay~entre~pulsos = \frac{150,000}{RPM} - Duración~del~pulso \end{equation*}

Con la siguiente ecuación podrás calcular el Delay entre pulsos para 200 revoluciones por minuto.

(10)   \begin{equation*}  Delay~entre~pulsos = \frac{150,000}{200} - 300 \end{equation*}

El resultado es de:

(11)   \begin{equation*}  Delay~entre~pulsos = \textbf{450} \end{equation*}

Por lo tanto el código quedaría como sigue:

int driverENA = 5; //ENA pin
int driverPUL = 7; //PUL pin
int driverDIR = 6; //DIR pin

void setup() {
pinMode (driverENA, OUTPUT);
pinMode (driverPUL, OUTPUT);
pinMode (driverDIR, OUTPUT);
digitalWrite(driverENA, LOW);
}

void loop() {
// DIR = HIGH = CW
// Resumen de fórmulas:
// RPS = 2500/SUMA(microsegundos)
// RPM = 150,000/SUMA(microsegundos)
digitalWrite(driverDIR, 1); // Cambiar el 1 por 0 si se quiere cambiar la dirección de giro
for (int x = 0; x <= 8000; x++)
{
digitalWrite(driverPUL, HIGH);
delayMicroseconds(300); //Duración del pulso
digitalWrite(driverPUL, LOW);
delayMicroseconds(450); //Delay entre pulsos
}

// SUMA(microsegundos) = 300 + 450 = 750

// RPS = 2500/750 = 3.33 revoluciones por segundo

// RPM = 150,000/750 = 200 revoluciones por minuto

Como ves esto es bastante simple, hagamos un último ejemplo con 100 RPM, me voy a saltar los despejes de la ecuación, simplemente te voy a dejar el codigo aquí abajo:

int driverENA = 5; //ENA pin
int driverPUL = 7; //PUL pin
int driverDIR = 6; //DIR pin

void setup() {
pinMode (driverENA, OUTPUT);
pinMode (driverPUL, OUTPUT);
pinMode (driverDIR, OUTPUT);
digitalWrite(driverENA, LOW);
}

void loop() {
// DIR = HIGH = CW
// Resumen de fórmulas:
// RPS = 2500/SUMA(microsegundos)
// RPM = 150,000/SUMA(microsegundos)
digitalWrite(driverDIR, 1); // Cambiar el 1 por 0 si se quiere cambiar la dirección de giro
for (int x = 0; x <= 8000; x++)
{
digitalWrite(driverPUL, HIGH);
delayMicroseconds(300); //Duración del pulso
digitalWrite(driverPUL, LOW);
delayMicroseconds(1200); //Delay entre pulsos
}

// SUMA(microsegundos) = 300 + 1200 = 1500

// RPS = 2500/1500 = 1.66 revoluciones por segundo

// RPM = 150,000/1500 = 100 revoluciones por minuto

Espero que hayas podido conocer como cambiar las RPM de tu motor NEMA 34 de ciclo cerrado y hayas podido comprender cómo se hacen estos sencillos cálculos, si necesitas ayuda o asesoría personalizada no dudes en contactarnos para poder afrontar cualquier problema que tengas, se despide de ti el equipo de ExemplaryLigas, Saludos!!