Вы находитесь на странице: 1из 43

DISEO E IMPLEMENTACION DE UN MODULO GRAFICADOR TRAZADOR PLOTTER CONTROLADO POR PC

AUTORES
APAZA QUISPE alber Milton PARICAHUA ITO Willian Abel SANCHEZ VILLAGOMES Fernando Victor

ASESOR: ING. CARLOS ALEJANDRO CACERES VARGAS


UNIVERSIDAD ANDINA NESTOR CACERES VELASQUEZ

FACULTAD DE INGENIERIAS Y CIENCIAS PURAS


CARRERA ACADMICO PROFESIONAL DE INGENIERIA ELECTRNICA Y TELECOMUNICACIONES.

RESUMEN El presente proyecto diseo e implementacin de un trazador - plotter controlado por pc, es un modulo de plotter diseado para realizar y graficar imgenes simples en un espacio plano, el principal objetivo del proyecto es lograr graficar una determinada imagen en una hoja de papel o diferentes figuras diseados en un ordenador (imgenes, logos letras. Etc.) . El modulo esta diseado con materiales ligeros que posee tres grados de libertad, dos de los cuales estn en desplazamiento horizontal (X,Y) y uno en posicin en vertical (Z). Estos grados de libertad estn activados por actuadores (motores paso a paso) que son controlados por tarjetas de potencia con inversin de giro con un integrado L 298 que tiene una tolerancia hasta de 3A, adems con un integrado de proteccin 74hct245 el mismo que acta como inversor, con una interfaz de puerto paralelo. Gobernados directamente por el programa visual basic versin 6.0. el cual nos permite un gran flexibilidad a la hora de realizar los diseos de las imgenes . si la mquina va a graficar una imagen, sera bueno verla mientras la va trazando, y lo que utilizamos para ver el punto exacto donde se encuentra la mquina es un Mtodo llamado PSet. La sintaxis para dibujar un Pxel es la siguiente. Objeto.PSet [Step] (x, y), [Color] (x,y): Valores Requerido de tipo Single, que indican las coordenadas horizontal y vertical del punto que se va a establecer. Color: Opcional. Valor entero de tipo Long que indica el color RGB especificado para

el punto. Si se omite, se usar el valor de la propiedad ForeColor. Step: Opcional. Es una palabra clave que especfica que las coordenadas son relativas a la posicin actual, especificada por las propiedades CurrentX y CurrentY.el modulo tiene como fuente de poder principal de 12v y 5v (12v para la etapa de potencia y 5v para la etapa de control). PALABRAS CLAVE: coordenadas, color, step, puerto, plotter. ABSTRAC. The present project " design and implementation of a tracer - plotter controlled by PC ", it is a module of plotter designed to realize and graficar simple images in a flat space, the principal aim of the project is to achieve graficar a certain image in a leaf of paper or different figures designed in a computer (images, logos letters. Etc.). The module this one designed with light materials that it possesses three degrees of freedom, two of which are in horizontal displacement (X, Y) and one in position in vertically (Z). These degrees of freedom are activated for actuadores (stepping motors) that there are controlled by cards of power by investment of draft with integrated L 298 that a tolerance has up to of 3A, in addition with integrated of protection 74hct245 The same one that acts as investor, with an interface of parallel port. Governed directly by the visual program basic version 6.0. Which allows us one great flexibility at the moment of realizing the designs of the images. If the machine goes to graficar an image, it would be good to see her while it is planning it, and what we use to see the exact point where one finds the machine is a Method called PSet. The syntax to draw a Pixel is the following one. I object. PSet [Step] (x, y), [Color] (x, y): Values Needed of type Single, that they indicate the coordinates horizontally and vertically of the point that is going to be established. Color: Optional. Entire value of type Long that indicates the color RGB specified for the point. If it is omitted, there will be used the value of the property ForeColor. Step: Optional. It is a word key that specific that the coordinates are relative to the current position specified by the properties CurrentX and CurrentY.el module takes as a source of principal power of 12v and 5v (12v for the stage of power and 5v for the stage of control).

KEY WORDS: coordinates, color, step, port, plotter.

CAPITULO I INTRODUCCION. 1.1. PLOTER - Control Numrico Computacin PLOTER es eso justamente COTROL NUMERICO COMPUTACIONAL o CONTROL NUMERICO POR COMPUTADORA. La presente introduccin es para que se tenga una idea de lo que mencionara en esta seccin. Es importante comprender un poco el significado del ploter y cual es la finalidad de emprender un proyecto como este, ya que todo depender de lo que se quiera hacer, o de lo que se quiere que la mquina realice. Existen varias posibilidades u orientaciones a las cuales se puede destinar, pero todo llevar a investigar una serie de cdigos numricos. Bien, esto nos lleva a elegir un lenguaje de programacin, en nuestro caso con VBasic en su versin 6.0, lo importante es conocer el algoritmo del programa para luego pasarlo al lenguaje que ms te guste la programacin depender tambin de los motores que vayamos a utilizar, y ms, de la interfaz que controlar esos motores, Una de las cosas ms importantes en este tema, es la resolucin de la mquina, es decir, con que precisin realiza cada grafico, o el grabado de una imagen (esto si se trata de una fresadora CNC), lo cual depender de los elementos utilizados en la fabricacin de la mquina, como ser barillas roscadas, engranajes, elementos de transmisin de movimiento y otros detalles, como las dimensiones de la mquina 1.2. PLOTTER - Algunos Conceptos de Funciones lineales Para poder realizar el anlisis matemtico, que es muy necesario para poder codificar ya que la gran mayora de los trazados consistente en funciones lineales. Cada instruccin o cada Bloque de Instrucciones, indica un punto o las coordenadas a un punto de llegada, el punto de partida, es el punto actual en el que la mquina se

encuentra. Vamos a suponer que cada punto es un pxel, (luego veremos como se grafica un pxel en VBasic). La cuestin es que se necesita conocer la ubicacin del primer pxel o punto de partida y la ubicacin del segundo, que es el punto de llegada, con esto ya tienes todos los datos correspondientes a una funcin lneal, lo que debes hacer ahora para llegar de un punto a otro es realizar una interpolacin entre esos puntos, es decir, por programacin, se ir graficando una lnea PUNTO POR PUNTO. Lo que vamos a ver ahora es pura matemticas, Bsicamente, una funcin, es una relacin entre los elementos de dos conjuntos, que bien podran ser los elementos del conjunto X y los del conjunto Y, que podra representarse de siguiente manera.

y = f(x) // es decir, Y es una funcin de X

Con este sencillo ejemplo acabamos de dar inicio al estudio de las funciones que ms nos interesan, que son las FUNCIONES lineales.

CAPITULO II. OBJETIVO

2.1. OBJETIVO GENERAL

Desarrollar un modulo de plotter a fin de realizar imgenes, letras logos etc. Diseados por computador. El diseo general ser en corel draw el cual nos permite disear letras graficos etc.

2.2.- OBJETIVOS ESPECIFICOS - disear un programa en visual vasic 6.0, a fin de ser el programa madre del plotter - disear un modulo fsico de plotter, de tres grados de libertad dos en desplazamiento horizontal (x,Y) y uno en posicin vertical (Z). - disear e implementar la etapa de potencia y control del modulo. - organizar e interpretar datos - experimentar distintos tipos de programacin a fin de lograr una adecuada programacin.

CAPITULO III. FUNDAMENTO TEORICO. 3.1. Funciones lineales Estas funciones, como cualquier otra, tienen una forma general de representarlas conocida como Notacin Simblica, y se dice que son del tipo. y = ax + b

3.1.1. Observaciones Fundamentales en una Funcin lneal En un sistema de ejes Coordenados Cartesianos, se llama Abscisa al Eje x, y Ordenada al Eje y. Aclarado esto, hablemos de. b; Se dice que es la ordenada al origen, esto es, es la distancia desde el origen hasta el punto por el cual la funcin corta al eje y.

Como se ve, no interesa si la funcin sube o baja, es ms, puede que sea horizontal, es decir, que sea paralela al eje x, a; Se dice que es la pendiente de la funcin, es decir, su valor indica, qu tan inclinada est. Al intentar graficar una funcin de este tipo se pueden presentar algunos casos especiales, que son importantes considerar Caso 1) Si b=0 Si b=0 significa que la funcin pasa por el origen, observa la animacin anterior, nuestra funcin original quedara de la siguiente forma. y = ax + b => y = ax Lo nico que nos queda por hacer es averiguar que es lo que ocurre con a, y es que pueden darse dos casos, a<0 o bien a>0. Mira ahora como se vera el grfico segn cada caso...

