ArduinoMega2560_SPI 1.0
Cargando...
Buscando...
Nada coincide
Referencia de la clase MotorPaso

Controlador para motores paso a paso 28BYJ-48 con driver ULN2003. Más...

#include <motorStep.h>

Métodos públicos

 MotorPaso (uint8_t pinA, uint8_t pinB, uint8_t pinC, uint8_t pinD)
 Constructor del motor paso a paso.
void fijarVelocidad (float rpm)
 Establece la velocidad del motor en RPM.
void pasoAdelante ()
 Avanza un paso en la secuencia del motor.
void pasoAtras ()
 Retrocede un paso en la secuencia del motor.
void aplicarPaso (int indicePaso)
 Aplica un paso específico de la secuencia (0–7).
void movimientoContinuo ()
 Ejecuta movimiento continuo según la velocidad configurada.
void movimientoPosicionRelativo (float grados, bool debugMSG=false)
 Mueve el motor hacia un ángulo relativo usando el camino más corto.
float diferenciaCircular (float gradosActuales, float gradosObjetivo)
 Calcula la diferencia circular entre dos ángulos.
float normalizarGrados (float grados)
 Normaliza un ángulo al rango 0–360 grados.
int convertirGradosAPasos (float grados)
 Convierte grados a pasos del motor.
float convertirPasosAGrados (int pasos)
 Convierte pasos del motor a grados.
float movimientoDePosicionGradosCorriendo (int movimientoPasos)
 Actualiza y devuelve los grados recorridos durante el movimiento.
void debugMovimientoRelativo (int pasoActualDelBucle)
 Imprime información detallada del movimiento relativo.

Atributos privados

uint8_t pinA
 Bobina A.
uint8_t pinB
 Bobina B.
uint8_t pinC
 Bobina C.
uint8_t pinD
 Bobina D.
unsigned long retardoPaso
 Microsegundos entre pasos (determina la velocidad).
unsigned long tiempoUltimoPaso
 Marca temporal del último paso ejecutado.
short rpm
 Velocidad configurada en RPM.
int pasoActual
 Índice de la secuencia (0–7).
int pasosPorVuelta = PASOS_POR_VUELTA
 Pasos necesarios para 360°
int pasos
 Pasos totales a ejecutar en el movimiento actual.
float gradoActual
 Ángulo actual del motor (0–360 normalizado).
float gradosObjetivo
 Ángulo objetivo solicitado.
float gradosCorriendo
 Ángulo recorrido durante el movimiento (progreso).
float diferencia
 Diferencia circular entre gradoActual y gradosObjetivo (–180 a +180).
bool direccionAdelante
 Dirección: true = adelante.
bool direccionAtras
 Dirección: true = atrás.

Descripción detallada

Controlador para motores paso a paso 28BYJ-48 con driver ULN2003.

Esta clase permite:

  • Controlar pasos individuales (adelante/atrás)
  • Establecer velocidad en RPM
  • Realizar movimientos relativos en grados
  • Obtener información del progreso del movimiento
  • Depurar el comportamiento mediante mensajes por consola

La clase está organizada por familias funcionales para facilitar la lectura, mantenimiento y generación de documentación.

Definición en la línea 22 del archivo motorStep.h.

Documentación de constructores y destructores

◆ MotorPaso()

MotorPaso::MotorPaso ( uint8_t pinA,
uint8_t pinB,
uint8_t pinC,
uint8_t pinD )

Constructor del motor paso a paso.

Inicializa el motor paso a paso configurando los pines y el estado inicial.

Parámetros
pinAPin conectado a la bobina A.
pinBPin conectado a la bobina B.
pinCPin conectado a la bobina C.
pinDPin conectado a la bobina D.

Definición en la línea 12 del archivo motorStep.cpp.

17{
18 pinMode(pinA, OUTPUT);
19 pinMode(pinB, OUTPUT);
20 pinMode(pinC, OUTPUT);
21 pinMode(pinD, OUTPUT);
22}
uint8_t pinD
Bobina D.
Definition motorStep.h:151
float gradosCorriendo
Ángulo recorrido durante el movimiento (progreso).
Definition motorStep.h:175
int pasoActual
Índice de la secuencia (0–7).
Definition motorStep.h:165
uint8_t pinB
Bobina B.
Definition motorStep.h:149
float gradoActual
Ángulo actual del motor (0–360 normalizado).
Definition motorStep.h:173
bool direccionAdelante
Dirección: true = adelante.
Definition motorStep.h:177
uint8_t pinA
Bobina A.
Definition motorStep.h:148
unsigned long retardoPaso
Microsegundos entre pasos (determina la velocidad).
Definition motorStep.h:157
bool direccionAtras
Dirección: true = atrás.
Definition motorStep.h:178
unsigned long tiempoUltimoPaso
Marca temporal del último paso ejecutado.
Definition motorStep.h:158
uint8_t pinC
Bobina C.
Definition motorStep.h:150
float gradosObjetivo
Ángulo objetivo solicitado.
Definition motorStep.h:174

