65
INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO DUPLICADOR CON CONTROL AUTOMATICO” INVESTIGADORES PARTICIPANTES: Director del proyecto. M. en C. Rubén Ortega González. Tel. 57-29-60-00 Ext. 52022 M. en C. Aurora Aparicio Castillo Tel. 57-29-60-00 Ext. 52022 M en C. Oscar Carranza Castillo Tel. 57-29-60-00 Ext. 52022 ALUMNOS PIFI: Mendoza Ortiz Eva Cristina. [email protected] Pescador Rojas Miriam. [email protected]

DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

INSTITUTO POLITÉCNICO NACIONALESCUELA SUPERIOR DE CÓMPUTO

“DUPLICADOR CON CONTROL AUTOMATICO”

INVESTIGADORES PARTICIPANTES:

Director del proyecto.M. en C. Rubén Ortega González.

Tel. 57-29-60-00 Ext. 52022

M. en C. Aurora Aparicio CastilloTel. 57-29-60-00 Ext. 52022

M en C. Oscar Carranza CastilloTel. 57-29-60-00 Ext. 52022

ALUMNOS PIFI:

Mendoza Ortiz Eva [email protected]

Pescador Rojas [email protected]

Page 2: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

RESUMEN

En este reporte técnico se presenta la descripción general, análisis y estado actual de desarrollo del proyecto de investigación que lleva por titulo “Duplicador con control automatizado”. El proyecto esta conformado por tres bloques principales, tales bloques son los siguientes:Un escáner 3d encargado de obtener un conjunto de imágenes (perfiles) de un objeto tridimensional.El software para el procesamiento de las imágenes obtenidas por el escáner, este software generara un archivo que representa al objeto 3D y es compatible con las herramientas CAD/CAM. Maquina herramienta automatizada: con ayuda de una PC y un software que toma el archivo que representa al objeto 3D se controla una maquina herramienta para lograr la reproducción del objeto 3D.

Palabras clave: Ingeniería, torno, láser, Escáner, VTK.

Page 3: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que
Page 4: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

INDICE.

RESUMEN.. 2

ADVERTENCIA.. ¡Error! Marcador no definido.INDICE. 3

C A P I T U L O I 4

1.1 Introducción. 4

1.2 Objetivo.. 5

1.3 Alcances, resultados y producto esperado: 6

C A P I T U L O II 7

2.1 Antecedentes e Historia.. 7

2.2 Estado del Arte.. 8

2.3 Descripción General del Sistema.. 8

2.3.1 ADQUISISCION DE DATOS.. 10

2.3.2 PROCESO DE IMÁGENES.. 10

2.3.3 RECONSTRUCCION DE LA IMAGEN.. 10

2.3.4 CONSTRUCCION DEL OBJETO.. 10

C A P I T U L O III 11

3.1 Descripción de las técnicas a implementar 11

3.2 Técnica utilizada en el escáner 3d.. 11

3.3 Circuito de Potencia.. 12

C A P I T U L O IV .. 16

4.1 Calculo de las coordenadas del objeto.. 16

4.2 Reconstrucción del Objeto.. 20

4.3 Formato Wavefront 32

APÉNDICE A (Interfaz TWAIN) 35

APÉNDICE B (Motores a paso) 43

APÉNDICE C (EL torno) 51

BIBLIOGRAFÍA.. 55

Page 5: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que
Page 6: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

C A P I T U L O I

1.1 Introducción

El contenido de este reporte técnico se ha organizado por capítulos, el contenido tratado se expone a continuación respetando el orden numérico.

En el primer capitulo se ha colocado esta introducción con el fin de que el lector tenga una idea general del proyecto titulado “duplicador con control automático, para ese fin el capitulo uno cuenta también con un objetivo que menciona algunas de las restricciones a considerar en la elaboración del proyecto. En la parte de alcances de este mismo capitulo se describe el producto esperado y los resultados que se generaran a lo largo de dos semestres.

En el capitulo dos abordaremos superficialmente los antecedentes e historia del torno, el láser y el scanner. Se escogieron estos temas ya que son tres de las más importantes herramientas que utilizara nuestro prototipo. Enfocándonos mas a los desarrollos similares en el capitulo 2.2 tenemos el estado del arte. La descripción general del prototipo ha sido colocada al final de este capitulo.

El capitulo tres hablara de las técnicas usadas principalmente en la obtención de los datos vía escáner 3d.

Page 7: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Las técnicas utilizadas para la reconstrucción de las imágenes será tratada en el capitulo cuatro, es decir se trataran las técnicas para determinar las coordenadas del objeto y así poder reconstruirlo.

La documentación mas destacada que se obtuvo principalmente de Internet a sido colocada en los apéndices, al final de este reporte técnico se encontrara referencias bibliografiítas y un índice para facilitar la búsqueda de información.

1.2 Objetivo

Desarrollar un prototipo el cual tenga la capacidad de duplicar un objeto (los objetos serán sólidos de revolución) a partir de un patrón físico. El prototipo debe tener la capacidad de: Escanear un objeto (El tamaño del objeto deberá tener una dimensión menor o igual a 30 cm. cúbicos), sin necesidad de realizar la construcción del mismo vía software.Procesar el objeto y reconstruirlo en forma CAD/CAM. Si se desea realizar alguna modificación o simplemente correcciones de la misma pieza utilizando la interfaz de usuario vía software, reproducir la figura (si la figura se puede realizar a través del torno ya que con este instrumento es imposible generar al 100% todos las piezas).

Page 8: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

1.3 Alcances, resultados y producto esperado:

Los resultados que se esperan al realizar el proyecto son: se pretende obtener un prototipo que nos permita reproducir la imagen a escala de un objeto tridimensional con dimensiones mayores a l cm3,y menores a 30cm3 desde diferentes perspectivas tratando de emplear técnicas de exploración eficientes así como también obtener un archivo de la imagen con un formato compatible con herramientas CAD (ATUOCAD) para sea guardado y poder hacer modificaciones, y duplicarlo cuando nosotros deseemos en ese momento.

Page 9: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

C A P I T U L O II

2.1 Antecedentes e Historia

Comencemos por hablar de la maquina herramienta usada en este prototipo, el torno, sobre este podemos decir que es quizá una de las primeras máquinas herramientas que se construyeron, es también una de las más adaptables y de uso más extenso. Debido a que un gran porcentaje del material que se corta en un taller mecánico es cilíndrico o redondo, el torno básico ha conducido al perfeccionamiento de tornos de torreta, máquina para hacer tornillos, rectificadoras, tornos de control numérico etc.Los adelantos en el diseño del torno básico y los relativos han dado por resultado el desarrollo y manufactura de miles de los productos de uso cotidiano.

Otra herramienta que utilizaremos en nuestro proyecto pero de más reciente creación es el láser, su historia comienza en 1957, cuando dos físicos americanos, A. Javan y Theodore H. Maiman consiguieron la obtención de oscilaciones radioeléctricas que funcionaban gracias a la emisión estimulada de frecuencias que estaban comprendidas dentro del espectro visible. Se trataba de los primeros láseres que revestían posibilidades de aplicaciones prácticas. Posteriormente con la electrónica cuántica expuesta por Einsten y Planck se notaron grandes avances en la tecnología del láser.Arthur L. Schawolow con Townes en 1959 para conseguir un método viable encaminado a la construcción de amplificadores moleculares que trabajasen en las longitudes de onda del espectro visible, tomaron como partida las investigaciones sobre el empleo de la luz semicoherente para el trazado de hologramas.Theodore H. Maiman logró en 1960 un rayo luminoso controlado a partir de un rubí. Con lo que se apreció la existencia de aparatos estimuladores de las radiaciones, hasta el punto de tener una subclasificación con arreglo a la zona de radiofrecuencia en que se producen las emisiones.Se puede decir que un láser es un dispositivo capaz de emitir radiación coherente como consecuencia del proceso de emisión estimulada que posee, además de tener también la propiedad de ser una radiación intensa, monocromática y unidireccional.

El término escáner corresponde en español a "exploración" o "barrido", indicando que se cubre densamente una zona de superficie. Así los escáner serán los elementos óptico-mecánicos que permitirán a un haz láser efectuar un barrido de líneas colaterales hasta abarcar un área determinada.

Las características fundamentales de estos sistemas residen en que pueden moverse con gran rapidez, pues al estar formados por piezas de pequeño tamaño y poca masa presentan muy poca inercia al movimiento.

Page 10: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

El sistema escáner más utilizado es el que emplea espejos oscilantes. El haz láser se hace incidir sucesivamente en dos espejos que oscilan sobre ejes perpendiculares entre sí.Considerando los parámetros que afectan al sistema escáner, como son: ángulo de barrido, velocidad, alineación, eficiencia, duración, etc., el dispositivo de elección suele ser el de multiespejos deflectores rotatorios. Sin embargo, presenta como principal problema el conseguir que todas las caras de los espejos presenten idénticas propiedades de reflexión.

Además el elevado número de espejos es susceptible de originar errores de posición debido a fallas en su alineación.

Existen en la actualidad sistemas de exploración por LASER 3D para la visualización y modelado rápido y exacto de estructuras grandes. Sin embargo estos sistemas sólo son utilizados por grandes empresas industriales ya que poseen un costo relativamente alto.Dentro de los trabajos terminales realizados en la E.S.COM. Se encuentra el "Sistema Digitalizador de Objetos", el cual emplea una técnica de barrido sencilla que se caracteriza por el movimiento del objeto y del haz láser.

2.2 Estado del Arte

Existen en el mercado varias empresas las cuales se dedican a realizar maquinas semiautomáticas llamados tornos en control numérico, los cuales son programados y en base a dispositivos electromecánicos realizan la pieza que programaron con anterioridad. El tipo de torno mas antiguo es el manual el cual no es automatizado pero es mucho mas barato.