Caso 2) Si a=0 a es la pendiente de la funcin, por tanto, si a=0 significa que No existe pendiente, esto da como resultado una lnea paralela a las abscisas, es ms, el valor de x, no tiene importancia, y sino, mira como nos queda la funcin principal... y = ax + b => y = b

es decir que para cualquier valor de x, y toma el mismo valor, y como vers, el valor de y es el mismo de b, la cuestin es que ahora la funcin estar por arriba o por debajo del eje de las abscisas, lo cual por supuesto, depende del trmino b...

Caso 3) Si y=0 Este caso muy especial se da cuando la funcin no pasa por el eje y, es decir que el grfico es una lnea paralela al eje de las ordenadas. Veamos como quedara la ecuacin general. ax b = y ax b = 0 ax = b x = (b/a) O sea, la funcin cortar al eje x en el punto b/a, y pueden darse dos casos +(b/a) cuando (b/a) > 0- (b/a) cuando (b/a) < 0Lo veamos grficamente

Caso 4) Si y=ax b Esta vez estudiamos la funcin completa, y todas las posibilidades que vimos anteriormente podramos resumirla de esta forma.

3.1.2. Trazador plotter- Algunos Conceptos de Funciones lineales Pendiente: La pendiente esta dada por el valor de a, y el valor de b, no dice nada respecto a este tema, lo nico que indica es el punto por el cual la funcin corta al eje y. Entonces, para estudiar la pendiente un poco ms detalladamente, lo que haremos ser suponer que b=0, y ahora resulta que. Si siendo b=0 Luego y = ax + b y = ax y/x = a

Definicin: La pendiente es la Ordenada en la abscisa, entonces, vamos a graficar la siguiente funcin y = 2/3 x pero la vamos a ordenar un poco.

b=0 y es por eso que no aparece, esto quiere decir que la funcin pasa por el origen, y siguiendo la definicin, la abscisa es 3 (3 en x), y la ordenada en 3, es 2 (2 en y sobre el punto 3), ahora lo graficaremos lentamente.

si b=2, pues que la misma funcin pasara por el eje y en el punto 2, y no por el origen, esto es como agarrar el grfico de la funcin y subirlo dos puntos hacia arriba, Ahora haremos un par de observaciones en la funcin que acabamos de graficar. El hecho de graficar o de desplazarnos desde el origen 3 puntos a la derecha (sobre el eje x), es por que ese 3 es positivo, y los valores positivos de x estn de ese lado. Lo mismo ocurre con 2 en el eje y, puesto que 2 es positivo y como los valores de y se encuentran de ese lado o sea se incrementa hacia arriba, pues simplemente subimos, sera de la siguiente forma. Como b=0, desplzate desde el origen 3 puntos a la derecha (por ser positivo) y 2 puntos hacia arriba (por ser positivo) existen otras posibilidades, slo piensa lo que ocurrira si ese 2/3 fuera negativo. Observa.

Por la regla de los signos, es lo mismo tomar el primer caso que el segundo, y grficamente llegamos a trazar la misma funcin, la nica diferencia es que lo hicimos por dos caminos distintos. Algo muy importante para resaltar y tener en cuenta de ahora en adelante, es que cualquiera sea el valor de la pendiente, el cociente entre el numerador y denominador ser siempre constante, independientemente de que hagas y/x o al revs x/y. Si mal

no recuerdo esto se debe a las leyes de las muy conocidas... Razones y Proporciones. 3.2. Ecuacin de la recta que pasa por un punto Hasta ahora hemos graficado la funcin conociendo la pendiente y suponiendo que b=0, es decir, siempre pasando por el origen, pero que ocurre cuando no conocemos el valor de b, bueno, lo que necesitamos es otro dato, que bien podra ser un punto P cualquiera, ubicado en una coordenada conocida, por ejemplo. Una funcin cuya pendiente es 2 y el punto P est dado por las coordenadas (2,1) lo cual se puede expresar de esta forma.

a=2 ; P(x=2,y=1) El punto P no es problema, lo que necesitamos es el segundo punto, pero lo podemos sacar de la pendiente, y recin vimos que la pendiente me indica desplazamientos en cada eje, Dado que entonces o lo que es lo mismo o mejor todava y=2 ; x=1 Bien, estos son los desplazamientos que debemos realizar, te preguntars, desde dnde debemos desplazarnos., muy sencillo, lo haremos desde el punto P,

3.3. "Ecuacin de la recta que pasa por un punto". En realidad la ecuacin se la utiliza cuando se desea obtener la funcin que dio origen a esta grfica, para de ese modo poder determinar un punto cualquiera en la recta que representa la funcin, y - y0 = a (x - x0) Los valores x0,y0, estn referidos al punto P, mientras que los valores x,y estn referido ese punto cualquiera, perteneciente a dicha funcin.

luego de hacer un pasaje de trminos, el cociente (y - y0) / (x - x0) da como resultado la pendiente a.

3.4. Ecuacin de la recta que pasa por dos puntos. si conoces un punto P, de una funcin lineal, y conoces la pendiente a de esa funcin, significa que conoces tambin el punto Q, que es el segundo punto con el cual ya puedes trazar la recta de la funcin.

Es decir que si conoces esos dos puntos P y Q, slo tienes que marcarlos y trazar la lnea que represente esa funcin, y ya terminaste, la pendiente a est dada por el cociente entre los segmentos verde y azul, a los cuales les podramos llamar Delta yyDelta x respectivamente.

El arreglo que acabamos de hacer, es para que ms o menos tengas una idea del origen de la ecuacin que viene a continuacin, y que se la conoce como. Ecuacin de la recta que pasa por dos puntos.

el Valor Absoluto de un Nmero, es el mismo nmero, sin considerar el signo", por ejemplo. El Valor Absoluto de 5 es 5, y el Valor Absoluto de -5 es 5, |5| = 5 |-5| = 5

CAPITULO IV.

MATERIALES Y EQUIPOS 4.1. MATERIALES 24 Diodos 1N5397 30 molex Integrados 4 L298 3 Condensadores 100uf 3 condensadores 104pf Hct 204 Placas de fibra de vidrio 5 x8 cm Cables varios Cable de puerto paralelo Pernos de Tornillos 3/16 Madera ngulos Anillos de presin Aluminio 3 Tornillos sin fin 1 pintura 1 Cinta aislante 3m 1 silicona Mica 54cm2 1 caja de PELT de 25cm x 30cm

4.2. EQUIPOS Taladro y accesorios Esmeril y accesorios Mini Taladro Fuente de poder de 12v Fuente de poder de 5v Un ordenador y accesorios 3 Motores paso a paso CAPITULO V. PROCEDIMIENTO 5.1. DESARROLLO DEL PROGRAMA EN VISUAL BASIC 6.0

5.1.1. PLOTER - Pxeles la programacin en Visual Basic, lo que vimos en pginas anteriores, no son otra cosa que herramientas para la programacin, y aqu citar otras que tambin nos sern de gran utilidad para comprender el cdigo fuente del programa que desarrollamos con mis alumnos, para el control de nuestra PLOTTER. si la mquina va a graficar una imagen, sera bueno verla mientras la va trazando, y lo que utilizamos para ver el punto exacto donde se encuentra la mquina es un Mtodo llamado PSet. La sintaxis para dibujar un Pxel es la siguiente. Objeto.PSet [Step] (x, y), [Color] (x,y): Valores Requerido de tipo Single, que indican las coordenadas horizontal y vertical del punto que se va a establecer. Color: Opcional. Valor entero de tipo Long que indica el color RGB especificado para el punto. Si se omite, se usar el valor de la propiedad ForeColor. Step: Opcional. Es una palabra clave que especifica que las coordenadas son relativas a la posicin actual, especificada por las propiedades CurrentX y CurrentY. hacemos un mini-programa para ejemplificar el uso de PSet. Entonces.Crea un nuevo proyecto y agrgale dos botones al formulario, en la propiedad Caption del botn le pones Punto al primero, y Lnea al Segundo. y pegas este cdigo, luego lo ejecutas. Private Sub Command1_Click() PSet (1000, 500) End Sub _______________________ ______ Private Sub Command2_Click() For i = 1000 To 2000 PSet (i, 1000) Next End Sub Por ejemplo, podramos hacer que las lneas sean de color rojo, para ello slo necesitas utilizar la funcin RGB (nRojo, nVerde, nAzul), donde nRojo,nVerde y nAzul son valores que van de 0 a 255 y representan la intensidad para cada uno de esos colores, otra funcin similar sera QBColor (CdigoColor), en esta ltima, CdigoColor es un valor entero entre 0 y 15, deberamos tener una tabla de colores. Private Sub Command1_Click() PSet (1000, 500), QBColor(12) End Sub ________________________ _____ Private Sub Command2_Click()