Documentación de funciones miembro

◆ aplicarPaso()

void MotorPaso::aplicarPaso ( int indicePaso)

Aplica un paso específico de la secuencia (0–7).

Activa las bobinas según el índice de paso (0–7).

Parámetros
indicePasoÍndice de la secuencia.

Definición en la línea 69 del archivo motorStep.cpp.

69 {
70 switch (i) {
71 case 0: digitalWrite(pinA, HIGH); digitalWrite(pinB, LOW); digitalWrite(pinC, LOW); digitalWrite(pinD, LOW); break;
72 case 1: digitalWrite(pinA, HIGH); digitalWrite(pinB, HIGH); digitalWrite(pinC, LOW); digitalWrite(pinD, LOW); break;
73 case 2: digitalWrite(pinA, LOW); digitalWrite(pinB, HIGH); digitalWrite(pinC, LOW); digitalWrite(pinD, LOW); break;
74 case 3: digitalWrite(pinA, LOW); digitalWrite(pinB, HIGH); digitalWrite(pinC, HIGH); digitalWrite(pinD, LOW); break;
75 case 4: digitalWrite(pinA, LOW); digitalWrite(pinB, LOW); digitalWrite(pinC, HIGH); digitalWrite(pinD, LOW); break;
76 case 5: digitalWrite(pinA, LOW); digitalWrite(pinB, LOW); digitalWrite(pinC, HIGH); digitalWrite(pinD, HIGH); break;
77 case 6: digitalWrite(pinA, LOW); digitalWrite(pinB, LOW); digitalWrite(pinC, LOW); digitalWrite(pinD, HIGH); break;
78 case 7: digitalWrite(pinA, HIGH); digitalWrite(pinB, LOW); digitalWrite(pinC, LOW); digitalWrite(pinD, HIGH); break;
79 }
80}
Gráfico de llamadas a esta función:

◆ convertirGradosAPasos()

int MotorPaso::convertirGradosAPasos ( float grados)

Convierte grados a pasos del motor.

Parámetros
gradosÁngulo en grados.
Devuelve
Número de pasos equivalentes.

Definición en la línea 159 del archivo motorStep.cpp.

159 {
160 return (int)(abs(grados) * this->pasosPorVuelta / 360.0f);
161}
int pasosPorVuelta
Pasos necesarios para 360°
Definition motorStep.h:166
Gráfico de llamadas a esta función:

◆ convertirPasosAGrados()

float MotorPaso::convertirPasosAGrados ( int pasos)

Convierte pasos del motor a grados.

Parámetros
pasosNúmero de pasos.
Devuelve
Ángulo equivalente en grados.

Definición en la línea 166 del archivo motorStep.cpp.

166 {
167 return (float)pasos * 360.0f / this->pasosPorVuelta;
168}
int pasos
Pasos totales a ejecutar en el movimiento actual.
Definition motorStep.h:172
Gráfico de llamadas a esta función:

◆ debugMovimientoRelativo()

void MotorPaso::debugMovimientoRelativo ( int pasoActualDelBucle)

Imprime información detallada del movimiento relativo.

Parámetros
pasoActualDelBuclePaso actual dentro del bucle de movimiento.

Definición en la línea 199 del archivo motorStep.cpp.

199 {
200
201 Serial.println("====================================");
202 Serial.print("Paso actual: ");
203 Serial.print(pasoActualDelBucle);
204 Serial.print(" / ");
205 Serial.println(this->pasos);
206
207 Serial.print("Diferencia circular: ");
208 Serial.print(this->diferencia);
209 Serial.println(" grados");
210
211 Serial.print("Pasos totales calculados: ");
212 Serial.println(this->pasos);
213
214 Serial.print("Dirección: ");
215 if (this->direccionAdelante) Serial.println("Adelante (+)");
216 else if (this->direccionAtras) Serial.println("Atrás (–)");
217 else Serial.println("Sin movimiento");
218
219 Serial.print("Grados recorridos hasta ahora: ");
220 Serial.print(this->gradosCorriendo);
221 Serial.println(" grados");
222
223 Serial.print("Grado actual (antes de normalizar): ");
224 Serial.println(this->gradoActual);
225
226 Serial.println("====================================");
227}
float diferencia
Diferencia circular entre gradoActual y gradosObjetivo (–180 a +180).
Definition motorStep.h:176
Gráfico de llamadas a esta función:

◆ diferenciaCircular()

float MotorPaso::diferenciaCircular ( float gradosActuales,
float gradosObjetivo )

Calcula la diferencia circular entre dos ángulos.

Parámetros
gradosActualesÁngulo actual.
gradosObjetivoÁngulo objetivo.
Devuelve
Diferencia circular entre -180 y +180 grados.

Definición en la línea 173 del archivo motorStep.cpp.

173 {
174 float diff = objetivo - actual;
175
176 if (diff > 180.0f) diff -= 360.0f;
177 if (diff < -180.0f) diff += 360.0f;
178
179 return diff;
180}
Gráfico de llamadas a esta función:

◆ fijarVelocidad()

void MotorPaso::fijarVelocidad ( float rpm)

Establece la velocidad del motor en RPM.

Establece la velocidad del motor en RPM calculando el retardo entre pasos.

Parámetros
rpmRevoluciones por minuto.

Definición en la línea 33 del archivo motorStep.cpp.

33 {
34 this->retardoPaso = (60.0 * 1000000.0) / (rpm * this->pasosPorVuelta);
35 this->rpm = rpm;
36}
short rpm
Velocidad configurada en RPM.
Definition motorStep.h:159
Gráfico de llamadas a esta función:

◆ movimientoContinuo()

void MotorPaso::movimientoContinuo ( )

Ejecuta movimiento continuo según la velocidad configurada.

Definición en la línea 91 del archivo motorStep.cpp.

91 {
92 unsigned long ahora = micros();
93
94 if (ahora - this->tiempoUltimoPaso >= this->retardoPaso) {
95 this->tiempoUltimoPaso = ahora;
96 this->pasoAdelante();
97 }
98}
void pasoAdelante()
Avanza un paso en la secuencia del motor.
Definition motorStep.cpp:47
Gráfico de llamadas de esta función:

◆ movimientoDePosicionGradosCorriendo()

float MotorPaso::movimientoDePosicionGradosCorriendo ( int movimientoPasos)

Actualiza y devuelve los grados recorridos durante el movimiento.

Parámetros
movimientoPasosPasos ejecutados hasta el momento.
Devuelve
Grados recorridos.

Definición en la línea 145 del archivo motorStep.cpp.

145 {
146 this->gradosCorriendo = convertirPasosAGrados(movimientoPasos);
147 return this->gradosCorriendo;
148}
float convertirPasosAGrados(int pasos)
Convierte pasos del motor a grados.
Gráfico de llamadas de esta función:
Gráfico de llamadas a esta función:

◆ movimientoPosicionRelativo()

void MotorPaso::movimientoPosicionRelativo ( float grados,
bool debugMSG = false )

Mueve el motor hacia un ángulo relativo usando el camino más corto.

Parámetros
gradosÁngulo objetivo en grados.
debugMSGSi es true, imprime información detallada del movimiento.

Definición en la línea 109 del archivo motorStep.cpp.

109 {
110
111 this->diferencia = this->diferenciaCircular(this->gradoActual, grados);
112 this->pasos = convertirGradosAPasos(abs(this->diferencia));
113
114 this->direccionAdelante = (this->diferencia > 0);
115 this->direccionAtras = (this->diferencia < 0);
116
117 if (this->direccionAtras) {
118 for (int i = 0; i < this->pasos; i++) {
119 this->pasoAtras();
121 if (debugMSG) debugMovimientoRelativo(i);
122 }
123 }
124
125 if (this->direccionAdelante) {
126 for (int i = 0; i < this->pasos; i++) {
127 this->pasoAdelante();
129 if (debugMSG) debugMovimientoRelativo(i);
130 }
131 }
132
133 this->gradoActual = normalizarGrados(grados);
134}
float diferenciaCircular(float gradosActuales, float gradosObjetivo)
Calcula la diferencia circular entre dos ángulos.
void pasoAtras()
Retrocede un paso en la secuencia del motor.
Definition motorStep.cpp:58
int convertirGradosAPasos(float grados)
Convierte grados a pasos del motor.
float movimientoDePosicionGradosCorriendo(int movimientoPasos)
Actualiza y devuelve los grados recorridos durante el movimiento.
void debugMovimientoRelativo(int pasoActualDelBucle)
Imprime información detallada del movimiento relativo.
float normalizarGrados(float grados)
Normaliza un ángulo al rango 0–360 grados.
Gráfico de llamadas de esta función:
Gráfico de llamadas a esta función:

