Control de motor a pasos mediante programa en Visual C++

Hola, alguien podría decirme , cómo hacer un código para controlar el giro de un motor a pasos bipolar mediante un programa hecho en Visual C++ lo que pasa es que ya tengo el circuito armado pero en programación nomas no se me da por eso quisiera ver si alguin me podría ayudar se los agradecería. lo que pasa es que ya busqué en el foro y no encontre algo relacionado on lo que busco,
de antemano gracias.
 
Hola, en el mensaje privado que me envió no me había dicho que es un motor a pasos, imaginé que era uno de directa.

Con un bipolar va a ocupar unas cuantas cosas más de material, y el relay no le va a servir.

En este link http://www.todorobot.com.ar/información/tutorial stepper/stepper-tutorial.htm

Explican como hacerlo.
Bipolar: Estos tiene generalmente cuatro cables de salida (ver figura 1). Necesitan ciertos trucos para ser controlados, debido a que requieren del cambio de dirección del flujo de corriente a través de las bobinas en la secuencia apropiada para realizar un movimiento. En figura 3 podemos apreciar un ejemplo de control de estos motores mediante el uso de un puente en H (H-Bridge). Como se aprecia, será necesario un H-Bridge por cada bobina del motor, es decir que para controlar un motor Paso a Paso de 4 cables (dos bobinas), necesitaremos usar dos H-Bridges iguales al de la figura 3 . El circuito de la figura 3 es a modo ilustrativo y no corresponde con exactitud a un H-Bridge. En general es recomendable el uso de H-Bridge integrados como son los casos del L293 (ver figura 3 bis).

hbridge.jpg


hbridge2.jpg



Existen tres secuencias posibles para este tipo de motores, las cuales se detallan a continuación. Todas las secuencias comienzan nuevamente por el paso 1 una vez alcanzado el paso final (4 u 8). Para revertir el sentido de giro, simplemente se deben ejecutar las secuencias en modo inverso.



Secuencia Normal: Esta es la secuencia más usada y la que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por vez y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y de retención.
I. 1100
II. 0110
III. 0011
IV. 1001

En esa misma página explican como identificar los cables.

La secuencia más simple es:

CICLO sentido1
{

0001
0010
0100
1000
}

CICLO SENTIDO 2
{

1000
0100
0010
0001
}


en código para C sería

Código:
if(sentido==0)
				{
				if(bit==16)
					bit=1;
				outportb(para,bit);
				delay(velocidad);
				bit=bit*2;
				}
			else
				{
				if(bit==16)
					bit=8;
				if(bit==1/2)
					bit=8;
				outportb(para,bit);
				delay(velocidad);
				bit=bit/2;
				}

Lo más complicado de su trabajo es el circuito y no tanto la programación.

Adjunto le dejo uno que yo hice para controlar un motor, puede variar la velocidad, sentido de giro y arranque y paro.

Saludos
 

Adjuntos

  • motorolo_417.cpp
    2.8 KB · Visitas: 569
Prueba con Turbo C.
El que adjunto funciona en cualquier Windows pero los ejecutables creados solo funcionarán en sistemas x86 porque soporta 16 bits.
 

Adjuntos

  • Turbo C v3.2.zip
    7 MB · Visitas: 15
Mejor usá el Code::Blocks, que es un entorno soporta cualquier compilador, aunque viene con el GCC por default. Yo lo he usado con el Open Watcom y no tuvo ningun problema.
El GCC compila casi cualquier cosa, pero la implementacion en el Dev C++ siempre tuvo algunos problemas...
 
Mejor usá el Code::Blocks, que es un entorno soporta cualquier compilador, aunque viene con el GCC por default.
Creo que va a ser más complicado, porque también se generan errores al compilar.
Errores Code Blocks.jpg
Posiblemente se necesite instalar otra cosa, pero sería sumarle más los 250 Mb de la instalación. :oops:
El Turbo C apenas ocupa 15 Mb de instalación y compila sin problemas a la primera.
Compilado.jpg
Pero en sistemas x64 se tiene el problema de incompatibilidad.
Error de Compatibilidad con x64.jpg
Esto se solucionaría con una Máquina Virtual, pero a mi punto de vista sería mejor crear algo más actual.
 
Creo que va a ser más complicado, porque también se generan errores al compilar.
Ver el archivo adjunto 187021
Posiblemente se necesite instalar otra cosa, pero sería sumarle más los 250 Mb de la instalación. :oops:
El Turbo C apenas ocupa 15 Mb de instalación y compila sin problemas a la primera.
Ver el archivo adjunto 187022
Pero en sistemas x64 se tiene el problema de incompatibilidad.
Ver el archivo adjunto 187023
Esto se solucionaría con una Máquina Virtual, pero a mi punto de vista sería mejor crear algo más actual.
El problema son las funciones gotoxy y outportb que son propias de Borland y no son reconocidas por otros compiladores a menos que las reemplaces por sus equivalentes, que es bastante simple.
El problema del Turbo C es que no va a tener acceso a los ports I/O en ningun sistema operativo moderno que virtualice el hardware, por lo que ese codigo solo corre en DOS o FreeDOS sobre un procesador real y no virtual.
 
En el 7 creo que todavía podías acceder a los puertos usando el TurboC, en el Xp estoy casi seguro.

Si está en entorno Windows, creo que le conviene instalar el Visual Studio y trabajar con el compilador de C++ que ofrece Microsoft.
 
La ultima vez que accedí a un puerto en Windows fue con una DLL en Win95. Despues ya no...salvo que pongas la seguridad en cero y ejecutes todo con permisos de administrador...

En el Xp de 32 bits (con el 7 no recuerdo si se podía, tal vez con el de 32 si), desde el cmd como administrador, llamando al borland, podías manejar el puerto serie, incluso implementando una interrupción.

De todas formas, el borland es una herramienta recontra obsoleta, ya cuando lo usé yo hace 15 años era obsoleto.

Hoy en día, usando Visual C++ podés manejar el puerto serie o el paralelo, con APIs que te da windows. Y Linux, con GCC tiene su contrapartida con los system calls.
 
Cuando trabajaba en un laboratorio, se usaba para mover motores a pasos de monocromadores en ese entonces usaban LabVIEW y el puerto paralelo directo a un puente H pero se limitaba a solo 2 motores.

Después usamos puerto serie y un micro para poder mover más motores a pasos.
 
Atrás
Arriba