Por otro lado existen sistemas de captura de imágenes en dos dimensiones los cuales son los scanner que son dispositivos que nos ayudan a capturar las imágenes pero planas, lo que haremos es implementar un tipo de scanner en tres dimensiones, que además de captura la imagen y la procesa en la PC, guardándola con un formato útil para emplear, es software de diseño CAD/CAM realizando como trabajo terminal en la 5ta generación y se adaptara para que después de scannear una pieza se modifique a las necesidades del usuario y sea posible la fabricación a través de un pequeño torno.

Como podemos ver el sistema es demasiado complejo, y no existe un sistema en el mercado capaz de permitir la elaboración de piezas pequeñas, de forma geométrica simples o complicadas para algún dispositivo mecánico, perteneciente a una industria de elaboración, etc. Es por ello que un sistema como este aun no esta a la venta para los consumidores.

Page 11: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

2.3 Descripción General del Sistema

El prototipo planteado es un duplicador con control automatizado, tendrá como entrada un objeto físico tridimensional y será capaz de generar su representación en una computadora (para esto se auxiliara de archivos CAD/CAM), para finalmente lograr una replica física lo mas fiel posible.

Diagrama de Nivel 0 en la figura 2.3.1

Fig. 2.3.1

A continuación mostramos el diagrama del a figura 2.3.2 nivel 1 el cual consta del siguiente:

Page 12: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Fig. 2.3.2

2.3.1 ADQUISISCION DE DATOS

En la adquisición de datos como podemos observar es el proceso en el cual controlamos la mesa giratoria y tomamos los perfiles del objeto que se introduce en el escáner en tres dimensiones estos perfiles se guardan en archivos de mapa de bits para que después puedan ser tratados.

2.3.2 PROCESO DE IMÁGENES

Es aquí la fase importante donde se realizan varios procesos como: cambiar la imagen de colores a monocromático y después pasarla a blanco y negro para poder detectar los bordes de las siluetas del objeto introducido, después de las imágenes con los bordes detectables obtenemos los puntos coordenados (X, Y, Z) y procesar las coordenadas para transformarlas en archivos CAD/CAM

Page 13: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

2.3.3 RECONSTRUCCION DE LA IMAGEN

En este proceso tomamos el archivo compatible con CAD/CAM y lo mostramos como un sólido con ayuda de las librerías VTK y la otra forma es una representación llamado alambrado la cual maneja AUTOCAD. AutoCad es una gran herramienta la cual podemos determinar las medidas del objeto, modificar su escala, entre otras características.

2.3.4 CONSTRUCCION DEL OBJETO

En esta etapa del prototipo vamos a determinar los desgastes de la pieza que tienen que realizarse esto para obtener la pieza inicial. Como podemos observar en la siguiente figura 2.3.3, la parte obscura es la parte que se va a desgastar con el torno, que por lo pronto serán sólidos de revolución.

Fig. 2.3.3

Page 14: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Fig. 2.3.4

En la interfaz del usuario vamos a determinar las dimensiones del material con el cual se va a trabajar como se muestra en la figura 2.3.4, así como el tipo de material para que el sistema determine los movimientos de motores para el desgaste del mismo.

C A P I T U L O III

3.1 Descripción de las técnicas a implementar

Antes de realizar la descripción es importante señalar la técnica que se utilizan para la construcción del objeto en tercera dimensión. A continuación se explica lo mencionado.

3.2 Técnica utilizada en el escáner 3d

La técnica se trata de lo siguiente:

Para poder hacer el barrido en las tres dimensiones se utiliza un polígono rotacional, el cuál nos auxilia a barrer en el eje Y, mientras que para el eje X nos auxiliamos de una mesa giratoria que hace la rotación en el sentido

Page 15: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

de las manecillas del reloj, de la misma forma en que vamos girando el objeto obtenemos a su vez los valores en el eje Z; de esta manera obtenemos todos los puntos que conforman al objeto en sus tres dimensiones.

En la técnica utilizada por el scanner 3d se obtiene el contorno de la figura y es detectado a través de una cámara para guardar esa información como una imagen de mapa de bits.

Véase la figura 3.2.1 siguiente:

Fig. 3.2.1

Para poder hacer uso de esta técnica tenemos que hacer como lo hemos dicho anteriormente el barrido del cuerpo en los tres ejes (X, Y, Z); cabe mencionar que el cuerpo estará dentro de una caja para que al cerrarla quede totalmente a oscuras el objeto y al momento en que el objeto sea barrido con el láser, este nos dibuje su silueta la cuál la captaremos con una cámara, obteniéndose así la imagen del mapa de bits.

Nuestro objetivo con esto obtener una serie de imágenes de mapa de bits, para visualizar al objeto desde diferentes perspectivas y en base en dichas imágenes procesarlas para poder calcular los puntos que conforman dicho objeto en que posición y posteriormente realizar la reproducción del cuerpo total.

Page 16: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

3.3 Circuito de Potencia

El circuito que se muestra a continuación es el encargado de controlar el giro de la plataforma del escáner, como se puede apreciar es un circuito de potencia basado en transistores del tipo NPN funcionando como interruptores para lograr el control de un motor a pasos (véase el apéndice B)

Fig. 3.3.1Nota: Cabe mencionar que al circuito anterior se le ha de agregar un diodo en paralelo con la carga inductiva para permitir que esta se desconecte sin picos abruptos cuando el transistor se apaga. Esto protege al transistor de una excesiva disipación de potencia durante la conmutación y de daños debidos a los picos de voltaje que pueden ocurrir cuando se apaga un inductor.

El circuito anterior es el que controla la mesa giratoria y su código de funcionamiento es el siguiente:

Page 17: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

void siguiente(int *num){switch(*num){case 0x04: *num=0x05; break;case 0x05: *num=0x07; break;case 0x07: *num=0x03; break;case 0x03: *num=0x0B; break;case 0x0B: *num=0x0A; break;case 0x0A: *num=0x08; break;case 0x08: *num=0x0C; break;case 0x0C: *num=0x04; break;default: *num=0x00;};_outp(0x378, *num);

Page 18: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

}Funciones del proceso en conjunto:

void CDigitalizar::OnInicio() { // TODO: Add your control notification handler code here int salida; MSG Mensaje; BOOL Transferencia=TRUE;

GetDlgItem(IDC_Inicio)->EnableWindow(FALSE); CProgressCtrl* Barra=(CProgressCtrl*)GetDlgItem(IDC_PROGRESO); Barra->SetRange(0,100);

if(Abrir_DSM()==TRUE && Abrir_DS()==TRUE && Habilitar_DS(TRUE)==TRUE){ salida=0x04;

for(conteo=0;conteo<800 && Transferencia==TRUE;) { if(Permiso==TRUE) { Permiso=FALSE; siguiente(&salida);

conteo+=1; if(conteo%nPasosFoto==0) { Transferencia=Foto(conteo/nPasosFoto); Permiso=TRUE; Progreso++; Barra->SetPos(Progreso*100/nFotos); } else

Page 19: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Timer=SetTimer(1,50,NULL);

}

if(::PeekMessage(&Mensaje,NULL,0,0,PM_REMOVE) && Transferencia==TRUE) { ::TranslateMessage(&Mensaje); ::DispatchMessage(&Mensaje); } }

Deshabilitar_DS(); Cerrar_DS(); Cerrar_DSM(NULL);

if(Cancelado==FALSE) //SI NO FUE CANCELADO { ptr_main->m_OK.EnableWindow(TRUE); ptr_main->m_Rec.EnableWindow(TRUE); }}elseTransferencia=FALSE;

if(Transferencia==FALSE){CErr Error;Error.DoModal();}

CDialog::OnOK();}

Page 20: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que
Page 21: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

C A P I T U L O IV

Aquí vamos a demostrar una pequeña introducción de las técnicas las cuales vamos a utilizar para la reconstrucción de los objetos en tercera dimensión, así como los formatos de librerías CAD/CAM.

4.1 Calculo de las coordenadas del objeto

Después de capturar las 40 imágenes (este numero de imágenes depende del numero de giros que de la mesa ), cada mapa de bits contendrá un perfil del objeto a digitalizar por ejemplo si la figura fuera una pieza de ajedrez como se muestra en la Fig. 4.1.1, los perfiles de este tipo de figura son iguales por todos los lados, ahora supongamos que la Fig. 4.1.2 es un solo perfil de la pieza de ajedrez, así vería la imagen después de haber sido binarizada; binarizada se entiende por dejar la imagen en un solo BIT, es decir el negro es representado por el cero (0) y el blanco por el uno (1).

Fig. 4.1.1 Fig. 4.1.2 Fig. 4.1.3

La forma de calcular los puntos reales del objeto es el siguiente:

Page 22: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Retomando el ejemplo anterior; como se había mencionado por cada giro de la mesa se tiene un perfil y por cada perfil se obtendrán varios puntos en el plano, si las 40 imágenes que se usarán para reconstruir el objeto, fueran iguales a las de la figura 12, entonces como la imagen es de 138 píxeles de ancho y 353 por alto, los puntos totales que se tendrían por perfil serían aproximadamente 35 puntos obtenidos en el plano (x, y, z) ya que se van calculando de 10 en 10 píxeles para poder construir mejor la malla poligonal, si se calculará de píxel por píxel se obtendrían más puntos y los contornos de los objetos estarían más remarcados.

Para calcular el punto (x, y, z) se usa los conocimientos básicos de trigonometría:Observe la siguiente figura:

Distancia: Representa la distancia que existe entre el centro del objeto hasta su perfil que lo obtendremos mas adelante.

El ángulo entre el LASER y la CAMARA aproximadamente es de 45°, con este Angulo y el de 90° podemos calcular a DISTANCIA, que es la distancia a partir del origen hasta el punto a calcular; de la siguiente forma:

alfa = 90°-thetaCos(alfa) = j / DISTANCIA

Page 23: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

DISTANCIA = j / cos(alfa)

La siguiente función calcula DISTANCIA:

float *CalcMalla(float *malla,int itheta, IMAGEN img, int puntos){

int izeta, puntTF, N, M,j,i; float ro;

N=img.bmih.biWidth; M=img.bmih.biHeight;

puntTF=M/puntos;

if(itheta==0) malla=(float*)malloc( sizeof(float) * (nFotos) * puntTF );

for (izeta=0; izeta<puntTF;izeta++) {

malla[(itheta*puntTF)+izeta]=0;//%si no encuentra punto i=round(izeta*M/puntTF);;//indice de imagen (alto) for (j=0;j<N; j++)//%columnas ancho { if( (img.bit)[i*N+j]>0) {

ro=(j/*-(N/2)*/)/(cos(2*3.141592/6));//%Angulo complemento entre lasser y camara malla[itheta*puntTF+izeta]=ro;

}//end if

Page 24: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

}// end for j }// end for izeta

return(malla);}

Para calcular la coordenada X, Y y Z se hace lo que sigue:

De la figura anterior vemos que la coordenada X = ro cos (alfa), ya que cos(alfa )= X/ roDe: Cos (90°-alfa)=Z/DISTANCIAPor lo tanto la coordenada Z= ro Cos (90°-alfa)De lo anterior se tiene que:Z=DISTANCIA sen(alfa)X=DISTANCIA cos (alfa)Y= al eje y del mapa de bits

Para obtener DISTANCIA se recorre la imagen y hasta que se encuentre el último 1 en el primer renglón de píxeles de la imagen se obtiene DISTANCIA. Por cada perfil se tiene 35 DISTANCIAS estos se usan para calcular las abscisas (x, y, z) finalmente estas se convierte ha coordenadas cartesianas y todos los vértices que se obtuvieron se utilizan para ir formando polígonos cuadrados y así formar la malla poligonal del objeto tridimensional.

La siguiente función calcula los vértices del objeto:

Page 25: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

void PolCart(float*x1,float *y1,float*z1,float *malla,int itheta, int izeta,int AMalla,int puntos){ float ro, theta;

CalRoTheta(malla,itheta,izeta,AMalla,&ro,&theta); *x1=((cos(theta))*ro); *y1=(float)((AMalla-izeta)*puntos); *z1=(sin(theta))*ro;

}

Una vez obtenidos los vértices se forma una matriz que contendrá que los 4 cuatro vértices correspondientes por polígono cuadrangular, es importante saber que vértices le corresponde a cada polígono ya que de está información se generara un archivo con formato VTK que será utilizado para reconstruir al objeto tridimensional. En el capitulo posterior se explicará como se lleva acabo este proceso.

4.2 Reconstrucción del Objeto

VTK es una biblioteca open source para visualización. Corre en Windows, Linux, Solaris, Irix y HP entre otras plataformas. En su mayoría, los paquetes comerciales requieren licencia, pago, y no se distribuyen con el código abierto. VTK en cambio es gratuita, de código abierto, y no requiere licencia (excepto algunos métodos patentados), tiene soporte on-line, documentación, newslist, etc.

Cuidado que VTK es una librería y no un paquete (uno debe desarrollar sus propias aplicaciones). Usando sus clases desde C++. Por medio de scripting desde Java, Tcl, Python. Esta forma de trabajar tiene la ventaja de poder realizar prototipos rápidos. Desde Java se pueden realizar aplicaciones potables y que funcionan en red.

Para utilizar VTK desde aplicaciones escritas en C++ se requieren los headers y las bibliotecas de VTK. Las clases están agrupadas en Common, Graphics, Imaging, Patented y Contrib.

Primer ejemplo.

Page 26: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

#include <vtkRenderer.h>

#include <vtkRenderWindow.h>

#include <vtkConeSource.h>

#include <vtkPolyDataMapper.h>

#include <vtkRenderWindowInteractor.h>

int main ()

{

vtkActor*coneActor = vtkActor::New();

vtkRenderer*renderer = vtkRenderer::New();

vtkConeSource*coneGeometry = vtkConeSource::New();

vtkRenderWindow*renderWindow = vtkRenderWindow::New();

vtkPolyDataMapper*coneMapper = vtkPolyDataMapper::New();

vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();

renderer->SetViewport( 0.0, 0.0, 1.0, 1.0 );

renderer->SetBackground( 0.8, 0.4, 0.2 );

renderWindow->SetSize( 500,500 );

coneGeometry->SetResolution( 80 );

coneMapper->SetInput( coneGeometry->GetOutput() );

coneActor->SetMapper( coneMapper );

renderer->AddActor( coneActor );

renderWindow->AddRenderer( renderer );

interactor->SetRenderWindow( renderWindow );

renderWindow->Render();

interactor->SetDesiredUpdateRate( 0.1 );

Page 27: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

interactor->Start();

// No olvidar limpiar!

Page 28: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

coneGeometry->Delete();

renderer->Delete();

coneActor->Delete();

coneMapper->Delete();

renderWindow->Delete();

interactor->Delete();

return 0;

}

Page 29: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

La dependencia funcional de cada objeto es la siguiente:

Un objeto de la clase vtkRenderWindow es el destinatario de las actividades desarrolladas por VTK. Su responsabilidad es mostrar las imágenes y refrescar los eventos, ocultando al usuario las idiosincracias de la plataforma. Una de estas ventanas puede recibir imágenes de varias fuentes almismo tiempo (usualmente un vtkRenderer ).

El vtkRenderer es el encargado de renderizar una escena. Este objeto recorre las distintas fuentes de datos, computa los filtros y mapeos, obtiene las transformaciones de los actores, computa el modelo de iluminación, realiza el scan-line, etc.

El vtkActor es el responsable de manipular las transformaciones que mapean las fuentes de datos al renderizador.

El vtkMapper recibe los datos geométricos y de superficie de una fuente de datos y computa los colores en sus puntos. Existe una cantidad de mapeadores (mapeo de texturas, mapeo de valores funcionales, para 2D, para 3D, etc.)

El vtkRenderWindowInteractor responde a los movimientos del mouse, y a algunas teclas ("w" para wireframe, "s" para superficie, "e" para abandonar la aplicación, "r" para resetear la posición de la cámara). Se encarga de enviar los mensajes correspondientes a los demás objetos.

Page 30: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Otro ejemplo con dos viewports y dos actores.

#include <vtkRenderer.h>

#include <vtkRenderWindow.h>

#include <vtkConeSource.h>

#include <vtkSphereSource.h>

#include <vtkPolyDataMapper.h>

#include <vtkRenderWindowInteractor.h>

int main ()

{

int i;

vtkActor *coneActor = vtkActor::New();

vtkActor *sphereActor = vtkActor::New();

vtkRenderer *renderer1 = vtkRenderer::New();

vtkRenderer *renderer2 = vtkRenderer::New();

vtkConeSource *coneGeometry = vtkConeSource::New();

vtkSphereSource *sphereGeometry = vtkSphereSource::New();

vtkRenderWindow *renderWindow = vtkRenderWindow::New();

vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();

vtkPolyDataMapper *sphereMapper = vtkPolyDataMapper::New();

vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();

renderWindow->SetSize(800,400);

renderer1->SetViewport(0.0, 0.0, 0.5, 1.0);

renderer1->SetBackground(0.5, 0.2, 0.0);

renderer2->SetViewport(0.5, 0.0, 1.0, 1.0);

Page 31: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

renderer2->SetBackground(0.3, 0.3, 0.6);

coneGeometry->SetResolution(35);

coneMapper->SetInput( coneGeometry->GetOutput() );

coneActor->SetMapper( coneMapper );

sphereGeometry->SetThetaResolution(10);

sphereGeometry->SetPhiResolution(10);

sphereMapper->SetInput( sphereGeometry-> GetOutput() );

sphereActor->SetMapper( sphereMapper );

renderer1->AddActor( coneActor );

renderer2->AddActor( coneActor );

renderer1->AddActor( sphereActor );

renderer2->AddActor( sphereActor );

sphereActor->GetProperty()->SetColor(0.9, 0.8, 0.5);

interactor->SetRenderWindow( renderWindow );

renderWindow->AddRenderer( renderer1 );

renderWindow->AddRenderer( renderer2 );

renderer1->GetActiveCamera()->Roll(90);

for(i=0; i<30; i++) {

renderer2->GetActiveCamera()->Azimuth(3);

coneActor->GetProperty()->SetColor(0.01*i,0.02*i,1-0.03*i);

sphereActor->SetPosition(i*0.02,i*0.02,-i*0.03);

renderWindow->Render();

}

interactor->SetDesiredUpdateRate( 20 );

Page 32: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

interactor->Start();

coneGeometry->Delete();

renderer1->Delete();

renderer2->Delete();

coneActor->Delete();

coneMapper->Delete();

renderWindow->Delete();

interactor->Delete();

return 0;

}

Ejemplo de rendering de volúmenes. #include "vtkRenderer.h"

#include "vtkRenderWindow.h"

Page 33: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

#include "vtkRenderWindowInteractor.h"

#include "vtkStructuredPointsReader.h"

#include "vtkPiecewiseFunction.h"

#include "vtkVolumeProperty.h"

#include "vtkVolumeRayCastCompositeFunction.h"

#include "vtkVolumeRayCastMapper.h"

#include "vtkVolume.h"

int main( int argc, char *argv[] )