◆ normalizarGrados()

float MotorPaso::normalizarGrados ( float grados)

Normaliza un ángulo al rango 0–360 grados.

Parámetros
gradosÁngulo a normalizar.
Devuelve
Ángulo normalizado.

Definición en la línea 185 del archivo motorStep.cpp.

185 {
186 float g = fmod(grados, 360.0f);
187 return (g < 0) ? g + 360.0f : g;
188}
Gráfico de llamadas a esta función:

◆ pasoAdelante()

void MotorPaso::pasoAdelante ( )

Avanza un paso en la secuencia del motor.

Definición en la línea 47 del archivo motorStep.cpp.

47 {
48 this->pasoActual++;
49 if (this->pasoActual > 7) this->pasoActual = 0;
50
51 this->aplicarPaso(this->pasoActual);
52 delayMicroseconds(this->retardoPaso);
53}
void aplicarPaso(int indicePaso)
Aplica un paso específico de la secuencia (0–7).
Definition motorStep.cpp:69
Gráfico de llamadas de esta función:
Gráfico de llamadas a esta función:

◆ pasoAtras()

void MotorPaso::pasoAtras ( )

Retrocede un paso en la secuencia del motor.

Definición en la línea 58 del archivo motorStep.cpp.

58 {
59 this->pasoActual--;
60 if (this->pasoActual < 0) this->pasoActual = 7;
61
62 this->aplicarPaso(this->pasoActual);
63 delayMicroseconds(this->retardoPaso);
64}
Gráfico de llamadas de esta función:
Gráfico de llamadas a esta función:

Documentación de datos miembro

◆ diferencia

float MotorPaso::diferencia
private

Diferencia circular entre gradoActual y gradosObjetivo (–180 a +180).

Definición en la línea 176 del archivo motorStep.h.

◆ direccionAdelante

bool MotorPaso::direccionAdelante
private

Dirección: true = adelante.

Definición en la línea 177 del archivo motorStep.h.

◆ direccionAtras

bool MotorPaso::direccionAtras
private

Dirección: true = atrás.

Definición en la línea 178 del archivo motorStep.h.

◆ gradoActual

float MotorPaso::gradoActual
private

Ángulo actual del motor (0–360 normalizado).

Definición en la línea 173 del archivo motorStep.h.

◆ gradosCorriendo

float MotorPaso::gradosCorriendo
private

Ángulo recorrido durante el movimiento (progreso).

Definición en la línea 175 del archivo motorStep.h.

◆ gradosObjetivo

float MotorPaso::gradosObjetivo
private

Ángulo objetivo solicitado.

Definición en la línea 174 del archivo motorStep.h.

◆ pasoActual

int MotorPaso::pasoActual
private

Índice de la secuencia (0–7).

Definición en la línea 165 del archivo motorStep.h.

◆ pasos

int MotorPaso::pasos
private

Pasos totales a ejecutar en el movimiento actual.

Definición en la línea 172 del archivo motorStep.h.

◆ pasosPorVuelta

int MotorPaso::pasosPorVuelta = PASOS_POR_VUELTA
private

Pasos necesarios para 360°

Definición en la línea 166 del archivo motorStep.h.

◆ pinA

uint8_t MotorPaso::pinA
private

Bobina A.

Definición en la línea 148 del archivo motorStep.h.

◆ pinB

uint8_t MotorPaso::pinB
private

Bobina B.

Definición en la línea 149 del archivo motorStep.h.

◆ pinC

uint8_t MotorPaso::pinC
private

Bobina C.

Definición en la línea 150 del archivo motorStep.h.

◆ pinD

uint8_t MotorPaso::pinD
private

Bobina D.

Definición en la línea 151 del archivo motorStep.h.

◆ retardoPaso

unsigned long MotorPaso::retardoPaso
private

Microsegundos entre pasos (determina la velocidad).

Definición en la línea 157 del archivo motorStep.h.

◆ rpm

short MotorPaso::rpm
private

Velocidad configurada en RPM.

Definición en la línea 159 del archivo motorStep.h.

◆ tiempoUltimoPaso

unsigned long MotorPaso::tiempoUltimoPaso
private

Marca temporal del último paso ejecutado.

Definición en la línea 158 del archivo motorStep.h.


La documentación de esta clase está generada de los siguientes archivos: