Академический Документы
Профессиональный Документы
Культура Документы
Con lo que el tema que nos abarca es simple y sencillamente el de explicar brevemente el
funcionamiento del controlador de 4 motores y el software de control del mismo.
Si ya hemos leido con atencion el apartado de motores paso a paso de mi pagina,
tomamos como conclucion que el tema se limita a enviar una secuencia de señales
(bytes)por el puerto LPT a intervalos de tiempo determinado para que el motor gire en un
sentido u otro y a una velocidad u otra.
Pues bien, el programa lo unico que hace es tener almacenada en memoria la codificacion
de señales que se indican abajo y enviarlas secuencialmente por el puerto paralelo con un
retardo dado. Si tenemos claro los cuadros de abajo:
Relacion entre los Bits de cada Byte enviado y los pins de la clavija del puerto
paralelo:
PIN D7 D6 D5 D4 D3 D1 D1 D0
BIT 7 6 5 4 3 2 1 0
Para controlar un motor PAP Unipolar de Cuatro Fases necesitamos enviar una secuencia
de BYTES por el puerto paralelo a intervalos de tiempo constantes de la siguiente forma:
BOBINADO 2 3 4 1
DEC HEX
Pos0 0 0 0 0 0 0 0 1 1 0x01
Pos1 0 0 0 0 0 0 1 0 2 0x02
Pos2 0 0 0 0 0 1 0 0 4 0x05
Pos3 0 0 0 0 1 0 0 0 8 0x08
BOBINADO 2 3 4 1
DEC HEX
Pos0 0 0 0 0 0 0 1 1 3 0x03
Pos1 0 0 0 0 0 1 1 0 6 0x06
Pos2 0 0 0 0 1 1 0 0 12 0x0C
Pos3 0 0 0 0 1 0 0 1 9 0x09
Para
Simple
BIT 7 6 5 4 3 2 1 0
+
Doble
BOBINADO 2 3 4 1
DEC HEX
Pos0 0 0 0 0 0 0 0 1 1 0x01
Pos1 0 0 0 0 0 0 1 1 3 0x03
Pos2 0 0 0 0 0 0 1 0 2 0x02
Pos3 0 0 0 0 0 1 1 0 6 0x06
Pos4 0 0 0 0 0 1 0 0 4 0x05
Pos5 0 0 0 0 1 1 0 0 12 0x0C
Pos6 0 0 0 0 1 0 0 0 8 0x08
Pos7 0 0 0 0 1 0 0 1 9 0x09
Esto es solo para un motor, si queremos controlar dos, solo tenemos que utilizar tambien
los bites del 4 al 7 con la misma codificacion que para los bites 0 a 3. como estamos
trabajando en hexadecimal, solo tenemos que multiplicar el valor anterior por 16 y asi
pasamos la codificacion de los bites 0 a 3 a los bites 4 a 7.
Pues bien, como no se pretende dar un curso de programacion en C, sino, explicar
brevemente el algoritmo del programa de control de dos motores pap de forma sencilla, os
adjunto el codigo fuente del programa para que podais ver las tripas del mismo...
En cuanto a la parte electronica, esta esta basada en dos tipos de integrados. El 74LS574
y el ULN2083.
En cuanto al 74LS574 dire que es un integrado que tiene 8 flip-flop controlados mediante el
pin CLK y con tecnologia TTL. Para la gente de a pie, como yo, esto quiere decir que es un
integrado capaz de memorizar el estado de las ocho patas de entrada cuando la señal de
la pata CLK pasa de 0 a 5V manteniendo dicha señal en sus 8 patas de salida mientras
que no se le vuelva a indicar en la pata CLK que memorice un nuevo estado.
Asi consigo que los datos enviados por el puerto paralelo sean duplicados ya que mediante
la pata CLK de cada integrado indico cual de ellos debe memorizar la señal enviada.
Si hemos leido el articulo del controlador de dos motores pap, este es lo mismo pero que
envia dos secuencas de señales de forma consecutiva, una para los primeros dos motores
y la otra para los otros dos.
Si le echamos un vistazo al programa podemos ver que esta realizado en MSDOS. Esto es
debido a la necesidad de un control en tiempo real de las señales a enviar y a la intension
de usar un ordenador muy basico que controle los motores sin necesidad de usar nuestro
PC moderno para algo tan rudimentario. Yo uso ordenadores 486 antiguos para el control
de mis maquinas y asi no malgasto la vida util de mi Pentium 166MMX que es con el que
programo. Por ahi he visto que venden estos 486 a unas 3000 pts osea a unos 18 euros.
El programa tambien funciona bajo windows pero de vez en cuando sufre unos parones
debido a que el sistema controla los puertos del PC y realiza operaciones periodicas, nada
importante pero molestas...
Antes de continuar con la explicacion del programa, os dire que esta programado para un
uso correcto del mismo ya que no he invertido tiempo en programarle proteccion contra
burradas provenientes del manazas que lo use. Esto lo digo ya que no os debe extrañar si
al hacer algo con el mismo pasan cosas raras y ante tal situacion os recomiendo salir del
programa y volver a entrar. Lo siento, pero yo consigo usarlo correctamente sin problema
alguno y por eso no lo sigo desarrollando en esa direccion.
El programa es bien simple. Se configura y se usa. Esto quiere decir que tiene unas
opciones de configuracion y luego se le pone a trabajar.
Atencion, para que el programa funcione correctamente el puerto paralelo tiene que estar
configurado como EPP o ECP en la BIOS del ordenador.
Las opciones de teclado mientras que se ejecuta un fichero son las isguientes:
Pero para que todo esto tenga una aplicacion practica, el programa se ha planteado como
un interprete de un tipo de ficheros especifico. Digamos que ese fichero lo que hace es dar
instrucciones de lo que debe hacer el programa en cada momento, por lo que dependiendo
de lo que contenga el fichero haremos lo que nos interese con los motores.
Por lo tanto, es en dicho fichero donde se codifican las instrucciones especificas de cada
maquina a la que esten conectados los motores.
El fichero debe ser de texto y su sintaxis es muy simple; Comando, dato1,dato2,...
Los comandos que acepta son:
Descripcion
Comando Dato1 Dato2 Dato1 Dato1
Comando
1,10,0 Velocidad
2,1,0 Puerto Lpt
3,Fichero,Ejemplo Mensaje
5,0,0 Activacion Simple
4,5,0 Pausa de 5 segundos
9,1,1,1,1 Factor de escala
10,100,200,300,400 Movimiento de motores
10,15,365,256,1024 Movimiento de motores
10,-58,+487,65,78 Movimiento de motores
-1,0,0 Fin fichero
Pues Bien, dicho fichero debe estar en la misma ruta que el programa y para su
generacion ya debemos tener un poco mas de conocimientos de programacion debido a
que todo dependera de a que tipo de maquina esten conectados los motores para generar
un tipo de fichero.
En resumen, lo que aqui se ha explicado no es mas que un simple driver de 4 motores
paso a paso que es capaz de recibir ordenes desde un fichero y mover los motores segun
dichas ordenes...
Solo me queda advertiros que el software esta todavia en fase de desarrollo por lo que
tiene mas de un fallo, sobre todo a la hora de la interface con el usuario y que la intencion
de esta pagina no es la de hacer clientes, sino todo lo contrario, es la de poner al alcance
de todos la situacion actual de mi proyecto para facilitarle la labor a los que como yo no
decidimos a rompernos la cabeza con estas cosas.
Sin mas, dependiendo del tipo de sigerencias que me vayan llegando pondre una pagina
con las cuestiones mas importantes que vayan surguiendo.