{

vtkRenderer *renderer = vtkRenderer::New();

vtkRenderWindow *renWindow = vtkRenderWindow::New();

vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();

vtkStructuredPointsReader *reader = vtkStructuredPointsReader::New();

vtkPiecewiseFunction *opacity = vtkPiecewiseFunction::New();

vtkColorTransferFunction *color = vtkColorTransferFunction::New();

vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();

vtkVolumeRayCastCompositeFunction *compositeFunction =

vtkVolumeRayCastCompositeFunction::New();

vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper::New();

vtkVolume *volume = vtkVolume::New();

renWindow->SetSize(400,400);

// leer la data de un archivo (provisto por la distribución)

reader->SetFileName("ironProt.vtk");

reader->Update();

Page 34: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

opacity->AddSegment(0, 0.0, 255, 0.5);

color->AddRGBPoint(64, 1.0, 0.0, 0.0);

color->AddRGBPoint(128, 1.0, 1.0, 0.0);

color->AddRGBPoint(196, 0.0, 1.0, 1.0);

volumeProperty->SetColor(color);

volumeProperty->SetScalarOpacity(opacity);

volumeProperty->SetInterpolationTypeToLinear();

volumeProperty->ShadeOn();

volumeMapper->SetInput(reader->GetOutput());

volumeMapper->SetVolumeRayCastFunction(compositeFunction);

volume->SetMapper(volumeMapper);

volume->SetProperty(volumeProperty);

renderer->SetBackground(0.2, 0.2, 0.8);

renderer->AddVolume(volume);

renderer->GetActiveCamera()->Azimuth(20.0);

renderer->GetActiveCamera()->Dolly(1.60);

renderer->ResetCameraClippingRange();

interactor->SetRenderWindow(renWindow);

renWindow->AddRenderer(renderer);

renWindow->Render();

interactor->Start();

renderer->Delete();

renWindow->Delete();

interactor->Delete();

Page 35: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

reader->Delete();

opacity->Delete();

color->Delete();

volumeProperty->Delete();

compositeFunction->Delete();

volumeMapper->Delete();

volume->Delete();

return 0;

}

La dependencia funcional de cada objeto es la siguiente:

Page 36: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

En este ejemplo, se lee un archivo con datos 3D, el cual se utiliza para inicializar un objeto de la clase vtkStructuredPoints, el cual modela una grilla regular de valores escalares.

La asignación se realiza por medio de un objeto vtkStructuredPointsReader, el cual recibe el nombre del archivo y fuerza la lectura con el método update. Los datos 3D son renderizados por medio de transparencias, por lo que es necesario definir una función de transferencia que relacione el color y absorción de cada celda en función del valor almacenado.

Un modelo para estas funciones es utilizar paletas definidas por medio de funciones lineales a trozos. La clase vtkPiecewiseFunction soporta este comportamiento, al poder ser definida por medio de segmentos.

La clase vtkColorTransferFunction soporta este mismo comportamiento para paletas. En el ejemplo se utiliza un objeto de cada clase, para el color y la opacidad. Luego de ser definidos, son asignados como propiedades del volumen por medio de un objeto intermedio de la clase vtkVolumeProperty. Estas propiedades serán interpoladas trilinealmente durante el rendering.

La geometría del volumen de datos y el método de evaluación de la misma se ponen en conjunción con un objeto de la clase vtkVolumeMapper.La salida de este objeto, junto con las propiedades del volumen, son asignadas a un objeto vtkVolume, el cual es finalmente asignado al renderizador.

Page 37: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Para reconstruir el objeto tridimensional se utiliza algunas de la librerías graficas que se encuentran en la herramienta VTK (Visualization Toolkit) como ya mencionamos anteriormenete, en donde solo requiere un archivo con formato VTK que se reconoce por la siguiente estructura:

# vtk DataFile Version 2.0vtk outputASCIIDATASET POLYDATAPOINTS 8 float

0 0 050 0 050 50 00 50 0 0 0 5050 0 5050 50 500 50 50

POLYGONS 6 304 0 1 2 3 4 4 5 6 74 0 1 5 44 2 3 7 64 0 4 7 34 1 5 6 2

El formato anterior es un ejemplo de un archivo con formato VTK que sirve para reconstrucción de un cubo, el primer bloque de numero nos indica los vértices del objeto y el segundo bloque nos indica el numero de polígonos que contiene la figura y los vértices que esta compuesto cada polígono, he aquí la importancia de obtener la información del modulo anterior (Tratamiento de imagen).

Page 38: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

El siguiente bloque de función muestra como se genera el archivo VTK y el Wavefrontf:

void MVFormatVtk(float *MV, IMAGEN img,int puntos){ FILE *fvtk; FILE *fobj;

int *PM,altoMV, i,j, NUMPOLIG,M; char vtk[50]="C:\\WINDOWS\\TEMP\\FormatVTK.vtk"; char obj[50]="C:\\WINDOWS\\TEMP\\FormatOBJ.obj";

M=img.bmih.biHeight; altoMV=(M/puntos)*(nFotos);

NUMPOLIG=((M/puntos)-1)*(nFotos);

if( (fvtk=fopen(vtk,"w+"))==NULL) { //printf("Error al Abrir el Archivo"); exit(1); }else if( (fobj=fopen(obj,"w+"))==NULL) { //printf("Error al Abrir el Archivo"); exit(1); }

//agregaEncabezado(fvtk);

Page 39: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

fprintf(fvtk,"# vtk DataFile Version 2.0"); fprintf(fvtk,"\nvtk output\nASCII\nDATASET POLYDATA\n"); fprintf(fvtk,"POINTS %d float\n",altoMV );

//IMPRIME VERTICES

for (i=0; i<altoMV;i++) { fprintf(fvtk,"\n"); fprintf(fobj,"v "); for(j=0; j<3; j++){ fprintf(fvtk,"%f ",MV[i*3+j]); fprintf(fobj,"%f ",MV[i*3+j]); } fprintf(fobj,"\n"); }

fprintf(fvtk,"\n"); fprintf(fvtk, "\nPOLYGONS %d %d", NUMPOLIG, (NUMPOLIG*5));

// POLYGONS 6 30//IMPRIME POLIGONOS PM=(int*)malloc(sizeof(int)*NUMPOLIG*4);

PM=OrdenaMV(PM,nFotos-1,(M/puntos)-1);

for (i=0; i<NUMPOLIG;i++) { fprintf(fvtk,"\n4 "); fprintf(fvtk," %d",PM[i*4+0]); fprintf(fvtk," %d",PM[i*4+1]); fprintf(fvtk," %d",PM[i*4+3]); fprintf(fvtk," %d",PM[i*4+2]);

Page 40: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

fprintf(fobj,"f"); fprintf(fobj," %d",(PM[i*4+0])+1); fprintf(fobj," %d",(PM[i*4+1])+1); fprintf(fobj," %d",(PM[i*4+3])+1); fprintf(fobj," %d",(PM[i*4+2])+1); fprintf(fobj, "\n");

}

fclose(fvtk); fclose(fobj);

}

4.3 Formato Wavefront

Para garantizar compatibilidad con los formatos comunes de representación tridimensional, consultamos los dos más utilizados: Wavefront y VRML. Y aunque VRML es más completo y difundido, ya que permite construir elementos simples (puntos, segmentos y caras triangulares) y compuestos (círculos, discos, volúmenes rectangulares, cilindros y esferas), preferimos utilizar Wavefront ya que ocupa menos espacio de almacenamiento y representa los componentes simples, suficientes para nuestro propósito.

Wavefront: Es un formato de Silicon Graphics para almacenar gráficas tridimensionales. Nos permite almacenar puntos, segmentos y caras poligonales. Las reglas son muy simples:

Dos proposiciones se separan con un carácter retorno de carro ‘\n’.

El carácter tabulador ‘\t’ es equivalente a un espacio simple.

Los espacios (y tabuladores) son considerados sólo como separadores entre parámetros dentro de una proposición.

· El formato es sensitivo a las mayúsculas (aunque se ha hecho la excepción en las versiones para DOS).

Page 41: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

1. Una proposición que inicia con el carácter ‘#’ corresponde a un comentario (hasta el final de ésta).

2. Inicia con una ‘v’ la declaración de un vértice, y tiene como parámetros los tres números subsecuentes, correspondientes a las coordenadas x, y y z. Si faltara alguno de los parámetros, se le asigna por omisión el valor cero. Si sobra algún parámetro, se debe ignorar.

3. Los vértices deben ser guardados en una lista en el mismo orden en que fueron leídos. A cada uno se le debe asignar un entero positivo como identificador, que debe corresponder a la posición que ocupa dentro de la lista.

4. Inicia con una ‘l’ la declaración de un segmento de recta y usa dos enteros positivos como parámetros; estos enteros corresponden a los identificadores de los vértices que definen el segmento.

5. Una cara poligonal inicia su declaración con ‘f’ y tiene como parámetro la lista de enteros positivos correspondientes a los vértices que la definen (desde la ‘f’ hasta el final de la línea). Generalmente, sólo debe representarse el contorno de la cara, y no la superficie, para evitar posibles torceduras cuando la lista contiene más de tres vértices.

6. Inicia con ‘fo’ la declaración de la superficie de una cara triangular, teniendo como parámetros los identificadores de los tres vértices que la forman.

7. Si una línea inicia con ‘g’, tiene a continuación (y hasta el fin de línea) el nombre del subconjunto al que pertenece: sirve para etiquetar grupos de declaraciones. Pertenecen al grupo todas aquéllas declaraciones que se encuentran después de la definición de la etiqueta y antes de la definición de una diferente (o del fin de archivo). Una misma etiqueta puede aparecer varias veces en el archivo en grupos separados, definiendo un subconjunto con etiqueta única. Un ejemplo de un archivo con formato OBJ sería el siguiente:

# ARCHIVO PARA UN CUBOv 1 1 1v 1 1 -1

Page 42: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

v 1 -1 1v 1 -1 -1v -1 1 1v -1 1 -1v -1 -1 1v -1 -1 -1f 1 3 4 2f 5 7 8 6f 1 5 6 2f 3 7 8 4f 1 5 7 3f 2 6 8 4

Como se puede ver es muy similar al archivo con formato VTK, este de igual manera contiene el numero de vértices y los polígonos que contiene el objeto tridimensional.

Page 43: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

APÉNDICE A (Interfaz TWAIN)

Con la introducción de scanner, cámaras digitales, entre otros dispositivos de adquisición de imágenes, los usuarios han descubierto el valor de incorporar imágenes a sus documentos, y es esta una de las razones por la cual surge esta interfaz la cual explicaremos a continuación.

INTRODUCCIÓN

Se trata de una norma software que se definió para que cualquier dispositivo de captura de imágenes pudiera ser usado por cualquier programa de una forma estandarizada e incluso con la misma interfaz para la adquisición de la imagen.Si bien hace unos años aún existía un número relativamente alto de aparatos que usaban otros métodos propios, hoy en día se puede decir que todos los escáner normales utilizan este protocolo, con lo que los fabricantes sólo deben preocuparse de proporcionar el controlador TWAIN apropiado, generalmente en versiones para Windows. Desgraciadamente, sólo los escáner de marca relativamente caros traen controladores para otros sistemas operativos como OS/2 o Linux, e incluso en ocasiones ni siquiera para NT; la buena noticia es que la estandarización de TWAIN hace que a veces podamos usar el controlador de otro escáner de similares características, aunque evidentemente no es un método deseable.Dejando aparte las librerías DLL y otros temas técnicos, la parte que el usuario ve del estándar TWAIN es la interfaz de adquisición de imágenes. Se trata de un programa en el que de una forma visual podemos controlar todos los parámetros del escaneado (resolución, número de colores, brillo...), además de poder definir el tamaño de la zona que queremos procesar.

HISTORIA DE TWAIN

TWAIN fue creado por un pequeño grupo de compañías de soft y hard para crear una especificación abierta y multi-paltaforma para la industria de la imagen. El grupo de trabajo original estaba compuesto por representantes de cinco compañías : Aldus, Caere, Eastman Kodak, Hewlett-Packard y Logitech. Otras tres compañías: Adobe, Howtek y Software Architects también contribuyeron significativamente. Desde Enero de 1991 hasta Enero de 1992 se estuvo creando y puliendo la primera especificación TWAIN.Actualmente hay 300 representantes de 200 compañías que influyen y guían la dirección futura de TWAIN y los 11 miembros del grupo de trabajo que escriben la especificación son Adobe, Canon, Kodak, Fujitsu , Genoa Technology, Hewlett-Packard, Intel,J.F.L. Peripherals, Kofax Image Products, Ricoh Corporation, y Xerox.En Mayo de 1998 hubo un acuerdo con Microsoft para que el gestor de origen de datos TWAIN estuviese incluido en Windows 98 y Windows NT 5.0.La especificación TWAIN que se va a explicar de ahora en adelante es la versión 1.9, la última y que salió en Febrero de 2000.

Page 44: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

ELEMENTOS TWAIN

Los tres elementos software clave en TWAIN son:1) El software de aplicación (application software) – Pide servicios a los dispositivos que manejen TWAIN.2) El software de manejo del origen (Source Manager software)- Éste software gestiona la interacción entre el 1) y el origen de datos (dispositivo). Éste código es el mismo para todos los dispositivos independientemente del fabricante.3) El software del origen de datos- Controla el dispositivo de adquisición de imágenes y es suministrado por el creador del aparato de tal forma que cumpla con las especificaciones TWAIN. De esa manera se independiza a la aplicación que use dispositivos de obtención de imágenes de los detalles de los dispositivos.ARQUITECTURA SOFTWARE DE TWAINTiene una estructura en capas:

Page 45: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

En cuanto a lo que verá en la pantalla de su ordenador el usuario de la aplicación que usa TWAIN, será:El usuario seleccionará el dispositivo a usar; la norma recomienda que sean dos opciones de menú dentro de la entrada de menú Fichero:• Seleccionar origen – para seleccionar el periférico de origen de datos• Adquirir – para empezar el proceso de capturaCuando el usuario selecciona la primera opción, la aplicación le pide al Gestor de Origen de Datos que dibuje su diálogo de Seleccionar Origen. Éste lista todos los dispositivos disponibles y le permite al usuario seleccionar un dispositivo. Si lo prefiere, la aplicación puede usar otro diálogo en lugar del predefinido por el Gestor. El periférico proporciona una interfaz de usuario específico para él. Cuando el usuario selecciona la opción de Adquirir, el interfaz de usuario del origen puede ser puesto en pantalla. La aplicación también puede escribir su propia versión de la interfaz.COMUNICACIÓN APLICACIÓN-GESTOR ORIGEN DE LOS DATOS Y GESTOR-ORIGEN DE DATOSLa aplicación se comunica con el Gestor llamando a una única función: DSM_Entry y el Gestor con el origen llamando a DS_Entry. Devuelve un valor que indica el fracaso o el éxito de la operación.En Windows, la función tiene el siguiente perfil (está en twain.h) :TW_UINT16 FAR PASCAL DSM_Entry( pTW_IDENTITY pOrigin, // identificador de la aplicación origen del mensajepTW_IDENTITY pDest, // destino del mensaje: Gestor del Origen ó Origen// triplete que describe la acción solicitadaTW_UINT32 DG, // identificador del grupo de datos para la operación: DG_xxxx TW_UINT16 DAT, // tipo de datos para la operación: DAT_xxxx

Page 46: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

TW_UINT16 MSG, // identificador del mensaje para la operación: MSG_xxxxTW_MEMREF pData // puntero a los datos);En Macintosh:FAR PASCAL TW_UINT16 DSM_Entry( pTW_IDENTITY pOrigin, // source of messagepTW_IDENTITY pDest, // destination of messageTW_UINT32 DG, // data group ID: DG_xxxxTW_UINT16 DAT, // data argument type: DAT_xxxxTW_UINT16 MSG, // message ID: MSG_xxxxTW_MEMREF pData // pointer to data);Una vez que el Gestor recibe la llamada mira si es para él o para el Origen; si es para el origen llama a la función DS_Entry del Origen. En Windows la función es:TW_UINT16 FAR PASCAL DS_Entry(pTW_IDENTITY pOrigin, // source of messageTW_UINT32 DG, // data group ID: DG_xxxxTW_UINT16 DAT, // data argument type: DAT_xxxxTW_UINT16 MSG, // message ID: MSG_xxxxTW_MEMREF pData // pointer to data);No sólo llama el Gestor al Origen cuando la aplicación le tiene algo que decir al Gestor o al Origen, sino que además el Gestor puede iniciar tres operaciones que no son solicitadas por la aplicación. Éstos tripletes de operación existen solo para comunicarse el Gestor con el Origen y son ejecutados por el Gestor cuando tiene activo su diálogo de selección de Origen. Las operaciones son utilizadas para identificar los Orígenes disponibles y abrir o cerrar los Orígenes.La implementación del Gestor de Origen difiere según el sistema operativo: en windows es con una DLL (TWAIN.DLL y TWAIN32.DLL) y en Macintosh una librería compartida de powerPC (así que una misma instancia de Gestor puede manejar muchas aplicaciones con muchos orígenes).COMUNICACIÓN ORIGEN-APLICACIÓNEl Origen recibe peticiones de operaciones desde la aplicación, via el Gestor o directamente desde el Gestor. Procesa la petición y devuelve el código de retorno que sea (TWRC_xxxx) indicando el resultado de la operación al Gestor. Si el originador de la operación fue la aplicación, entonces el código de retorno es pasado a la aplicación como el valor de retorno de la función DSM_Entry. Si la operación no tuvo éxito, el Origen da el código de error, pero la aplicación ha de invocar una cierta operación para que se le pase el código de error. La implementación en los sistemas operativos del Origen es del mismo tipo que la del Gestor.Sin embargo, hay cuatro ocasiones en las que el Origen necesita interrumpir la aplicación para notificar que ha ocurrido cierto evento. Estas situaciones son:

Page 47: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

• Notificar a la aplicación que una transferencia de datos está preparada. El tiempo requerido para que el Origen prepare los datos para transferir varía así que en lugar de hacer esperar a la aplicación a que la preparación esté completa, el Origen lo que hace es solo notificar cuando todo esté preparado. La notificación MSG_XFERREADY es usada con dicho propósito.• Notificar que la interfaz de usuario del Origen ha sido cerrada (MSG_CLOSEDSREQ).• Notificar a la aplicación que el botón de Aceptar ha sido presionado, aceptando los cambios que el usuario ha hecho. Esto es solo usado si el Origen está abierto con DG_CONTROL / DAT_USERINTERFACE / MSG_ENABLEDSUIONLY. La notificación MSG_CLOSEDSOK se usa para ello.• Un Evento de Dispositivo ha ocurrido. Esta notificación es enviada por el Origen a la Aplicación cuando un evento específico ha ocurrido, pero solo si la aplicación le dio previamente al Origen instrucción de pasar dichos eventos. El aviso MSG_DEVICEEVENT es el utilizado para la notificación.Estos avisos son presentados a la aplicación en su bucle de mensajes. USO DE LOS TRIPLETES DE OPERACIÓNLas funciones DSM_Entry( ) y DS_Entry( ) son utilizadas para comunicar operaciones . Una operación es una acción que la aplicación o el Gestor de Origen invoca. Típicamente, pero no siempre, eso implica usar o modificar datos, lo cual es indicado por el último parámetro (pData) de la llamada a la función.Las solicitudes de acciones ocurren de una de las siguientes maneras:

Desde Hasta Usando la función...

La aplicación Gestor de Origen DSM_Entry con el parámetro pDest igual a NULL

La aplicación The Source (via el Gestor de Origen)

DSM_Entry con el parámetro pDest apuntando a una estructura válida que identifica el Origen

El Gestor de Origen El Origen DS_Entry

La acción deseada está definida por un triplete de operación pasado como tres parámetros en la llamada de función. Cada triplete especifica de forma única una acción concreta. Los tres parámetros que constituyen el triplete son: Grupo de Datos, Tipo de los Argumentos de Datos e identificador de mensaje. Cada parámetro porta información específica.Grupo de Datos (DG_xxxx)Las operaciones están divididas en varios grandes grupos de operaciones por el campo Grupo de datos. Los grupos son:• CONTROL (el identificador es DG_CONTROL.): Estas operaciones implican control de la sesión TWAIN. Un ejemplo donde se usa DG_CONTROL es la operación para abrir el Gestor de Origen.• IMAGE (el identificador es DG_IMAGE.): Estas operaciones trabajan con los datos de las imágenes. Un ejemplo del uso de DG_IMAGE es cuando se pide la transferencia de los datos de la imagen.• AUDIO (el identificador es DG_AUDIO): Estas operaciones trabajan con datos de sonido (soportado por algunas

Page 48: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

cámaras digitales). Un ejemplo donde se usa DG_AUDIO es cuando se pide la transferencia de los datos del audio.Tipo de los Argumentos de Datos (DAT_xxxx)Este parámetro del triplete identifica el tipo de dato que está siendo pasado o operado. Hay muchos tipos de argumentos de datos. Por ejemplo, DAT_IDENTITY. El tipo DAT_IDENTITY es utilizado para identificar un elemento TWAIN como Origen. Recordemos del anterior código de ejemplo que los datos son típicamente pasados o modificados a través del parámetro pData del DSM_Entry y DS_Entry. En este caso, el parámetro pData apuntaría a una estructura de datos de tipo TW_IDENTITY. Nótese que el tipo del argumento de datos empieza con DAT_xxxx y la estructura de datos asociada con TW_xxxx y duplica la segunda parte del nombre. Este patrón es seguido consistentemente por muchos tipos de datos y sus estructuras de datos. Identificación del mensaje (MSG_xxxx)Este parámetro identifica la acción que la aplicación o el Gestor de Origen desea tomar. Hay muchos mensajes diferentes como por ejemplo MSG_GET o MSG_SET. Todos ellos empiezan con el prefijo MSG_.Aquí hay tres ejemplos de tripletes de operación:a) El triplete que la aplicación envía al Gestor de Origen para abrir el Gestor de Origen es: DG_CONTROL / DAT_PARENT / MSG_OPENDSMb) El triplete que la aplicación envía para instruir al Gestor de origen para que dibuje su cuadro de diálogo de selección del origen y por tanto permitir al usuario seleccionar de que Origen planea obtener datos: DG_CONTROL / DAT_IDENTITY / MSG_USERSELECT.c) El triplete que la aplicación envía para transferir datos desde el Origen hasta un fichero es: DG_IMAGE / DAT_IMAGEFILEXFER / MSG_GET.EL PROTOCOLO BASADO EN ESTADOSLa aplicación, el Gestor de Origen y el Origen han de comunicarse para manejar la adquisición de datos. Es lógico que ese proceso debe de ocurrir de una determinada secuencia. Por ejemplo, la aplicación no puede exitosamente pedir la transferencia de datos desde un Origen antes de que el Gestor de Origen esté cargado y preparado para comunicar la solicitud. Para asegurar de que la secuencia sea ejecutada correctamente, el protocolo TWAIN define siete estados que existen en las sesiones TWAIN. Una sesión es el período en el que una aplicación está conectada a un Origen particular vía el Gestor de Origen. El período durante el cual la aplicación está conectada al Gestor de Origen es otra sesión única. En cierto punto de una sesión, los elementos TWAIN del Gestor de Origen y Origen ocupan un estado concreto. Las transiciones a un nuevo estado son causadas por operaciones pedidas por la aplicación o el Origen. Las transiciones pueden ser hacia delante o hacia atrás. Muchas transiciones son transiciones de un solo estado. Por ejemplo, una operación mueve el Gestor de Origen desde el estado 1 hasta el 2 no desde el 1 al 3 (aunque hay situaciones donde una transición de dos estados puede ocurrir).Cuando se visualiza el protocolo basado en estados, es útil recordar:Estados 1, 2 y 3• Son ocupados solo por el Gestor de Origen.• El Gestor de Origen nunca ocupa un estado mayor que el 3.Estados 4, 5, 6 y 7• Son ocupados exclusivamente por Orígenes.• Un Origen nunca tiene un estado menor que 4 si está abierto. Si está cerrado, no tiene estado.