For i = 1000 To 2000 PSet (i, 1000), RGB(255, 0, 0) Next End Sub El argumento Step, que ser de gran ayuda cuando nuestro programa lea coordenadas relativas. El punto o la coordenada (0,0) se encuentra en la esquina superior izquierda del formulario,

si minimizamos la ventana y luego la vuelves a restaurar, vers que desaparecieron tanto el punto como la lnea que recin habamos trazado, y esto se debe a que la propiedad AutoRedraw del Formulario est a False, si la cambias a True, VisualBasic guardar la posicin de cada uno de esos puntos, y al restaurar el form los volver a pintar, Prueba La velocidad de un bucle For...Next depende de la mquina en la que se encuentre trabajando, de la velocidad de micro, por ejemplo, no es lo mismo una PC de 100 MHz que una de 800 MHz. debes mover los motores PaP mientras estas trazando la lnea, eso significa que debes enviar seales al motor en cada punto que marcas en el form, es algo as como "Un punto - Un Paso".El motor deber alimentar sus bobinas, al hacerlo generar un campo magntico y finalmente se producir un torque en el interior del motor, haciendo que ste mueva su eje. Pregunta. Si el Motor debe dar 1000 pasos a 800 MHz, lo Har...? el intervalo mnimo de un Timer es de 1 milisegundo, debes saber que la equivalencia es 1000 ms = 1 Segundo, y veamos como se traza la lnea OptionExplicit 'declaracin de variables Dim i As Integer __________________________ __ Private Sub Command1_Click() Timer1.Enabled = True 'habilita el timer i = 1000 'el contador empieza en 1000 End Sub __________________________ __ Private Sub Timer1_Timer() PSet (i, 1000), RGB(255, 0, 0)

'pinta un punto i=i+1 'contador se incrementa 'si lleg a 2001 ese ya no lo pinta y detiene el Timer If i = 2001 Then Timer1.Enabled = False End Sub el Timer queda oculto en modo de ejecucin. hasta aqu, la cantidad de puntos a trazar se encuentra dentro del cdigo, sera mejor si fuera el usuario quien decida cuantos puntos desplazarse, y desde donde hacerlo. 5.1.2. Programa Trazador de lneas esto es ms que nada para jugar un poco con pxeles, las economicemos un poco y utilicemos este programa para practicar,

grafiqu en el Form, sino en un Picture, que como bien sabemos debe tener su propiedad AutoRedraw=True, y su propiedad BackColor est en negro. Ahora veamos los controles que estn en el Frame Hay una matriz de 8 CommandButton a los cuales los llamamos cmdXY, el primero de todos, es decir cmdXY(0) es el que apunta hacia arriba, y girando en sentido horario se encuentra cmdXY(1) y el resto, la propiedad Caption de estos controles son "p,{,u,y,q,x,t,z" que corresponden al tipo de fuente Wingdings 3, el crculo que ves en el centro es un Label que en su propiedad Caption tiene el caracter de la fuente Symbol El primer TextBox es para cargar el nmero de puntos a trazar (txtPuntos), el segundo es la velocidad (txtVelocidad), en realidad es el intervalo que utilizar el Timer para marcar cada punto, los otros dos (txtX,txtY) solo indican la posicin inicial de trazado, que luego se ir actualizando a medida que vaya trazando una lnea. El botn Limpiar pinta el picture de color negro, es como borrar la imagen que se acaba de trazar, y el Botn Salir, bueno ya sabes. Lo que no se ve all, es el Timer, puesto que est en modo de Ejecucin, de entrada al iniciar el programa, su

propiedad Enabled est a False, y cambiar de estado cuando se presione cualquiera de los 8 controles de desplazamiento. Ten en cuenta que el Eje Y est Invertido, y que el desplazamiento ser Punto-aPunto De lo que vimos en funciones lineales, si la pendiente es cero, tienes 4 posibles sentidos de desplazamiento desde el punto inicial, a saber... Hacia Arriba (y=-1;x=0) Hacia Abajo (y=1;x=0) A la Derecha (y=0;x=1) A la Izquierda (y=0;x=-1)

Vamos por los desplazamientos diagonales. Un desplazamiento ser en diagonal cuando la pendiente sea distinta de cero, pero como en este caso es sencillo ya que los desplazamientos diagonales son a 45 grados, el cociente y/x ser "1", es decir, cuando te muevas un punto en el Eje X, tambin debers hacerlo en el Eje Y. Pero aqu tambin tienes 4 posibles sentidos de desplazamientos, a saber. Hacia Arriba y a Derecha (y=-1;x=1) Hacia Abajo y a Derecha (y=1;x=1) Hacia Abajo y a Izquierda (y=1;x=-1) Hacia Arriba y a Izquierda (y=-1;x=-1)

Como habrs notado, el 1 indica en que eje me debo desplazar, podra haber sido 2, pero como el desplazamiento ser punto-a-punto, pues debe ser 1, si es 0, significa que ese eje permanecer sin cambios. El signo, indica el sentido de desplazamiento segn los ejes X,Y Como los CommandButton forman una matriz de controles, lo que se debe hacer primero, es averiguar cul de ellos se puls, y segn el caso asignarle a cada variable el sentido y el valor de desplazamiento que le corresponde, una vez que tengas esas variables cargadas, cargars el resto de las variables del programa, por ejemplo. El punto inicial, dado por (txtX,txtY) La velocidad o el Intervalo para el Timer, dado por (txtVelocidad) La cantidad de puntos a marcar, dado por (txtPuntos)

Y finalmente habilitar el Timer. Primero, debemos ir mermando los puntos a trazar, luego al punto actual o a la coordenada actual, le sumamos el valor y sentido que le

corresponde, y utilizamos esa coordenada como argumento de la instruccin PSet para pintar ese punto, finalmente actualizamos txtX y txtY. Ahora, todo debe terminar cuando el nmero de puntos a pintar sea cero, en ese caso ponemos la propiedad Enabled del Timer a False

5.1.3. PLOTTER - Los Archivos PLT La mayora de los archivos PLT, tienen la misma estructura, me refiero ms que nada al encabezado, que es muy similar en todos ellos, siempre teniendo en cuenta que las coordenadas deben estar en modo Absoluto, por supuesto. A pesar de que en la seccin de cdigos para PLOTTER lo que haremos ser tomar nuevamente un ejemplo de ese cdigo para estudiarlo,. La intensin de hacer este ordenamiento es con la idea de facilitarle la lectura del cdigo al programa principal de la mquina (el programa de control) es decir, le vamos a quitar todo lo que segn nosotros est dems, esto dar como resultado mayor velocidad de lectura, mayor velocidad de desplazamiento, menor utilizacin de recursos de la PC. Para hacerlo deberemos tener en cuenta cuales sern las instrucciones que reconocer nuestra mquina, y cuales no, para as eliminarlas de nuestra lista total de instrucciones.

