A falta de nuevas ideas, retomo las viejas que tenía pausadas.
En ese camino volví sobre el reloj trazador del que en algún momento estuvimos hablando. Si tienes algo de tiempo te pongo al tanto, solo para que lo ves y aproveches lo que pueda servirte en alguna otra aplicación, recuerda que mi forma de trabajar, modularmente, hace que se puedan utilizar partes de los proyectos en otras aplicaciones (sin demasiadas complicaciones).
La idea general es que el reloj (que en algún momento terminaré) posea tres micros.
- Un maestro que realice el trabajo de reloj propiamente dicho, contabilizando el pasaje del tiempo, muestre el horario en una pantalla LCD, permita el ajuste de la hora mediante una botonera y envíe cada 5 minutos las ordenes a los esclavos para dibujar la hora en un Plotter de tres ejes.
- Un esclavo que maneje el movimiento del eje X
- Un esclavo que maneje el movimiento del eje Y
- Un esclavo que maneje el movimiento del eje Z
Con las investigaciones en el terreno de las comunicaciones entre micros que he estado haciendo definí la siguiente estrategia:
El sistema de enlace entre el maestro y los esclavos tendrá la siguiente forma:
Se que se ve algo complicado a primera vista, pero con algunas explicaciones verás como mejora la cosa...
-Existen tres lineas comunes a las que están conectados todos los micros:
- Datos (linea negra) por la que los esclavos recibirán los paquetes de datos a procesar
- Inicio (linea violeta) por la que los esclavos recibirán la orden de procesar los datos recibidos
- Clk/ coord (linea roja) por la que los esclavos recibirán los pulsos de reloj durante la comunicación o de coordinación de movimiento durante el procesamiento de la información recibida
- Existen 2 lineas exclusivas de información entre el maestro y cada uno de los esclavos que son:
- Habilitación de comunicación (linea verde), por la que el maestro abre la comunicación con cada uno de los esclavos
- Estado (linea azul) por la que cada uno de los esclavos le indica al maestro si esta disponible o está procesando la información recibida.
La frecuencia de pulsos de coordinación resulta útil para lograr un movimiento fluido, ya que los ejes X e Y deben moverse en conjunto y terminar el movimiento juntos, para ello el paquete de datos que reciben consta de tres datos:
- La dirección de movimiento, que señala si el giro del motor es a derecha (horario) o a izquierda (anti horario). Debido a la definición de tamaño de los datos que necesito, éste dato es el bit más alto del byte de recorrido.
- El recorrido (expresado en mm). Cada uno de los drivers se encarga de traducir éste número a cantidad de pasos del motor para hacer el movimiento
- El divisor de la frecuencia de coordinación para que cada eje termine la orden junto con el otro, por ejemplo si el eje X debe recorrer 3 mm y el eje Y 5 mm, el divisor del eje X será 5 y el del eje Y será 3, manteniendo el producto (recorrido * divisor) constante.
Los datos de cada paquete indican el movimiento relativo que debe realizarse desde la ultima posición alcanzada. La lista de movimientos para el dibujo de cada número o símbolo está contenida en el archivo Excell adjunto (numeros.zip), El dibujo del número 2 se vería como en la siguiente figura:
El dibujo está dentro de un rectángulo de 50 de ancho (eje X) por 70 mm de alto (eje Y). Las lineas de color violeta corresponden a el eje Z en la posición alta, mientras que las lineas amarillas corresponden al eje Z en la posición baja.
Todos los dibujos empiezan por el vértice superior izquierdo y terminan en el vértice superior derecho del rectángulo que contiene el dibujo.
Todo muy lindo hasta aquí pero no deja de ser teoría y como toda teoría puede venirse abajo de un plumazo al chocar con la realidad...
Lo concreto, y que motiva éste correo, es que he empezado a programar los drivers y no teniendo el maestro para que les envíe los datos, le he puesto un maestro en el que los datos entran por medio de un teclado matricial. Este proyecto puede llegar a resultarte útil (o al menos interesante)
La cosa es así: las diferentes pantallas te irán guiando en el proceso de carga de datos, primero la dirección (Sentido de giro del motor), luego el recorrido (cantidad de vueltas del motor) y luego el divisor (velocidad de giro del motor) para confirmar cada dato debes presionar " # " y luego de completar la carga de los tres elementos, te pedirá que presiones "*" para ejecutar el movimiento. El sistema está programado para respetar los límites de tamaño de los datos permitidos y considera la cantidad de pasos por vuelta del motor elegido en la simulación. Seguramente le encontrarás un uso práctico o alguna variante que te resulte útil en algún momento.
Ya sabes que existe...
P.D: Estimado Jorge:
Si como me comentaste sigues con la idea de publicar el resumen del proyecto del reloj trazador que estoy diseñando, te envío éste archivo Excell (Numeros .zip) que reemplaza al que te envié originalmente. En esencia es el mismo, solo que en éste agrego todos los trazados de los símbolos con sus correspondientes dibujos en Autocad, por separado en las distintas hojas del archivo.
Como dato extra (por si no lo habías notado) en realidad el proyecto es un plotter de tres ejes, que puede adaptarse perfectamente para construir un CNC para construir placas PCB (u otros mecanizados de tres ejes), si en el maestro cargas los movimientos necesarios para realizar las pistas o las perforaciones.
Si alguien lo quiere utilizar para ese fin deberá hacer el maestro con las modificaciones necesarias, podría tomar como base el que hice con el teclado matricial y que en lugar de los datos para un solo driver le cargue los que necesitan los tres drivers (uno para cada eje) o ya para alguien ccon mayores conocimientos (y ambiciones) que los datos le lleguen al maestro desde una PC y que él los distribuya a los drivers. A un nivel más avanzado aun puedes eliminar el maestro, si la PC es la que envía los datos a los drivers directamente.