Page 49: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

• Si una aplicación usa múltiples Orígenes, cada conexión es una sesión separada y cada Origen "reside" en su propio estado sin contemplar en que estado están los otros orígenes.DESCRIPCIÓN DE LOS ESTADOSEstado 1 – Pre-SesiónEl Gestor de Origen "reside" en el estado 1 antes de que la aplicación establezca una sesión con él. En este punto, el código del Gestor de Origen ha sido instalado en el disco pero típicamente no está todavía cargado en memoria aún. El único caso donde el Gestor de Origen podría ser cargado y ser ejecutado es bajo Windows porque su implementación es una DLL (es decir, la misma instancia del Gestor de Origen puede ser compartida por múltiples aplicaciones). Si esa situación existe, el Gestor de Origen estará en el estado 2 ó 2 con la aplicación que lo cargó.Estado 2 – Gestor de Origen cargadoEl Gestor de Origen ahora está cargado en memoria, pero no está abierto todavía. Es este momento, el Gestor de Origen está preparado para aceptar otro triplete de operaciones de la aplicación.Estado 3 – Gestor de Origen abiertoEl Gestor de Origen está abierto y preparado para gestionar Orígenes. El Gestor de Origen está ahora preparado para proporcionar listas de orígenes, abrir y cerrar orígenes. El Gestor de Origen permanecerá en el estado 3 durante el resto de la sesión hasta que sea cerrado.El Gestor de Origen rechaza ser cerrado mientras que la aplicación tenga cualquier origen abierto.Estado 4 – Origen abiertoEl Origen ha sido cargado y abierto por el Gestor de Origen en respuesta a una operación desde la aplicación y está preparado para recibir operaciones. El Origen debería haber verificado que hay suficientes recursos (por ejemplo memoria, el dispositivo está disponible, etc) para ejecutarse. La aplicación puede interrogar sobre las capacidades del Origen (por ejemplo, niveles de resolución, soporte para imágenes en blanco y negro, alimentador automático de documentos disponible, etc). La aplicación puede también poner esas capacidades a los valores deseados. Por ejemplo, puede restringir un Origen capaz de proporcionar imágenes de color a transferir imágenes sólo de banco y negro. Nota: preguntar acerca de una capacidad puede ocurrir mientras el origen está en los estados 4,5,6 pero una aplicación sólo puede establecer una capacidad en el estado 4 a no ser que un permiso especial sea negociado entre la aplicación y el Origen.Estado 5 – Origen activadoEl origen ha sido activado por una operación desde la aplicación vía el Gestor de Origen y está preparado para transferencias activadas por el usuario. Si la aplicación ha permitido al Origen mostrar su interfaz de usuario, el origen lo hará cuando entre en el estado 5.Estado 6 – La transferencia está listaEl origen está preparado para transferir uno o más ítems de datos (imágenes) a la aplicación. La transición desde el estado 5 al 6 está disparada por el Origen notificando a la aplicación que la transferencia está lista. Antes de iniciar la transferencia, la aplicación debe de preguntar información sobre la imagen (resolución, tamaño de la imagen, etc). Si el Origen soporta audio, entonces antes de transferir la imagen, la aplicación debe de transferir todas las pistas de audio que están asociadas con la imagen.Es posible transferir en sucesión más de una imagen.Estado 7 – Transfiriendo

Page 50: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

El Origen está transfiriendo la imagen a la aplicación.El mecanismo de transferencia que se utiliza fue negociado durante el estado 4.La transferencia o se completará correctamente o terminará prematuramente. El Origen envía el código de retorno adecuado indicando el resultado. Una vez que el Origen indica que la transferencia está completa, la aplicación debe de confirmar el final de la transferencia.CAPACIDADESUno de los beneficios de TWAIN es que permite a las aplicaciones interaccionar fácilmente con una gran variedad de dispositivos de adquisición. Los dispositivos pueden proporcionar datos de audio o de imagen. Por ejemplo,• Algunos dispositivos tienen alimentadores automáticos de documentos.• Alguno dispositivo no está limitados a una imagen sino que pueden trasferir múltiples imágenes.• Algunos dispositivos soportan imágenes en color• Algunos dispositivos soportan rangos de resoluciones mientras que otros pueden ofrecer distintas posibilidades.• Algunos dispositivos permiten la grabación de datos de audio asociado con una imagen.Los desarrolladores de aplicaciones necesitan saber las capacidades de un Origen y pueden influir las capacidades que el origen ofrece a usuario de la aplicación. Para hacer esto, una aplicación puede utilizar negociación de posibilidades. La aplicación generalmente sigue el siguiente proceso:1. Determinar si el Origen seleccionado soporta una cierta capacidad.2. Preguntar acerca del Valor Actual para la capacidad. También, preguntar acerca del valor por defecto de la capacidad y establecer los valores disponibles que están soportados por el Origen para dicha capacidad.3. Pedir que el Origen ponga el valor actual al valor deseado por la aplicación. El valor actual será el puesto en la interfaz de usuario del origen.4. Limitar, si necesario, los valores disponibles del origen a un subconjunto de los que normalmente serían ofrecidos. Por ejemplo, si la aplicación solo quiere datos en blanco y negro, puede restringir al origen para que solo transmita eso. 5. Verificar que los nuevos valores han sido aceptados por el Origen.

Page 51: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

APÉNDICE B (Motores a paso)

MOTORES PASO A PASO Uno de los principales dispositivos en la ingeniería hoy en día son los motores a pasos. Cuando queremos un posicionamiento con un elevado grado de exactitud y/o una muy buena regulación de la velocidad, tenemos dos soluciones, la primera es utilizar un motor paso a paso y la segunda utilizar un servomotor.Lo que nos interesa en este apéndice son los motores paso a paso (stepping motor), vamos a realizar el estudio de su funcionamiento.Sus principales aplicaciones se pueden encontrar en robótica, tecnología aeroespacial, control de discos duros, flexibles, unidades de CD-ROM o de DVD e impresoras, en sistemas informáticos, manipulación y posicionamiento de herramientas y piezas en general.

PRINCIPIO DE FUNCIONAMIENTO