PA Absolute Position (Posicionamiento Absoluto): En algunos casos, especialmente al iniciar el cdigo suele presentarse esta instruccin, para comenzar a graficar, as que nos puede ser de utilidad PU Pen-Up (Subir el Lpiz): Puede que sea un lpiz (cuando lo convierta en un Plotter) o puede que sea un Mini-Taladro, as que para no entrar en detalles lo llamaremos Herramienta de Trazado, o simplemente Herramienta, Entonces ser "Subir la Herramienta" PD Pen-Down: (Bajar el Lpiz): Para nosotros, Bajar la Herramienta LT Line-Type (Tipo de Lnea): En realidad no ser de mucha importancia, ya que el tipo de lnea que se utiliza por lo general es continua, ahora que.si el grfico incluye otro tipo de lnea, tendremos problemas. Lo importante en nuestro programa es que marca el inicio del trazado de la imagen. SP Select-Pen (Seleccin de lpiz): Bueno, esta instruccin no est implementada en nuestra mquina, pero nos puede servir para saber en que momento termin de trazar, ya que lo vi al final de cdigo en la mayora de los archivos PLT. Veamos como viene el inicio de un archivo PLT, y cuales son los bloques que hay que quitar . (;.I81;;17:.N;19:IN;SC;PU;RO0;IP;IW;VS15;VS15;VS15;VS15;VS15;VS15;S P1;PU;PA0,0;SP1;LT;PA53,421;PDPA53,397,77,372,125,372,174,397,174 ,469...

etc., y cuando termina el archivo aparece... PUPA2645,445;PDPA2645,348,2621,58;PUPA2548,445;PDPA2596,445;P U;PA0,0;SP; Estos archivos estn escritos en una sola lnea de cdigo, no existe un retorno de carro, no, nada de eso, es una sola lnea, lo que nosotros tomamos es el inicio y el final de uno de estos archivos para que lo podamos estudiar, los dos bloques que siguen PU;PA0,0; ya que la mquina debe saber cual ser el punto de origen (coordenada 0,0) a dems ese ser el punto de referencia principal y todos los otros desplazamientos estarn referidos a ese punto, y Por qu al final...?, bueno, por que la mquina debe volver al punto de origen una vez termine de trazar. Si lo vemos con ms detalle PU es levantar la herramienta, y PA0,0 desplazarse al punto Cero, que bien podra resumirse en un slo bloque, mira. PU0,0; De acuerdo, esto ser obligatorio tenerlo al comienzo y al final de nuestro cdigo. El bloque que sigue es SP1; en realidad este bloque no tiene importancia, ya que estamos trabajando con una sola herramienta, por lo tanto ser ignorado, mientras que el ltimo SP; por lo que se ve, selecciona la herramienta que est configurada por defecto, de tal modo que se asegura que siempre ser esa la herramienta con la que comience sus trazados, a este ltimo lo vamos a dejar, para que cuando lo leamos, sepamos que ya termin el cdigo, podramos reemplazarlo por un END Y apareci un bloque ms LT; que no es tan importante, ya que el tipo de lnea ser siempre llena, es decir siempre ser LT; pero es importante tenerlo en cuenta ya que a partir de ahora comenzarn los desplazamientos Y comenzamos con PA53,421;, como ya saben PA es Posicionamiento Absoluto, slo debe desplazarse a ese punto (53,421), sin subir ni bajar la herramienta de trazado, as, tal como est. De ahora en ms no volver a aparecer un bloque PA solo, sino acompaado de una instruccin PU o PD, tal como se ve en el resto del cdigo, Otra observacin importante, es que un bloque que tenga como instruccin PU, no aparecer nunca como uno PD que suele venir con quinientasmil coordenadas en un solo bloque, y esto se debe a que ninguna mquina se la pasar paseando por la superficie de trabajo al divino gas (sin hacer ningn trazado), se supone que est destinada a trabajar.

5.1.4. Programa "Decode": Definamos lo que debemos hacer para organizar todo este lo, por que a la hora de programar suelen aparecer cosas inesperadas o que no las tuvimos en cuenta, as que nada mejor que un diagrama para aclararnos las dudas:

Primero cargas todo el cdigo en una variable, Luego buscas la instruccin LT; la funcin que nos permite hallarla es. InStrRev(lneaReg, "LT")

Esta funcin devuelve la posicin de "L" en realidad, lo que hace es buscar en la variable lneaReg (Variable que contiene nuestro cdigo) los caracteres LT, una vez lo encuentra, devuelve la posicin del caracter anterior a L, esa posicin la podra guardar en una variable, por ejemplo "ini", pero si recuerdas el bloque completo es LT; as que saltamos 2 caracteres ms para pasar a las instrucciones que nos interesan, no es necesario hacer el salto ya que el resto ser ignorado hasta encontrar una "P", ini=ini+2 Necesitamos un List para almacenar cada bloque de instrucciones, y la primera instruccin que necesitamos es PU0,0, a pesar de que sabemos que la siguiente instruccin ser PA, nos pueden aparecer sorpresas, as que aqu comienza la fiesta, y vamos a ir leyendo caracter por caracter, y a concatenarlo para armar cada bloque, recuerda que cada bloque termina en un ; Tambin es necesario conocer la longitud del cdigo, para as leer hasta el ltimo caracter, podra ser algo as. Longitud=Len(lneaReg) Como ini es la posicin actual del caracter a leer, entonces podemos leer mientras ini<>Longitud Ahora, si el caracter ledo es distinto al ; se ir concatenando en otra variable en mi caso ser en (PInstrucc), el primer caracter a concatenar ser P, el segundo puede ser A, U o D. Si PInstrucc="PA" comenzamos a concatenar sus nmeros hasta el ;. Si PInstrucc="PU" no me interesa y sigo concatenando Si PInstrucc="PD" tampoco, pero sigo concatenando Si es PInstrucc="PUPA" entonces s, Hago PInstrucc="PU" y comienzo a concatenar sus valores hasta el; Si es PInstrucc="PDPA" hago lo mismo que antes, PInstrucc="PD" y comienzo a concatenar sus valores hasta el ; pueden haber muchas coordenadas en un solo bloque PD, entonces hay que separarlos de dos en dos, es decir lo cargo en el List y hago PInstrucc="" es decir, limpio mi variable para comenzar de nuevo, y como estoy en un bloque "PD" hago PInstrucc="PD", y a este le concatenar otro par de nmeros,

Finalmente el ltimo SP; ser ignorado y cuando hayamos alcanzado la longitud total de la variable, lo que haremos ser agregarle nuevamente SP podramos haberle puesto un TheEnd o algo parecido

Claro que en el cdigo final del programa hay otras cosas ms, como llamadas al cuadro de dilogo Abrir, Guardar Como, un arreglo para evitar que se modifique el tamao del formulario, un par de Labels para mostrar la ubicacin y nombre del archivo, la cantidad de lneas de instrucciones, el List con sus propiedades, la limpieza del List una vez guardado el archivo y otras insignificancias, que lo dejo para que las estudies.

5.1.5. Plotter - Visor de Archivos PLT Previamente ordenados Lo que hicimos anteriormente es un programa para reordenar el cdigo de un archivo PLT, de tal modo que pueda ser ledo por nuestra mquina, lo que toca hacer ahora es crear un programa que simule el trabajo de la mquina, es decir haremos un Visor de estos archivos,

5.1.6. Primera Parte: Cargando del cdigo de trazado

Lo primero es abrir el archivo, que recuerda, ahora tendr la extensin *.plotter (vuelvo a repetir, no es realmente un archivo plotter CNC, bien, luego de abrir el archivo hay que cargarlo en un List, que es el que se ve en el programa, esto es as por que me facilita la lectura del cdigo, ya que cada registro del List contiene un bloque de instruccin, a dems, de esta manera, se abre el archivo una sola vez, se lee su contenido, se carga en el programa y finalmente se cierra, y no se lo vuelve a tocar ms. el cdigo es: ' Presenta el cuadro de dilogo Abrir. CommonDialog1.ShowOpen Dim lneareg As String ' Lo abre para lectura. Open CommonDialog1.FileName For Input As #2 n=0 ' Y ahora la Carga del archivo en el list WhileNotEOF(2) Line Input #2, lneareg lneareg = Trim(lneareg) lstCodigo.AddItemlneareg, n n=n+1 lstCodigo.Refresh Wend Close #2 Con esto hemos logrado cargar el archivo en nuestro programa, ahora est listo para comenzar la simulacin. 5.1.7. Segunda Parte: Lectura de cada Bloque de Instrucciones La lectura de cada bloque de instrucciones tambin es sencilla, igual que antes, la lectura se har letra-por-letra, la diferencia est en que, a medida que se lee, se van activando algunas variables para el trazado, pero, nada mejor que un diagrama para comprenderlo... ' lee desde la primera lnea ' lee mientras el archivo no termine

A ver... Ya sabemos como cargar el programa, y si recuerdas, cada registro del List es un bloque de instrucciones, y a dems cada bloque de instrucciones est arreglado para que comience con cualquiera de las 4 opciones que se pueden ver en el Diagrama, es decir PA, PU, PD, SP, La idea consiste en lo siguiente. Cargar un Bloque de instruccin en una variable, luego leer las dos primeras letras, y aqu se presenta el primer caso, Puede que sea PA, PU, PD SP, pero lo analicemos por descarte. Si es SP: Terminaste de trazar, el programa muestra un mensaje de "Fin de Trazado" Los que vienen podran almacenarse en una variable para saber si debes pintar un pxel o no. Si es PA o PU: No debes trazar nada, es decir, no pintas ningn pxel Si es PD: Pues, S hay que pintar el pxel actual El tema es que cualquiera de las 3 instrucciones vistas recin, necesitan de un par de coordenadas que me indiquen hacia donde ir, as que en cualquiera de los 3 casos hay que ir en busca del par que le corresponde. Una vez lo tengas, debers desplazarte sobre los ejes indicados. Ahora bien, una vez termines de trazar una lnea, debers ir por otro bloque de cdigo, y repetir todo este proceso nuevamente. Todo terminar cuando te encuentres con un bloque SP, Esto no es tan complicado, el secreto de que todo funcione se encuentra en el Desplazamiento, el cdigo no es tan

largo, pero requiere de la comprensin de como se aplican los mtodos para graficar funciones lineales, que segn tu conocimiento puede ser ms o menos complicado,. Ahora veamos como voy a encararlo yo para poder explicarlo, espero se entienda... 5.1.8. Tercera Parte: Desplazamiento en los Ejes X-Y los desplazamientos sern punto-a-punto eso significa que debes pintar pxel por pxel, Lo primero que debemos saber, es si la coordenada a la posicin de destino, es distinta a la actual, y vamos por lo ms fcil, si la posicin es la misma, significa que no habr desplazamiento en ese eje, es por eso que necesitamos saberlo, entonces preguntamos NewX<>PrevX? si es que s, deberemos averiguar la DISTANCIA hacia el nuevo punto, esto se puede hacer calculando el valor absoluto de la Resta NewX-PrevX y guardndolo en una variable, que podra ser "xi". En resumidas cuentas, para los dos ejes quedara algo as. Si NewX<>PrevX Entonces xi=|NewX-PrevX| Si NewY<>PrevY Entonces yi=|NewY-PrevY| Sabemos que si la posicin de x y de y es la misma, no habr desplazamiento, lo que nos interesa es cuando s lo haya, y como no sabemos dnde estar el punto de destino, deberemos estudiarlo. y aqu entra toda la teora de la pendiente de una funcin lineal, pero veamos en forma animada como es que las dos lneas de cdigo anteriores buscan el punto de destino y luego nos metemos de lleno en la pendiente. Habr que tener en cuenta que para nuestro caso el trmino b de una funcin lineal ser siempre cero, es decir, siempre pasar por el origen, por supuesto, considerando al origen como el Punto Actual en el que te encuentras

<-- AnteriorReiniciarSiguiente --> Principio del formulario

1) PrevX,PrevY En rojo el punto que conoces, que es el punto actual, el de destino puede Cmo saber donde...? bueno, es momento de averiguarlo...

Final del formulario Antes de continuar y de definir cual de los 4 puntos es el que estamos buscando, sera mejor conocer la pendiente, recuerda que hay que graficar Punto-a-Punto, es decir no puedes avanzar 1 pxel en un eje y en el otro avanzar 2, 4, 6, 7 o ms, Debe ser "1" "0", para ello debes saber cual de las 2 distancias xi o yi es mayor, y segn eso avanzars por el Eje X o por el Eje Y. Veamos como sera un trazado Correcto y uno Incorrecto cuando xi>yi.

Incorrecto...!!!

Correcto...!!!

Al avanzar 1 punto en Y, debe avanzar Al avanzar 1 punto en X, en Y avanzar 1 varios puntos en X Conclusin: Se estn o ninguno Trazando Conclusin: El trazado es punto a punto

Segmentos, no puntos El resultado no es La lnea obtenida es ms uniforme. una lnea uniforme

El resultado de hacer esta observacin en la forma de graficar una lnea en diagonal, es que, cuando la distancia xi es distinta de yi hay que avanzar incrementando un punto en el mayor de ellos, el otro, se lo puede obtener por clculo.

5.1.9. Plotter - Visor de Archivos PLT Previamente ordenado Lo primero, es el punto actual o previo al movimiento PrevX.PrevY, luego tenemos el punto de destino o el nuevo punto, dado por NewX, NewY, A dems tenemos las distancias entre estos dos punto xi,yi Lo que necesitamos ahora es saber cuanto avanzar en cada coordenada para llegar hasta NewX,NewY y a estas nuevas variables las llamar Plusx,Plusy este par determinar donde est el punto a pintar, por ejemplo

Caso 1: Si xi = yi significa que la lnea est a 45 grados, entonces PlusX=1 y PlusY=1, es decir, al punto actual se le sumar 1 en el Eje X, y 1 en el Eje Y Caso 2: Si xi >yi, en este caso dijimos que avanzaramos un punto en el eje ms largo, entonces PlusX=1 y PlusY=(yi/xi). Ahora bien, si recuerdas, el cociente y/x es la pendiente de una recta, que si el cociente se efecta, lo que tendrs es cuanto debes avanzar en el EjeY Caso 3: Si xi <yi, igual que antes, avanzaremos en el eje ms largo, entonces PlusY=1 y PlusX=(xi/yi). Como vers el cociente esta vez es al revs, y tiene que ser as, ya que lo que buscamos es, cunto avanzar en el EjeX. En nuestro cdigo de programacin quedara algo as... 'incrementa el eje x, luego calcula el valor de y If xi > yi Then nPlusx = 1 nPlusy = yi / xi EndIf 'incrementa el eje y, luego calcula el valor de x If xi < yi Then nPlusx = xi / yi nPlusy = 1 EndIf 'incrementa los dos por igual If xi = yi Then nPlusx = 1 nPlusy = 1 EndIf De acuerdo, slo nos est faltando una cosa, es saber cual de los 4 puntos que tenemos disponibles es el que estamos buscando, y con esto ya terminamos. Si PrevX<NewX, vamos a la Derecha, entonces le sumamos a PrevX el incremento que le corresponde (PlusX) Si PrevX>NewX, vamos a la Izquierda, entonces le restamos a PrevX el incremento que le corresponde (PlusX) Si PrevY<NewY, vamos Arriba, entonces le sumamos a PrevY el incremento que le corresponde (PlusY) Si PrevY>NewY, vamos Abajo, entonces le restamos a PrevY el incremento que le corresponde (PlusY) y nuestro cdigo quedara algo as...

If nPrevx < nNewX Then nPrevx = nPrevx + nPlusx If nPrevx > nNewX Then nPrevx = nPrevx - nPlusx If nPrevy < nNewY Then nPrevy = nPrevy + nPlusy If nPrevy > nNewY Then nPrevy = nPrevy - nPlusy y Ahora lleg el momento de pintar, puesto que cuando el programa se ejecute, pasar por aqu toda vez que deba avanzar un punto, entonces es aqu donde pintamos un pxel, y la instruccin ser... IfbLapiz = True Then Picture1.PSet (nPrevx, -nPrevy), RGB(255, 0, 0) bLapiz es una variable que determina si se debe o no pintar un pxel, se pondr a True o False segn la instruccin sea PU,PA o PD y Bueno, el programa terminar cuando PrevX=NewX lo que hicimos fue cambiar las coordenadas del Picture1 en lugar de que sea la Esquina Superior Izquierda, ser la Esquina Inferior Izquierda Hay una propiedad del Picture, llamada ScaleMode que por defecto est en 1-Twip y que est muy ligada a la propiedad ScaleTop, cuando esta ltima propiedad vale cero las coordenadas de origen estn en la Esquina Superior Izquierda, ahora, si le pones a ScaleTop el valor de la altura del Picture1 con signo negativo, estars bajando las coordenadas de origen del Picture, y ScaleMode pasar automticamente a 0-User hemos terminado con este programa, pero no sin antes ver una imagen previa de lo que es posible graficar, puedes ampliar la imagen para verla...

El cdigo del programa, tambin incluye otros detalles, cosas simples como... la reubicacin de controles en caso de ampliar o disminuir las dimensiones del formulario cuando se encuentra en Modo de Ejecucin, botones como... Continuar, Detener, que alguna vez me hicieron falta mientras estaba probando el cdigo,

5.1.10. Plotter - Graficadora de Imgenes: Para que nuestra mquina pueda Desplazarse sobre la superficie de trabajo y Trazar el grfico necesitamos tener comunicacin con ella, para lo cual es indispensable disponer de una interfaz que haga de intermediaria entre ambos, la que utilizamos con mis alumnos, se encuentra descrita en la seccin de electrnica, El control de la Mquina, se har utilizando todos los pines de salida del Puerto Paralelo, sip, sin microcontrolador ni nada de eso, no se incluyeron sensores en los circuitos, tampoco encenderemos el taladro de forma automtica, ni tiene dispositivos de enfriamiento ni nada por el estilo, Quieres ver cual es el programa

el resto, bueno, queda en manos del programa que es el encargado de leerlos y trazarlos. Bien, ahora s, comenzamos en serio. Desplazarse sobre la superficie de trabajo y Hacer el grfico, son dos cosas distintas,

5.1.11. Desplazarse sobre la superficie de trabajo El desplazamiento sobre la superficie de trabajo es muy sencillo, ya que slo debes controlar dos motores, el nico inconveniente es que el movimiento de ambos debe estar coordinado para que sea uniforme, parejo, no pierdas pasos en el giro de los motores, La pregunta aqu es, Cmo se logra todo esto...?, y la respuesta est en la interfaz y el tipo de motores a utilizar, debes conocerlos bien para saber como manejarlos, es ms , los motores deben ser iguales, (me refiero al ngulo de giro, que es equivalente a la cantidad de pasos). Los motores que utilizamos nosotros, pertenecen a una vieja impresora HP, y son de tipo Unipolar, es decir, para controlar este motor, necesitamos 4 seales, que se irn secuenciando de alguna manera. La forma de secuenciar estas seales, define el ngulo de desplazamiento de cada paso del motor y el torque que se produce en su interior, hay 3 formas de controlar estos motorcillos, A pasos completos: se alimenta una Bobina por vez A pasos completos: igual que el anterior pero alimentando dos Bobinas por vez , para obtener mayor fuerza de giro

A Medio Paso: Es una combinacin de los dos anteriores

El que nuestro equipo de proyecto utilizara en este programa corresponde al tercer modo de control. La cosa es que, el desplazamiento sobre la superficie es en 2 dimensiones, y no hay que preocuparse de si se est trazando o no, y como es en 2D, solo necesitamos 2 motores, y como cada motor tiene cuatro hilos por los cuales enviar seales, necesitamos 8 bits de control. Por otro lado, la interfaz es tan sencilla que lo nico que hace, es amplificar la seal enviada por la PC en cada uno de los bits de salida, Lo primero que tiene es un conector DB25, que transfiere la seal tal como viene a un Buffer 74LS245, que de alguna manera acta como separador, manteniendo un cierto nivel reconocible de seal. Los mismos valores lgicos de cada bit, se envan a un Array de Transistores que tambin describimos en secciones anteriores, el L298, usamos este por que la cantidad de corriente que maneja es suficiente para estos Motores PaP, el nico problema aqu es que el L298 invierte las seales de salida, o sea cuando envas un 1 Lgico, el ULN entregar un 0 Lgico. Por suerte para nosotros, el hilo comn de las bobinas de un Motor PaP, va unido al positivo de la fuente de alimentacin, mientras que las seales requeridas para controlarlas deben ser de naturaleza negativas (0 Lgico), es decir, lo que pareca un problema no lo es, es ms, est todo a favor de nosotros. Ya est todo claro, necesito 8 bit, y con ellos controlo dos motores, uno unido al EjeX y otro al Eje Y, la cuestin es, Cules de los 12 bit de salida voy a utilizar, y por alguna razn decidmos tomar el registro de Datos del LPT, que tiene justamente 8 Bits. Como ambos motores deben moverse en forma simultnea, hay que ver como hacemos, yo opt por utilizar matrices, donde cada elemento de la matriz tiene el valor que corresponde a la combinacin de bits que activan un movimiento. Lo que viene ahora es la definicin de esos valores, siempre refirindome al Registro de Datos, Elemento de cada Matriz y Asignacin de Valor Valor Binario Decimal BitEjeX(0) = 1 BitEjeX(1) = 3 BitEjeX(2) = 2 BitEjeX(3) = 6 ' 00000001 ' 00000011 ' 00000010 ' 00000110

BitEjeX(4) = 4 BitEjeX(5) = 12 BitEjeX(6) = 8 BitEjeX(7) = 9 BitEjeY(0) = 16 BitEjeY(1) = 48 BitEjeY(2) = 32 BitEjeY(3) = 96 BitEjeY(4) = 64 BitEjeY(5) = 192 BitEjeY(6) = 128 BitEjeY(7) = 144

' 00000100 ' 00001100 ' 00001000 ' 00001001 ' 00010000 ' 00110000 ' 00100000 ' 01100000 ' 01000000 ' 11000000 ' 10000000 ' 10010000

Como se puede ver, son dos matrices distintas, una para cada motor, al Motor del EjeX los 4 bits Menos significativos, y al del Eje Y los Ms significativos. Ahora, si se desea mover los dos motores a la vez, lo que debes hacer es sumar los valores de los elementos correspondientes al paso que deseas dar, que dicho en cdigo de programacin sera algo as. nBitx = Int(nPrevx) Mod 8 nBity = Int(nPrevy) Mod 8 CallPortOut(888, BitEjeX(nBitx) + BitEjeY(nBity)) por ejemplo, nPrevX y nPrevY son los valores actuales de la ubicacin en donde se est pintando un pxel, ahora describamos el resto. Int(nPrevx) es una funcin que devuelve el entero del valor que se pasa como parmetro. Mod Es un operador matemtico, lo que hace es devolver el resto de dividir el primer nmero en el segundo, en nuestro ejemplo, divide nPrevx por 8, tantas veces como sea necesario y finalmente devuelve el resto de esa divisin, que pueden ser 8 valores, que van de 0 a 7, ese valor se almacena en una variable llamada nBitx, y nBity para cada caso. nBitx y nBity son los ndices que identifican a cada elemento de la matriz, matriz que se defini previamente, que como acabo de decir puede ser cualquier valor entre 0 y 7. PortOut es un sub-procedimiento que debe estar definido en el encabezado del programa, este procedimiento se encuentra en un archivo IO.dll, tema que tambin ya hablamos en tutoriales anteriores, pero bueno, el procedimiento se llama de la siguiente forma...

CallPortOut(Nmero_Puerto, Dato) En nuestro caso Nmero_Puerto es 888, que vendra a ser el Registro de Datos del Puerto Paralelo, y es con el que estamos controlando los dos motores. Dato es un nmero de tipo Byte, que representa el dato a enviar, su mximo valor es 255, es decir, todos sus bits en 1 (11111111) Veamos como obtenemos el valor de Dato. Call PortOut(888, BitEjeX(nBitx) + BitEjeY(nBity))

Suponte que nBitx=3 y que nBity=4, entonces quedara as... CallPortOut(888, BitEjeX(3) + BitEjeY(4)) En este ejemplo, el elemento BitEjeX(3) de la matriz BitEjeX es 6, y el elemento BitEjeY(4) de la matriz BitEjeY es 64, y la suma de ambos ser 70, entonces, la llamada a PortOut quedara... CallPortOut(888, 70) y ese sera el dato que se enva al puerto, pero no conforme con ello, lo veremos en forma binaria, y 70 en binario es 01000110... que, 64(decimal)=01000000(binario) y 6(decimal)=0110(binario) Trazar el grfico la prioridad la tendr el eje que mueve la herramienta de trabajo, es decir, el tercer eje, el Eje Z. Imagnate que la instruccin fuese PU200,245, lo primero que ser PU, y luego 200,245. PU es no trazar, o Pen-Up, o Subir la Herramienta, en nuestro caso, mover el Eje Z para levantar nuestro Mini-Taladro, y luego de eso recin desplazarme hacia el punto 200,245, lo que vamos a ver ahora es como controlar este Eje Z El primer problema que se nos plantea es que los bits de este registro estn invertidos, bueno, algunos de ellos, ms especficamente el bit3, bit1 y bit0, as que nos la arreglaremos, y aqu vamos Elemento de c/Matriz Binario no invertido Binario Invertido Asignacin Decimal Enviado al Puerto Saliendo del Puerto BitEjeZ(0) = 10 BitEjeZ(1) = 8 BitEjeZ(2) = 9 BitEjeZ(3) = 13 BitEjeZ(4) = 15 ' 00001010 ' 00001000 ' 00001001 ' 00001011 ' 00001101 ' 00000001 ' 00000011 ' 00000010 ' 00000110 ' 00000100

BitEjeZ(5) = 7 BitEjeZ(6) = 3 BitEjeZ(7) = 2

' 00000111 ' 00000011 ' 00000010

' 00001100 ' 00001000 ' 00001001

El valor Binario no invertido es el valor tal como lo envas al puerto, pero como este invierte los bitS 3,1 y 0, pues el resultado de esa inversin es el que tendremos en la salida, qu instruccin P es la que se va a ejecutar, segn eso subimos o bajamos nuestra herramienta, y esa instruccin est almacenada en una variable llamada cCodigoP, si es "PU" giramos en un sentido para subir el taladro, y por supuesto utilizando nuestra funcin MOD, pero nos est faltando algo ms. Hasta dnde debemos subir, o bajar. Bueno, ese dato se leer del cuadro de texto llamado txtProfundidad que ser el punto mximo al que deber bajar, y se cargar en una variable llamada nNewz, hay otra llamada nPrevz, que inicialmente arranca en cero, en realidad esta ltima almacena la posicin actual de la herramienta. Si la instruccin es "PU" significa que est abajo, por lo que deber subir hasta la posicin cero, y no saldr de aqu hasta que alcance esa posicin. y qu pasa si es que ya estuviera arriba. Y seguir con el flujo del programa, pero vemoslo en cdigo, cmo quedara... '************************************************************ 'Desplazamiento para el eje z '-----------si el taladro est abajo debe subir------------If cCodigoP = "PU" Then nBitz = 0 Subir: VelocPerf = (15 - hscPerforacion.Value) * 10 IfnPrevz> 0 Then'sube hasta la posicin 0 nPrevz = nPrevz - 1 nBitz = Int(nPrevz) Mod 8 CallPortOut(890, BitEjeZ(nBitz)) 'aqu se manda el dato al puerto 'Retardo For TT = 1 To VelocPerf For T = 1 To 10000: Next T Next TT GoTo Subir End If 'velocidad para subir

ahora en ms el taladro permanece arriba EndIf nPrevz va disminuyendo hasta hacerse cero, y el bucle For...Next es simplemente un retardo, hay por all una variable llamada VelocPerf, que no es otra cosa que el valor de la posicin dado por el Scroll de velocidad de Perforacin, hay un clculo innecesario que yo agregu para mis alumnos, y ms que nada para que pudieran entender que a medida que va aumentando el valor del Scroll, la cantidad de repeticiones del bucle va disminuyendo, Algo muy similar ocurre cuando la instruccin es "PD", slo que en este caso el valor de nPrevz es cero, y se va incrementando hasta alcanzar la profundidad programada (nNewz), mira cmo quedara..

'-----------si el taladro est arriba debe bajar-----------If cCodigoP = "PD" Then nBitz = 0 Bajar: VelocPerf = (15 - hscPerforacion.Value) * 10 nPrevz = nPrevz + 1 nBitz = Int(nPrevz) Mod 8 CallPortOut(890, BitEjeZ(nBitz)) 'aqu se manda el dato al puerto 'Retardo For TT = 1 To VelocPerf For T = 1 To 10000: Next T Next TT GoTo Bajar End If 'de ahora en ms el taladro permanece abajo EndIf aqu es donde aparece nuestra variable llamada nNewz, que siempre ser fija una vez comience a trazar, si prestas atencin, esta vez la comparacin no es con cero como en el caso anterior, sino con la variable nNewz, y el resto ya lo conoces. 'velocidad para bajar IfnPrevz<nNewZThen'baja hasta la posicion indicada en nNewZ

5.1.12. Plotter - Control Independiente de Motores:

Anteriormente utilizamos estos controles en un programa que nos permita trazar una imagen, lnea por lnea, esta vez lo utilizaremos para mover los motores de cualquier eje, indicndole la cantidad de pasos que deber dar, con posibilidades de apagar el puerto en cualquier momento si es que fuese necesario. Su mayor utilidad, es desplazar la herramienta sobre la superficie de trabajo, especialmente cuando se desea ubicarla en el punto Cero o mejor an, cuando necesitas saber cual ser la altura inicial, es decir, para cuando desees calibrar la mquina. Para mover los motores, o mejor dicho, para girar el motor dos pasos consecutivos, debe haber un cierto retardo, que como ya vimos, un timer es demasiado lento, lo que hacemos es utilizar un bucle For...Next. La Cantidad de pasos a dar sera la cantidad de puntos a desplazarse, se cargan en una variable llamada "cuentapasos" luego esta se va decrementando hasta llegar a cero, en ese caso se habrn alcanzado la cantidad de pasos que se deseaban dar. Los valores que se muestran en los 3 Text inferiores, son simplemente la cantidad de pasos que se estn avanzando, esto es para tener una idea de la distancia que se logra alcanzar para una determinada cantidad de pasos, puedes ponerlos a cero en cualquier momento, y as reiniciar la cuenta.

5.1.13. Avance en los ejes X,Y

Como los avances en los ejes x,y son uno-a-uno, los valores para incrementar en cada coordenada sern -1, 0, 1, esto es debido a que los desplazamientos son horizontales, verticales, o diagonales (a 45), por ejemplo, cuando el desplazamiento es vertical u horizontal, uno de los ejes tomar el valor 0 y el otro ser -1 1. Si el desplazamiento es en diagonal (para este programa siempre ser a 45) ninguno de los ejes podr tomar el valor 0 y los posibles desplazamientos surgen de la combinacin entre -1 y 1, bien, estos valores se cargan en una variable llamada plusX,plusY que tambin la vimos anteriormente. Para entender mejor los desplazamientos, vamos a ir de adelante para atrs, y comencemos con las llamadas al Puerto CallPortOut(888, (EjeX(Xi) + EjeY(Yi))) Es importante recordar que estamos manejando matrices para cada motor, las variables Xi,Yi como ya sabemos, son los ndices de los elementos de cada matrz, que deben ser 8 (por que estamos trabajando a medios pasos), ahora bien, para dar una secuencia de pasos estos deben irse incrementando o decrementando segn el caso, pues para ello es que se le suman los valores plusX,plusY 'incrementa la secuencia de pasos Xi = Xi + plusX Yi = Yi + plusY En algn momento superars la cantidad de elementos de la matriz, y eso te arrojar un error de desbordamiento (creo que se llama as, "Error de desbordamiento"), entonces eso es lo que debemos controlar, para ello hicimos este pequeo bloque de cdigo. IfplusX> 0 And Xi = 7 Then Xi = -1 IfplusX< 0 And Xi = 0 Then Xi = 8 IfplusY> 0 And Yi = 7 ThenYi = -1 IfplusY< 0 And Yi = 0 ThenYi = 8 Y ahora s, ya se puede comprender lo que viene a continuacin, que no es otra cosa que la suma de los valores correspondientes a una secuencia de pasos a dar, y que se envan al registro de datos del puerto paralelo CallPortOut(888, (EjeX(Xi) + EjeY(Yi)))

5.2. DISEO E IMPLEMENTACION DEL MODULO GRAFICADOR TRAZADOR PLOTTER. (PARTE DE LA ESTRUCCTURA)

5.2.1. TRAZADOR- PLOTTER T (Motores, Varillas Roscadas y Guas de Desplazamiento) para la construccin de la mquina, y vamos a comenzar por los motores. en nuestro caso motores PaP del tipo unipolar, que los sacamos de una vieja HP, y otras las adquirimos en la cachina.

Estos motores, se trata de motores unipolares de 48 pasos, que debido a la forma de control (a medio paso) se convirtieron en 96 pasos para dar una vuelta completa, ahora lo importante es saber cual es el avance en ese giro, si el motor estara unido directamente al sin-fin que mueve cada eje (tal como se hizo), todo queda en manos del sin-fin, que en nuestro caso se trata de una varilla roscada de tipo milimtrica, al ser milimtrica significa que la distancia entre dos crestas de la rosca, o entre dos de sus ranuras es de 1 mm, a esta distancia tambin se la llama PASO,

posteriormente nos toca como armar algunas de sus partes, y comencemos por los mecanismos para el Eje X...

La varilla roscada, va fijada en los rodamientos de ambos extremos, y los rodamientos, en el poli-carbonato que hace de sostn, obviamente el dimetro interno de los rodamientos es igual al dimetro de la varilla roscada, para evitar posibles movimientos falsos que se puedan generar. Una vez montado, qued as.

Entre los dos extremos de estos elementos, se deben colocar los bujes y el sostn para el carro que llevar el taladro, tambin se deben incluir las tuercas que lo arrastrarn de un lado a otro, esos son los que se ven en la siguiente imagen.

Aqu es importante aclarar que el uso de bujes para el desplazamiento, puede traer algunos inconvenientes, ms que nada respecto al rozamiento, en nuestro caso, los bujes son de bronce autolubricante, an as sera bueno reemplazarlos por otro sistema que mejore la libertad de movimiento

Y por supuesto, se agreg la base de madera de fibra, que es la que sostendr todo el mecanismo para la pluma, justamente el que veremos ahora... Cabezal o Soporte para la pluma Este es el mecanismo para el Eje Z, a pesar de ser muy parecido al del Eje X, hay una gran diferencia, y es que la tuerca de arrastre es una sola, y est asegurada en la base de madera, lo importantes es que debe estar lo ms perfectamente centrada y alineada con la varilla roscada, y as no se cruza ni produce pandeos en la varilla, ni nada por el estilo, otra de las diferencias es que los 4 bujes que se ven all, van atornillados a la base,

aqu ya aparecieron otro par de accesorios, primero, el la pluma y al lado, una abrazadera que ser la que lo sostendr por la parte superior, y otra que parece un

trapecio, en realidad es una planchuela de acero, doblada en L, que de un lado tiene un orificio por donde pasa la punta del taladro, a la vez sirve para ajustarlo y fijarlo en la misma base...

La Mesa Es un poco imposible conseguir todos los accesorios que uno necesita para la construccin, as que hay que adaptarse a lo que encontramos, la gua sobre la que se desplaza la mesa, son dos caos estructurales y cuadrados, primero por que no encontramos varillas redondas que cumpla con todos los requisitos que se necesitan, y segundo, que es necesario un juego de rodamientos que elevan demasiado la mesa, sera bueno que fueran rodamientos pequeos, y lo ms ancho posible, pero bueno, no los encontr, de todos modos se nos simplific un poco ya que luego colocamos 4 ngulos de acero que se apoyan sobre estos caos, esos son los que se ven en la primer foto a los costados del tablero...

En las dos fotos siguientes se ve la tuerca que ser la encargada de desplazar la mesa, y tiene un poli-carbonato adicional, eso fue necesario para darle la altura correcta y alinearlo con la varilla roscada, ahora viene una foto con la mesa ya armada...

Por el centro de la mesa, justo por donde est la tuerca, pasa la varilla roscada que es la que se ve en la siguiente foto...

La madera de la parte de abajo, es la base de toda la mquina, lo que est por arriba de la varilla roscada es la mesa mvil, la que vimos recientemente. Ahora vamos por los extremos de la varilla roscada, en las fotos que se muestran aqu abajo, se ven ms claro, la primera tiene el extremo libre, y la otra es la que se comunica con el motor,

Lo que viene ahora, son detalles para la unin de los motores, el primero es para el Eje X, el que sigue es para el Eje Z, que como vers, cambi, no es el mismo que en la primer foto de esta pgina.

CAPITULO VI. CRONOGRAMA Y VALORACION DEL PROYECTO CRONOGRAMA DE EVENTOS DE IMPLIMENTACION (DURACION DEL PROYECTO) TIPO DE EVENTO Inicio del proyecto Investigacin de los temas referentes al proyecto Diseo del software o programa madre en visual basic versin 6.0 ACTIVIDAD QUE SE REALIZA Recavacion de informacin en varios medios, internet, libros, revistas, etc. Modelado y simulacin

FECHA 1er. Mes 02 eventos mnimo s 2do. Mes 01 evento mnimo

PARTICIPANTES - alber milton Quispe apaza - willian Abel paricahua ito Fernando sanchez villagomes

Pruebas de motores PaP. Simulacin y modelado en proteus. Armado de etapa de control del proyecto diseo de tarjetas de control. Armado del modulo plotter 3er. Etapa de Inicio de pruebas, en Mes 02 pruebas y total 18 pruebas con eventos culminacin resultados de falso mnimo del proyecto negativo. Termino de

- alber milton Quispe apaza - willian Abel paricahua ito Fernando sanchez villagomes

- alber milton Quispe apaza - willian Abel paricahua ito Fernando sanchez villagomes

s 6.1. VALORACION 24 Diodos N5 397 30 molex Integrados 4 L298

pruebas con exito

0.50 0.50 8.00 0.50/0.20 1.50 2.00 0.25 5.00 20.00 3.00 20.00 10.00 6.00 4.00 8.50 3.00 10.00 15.00 15.00 30.00 50.00 3.00 51.60

12.00 15.00 32.00 1.50/0.60 4.50 6.00 10.00 5.00 20.00 3.00 20.00 10.00 6.00 12.00 8.50 3.00 10.00 15.00 30.00 30.00 150.00 12.00 51.60 474.20

3 Condensadores 100uf y 104 4 Hct 245 Placas de fibra de vidrio 5 x8 cm Cables varios Cable de puerto paralelo Pernos varios Tornillos 3/16 Madera Angulos Anillos de presin 3Tornillos sin fin 1 pintura 1 Cinta aislante 3m 1 silicona Mica 54cm2 2 caja de PELT de 25cm x 30cm Fuente de poder de 12v Y 5V 3 Motores paso a paso 4 rodajes Gastos varios

TOTAL en n/s

CAPITULO VII. RESULTADOS Y CONCLUCIONES

7.1. RESULTADOS a. en las multiples primeras pruebas los resultados no fueron favorables ya que se detectaron fallas en un inicio en el programa. b. luego de un pasiente anlisis se logro detectar las fallas. c. en las pruebas del modulo se presentaron fallas en el trazado asi como en el libre movimiento de las bases. d. despus de redimensionar y ajustar algunos componentes, se obtuvo un resultado favorable. e. otras de las fallas se presento en la parte final del proyecto ya que debido al consumo de voltaje del motor, se fundi el integrado L298 encargado de la etapa de control de motor f. reemplazando el L289 el funcionamiento es normal. g. y como resultado final se obtuvo un modulo que interacta satisfactoriamente con el modulo plotter.. 7.2. CONCLUSIONES - El proyecto concluye favorablemente a pesar de algunos pequeos inconveniente que se escapan del control o acceso de los responsables. - se llega a la conclusin que el programa visual basic 6.0 es un optimo programa a la hora de aplicarlo a imgenes.

CAPITULO VIII. BIBLIOGRAFIA [01 ] Katsuhiko Ogata "Ingenieria de control Moderna" ED. Prentice hall,2003 [02] Angulo U.,J.M Romero ??Microcontroladores PIC Diseo prctico de aplicaciones??. 2da. parte. PIC16F87X. Ed. McGraw Hil.l 2000 [03] Jordi Mayn ??Sensores Acondicionadores y Procesadores de seal?? Silica 2003 [04] Webster, John G,Palls,Ramn. "Sensores y acondicionadores de seal" .Ed. John Wiley & soons. 2nd edition. USA,2001. [05] Surez Ponce Federico, Caractersticas y condiciones de Cultivo Dpto. de Botnica UNAM. [06] Manuales de construccin de Invernaderos.

[07] MAtallana A., Montero J. Invernaderos Diseo construccin y ambientacin. Ed. Mutiprensa, Espaa 2001. [08] Hoja de datos y especificaciones tcnicas de componentes electrnicos.

8.1. BIBLIOGRAFIA ELECTRONICA Foros de electronica. http://www.docente.ucol.mx/al986324/public_html/IEEE-temp%20NAROGE

ANEXOS

Iniciar sesin
Ingrese el e-mail y contrasea con el que est registrado en Monografias.com

1 0 1 0 1 0 1 0
R1
10k

U1
2 3 4 5 6 7 8 9 19 1 A0 A1 A2 A3 A4 A5 A6 A7 CE AB/BA 74LS245 B0 B1 B2 B3 B4 B5 B6 B7 18 17 16 15 14 13 12 11 5 7 10 12 6 11 1 15 IN1 IN2 IN3 IN4 ENA ENB

9 VCC

4 VS

U3
+88.8 OUT1 OUT2 OUT3 OUT4 2 3 13 14

D2
DIODE

D3
DIODE

SENSA SENSB

GND 8 L298

D4
DIODE

D5

D6

D7

D8

D1
DIODE

DIODE DIODE DIODE DIODE

9 5 7 10 12 6 11 1 15 IN1 IN2 IN3 IN4 ENA ENB VCC

4 VS OUT1 OUT2 OUT3 OUT4 GND 8

U4
2 3 13 14 +88.8

U2

1 0 0 1 0

2 3 4 5 6 7 8 9 19 1

A0 A1 A2 A3 A4 A5 A6 A7 CE AB/BA 74LS245

B0 B1 B2 B3 B4 B5 B6 B7

18 17 16 15 14 13 12 11

SENSA SENSB

D9
DIODE

D10
DIODE

D11
DIODE

D12
DIODE

L298

D13
DIODE

D14
DIODE

D15
DIODE

D16
DIODE

R2
10k

9 5 7 10 12 6 11 1 15 IN1 IN2 IN3 IN4 ENA ENB VCC

4 VS OUT1 OUT2 OUT3 OUT4 GND

U5
2 3 13 14 +88.8

CIRCUITO DE LAETAPA DE CONTROL DEL MODULO 8


D17 D18 D19 D20
DIODE DIODE DIODE DIODE

SENSA SENSB

L298

D21
DIODE

D22
DIODE

D23
DIODE

D24
DIODE

Вам также может понравиться