| Nota de aplicacion: Mecanismo servidor de componentes controlado por voz ( parte II )
|
Esta nota a sido confecionada y es propiedad de SCM International, por favor lea cuidadosamente las condiciones estrictas para su publicacion y/o divulgacion de este material.
En la nota de aplicación anterior, se analizo el diseño de un sistema servidor de materiales electrónicos controlado por PC y accionado con alambres musculares , también se describió el hardware para implementar un sistema equivalente con un motor paso a paso y un controlador MPPC01.
En esta sección se analizara el control virtual para dicho sistema y la construcción del mismo sistema con servos y tarjetas de control para los mismos. Recordemos que el control finalmente podrá recibir ordenes verbales por medio de utilitarios para Windows capaces de interactuar con las herramientas de instrumentación virtual Cyber Tools .
El software de control
El software de control será implementado con la licencia Cyber Logic Analizer, esta licencia es una versión reducida del compilador de sistemas de adquisición y control virtual Cyber Tools, con librerías de clases para acceso al port paralelo. Estas herramientas nos permitirán implementar sistemas de control sobre Windows. El concepto de programación es el mismo que el utilizado tradicionalmente en la integración de sistemas con elementos discretos (amplificadores, registradores, testers, atenuadores, controladores, etc...), con la diferencia que cuando requiramos de un elemento no tendremos que salir a comprarlo ya que podremos crearlo en la PC!!!. Dentro de los elementos que podemos crear se pueden mencionar funciones matemáticas, generadores, lógica , registradores, paneles 7 segmentos, amplificadores, y mucho mas. Lo bueno es que con los bloques primitivos se pueden construir nuevos grupos de bloques que resuelvan funciones mucho mas sofisticadas como ser filtros de señal, analisadores de forma de onda, estimadors, etc...
Software de control para el controlador MPPC01
El sistema de control deberá controlar el estado de los pines, reloj, e Izq/der. Cada vez que el motor paso a paso deba avanzar un paso, el sistema tendrá que generar un pulso , y si el sistema se debe desplazar en un sentido el pin de Izq/der deberá estar en 1 y en sentido contrario en 0.
El sistema de control virtual podría implementarse de la siguiente manera: como todo sistema deberá tener un panel de entrada, en el cual, para este caso en particular, se pueda ingresar la posición deseada que debe tomar el eje del motor paso a paso . Este valor, como podremos ver mas adelante, podrá ser ingresado por medio de un comando verbal. El valor ingresado deberá ser comparado con un acumulador ( integrador matemático ) que totalice el valor equivalente a la posición del eje del motor. Por ejemplo, si el motor esta en el paso 0, y el sistema da la orden al controlador de dar un paso mas, el sistema deberá generar un pulso para ser aplicado a través de un pin del port paralelo del PC al controlador MPPC01. Esta misma señal, pero en el campo virtual, podrá ser utilizada para incrementar o decrementar el totalizador. El valor del totalizador deberá ser comparado con el valor deseado, en función del resultado el sistema deberá seter el pin de sentido del MPPC01.
El diagrama en bloques podría ser el siguiente:
Analicemos la topología de este sitema. Si seguimos el conexionado del diagrama en bloques existe un camino cerrado formado por el flujo de información entre los bloques intergrador , comparadores, sumador, multiplicador ( en este caso modulador ), y nuevamente integrador. Las herramientas Cyber Tools poseen un algoritmo denominado " True zero delay " , este algoritmo le da la posibilidad a los bloques o instrumentos virtuales a que posean un tiempo de procesamiento equivalente a cero. Es decir que, un bloque o instrumento virtual conectado a otro, donde el primero tiene seteado delay = 0, entonces cualquier cambio que se produzca a su entrada producirá un cambio en la salida inmediatamente y en forma sincrónica, a su vez el primer bloque, obligara al segundo a procesar y actualizar sus salidas...
Si setearamos todos los bloques del sistema con delay cero, se produciría un overflow de la pila de tareas, ya que en un mismo instante la entrada de un bloque seria función de su salida. Es por ello que el sistema debería de tener uno de los bloques seteados con delay cero, esto hará que este lazo procese en forma sincrónica , obligando a que las entradas posean datos estables al procesar las salidas.
Estudio del comportamiento de cada uno de estos bloques:
El generador de pulsos generara una onda cuadrada, esta onda será utilizada para generar un pulso en uno de los pines de salida del port paralelo. Este pulso actuara sobre el pin de reloj del circuito integrado MPPC01. Antes de ingresar esta señal al bloque virtual de salida de datos por el port paralelo, pasa por una compuerta OR de valores enteros. A dicha compuerta ingresan dos entradas una refleja un valor binario y la otra un valor binario desplazado en un dígito ( por estar su entrada multiplicada por dos ), esto hará que a la salida de la compuerta OR se obtenga un número tal que contenga en su primer dígito menos significativo la señal de reloj y en el dígito siguiente la señal de dirección o sentido (Izq/der). La señal de dirección se pondrá en "1" o "0" dependiendo de que la posición que se desea que tome el eje sea mayor o menor a la posición actual a la que se encuentra el eje del motor.
La señal de reloj también pasa por una función AND con la salida de los comparadores. Si uno de los comparadores esta en uno, los pulsos del generador pasaran al puerto. En caso contrario no.
Las salidas de los comparadores también modulan los pulsos del generador, ya que la entrada al integrador (o acumulador ) recibirá un pulso positivo si el motor incrementa un paso en un sentido, un pulso negativo si el motor avanza un paso en sentido contrario, y no se ingresaran pulsos si el motor no se mueve.
Ejemplo del entorno de programación:
A modo de ejemplo se explicara como programar una parte de este sistema. Se realizara la programación de los bloques de acceso al port paralelo ( los bloques AND , OR y el del port ).
Imagen de la ventana Control maker:
Como crear el bloque de salida por el port paralelo:
1. Haga click sobre el botón Acquire. Se desplegara una lista de clases de dispositivos de entrada salida disponibles en su sistema. Seleccione Logic Analizer Out y haga click con el botón derecho del mouse sobre el botón Create. Se desplegara una ventana de edición donde deberá ingresar el nombre que quiere darle a este bloque ( únicamente a efectos de su identificación ). Ingrese: Puerto Paralelo.
2. Para crear la compuerta OR ( en realidad 8 compuertas OR una para cada bit del puerto de salida ). Haga click en el botón others. Se desplegara una lista de clases de bloques (librerías) , haga doble click sobre el item OR. Se desplegara un panel que le permitirá ingresar el nombre de este bloque. Ingrese: ORPORT.
3. En forma similar cree el bloque del tipo AND y nombrelo: AND.
4. Ahora deberá crear el bloque que multiplica por dos , o visto de otra manera que hace un shift de los bits del número que se encuentra a su entrada. Como multiplicar un valor por dos es análogo a amplificar una señal con ganancia 2, utilizaremos un amplificador y setearemos su ganancia en dos. Haga click sobre el botón others y se desplegara una librería de clases de bloques, haga doble click amplifier. ingrese el nombre X2 . Automáticamente este bloque aparecerá en la lista "Blocks List" del control maker junto a los demás bloques virtuales creados. Para setear la ganancia haga doble click sobre el bloque X2 en la lista Blocks list, se desplegara una ventana de debugeo, haga click sobre el botón SetUp, se abrirá un panel donde podrá setear la ganancia del amplificador en cualquier momento. .....
A los fines didácticos solo mostraremos la creación e interconexión de estos bloques.
para conectar el bloque ORPORT al bloque PUERTO PARALELO. Deberá hacer click son el mouse sobre el bloque ORPORT en la lista Blocks List, luego oprima el botón :
y por ultimo el bloque PUERTO PARALELO. Con esta simple secuencia ya quedaran conectados estos bloques, como si hubiéramos soldado los cables de las salidas con las entradas correspondientes, pero sin soldador :(
Ahora deberá conectar el amplificador a la entrada de la compuerta OR. para hacerlo seleccione el amplificador, haga click sobre el botón de conexión y luego sobre el bloque OR en el Blocks List.
Para conectar la compuerta AND a la entrada de la OR, seleccione la compuerta AND luego haga click sobre el botón de conexión y luego sobre el bloque OR en el Blocks List.
Como verán con un poco de practica en el uso del mouse podrá, programar sistemas de alta complejidad.
A los fines de poder brindarle mayor información practica, se crearon dos registradores, los cuales se conectaron, uno al panel de entrada de posiciones deseadas ( panel de ordenes ) y otro a la salida del integrador ( o estimador de posición del motor ) . Recordemos que se utilizo un sistema de estimación por que el sistema de control es a lazo abierto. Obteniéndose las siguientes gráficas:
En el registrador de entrada se verán las posiciones a la que debe ir el eje en cada instante, en el registrador Eje del motor, se aprecia la posición del eje en cada instante. veremos como el eje va avanza en búsqueda de la posición ingrasada deteniéndose al llegar ala misma.
Este sistema es meramente demostrativo y requeriría de algunas mejoras para un funcionamiento optimo en cualquier situación, como ser una detección de posición cero o de reset, y seria conveniente insertar un bloque a las entradas de los comparadores que conviertan los números a enteros. Pero lo mas importante de todo que podremos ir mejorando o calibrando el sistema sin componentes extras y sin costos extras, todo gracias a las herramientas de instrumentación virtual.
Diseño del sistemas con Servos.
El sistema de control estará basada en una interfase para control de servos. La SCM Mini Servo Serial Controller , esta interfase permite controlar 8 motores por medio de comandos serie RS232. Cyber Tools posee un opcional para controlar esta interfase, permitiéndonos implementar sistemas con movimientos rápidos y sofisticados. A diferencia de los actuadores anteriores los servos pueden producir giros de hasta 180 grados.
A continuación se puede observar su interconexionado.
La programación en Cyber Tools será muy sencilla. Solo tendremos que crear un bloque de entrada de datos y un bloque Cyber Comm MiniServo Serial Controller. de esta manera cada vez que ingresemos una posición automáticamente el bloque virtual se encargara de controlar el puerto de comunicaciones y transmitir el código adecuado de control a la interfase. La interfase se encargara de controlar el servo. Cada interfase podrá controlar hasta 8 servos y a su vez pueden conectarse varias a un mismo puerto serie y controlar hasta 256 servos !!!
En la próxima sección de esta nota veremos como utilizar utilitarios para reconocimiento de voz en PC , para hacer que se completen automáticamente parámetros en los paneles de la aplicación Cyber Tools.
copyright© 1997, SCM International Inc., All right reserved
| Ir al home page de SCM International |