Los motores eléctricos, basan su funcionamiento en las fuerzas ejercidas por un campo electromagnético y creadas al hacer circular una corriente eléctrica a través de una o varias bobinas. Si dicha bobina, generalmente circular y denominada estator, se mantiene en una posición mecánica fija y en su interior, bajo la influencia del campo electromagnético, se coloca otra bobina, llamada rotor, recorrida por una corriente y capaz de girar sobre su eje, esta última tenderá a buscas la posición de equilibrio magnético, es decir, orientará sus polos NORTE-SUR hacia los polos SUR-NORTE del estator, respectivamente. Cuando el rotor alcanza esta posición de equilibrio, el estator cambia la orientación de sus polos, aquel tratará de buscar la nueva posición de equilibrio; manteniendo dicha situación de manera continuada, se conseguirá un movimiento giratorio y continuo del rotor y a la vez la transformación de una energía eléctrica en otra mecánica en forma de movimiento circular.

El principio de funcionamiento de los motores de corriente continua, los motores paso a paso son más sencillo, que cualquier otro tipo de motor eléctrico.

La Figura 1 ilustra el modo de funcionamiento de un motor paso a paso, suponemos que las bobinas L1 como L2 poseen un núcleo de hierro dulce capaza de imantarse cuando dichas bobinas sean recorridas por una corriente eléctrica. Por otra para el imán M puede girar libremente sobre el eje de sujeción central.

Page 52: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Paso 1 (a) Paso 2 (b) Paso 3 (c) Paso 4 (d)

Figura 1.- Principio de funcionamiento de un motor paso a paso

Sin aplicar ninguna corriente a las bobinas (que también reciben el nombre de fases) y con M en una posición cualquiera, el imán permanecerá en reposo si no se somete a una fuerza externa.

Si se hace circula corriente por ambas fases como se muestra en la Figura 1(a), se crearán dos polos magnéticos NORTE en la parte interna, bajo cuya influencia M se desplazará hasta la posición indicada en la dicha figura.

Si invertimos la polaridad de la corriente que circula por L1 se obtendrá la situación magnética indicada en la Figura 1(b) y M se verá desplazado hasta la nueva posición de equilibrio, ha girado 90 grados en sentido contrario a las agujas del reloj.

Invirtiendo ahora la polaridad de la corriente en L2, se llega a la situación de la Figura 1 ( c) habiendo girado M otros 90 grados. Si, por fin, invertimos de nuevo el sentido de la corriente en L1, M girará otros 90 grados y se habrá obtenido una revolución completa de dicho imán en cuatro pasos de 90 grados.

Si se mantiene la secuencia de excitación expuesta para L1 y L2 y dichas corrientes son aplicadas en forma de pulsos, el rotor avanzará pasos de 90 grados por cada pulso aplicado.Por lo tanto un motor paso a paso es un dispositivo electromecánico que convierte impulsos eléctrico en un movimiento rotacional constantes y finito dependiendo de las características propias del motor.

El modelo de motor paso a paso anterior, recibe el nombre de bipolar ya que, para obtener la secuencia

Page 53: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

completa, se requiere disponer de corrientes de dos polaridades, presentando tal circunstancia un inconveniente importante a la hora de diseñar el circuito que controle el motor. Una forma de resolver este inconveniente esta en la Figura 2, obteniendo un motor unipolar de cuatro fases, puesto que la corriente circula por las bobinas en un único sentido.Si inicialmente se aplica la corriente a L1 y L2 cerrando los interruptores S1 y S2, se generarán dos polos NORTE que atraerán al polo SUR de M hasta encontrar la posición de equilibrio entre ambos como puede verse en la Figura 2(a). Si se abre posteriormente S1 y se cierra S3, por la nueva distribución de polos magnéticos, M evoluciona hasta la situación representada en la Figura 2(b).

Figura 2.- Principio básico de un motor unipolar de cuatro fases

Siguiendo la secuencia representada en la Figuras 2 (c ) y (d), de la misma forma se obtienen avances del rotor de 90 grados habiendo conseguido, como en el motor bipolar de dos fases, hacer que el rotor avance pasos de 90 grados por la acción de impulsos eléctricos de excitación de cada una de las bobinas. El movimiento obtenido ha sido en sentido contrario al de las agujas del reloj, si las secuencias de excitación se generan en orden inverso, el rotor girará en sentido contrario, por lo que fácilmente podemos deducir que el sentido de giro en los motores paso a paso es reversible en función de la secuencia de excitación y, es por ello, se puede hacer avanzar o retroceder al motor un número determinado de pasos según las necesidades.

Page 54: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Una forma de conseguir motores de paso mas reducido (PAP), es la de aumentar el número de bobinas del estator, pero ello llevaría a un aumento del costo y del volumen y a pérdidas muy considerable en el rendimiento del motor, por lo que esta situación no es viable. Hasta ahora y para conseguir la solución más idónea, se recurre a la mecanización de los núcleos de las bobinas y el rotor en forma de hendiduras o dientes, creándose así micropolos magnéticos, tantos como dientes y estableciendo las situaciones de equilibrio magnéticos con avances angulares mucho menores, siendo posible conseguir motores de hasta de 500 pasos.

Desde el punto de vista de su construcción existen 3 tipos de motores paso a paso:• De imán permanente: es el modelo que hemos analizado anteriormente; el rotor es un imán permanente en el que se mecanizan un número de dientes limitado por su estructura física. Ofrece como principal ventaja que su posicionamiento no varía aún sin excitación y en régimen de carga.• De reluctancia variable: Los motores de este tipo poseen un rotor de hierro dulce que en condiciones de excitación del estator y bajo la acción de su campo magnético, ofrecen menor resistencia a ser atravesado por su flujo en la posición de equilibrio. Su mecanización es similar a los de imán permanente y su principal inconveniente radica en que en condiciones de reposos (sin excitación) el rotor queda en libertad de girar y, su posicionamiento de régimen de carga dependerá de su inercia y no será posible predecir el punto exacto de reposo.• Híbridos: Son combinación de los dos tipos anteriores; el rotor suele estar constituido por anillos de acero dulce dentado en un número ligeramente distinto al del estator y dichos anillos montados sobre un imán permanente dispuesto axialmente.

• Motores Unipolares: En este tipo de motores, todas las bobinas del estator están conectadas en serie formando cuatro grupos. Estoa a su vez, se conectan dos a dos, también en serie, y se montan sobre dos estatores diferentes, tal y como se aprecia en la Figura 4. Según puede apreciarse en dicha figura, del motor paso a paso salen dos grupos de tres cables, uno de los cuales es común a dos bobinados. Los seis terminales que parten del motor, deben ser conectados al circuito de control, el cual, se comporta como cuatro conmutadores electrónicos que, al ser activados o desactivados, producen la alimentación de los cuatro grupos de bobinas con que está formado el estator. Si generamos una secuencia adecuada de funcionamiento de estos interruptores, se pueden producir saltos de un paso en el número y sentido que se desee.

Figura 4.- Control de motor Unipolar• Motores Bipolares: En este tipo de motores las bobinas del estator se conectan en serie formando solamente dos grupos, que se montan sobre dos estatores, tal y como se muestra en la Figura 5.

Page 55: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

Según se observa en el esquema de este motor salen cuatro hilos que se conectan, al circuito de control, que realiza la función de cuatro interruptores electrónicos dobles, que nos permiten variar la polaridad de la alimentación de las bobinas. Con la activación y desactivación adecuada de dichos interruptores dobles, podemos obtener las secuencias adecuadas para que el motor pueda girar en un sentido o en otro.

Figura 5.- Control de motor Bipolar

La existencia de varios bobinados en el estator de los motores de imán permanente, da lugar a varias formas de agrupar dichos bobinados, para que sean alimentados adecuadamente. Estas formas de conexión permiten clasificar los motores paso a paso en dos grandes grupos:

Figura 3.- Disposición de las bobinas de motores paso a paso a) bipolar b) unipolar con 6 hilos c) unipolar a 5 hilos d) unipolar a 8 hilos.

Hay que tener en cuenta que los motores unipolares de seis y/o ocho hilos, pueden hacerse funcionar como motores bipolares si no se utilizan las tomas centrales, mientras que los de cinco hilos no podrán usarse jamás como bipolares, porque en el interior están conectados los dos cables centrales.

En el caso de los unipolares lo normal es encontrarnos con cinco, seis y/o ocho terminales, ya que además de los bobinados hay otros terminales que corresponden con a las tomas intermedias de las bobinas, los cuales se conectan directamente a positivo de la fuente de alimentación para su correcto funcionamiento. En la figura 3b, 3c

Page 56: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

y 3d pueden apreciar como están conectados internamente los terminales de estos tipos de motores.

PARÁMETROS DE LOS MOTORES PASO A PASODesde el punto de vista mecánico y eléctrico, es conveniente conocer el significado de algunas de las principales características y parámetros que se definen sobre un motor paso a paso:

• Par dinámico de trabajo ( Working Torque): Depende de sus características dinámicas y es el momento máximo que el motor es capaz de desarrollar sin perder paso, es decir, sin dejar de responder a algún impulso de excitación del estator y dependiendo, evidentemente, de la carga.

Generalmente se ofrecen, por parte del fabrican, curvas denominadas de arranque sin error (pull-in) y que relaciona el par en función el número de pasos.

Hay que tener en cuenta que, cuando la velocidad de giro del motor aumenta, se produce un aumento de la f.c.e.m. en él generada y, por tanto, una disminución de la corriente absorbida por los bobinados del estator, como consecuencia de todo ello, disminuye el par motor.

• Par de mantenimiento (Holding Torque): Es el par requerido para desviar, en régimen de excitación, un paso el rotor cuando la posición anterior es estable ; es mayor que el par dinámico y actúa como freno para mantener el rotor en una posición estable dada

• Para de detención ( Detention Torque): Es una par de freno que siendo propio de los motores de imán permanente, es debida a la acción del rotor cuando los devanados del estator están desactivados.

• Angulo de paso ( Step angle ): Se define como el avance angular que se produce en el motor por cada impulso de excitación. Se mide en grados, siendo los pasos estándar más importantes los siguientes:

Grados por impulso de excitación

Nº de pasos por vuelta

0,72º 500

1,8º 200

3,75º 96

7,5º 48

15º 24

Page 57: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

• Número de pasos por vuelta: Es la cantidad de pasos que ha de efectuar el rotor para realizar

una revolución completa; evidentemente es

donde NP es el número de pasos y α el ángulo de paso.

• Frecuencia de paso máximo (Maximum pull-in/out: Se define como el máximo número de pasos por segundo que puede recibir el motor funcionando adecuadamente.

• Momento de inercia del rotor: Es su momento de inercia asociado que se expresa en gramos por centímetro cuadrado.

• Par de mantenimiento, de detención y dinámico: Definidos anteriormente y expresados en miliNewton por metro.

CONTROL DE LOS MOTORES PASO A PASOPara realizar el control de los motores paso a paso, es necesario como hemos visto generar una secuencia determinada de impulsos. Además es necesario que estos impulsos sean capaces de entregar la corriente necesaria para que las bobinas del motor se exciten, por lo general, el diagrama de bloques de un sistema con motores paso a paso es el que se muestra en la Figura 6.

Figura 6.- Diagrama de bloques de un sistema con motor paso a paso

SECUENCIA DEL CIRCUITO DE CONTROL Existen dos formas básicas de hacer funcional los motores paso a paso atendiendo al avance del rotor bajo cada impulso de excitación: • Paso completo (full step): El rotor avanza un paso completo por cada pulso de excitación y para ello su secuencia ha de ser la correspondiente a la expuesta anteriormente, para un motor como el de la Figura 2, y que se presentada de forma resumida en la Tabla 1 para ambos sentidos de giro, las X indican los interruptores que deben estar cerrados (interruptores en ON), mientras que la ausencia de X indica interruptor abierto (interruptores en OFF).

Paso S1 S2 S3 S4 Paso S1 S2 S3 S4

1 X X 1 X X

Page 58: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

2 X X 2 X X

3 X X 3 X X

4 X X 4 X X

1 X X 1 X X

Sentido horario (a) Sentido antihorario (b)

Tabla 1.- Secuencia de excitación de un motor paso a paso completo

• Medio paso (Half step): Con este modo de funcionamiento el rotor avanza medio paso por cada pulso de excitación, presentando como principal ventaja una mayor resolución de paso, ya que disminuye el avance angular (la mitad que en el modo de paso completo). Para conseguir tal cometido, el modo de excitación consiste en hacerlo alternativamente sobre dos bobinas y sobre una sola de ellas, según se muestra en la Tabla 2 para ambos sentidos de giro.

Paso Excitación de Bobinas

S1 S2 S3 S4

Paso Excitación de Bobinas

S1 S2 S3 S4

1 X X 1 X X

2 X 2 X

3 X X 3 X X

4 X 4 X

5 X X 5 X X

6 X 6 X

7 X X 7 X X

8 X 8 X

Page 59: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

1 X X 1 X X

Sentido horario (a) Sentido antihorario (b)

Tabla 2.- Secuencia de excitación de un motor Paso a Paso en medio paso Según la Figura 2 al excitar dos bobinas consecutivas del estator simultáneamente, el rotor se alinea con la bisectriz de ambos campos magnéticos; cuando desaparece la excitación de una de ellas, extinguiéndose el campo magnético inducido por dicha bobina, el rotor queda bajo la acción del único campo existente, dando lugar a un desplazamiento mitad.

Por ejemplo, la secuencia presentada en la Tabla 2 : en el paso 1, y excitadas las bobinas L1 y L2 de la Figura 2 mediante la acción de S1 y S2, el rotor se situaría en la posición indicada en la Figura 2 a; en el paso 2, S1 se abre, con lo que solamente permanece excitada L2 y el rotor girará hasta alinear su polo sur con el norte generado por L2. Supuesto que este motor tenía un paso de 90 grados, en este caso sólo ha avanzado 45 grados. Posteriormente, y en el paso 3, se cierra S3, situación representada en la Figura 2 b, con lo que el rotor ha vuelto a avanzar otros 45 grados. En definitiva, los desplazamientos, siguiendo dicha secuencia, son de medio paso.La forma de conseguir estas secuencias puede ser a través de un circuito lógico secuencial , con circuitos especializados o con un microcontrolador.

Nos vamos a centrar en el control de los motores paso a paso utilizando nuestro microcontrolador AT90LS8515 que estamos utilizando en esta serie de artículos. Además como el microcontrolador no es capaz de generar la corriente suficiente para excitar las bobinas del motor paso a paso utilizaremos que integrado L293 que también hemos utilizado anteriormente.

APÉNDICE C (EL torno)

Introducción.

El torno, que es quizá una de las primeras máquinas herramientas que se construyeron, es también una de las más adaptables y de uso más extenso.

Debido a que un gran porcentaje del material que se corta en un taller mecánico es cilíndrico o redondo, el torno básico ha conducido al perfeccionamiento de tornos de torreta, máquina para hacer tornillos, rectificadoras, tornos

Page 60: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

de control numérico etc.

Los adelantos en el diseño del torno básico y los relativos han dado por resultado el desarrollo y manufactura de miles de los productos de uso cotidiano.

Algunas de las operaciones comunes que se efectúan en un torno son: torneado de conos, corte de rocas, rectificación de interiores, taladro etc.

El torno se usa, por lo general, parar producir piezas individuales a las especificaciones requeridas. También se utiliza cuando se requiere un número pequeño de piezas similares (corridas cortadas de producción).

Tipos de Torno

A partir de los tornos para madera del siglo XIII, accionado por una cuerda enrollada o con un pedal, ha sido objeto de perfeccionamientos y mejoras. La función principal del torno mecánico o común es tornear formas y piezas de trabajo cilíndricas. Los tornos se suelen clasificar en tres categorías: tornos de taller, tornos para copiado, tornos de producción en serie.

TORNOS DE TALLER.Los tornos de taller que incluyen los de banco, rápidos, de precisión, para cuarto de herramientas o taller mecánico y de escote o bancada partida, están disponibles en diversos tamaños:

1. El torno de banco es un torno pequeño que se monta en un banco o en un gabinete metálico y se utilizan para maquinado ligero en piezas de trabajo pequeñas.

2. Un torno rápido que se puede montar en un banco o un gabinete, se caracteriza por la rapidez de preparación y cambio de la pieza de trabajo, facilidad de operación y poco mantenimiento.

3. El torno para cuarto de herramientas o taller mecánico esta equipado con aditamentos y accesorios especiales que permiten efectuar una serie de operaciones de precisión. Por lo general, se utiliza para producir herramientas y calibradores que se emplean en trabajo de producción de troqueles y herramientas.

4. El torno de escote (bancada partida) tiene una sección de la bancada, debajo del plato que se puede desmontar, para aumentar el diámetro máximo del trabajo que se puede voltear.

TORNOS DE SEMIPRODUCCIÓN.Los tornos de semiproducción son, básicamente, tornos de taller modificados con la adición de un aditamento

Page 61: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

copiador o un sistema de lectura digital. Los tornos copiadores o trazadores se utilizan para reproducir piezas que seria muy difícil o costoso producir en otros tipos de tornos.

TORNOS DE PRODUCCIÓN.Los tornos de de producción se utilizan cuando hay que producir un gran número de piezas iguales. Los tornos revólver o de torreta, los tornos automáticos de un solo husillo y los tornos de control numérico son los más comunes en este grupo.

1. El torno revólver o de torreta se utiliza para producir un gran número de piezas iguales que pueden requerir operaciones tales como torneado, taladrado, barrenado, escariado, refrentado y corte de roscas. En algunos tornos de torreta se pueden montar hasta 20 herramientas diferentes en una torreta de tipo de ariete o de portaherramientas; cada herramienta se puede hacer girar a su posición en forma rápida y exacta.

2. El torno automático de un solo husillo es destinado a la producción automática y en serie de piezas que requieren, principalmente, torneado y refrentado. Los tornos automáticos, por lo general, tienen dos cursores portaherramientas montados en el carro. Las herramientas en el cursor delantero se utilizan para tornear y barrenar. Las herramientas en el cursor trasero se utilizan para refrentar, rebajar, biselar y ranurar.

3. El torno de control numérico es uno de los adelantos más recientes del torno básico de taller, que se controla con una cinta numérica, se utiliza en especial para tornear y puede producir ejes de casi cualquier forma y tamaño de un modo económico y automático.

Algunas partes del Torno.

Page 62: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

CONCLUSIONES

Se desarrollo un prototipo que tiene la capacidad de duplicar objetos solido a partir de un patrón físico. El prototipo tiene la capacidad de escanear un objeto con las siguientes dimensiones menor o igual a 30 cm. cúbicos, sin necesidad de realizar la construcción del mismo. Vía software procesa el objeto y lo reconstruye con herramientas CAD/CAM. Es importante mecionar que se pueden llevar acabo algunas adaptaciones en el sistema respecto a su operación y desempeño, simplemente utilizando la interfaz de usuario y adapatando el software del sistema.

Es evidente que se cubrieron las espectativas planteadas como parte del objetivo, enfatizando que en la actualidad el prototipo, esta en una fase de pruebas que permitirán mejorar su desempeño, respecto a la presición con que se escanean objetos.

Page 63: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que
Page 64: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

BIBLIOGRAFÍA

Page 65: DUPLICADOR CON CONTROL AUTOMATICO” - SAPPI - …sappi.ipn.mx/cgpi/archivos_anexo/20051050_2383.pdfcomprendidas dentro del espectro visible. Se trataba de los primeros láseres que

SPIE Vol. 84 Láser Scanning Components & Techniques (1976)Jonh C. PurcupileCarnegie – Mellon University

Beiser, Leo, Laser Applications, Academic Press, Inc. 1974

Smith, warren J., Modern Optical Engeneering, McGraw Hill Book Co.

Brosens, Pierre, Scanning Accuracy of the moving Iron Galvanometer Scanner, Optical Engineer, March, April, 1976.

http://www.kitware.com/vtk.html

http://www.twain.org/

http://www.coercive.com/

http://www.lasersurplus.com/

http://utopia.cord.org/cm/leot/Module5/module5.htm

http://www.motorola.com/General/index.html

http://www.programmersheaven.com/