Anda di halaman 1dari 39

UNIVERSIDAD POLITCNICA

DEL BICENTENARIO
DEPARTAMENTO DE INGENIERA BIOMDICA

DISEO Y CONSTRUCCIN DE PROBADOR DE TARJETA DE


INTERFAZ DE RAYOS XCON FLUOROSCOPA

Por:
ALDO ADRIN PREZ MONTOYA

Matrcula:
14020003

Asesor:
M.C. Nayeli Maira Lpez Alanis

SILAO DE LA VICTORIA, GTO.


Febrero 2017
ndice
ndice de figuras .................................................................................................................................. 3
ndice de tablas ................................................................................................................................... 3
Resumen.............................................................................................................................................. 4
Introduccin: ....................................................................................................................................... 4
Planteamiento del problema .............................................................................................................. 5
Justificacin ......................................................................................................................................... 5
Objetivo General: ................................................................................................................................ 6
Objetivos Especifcos: .......................................................................................................................... 6
Metodologa ........................................................................................................................................ 6
Desarrollo ............................................................................................................................................ 7
Anlisis de la tarjeta de interfaz ...................................................................................................... 7
Diseo y simulacin del probador................................................................................................... 8
Construccin del probador.............................................................................................................. 9
Componentes ............................................................................................................................ 10
CI (Circuito Integrado) CD4052BC ................................................................................................. 11
Transistor 2N4401 ......................................................................................................................... 11
PIC 18F4550................................................................................................................................... 12
Puerto USB .................................................................................................................................... 13
Nivel Fsico del puerto USB ........................................................................................................... 14
Protocolo de comunicacin USB ................................................................................................... 15
HID (Human Interface Device) ...................................................................................................... 16
Desarrollo de software .................................................................................................................. 18
Visual Studio.NET 2013 (MR)............................................................................................................ 18
El ncleo del IDE (Integrated Drive Electronics ) ........................................................................... 19
Cdigo del programa desarrollado en Visual Studio. NET 2013(MR) .............................................. 21
Cdigo para conexin USB con el PIC18F4550.......................................................................... 21
Ventanas del programa ................................................................................................................. 23
Programa del PIC en C ................................................................................................................... 32
Mtodo de verificacin ................................................................................................................. 35
Resultados ......................................................................................................................................... 38
Conclusin ......................................................................................................................................... 39
ndice de figuras
Ilustracin 1 Diagrama del desarrollo para el probador de tarjeta de interfaz .................................. 6
Ilustracin 2 Simulacin del probador de tarjetas de interfaz ............................................................ 8
Ilustracin 3 Top view del PCB ............................................................................................................ 9
Ilustracin 4 Bot view del PCB ............................................................................................................. 9
Ilustracin 5 Placa fenlica con el PCB lista para insolar .................................................................. 10
Ilustracin 6 Diagrama del CI CD4052BC........................................................................................... 11
Ilustracin 7 Diagrama de transistor 2N4401 ................................................................................... 11
Ilustracin 8 Diagrama de PIC18F4550 ............................................................................................. 12
Ilustracin 9 Esquema de comunicacin HID .................................................................................... 17
Ilustracin 10 Ventana principal del programa del probador de tarjetas de interfaz ...................... 23
Ilustracin 11 Ventana de aprobacin de tarjeta ............................................................................. 28
Ilustracin 12 Ventana para comienzo de reparacin guiada .......................................................... 28
Ilustracin 13 Ventana de rechazo de tarjeta ................................................................................... 32
Ilustracin 14 Tarjeta de interfaz ...................................................................................................... 35
Ilustracin 15 Clavijas de alimentacin ............................................................................................. 36
Ilustracin 16 Ventana principal del programa del probador de tarjetas de interfaz ...................... 36
Ilustracin 17 ventana de tarjeta aprobada...................................................................................... 37
Ilustracin 18 Ventana de reparacin guiada ................................................................................... 37
Ilustracin 19 Ventana de tarjeta rechazada .................................................................................... 37

ndice de tablas
Tabla 1 Salidas y entradas de la tarjeta de interfaz ............................................................................ 7
Tabla 2 Recorrido de las seales por los dispositivos ......................................................................... 8
Resumen
Se dise y desarrollo un probador para tarjetas de interfaz de quipos de rayos x
con fluoroscopa, ya que en la Compaa Mexicana de Radiologa (CMR) era
necesario un mtodo eficiente de verificacin de tarjetas de interfaz para reducir el
margen de error que se obtena al momento de calibrar un equipo completo. Se
buscaron alternativas tomando en cuenta la cantidad de seales que maneja la
tarjeta de interfaz y sus diferentes componentes. Fue necesario el diseo de una
tarjeta de adquisicin de datos con multiplexado y un software para controlar dicha
tarjeta para procesar las seales creando un proceso semiautomtico de
verificacin. La implementacin del probador redujo los tiempos de verificacin de
la tarjeta de interfaz y el margen de error ocasionado por esta al momento de
calibrar los equipos de rayos x.

Introduccin:
El presente trabajo se desarrollo en la Compaa Mexicana de Radiologa CGR
S.A. de C.V. [CMR], para la cual, la calidad es un compromiso constante que se
mantiene y fortalece da a da. Su misin es fabricar e integrar equipo de
radiodiagnstico de alta calidad, contribuyendo a la mejora de la calidad en salud.
Por lo cual, cuida estrictamente el funcionamiento de sus equipos para con ello
cumplir con las normas necesarias y as proteger la salud de los usuarios. Por
esta razn, los equipos de rayos X fluoroscpicos antes de salir al mercado son
probados y calibrados.
Para verificar que los equipos funcionan correctamente es necesario que estos
estn ensamblados; es decir, contengan todas las tarjetas electrnicas las
cuales son probadas en el rea de calidad y calibracin. Estas se realizan en
tableros de prueba los cuales simulan la mayora de entradas y salidas de las
tarjetas para verificar su funcionamiento.

Si los equipos fallan son revisados y reparados, pero considerando la cantidad de


tarjetas electrnicas contenidas en cada generador esto sera una tarea muy
complicada. Lo que implicara un gran consumo de tiempo, razn por la cual en
CMR las tarjetas electrnicas de los generadores son revisadas y reparadas antes
de ser colocadas, pero aun no existen probadores para cada una de las tarjetas.
Una de las tarjetas de mayor inters es de interfaz, a continuacin encontrar el
desarrollo del probador de dicha tarjeta.

Planteamiento del problema


La calibracin de los equipos de rayos x es una tarea en la que se invierte gran
cantidad de tiempo, esto resultado de tarjetas daadas. Por ello, cada una de las
tarjetas que se montan en el equipo son probadas de manera manual o con ayuda
de tableros de prueba.

La tarjeta de interfaz es la segunda tarjeta ms importante despus de la tarjeta de


control. A pesar de ello, no contaba con un tablero de prueba lo cual obligaba a
verificarla de manera manual o en su defecto montarla en el equipo sin verificar.
Esto aumentando el tiempo que se inverta por equipo y el margen de error que
causaba esta tarjeta.

Justificacin
En el CMR no se contaba con un provador para tarjeta de interfaz, este mdulo es
exclusivamente circuitera y en l se establece la comunicacin entre el mdulo de
control con los dispositivos externos del equipo, debido a que stos no pueden ser
conectados directamente al mdulo de control por seguridad de los dispositivos
externos y del propio generador.

Las funciones que se realizan en este mdulo son las siguientes:

Encendido general del sistema.


Envo y recepcin de seales analgicas y digitales con la tarjeta de control.
Entradas y salidas de alimentacin para fuentes de control y consolas.
Acoplamiento de las seales de la fuente de potencia.
Lectura de las seales de los dispositivos externos.
Envo de las seales de control a los dispositivos externos.
Activacin de los sistemas de proteccin en hardware.
Por lo anterior, se decidi realizar el desarrollo de un probador para la tarjeta de
interfaz. Esto beneficiar en reduccin de tiempos de calibracin, reparacin y
verificacin de la tarjeta.

Objetivo General:
Realizar el diseo y la construccin de un tablero de pruebas para tarjetas de
interfaz de rayos x fluoroscpico

Objetivos Especifcos:
Comprender el funcionamiento de la tarjeta de interfaz con ayuda de los
diagramas elctricos de dicha tarjeta.
Disear el circuito para simular las seales de entrada y leer las de salida
para poder verificar la tarjeta de interfaz.
Desarrollar un software para automatizar la mayor parte del proceso de
prueba y reparacin.
Disear el tablero para poder colocar la tarjeta con los cables necesarios.
Realizar pruebas con el tablero y verificar su correcto funcionamiento.

Metodologa
En la ilustracin 1, se muestra la metodologa usada para el desarrollo del
probador de la tarjeta de interfaz. El proceso consiste en analizar la tarjeta de
interfaz, realizar el diseo del probador, simulacin, construccin y pruebas.

Anlisis de la
Diseo del Simulacin del
tarjeta de
probador probador
interfaz

Pruebas Construccin

Ilustracin 1 Diagrama del desarrollo para el probador de tarjeta de interfaz


Desarrollo
Anlisis de la tarjeta de interfaz
Para realizar el diseo del probador se analizaron las diferentes seales que
pasan a travs de la tarjeta de interfaz, para ello se revis el diagrama elctrico y
se localizaron los cables de los conectores. Para lograr catalogar las entradas y
salidas como se muestra en la Tabla 1. Adems, se verifico el recorrido de las
seales para saber que dispositivos se relacionaban con cada una Tabla 2.

SALIDA PIN ENTRADA PIN


CUARTO_APAGADO 13.6 LUZ_DE_CUARTO / CUARTO_COM 1.1 / 13.5-Lnea
BUCKY1_OUT 11.2 INICIO_BUCKY1_OUT 1.4
BUCKY2_OUT 11.3 INICIO_BUCKY2_OUT 1.3 / 11.1-Lnea 220v
GETTER2 6.7 RAD_FLU_5_OUT 1.8/6.6-Lnea
NIVEL_v 13.8 NIVEL_VOLTAGE 1.10
MAGN2_NA 6.1 MAGN2_OUT 1.13/6.3-Lnea
MAGN1_NA 6.2 MAGN1_OUT 1.14/6.3-Lnea
FLUORO_REL 12.8 FLUORO_OUT / IN 1.25
DISP_CTRL_$ 15.2 DISP_CTRL 1.37
PREP_REL 12.3 PREP_OUT/ IN 1.40
T1_ON_REL 12.2 T1/T2_SEL_CTRL 2.2
ALTA_VEL 12.4 ALTA_VEL_OUT 2.4
PUERTA_AB 1.2 PUERTA_OPEN_RTN 7.4
COLIMADOR 1.18 COLIMADOR_ENT_RTN 7.5
TUBO1_CAL 1.34 TUBO1_SW_RTN 7.6
TUBO2_CAL 1.33 TUBO2_SW_RTN 7.7
PREP_MESA_5 1.9 PREP_MESA 7.8
EXP_MESA_5 1.12 EXP_MESA 7.9
FLUORO_MESA_5 1.11 FLUORO_MESA 7.10
TUBO2_CONECT 2.6 TUBO2_SEL_OUT 8.7
TUBO1_CONECT 2.3 TUBO1_SEL_OUT 8.8
R_REL 9.4 R_F_COM 9.3
F_REL 9.5 R_F_COM 9.3
SALIDA_X4 14.1 SAL_Y4_RTN 12.1
ROTOR_RDY 1.36 ROTOR_RDY_RTN 12.9
ERROR_5_REL 9.4 LINEA / 9.5 LINEA ERROR_5_OUT 1.16/9.4, 9.5-Lneas

Tabla 1 Salidas y entradas de la tarjeta de interfaz


RECORRIDO
1 2 3 4 5
IN-U10-1/OUT-U10-18 K9-bobina
IN-U10-2/OUT-U10-17 K3-bobina
IN-U10-3/OUT-U10-16 K4-bobina
IN-U10-4/OUT-U10-15 K14-bobina
IN-U9-7/OUT-U9-12
IN-U10-7/OUT-U10-12 K7-bobina
IN-U10-6/OUT-U10-13 K5-bobina
IN-U6-13/OUT-U6-12 IN-U9-8/OUT-U9-11
IN_U9-6/OUT-U9-13
IN-U6-1/OUT-U6-2 IN-U8-6/OUT -U8-13
IN-U8-1/OUT-U8-18
IN_U8-3/OUT-U8-16
INOPU14- 2-1/ OUTOP U14-16- 15 R18 IN-U1-2/OUT-U1-18
INOP-U14- 4-3/OUTOP-U14-14- 13 R19 IN-U1-15/OUT-U1-5
INOP-U14- 6-5/OUTOP-U14-12- 11 R20 IN-U2-2/OUT-U2-18
INOP-U14- 8-7/OUTOP-U14-10- 9 R21 IN-U2-4/OUT-U2.16
INOP-U4- 2-1/OUTOP-U4-16- 15 R62/R1 IN-U3-13/OUT-U3-12 IN-U3-3/OUT-U3-4 IN-U1-8/OUT-U1-12
INOP-U4-3-4/OUTOP-U4-14- 13 R60 IN-U3-11/OUT-U3-10 IN-U3-5/OUT-U3-6 IN-U1-11/OUT-U1-9
INOP-U4-5-6/OUTOP-U4-12- 11 R61 IN-U3-9/OUT-U3-8 IN-U1-13/OUT-U1-7
INOP-U15- 4-3/OUTOP-U15-14- 13 R82 IN-U2-15/OUT-U2-5
INOP-U15- 2-1/OUTOP-U15-16- 15 R81 IN-U2-13/OUT-U2-7
K6-LINEA
K6-LINEA
INOP-U15- 6-5/OUTOP-U15-12- 11 R17 IN-U2-8/OUT-U2-12
INOP-U15- 8-7/OUTOP-U15-10- 9 R79 IN-U2-6/OUT-U2-14
IN-U9-1/OUT-U9-18 K6-Bobina

Tabla 2 Recorrido de las seales por los dispositivos

Diseo y simulacin del probador


El diseo y simulacin se llevaron a cabo en Proteus ISIS Ilustracin 2 ya que este
permite hacer simulaciones en tiempo real de dispositivos USB virtuales con
retrasos mximos de 50 ms.

Ilustracin 2 Simulacin del probador de tarjetas de interfaz


Una vez simulado se realiz el diseo del PCB con Proteus ARES en un principio
se opt por realizar auto-ruteo pero esto generaba demasiadas lneas perdidas,
para evitar esto el ruteo se hizo de manera manual Ilustracin 3 y 4.

Ilustracin 3 Top view del PCB

Ilustracin 4 Bot view del PCB

Construccin del probador


Una vez realizado el diseo del PCB se pas a placa fenlica de doble cara por el
mtodo de la plancha Ilustracin 5 ya que no se contaba con los recursos para
realizarlo por un mtodo ms conveniente. Una vez insolada la placa se prosigui
a perforar para realizar el montaje de los dispositivos.
Ilustracin 5 Placa fenlica con el PCB lista para insolar

Componentes
Para la elaboracin del probador de tarjeta de interfaz se requiere los
componentes mencionados a continuacin:
26 Resistencias de 4.7 kohm de watt
26 Resistencias de 1kohm de watt
1 Resistencia de 10kohm de watt
1 paquete de resistencias de 10 kohm de watt
1 Cristal de cuarzo de 12Mhz
1 Capacitor Electroltico de 47 uF
2 Capacitores Cermicos de 33 pF
4 Circuitos Integrados CD4052BC
1 PIC 18F4550
1 Transistor 2N4401
1 Relevador de 24 v
1 Conector de 40 pines para cable plano
1 Conector de 10 pines para cable plano
1 Bornera de 8 pines
1 Bornera de 12 pines
1 Conector USB Tipo B Hembra
Conectores de JIN 1 a JIN 17
CI (Circuito Integrado) CD4052BC

Ilustracin 6 Diagrama del CI CD4052BC

Es un multiplexor de 8 entradas y 2 salidas separadas en dos multiplexores de 4


entradas y una salida como se muestra en la Ilustracin 6, este circuito es utilizado
para minimizar el nmero de pines de entrada que se requieren para realizar la
lectura de diversas seales, el circuito cuenta con 1 selector de 2 bits lo cual nos
permite seleccionar la entrada que se requiere a las salidas del mutiplexor.

Transistor 2N4401

Ilustracin 7 Diagrama de transistor 2N4401

Aunque se cuenta con salidas de voltaje de 5 volts la corriente que proporciona un


PIC es de 25mA con lo cual no se pueden activar relevadores o motores, por ello
la utilidad de este transistor ya que nos ayuda a proporcionar salidas de hasta
500mA.

PIC 18F4550

Ilustracin 8 Diagrama de PIC18F4550

El PIC 18F4550 es el dispositivo ms importante del probador ya que este se


encarga de recibir todas las seales y hacer la conexin con el computador por
medio de una comunicacin HID (Human Interface Device), este PIC en especial
cuenta con un mdulo para conexin USB con osciladores y PLL especiales para
la sincronizacin del PIC con el computador.

Comunicacin de la PC con el PIC18F4550


Para la comunicacin entre la PC y el microcontrolador se debe tener en cuenta
diferentes aspectos como lo son:

El protocolo de comunicacin.
Velocidad de comunicacin.
Propiedades del hardware.
Estos son puntos clave para elegir el tipo y protocolo de comunicacin ideal para
la aplicacin.

Puerto USB
USB es una especificacin de las empresas Compaq, Intel, Microsoft y NEC, que
describe un canal serie que soporta una gran variedad de perifricos de media y
baja velocidad, con soporte integral para transferencias en tiempo real (iscronas)
como voz, audio y vdeo comprimido, y que permite mezclar dispositivos y
aplicaciones iscronas y asncronas. Por lo tanto, entre los dispositivos USB ms
caractersticos se pueden citar teclados, ratones, joysticks, tabletas grficas,
monitores, modems, impresoras, escneres, CD-ROMs, dispositivos de audio
(como micrfonos o altavoces digitales), cmaras digitales y otros dispositivos
multimedia.

La versin 1.1 (La que soporta el PIC18F2550) establece:

Un acceso al bus gestionado directamente por el Controlador USB, para


permitir transferencias iscronas y eliminar los tiempos de arbitracin.
Una velocidad de 12 Mbps (Full Speed o FS) y un subcanal de 1,5 Mbps
(Low Speed o LS) para los dispositivos ms lentos, como ratones y
joysticks. La coexistencia en un mismo sistema de dispositivos FS y LS se
maneja mediante conmutacin automtica y dinmica de velocidad entre
unas transferencias y otras.
Una conectividad excepcional, ya que puede manejar hasta 127
dispositivos simultneamente que se pueden conectar y desconectar en
caliente, sin tener que reiniciar el sistema.
Una configuracin automtica de dispositivos, que elimina la necesidad de
realizar configuraciones manuales por medio de puentes o conmutadores.
La coexistencia de dispositivos iscronos y asncronos. Los dispositivos
iscronos se atienden en funcin del ancho de banda y latencia requeridos,
y los asncronos se atienden durante el tiempo restante no consumido por
los dispositivos iscronos.
Una distribucin de alimentacin desde el Controlador USB, que permite la
conexin tanto de dispositivos alimentados desde el bus como
autoalimentados.
Una arquitectura fcilmente escalable para permitir la existencia de varios
Controladores USB en un sistema.
La versin 1.1 es soportada por los siguientes sistemas operativos:
Windows 98\Windows 2000\Windows XP\Windows Vista\Windows 7 y
adems los siguientes OS ajenos a windows: Linux\Mac OS.

Nivel Fsico del puerto USB


A nivel fsico, USB utiliza un cable de 4 conductores para transmitir una seal
diferencial (D+ y D-) y alimentacin (VBus = 5V y GND) por medio de conexiones
punto a punto. Los dispositivos LS van obligatoriamente equipados con un cable
de longitud adecuada (hasta unos 3m, dependiendo de sus caractersticas
elctricas), mientras que los FS pueden ir equipados con un cable o utilizar cables
independientes de hasta 5m (tambin dependiendo de sus caractersticas
elctricas).

La comunicacin es bidireccional y semi-dplex, y utiliza codificacin autoreloj


NRZI (la lnea cambia de nivel si se transmite un 0 y no cambia si transmite un 1)
con "bit stuffing" (insercin de un cero tras la transmisin de 6 unos, para asegurar
transiciones en la lnea y permitir que la PLL del receptor se mantenga
sincronizada). Los dispositivos disponen de un transmisor diferencial, receptores
diferencial y S/E y resistencias de terminacin con los que pueden transmitir y
detectar varios estados elctricos distintos en la lnea:

Transmisin/Recepcin diferencial de bits: Estados DIFF0 y DIFF1,


denominados tambin estados J y K.
SE0 (Single-Ended 0): Ambas seales D+ y D- a 0V. Se utiliza para
detectar la conexin/desconexin de dispositivos, para indicar el EOP (fin
de paquete) y para generar reset.
IDLE: reposo o lnea en alta impedancia, necesario para permitir
transferencias semi-dplex, detectar la conexin y desconexin de
dispositivos y discriminar entre dispositivos FS y LS.
El SOP (principio de paquete) se indica mediante una transicin IDLE a K.
El EOP (fin de paquete) se indica mediante una secuencia SE0 (2 bits) + J
(1 bit) + IDLE.
Deteccin de dispositivo y discriminacin FS/LS: cuando el transmisor deja
la lnea en IDLE, si hay un dispositivo conectado su polarizacin fuerza un
estado J (DIFF0 si LS DIFF1 si FS), y si no lo hay, la polarizacin del
transmisor fuerza un estado SE0.
Reset: transmisin de SE0 durante >= 10 ms.

Protocolo de comunicacin USB


El protocolo de nivel fsico se basa en tokens (testigos). El controlador USB
transmite tokens que incluyen la direccin del dispositivo destino, y el dispositivo
que detecta su direccin en el Token responde y lleva a cabo la transferencia de
datos con el controlador. De esta manera, el Controlador USB maneja la parte
ms compleja del protocolo, generando los tokens de transferencias de datos a 12
Mbps o a 1,5 Mbps, y controlando la conexin lgica entre el sistema y las
funciones internas de cada dispositivo. El controlador USB tambin maneja el
consumo en el bus a travs de las funciones Suspender/Continuar, por medio de
las cuales controla los modos Reposo/Activo de los dispositivos. Esta arquitectura
permite el diseo de dispositivos extremadamente simples y de bajo coste.

USB divide el tiempo en espacios de 1ms denominados Tramas, durantes las


cuales se llevan a cabo las comunicaciones a travs de Transacciones, las cuales
se componen a su vez de Paquetes. Las transacciones se compone de 3 fases:
Token, Dato y Validacin (Handshake):

La fase de Token se compone de un paquete de Token enviado por el


Controlador USB, y siempre est presente en toda transaccin. El paquete
contiene los campos:
o PID (identifica el tipo de paquete). Todos los PIDs van protegidos por
bits redundantes,
o Direccin del elemento destino (7 bits de dispositivo + 4 bits de
elemento interno al dispositivo), y CRC5.
o La fase de Datos (opcional) se compone de los paquetes de datos
que se transfieren entre el Controlador USB y el dispositivo. Cada
paquete se compone de los campos PID, Datos, y CRC16.
o La fase de Validacin (opcional) se usa para indicar el resultado de
la transaccin. Se compone slo de un campo PID.

Adicionalmente, el Controlador USB indica el principio de cada Trama y la


transmisin hacia dispositivos LS mediante tokens especiales.

HID (Human Interface Device)


Hace referencia a un tipo de interfaces de usuario para computadores que
interactan directamente, tomando entradas proveniente de humanos, y pueden
entregar una salida a los humanos. El trmino HID comnmente se refiere a la
especificacin USB-HID. Una caracterstica que hace muy interesante el uso de
dispositivos que implemente en su firmware la clase HID es que la mayora de
Sistemas Operativos modernos implementan los controladores necesarios para
poder comunicarse con ellos sin ser necesaria la instalacin de ningn driver
adicional por parte del usuario. Ejemplos de dispositivos HID son los teclados y
ratones del PC sin embargo, tambin pueden utilizar esta clase dispositivos que
no requieran una interaccin humana directa como termmetros, voltmetros,
lectores de cdigos de barras, etc. Lo que la hace muy interesante a la hora de
utilizarla en proyectos que utilizan Microcontroladores.

Un esquema general a lo que sera una comunicacin HID entre una aplicacin de
escritorio y un Microcontrolador sera el siguiente:
Ilustracin 9 Esquema de comunicacin HID

Un Endpoint es un buffer de memoria RAM situado fsicamente en el


Microcontrolador, desde ese buffer se reciben o se envan los datos desde el
dispositivo haca el Host. Como se ve en la figura el host tambin tiene
Buffers para almacenar temporalmente la informacin pero solo a los buffers
del dispositivo se les denomina Endpoint. Cada Endpoint puede ser de
entrada o de salida o bidireccional, la direccin se considera siempre desde
el punto de vista del Host, as un Endpoint de salida ser un canal que
transmita datos desde el host al dispositivo (PIC). Un Endpoint configurado
como control es bidireccional, es decir, ser capaz de enviar o recibir datos
en ambas direcciones. Todos los dispositivos deben de tener un Endpoint de
control, numerado con el nmero cero. El Sistema Operativo instalado en el
PC realiza el proceso de enumeracin y control a travs de l cuando el
dispositivo es enchufado al PC.
Una interfaz est formada por una coleccin de Endpoint y una determinada
configuracin puede estar formada a su vez por varias interfaces.
Las pipes o tuberas son canales de comunicacin que sirven para transmitir
datos entre el PC-Host y un Endpoint en particular.
En la clase HID los datos se intercambian a travs de unas estructuras de
datos llamadas informes (Reports). Este formato es flexible y permite
manejar casi cualquier tipo de dato, en los descriptores es donde se
especifica el tamao de los datos de los Reports as como informacin
adicional sobre ellos.
Las limitaciones que tienen en cuanto a velocidad de transferencia los
dispositivos HID son: para un dispositivo low-speed mximo 800 bytes/s,
para full-speed 64KB/s. las nicas transferencias soportadas son las de
control e Interrupcin.
Desarrollo de software
Para la comunicacin del probador con el computador se desarroll un programa
en Visual Studio.NET (MR) y el PIC18F4550 se program en lenguaje C con el
compilador Mikro C ya que este contiene un conjunto de libreras para facilitar la
programacin de este PIC.

Visual Studio.NET 2013 (MR)


En 1992, Microsoft entra en liza en el mercado de las herramientas de desarrollo
con el editor de su lenguaje estrella: Visual Basic. Este tena como prioridad el
hacer ms sencillas las labores de programacin, centrndose en un entorno de
construccin visual basado en controles que situaban su posicin en pantalla por
medio de Drag & Drop.

El xito de este marco de programacin fue incrementndose de forma continuada


hasta llegar a la versin 6.0 - la ms utilizada en su momento, en donde Microsoft
dio un potente golpe de timn evolucionando el sistema hacia su nuevo
Framework .NET, y en donde aparece la primera versin del Visual Studio
moderno.

El ncleo del IDE (Integrated Drive Electronics )


Visual Studio 2013 es mucho ms que un IDE complejo y completo. Con el pasar
de las versiones y el crecimiento en cada una de ellas, se ha convertido en un
ecosistema de desarrollo que unifica en una sola herramienta servidores de
gestin de Ciclo de Vida, de planes de pruebas, laboratorios de testing, sistemas
de integracin continua, repositorios de cdigo compartido avanzadas, etc.

Constituyndose en un conjunto de herramientas que comprende todos y cada


uno de los aspectos que estn relacionados con la mayora de los escenarios
sobre los que puede realizarse programacin de aplicaciones informticas.

Editor de cdigo: el ncleo del IDE de desarrollo, el propio Visual Studio, se


erige sobre un editor de cdigo/interfaz que soporta los ms variados
lenguajes (desde Html5 + JQuery, a C++ para dispositivos embebidos,
pasando por Phyton con Django, o XMAL para Windows Phone),
proporcionando un completo intellisense predictivo y mltiples herramientas
de refactorizacin y aceleracin de la codificacin.
Anlisis del cdigo y de las "Buenas prcticas": la inclusin de pruebas de
rendimiento, y del anlisis esttico del cdigo, redondean un mdulo que
orienta al desarrollador hacia las mejores prcticas de codificacin y de
tcnicas avanzadas de programacin como el TDD o XP.
Test de las aplicaciones: Para cumplir con las extensas necesidades de la
programacin actual, incluye un completo framework de test unitario y de
integracin; acompaado por la gestin completa de los planes de prueba
por medio del mdulo de Test Manager, e incluyendo test exploratorios
grabados y automatizados de las interfaces de usuario, pudiendo ser
programados con test CodedUI.
Pruebas de carga y rendimiento: tambin incluye un mdulo con entidad
propia para realizar el anlisis en profundidad de los diagnsticos de
prestaciones que cualquier tipo de aplicacin desarrollada en .Net.
Arquitectura: mdulo orientado a la documentacin arquitectnica que nos
permite, por ejemplo, modelar en UML toda la estructura del proyecto,
incluso generando cdigo desde los diagramas; navegar por la vista de
clases; verificar las referencias circulares, etc.
Team Explorer: desde esta ventana podremos gestionar todo el trabajo
almacenado en el Team Foundation Server, sea on-premise u online.
Gestionar las tareas, el trabajo, explorar el repositorio de cdigo y las
operaciones de branching y merge, lanzar y programar las build, etc.
Construccin y depuracin: como todos los IDE modernos, permite construir
las aplicaciones para todos los dispositivos, plataformas y sistemas
operativos soportados; y realizar decenas de operaciones y validaciones de
depuracin que permitan encontrar los fallos de manera fcil y sencilla;
incluso permite aadirse a un proceso abierto en el equipo de desarrollo (o
remotamente) para depurar aplicaciones no soportadas por .NET.
Herramientas: conectarse contra una base de datos sql, comparar los
esquemas, comparar los datos, lanzar querys; conectarse contra un
SharePoint o un Azure; crear un GUID (identificador nico); ofuscar y
analizar cdigo; configurar servicios WCF; obtener la ejecucin detallada de
procesos; y optimizar y configurar el propio IDE, son algunas de las
decenas de herramientas que incluye Visual Studio.
Tercera partes: al ser un IDE abierto, extensible y (en gran parte) open
source, las herramientas de terceras partes han generado productos de
calidad prcticamente imprescindibles como Resharper, VS Anywhere, etc.
Que, adems, permite utilizar Visual Studio con prcticamente toda la
tecnologa actual del mercado.
Cdigo del programa desarrollado en Visual Studio. NET 2013(MR)
Cdigo para conexin USB con el PIC18F4550
Imports System
Imports System.Threading
Imports System.Runtime.InteropServices

Module HIDDLLInterface
' este codigo hace inteface con el mcHID.dll y

' WinProc() genera los eventos:


' * MainForm.OnPlugged(ByVal pHandle as long)
' * MainForm.OnUnplugged(ByVal pHandle as long)
' * MainForm.OnChanged()
' * MainForm.OnRead(ByVal pHandle as long)

' Delaraciones HID interface API


Declare Function hidConnect Lib "mcHID.dll" Alias "Connect" (ByVal
pHostWin As Integer) As Boolean
Declare Function hidDisconnect Lib "mcHID.dll" Alias "Disconnect" () As
Boolean
Declare Function hidGetItem Lib "mcHID.dll" Alias "GetItem" (ByVal pIndex
As Integer) As Integer
Declare Function hidGetItemCount Lib "mcHID.dll" Alias "GetItemCount" ()
As Integer
Declare Function hidRead Lib "mcHID.dll" Alias "Read" (ByVal pHandle As
Integer, ByRef pData As Byte) As Boolean
Declare Function hidWrite Lib "mcHID.dll" Alias "Write" (ByVal pHandle As
Integer, ByRef pData As Byte) As Boolean
Declare Function hidReadEx Lib "mcHID.dll" Alias "ReadEx" (ByVal
pVendorID As Integer, ByVal pProductID As Integer, ByRef pData As Byte) As
Boolean
Declare Function hidWriteEx Lib "mcHID.dll" Alias "WriteEx" (ByVal
pVendorID As Integer, ByVal pProductID As Integer, ByRef pData As Byte) As
Boolean
Declare Function hidGetHandle Lib "mcHID.dll" Alias "GetHandle" (ByVal
pVendoID As Integer, ByVal pProductID As Integer) As Integer
Declare Function hidGetVendorID Lib "mcHID.dll" Alias "GetVendorID"
(ByVal pHandle As Integer) As Integer
Declare Function hidGetProductID Lib "mcHID.dll" Alias "GetProductID"
(ByVal pHandle As Integer) As Integer
Declare Function hidGetVersion Lib "mcHID.dll" Alias "GetVersion" (ByVal
pHandle As Integer) As Integer
Declare Function hidGetVendorName Lib "mcHID.dll" Alias "GetVendorName"
(ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As
Integer
Declare Function hidGetProductName Lib "mcHID.dll" Alias "GetProductName"
(ByVal pHandle As Integer, ByVal pText As String, ByVal pLen As Integer) As
Integer
Declare Function hidGetSerialNumber Lib "mcHID.dll" Alias
"GetSerialNumber" (ByVal pHandle As Integer, ByVal pText As String, ByVal
pLen As Integer) As Integer
Declare Function hidGetInputReportLength Lib "mcHID.dll" Alias
"GetInputReportLength" (ByVal pHandle As Integer) As Integer
Declare Function hidGetOutputReportLength Lib "mcHID.dll" Alias
"GetOutputReportLength" (ByVal pHandle As Integer) As Integer
Declare Sub hidSetReadNotify Lib "mcHID.dll" Alias "SetReadNotify" (ByVal
pHandle As Integer, ByVal pValue As Boolean)
Declare Function hidIsReadNotifyEnabled Lib "mcHID.dll" Alias
"IsReadNotifyEnabled" (ByVal pHandle As Integer) As Boolean
Declare Function hidIsAvailable Lib "mcHID.dll" Alias "IsAvailable"
(ByVal pVendorID As Integer, ByVal pProductID As Integer) As Boolean

Declaraciones windows API

Public Declare Function CallWindowProc Lib "user32" Alias


"CallWindowProcA" (ByVal lpPrevWndFunc As Integer, ByVal hwnd As Integer,
ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As
Integer
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"
_
(ByVal hwnd As Integer, ByVal
nIndex As Integer, ByVal dwNewLong As Integer) As Integer

Delegate Function SubClassProcDelegate(ByVal hwnd As Integer, ByVal msg


As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Public Declare Function DelegateSetWindowLong Lib "USER32.DLL" Alias
"SetWindowLongA" _
(ByVal hwnd As Integer, ByVal attr
As Integer, ByVal lval As SubClassProcDelegate) As Integer

Constantes windows API


Public Const WM_APP As Integer = 32768
Public Const GWL_WNDPROC As Short = -4

Mensajes constantes HID


Private Const WM_HID_EVENT As Decimal = WM_APP + 200
Private Const NOTIFY_PLUGGED As Short = 1
Private Const NOTIFY_UNPLUGGED As Short = 2
Private Const NOTIFY_CHANGED As Short = 3
Private Const NOTIFY_READ As Short = 4

Variables locales
Private FPrevWinProc As Integer
Private FWinHandle As Integer
Private Ref_WinProc As New SubClassProcDelegate(AddressOf WinProc)
Private HostForm As Object

Establece los indicadores de conexin de los dispositivos HID


Public Sub ConnectToHID(ByRef targetForm As Form)
Dim pHostWin As Integer = targetForm.Handle.ToInt32
FWinHandle = pHostWin
pHostWin = hidConnect(FWinHandle)
FPrevWinProc = DelegateSetWindowLong(FWinHandle, GWL_WNDPROC,
Ref_WinProc)
HostForm = targetForm
End Sub
Deshabilita la conexin HID al desconectar el dispositivo
Public Function DisconnectFromHID() As Boolean
DisconnectFromHID = hidDisconnect
SetWindowLong(FWinHandle, GWL_WNDPROC, FPrevWinProc)
End Function
Intercepta los mensajes de la comunicacin con el dispositivo HID
Private Function WinProc(ByVal pHWnd As Integer, ByVal pMsg As Integer,
ByVal wParam As Integer, ByVal lParam As Integer) As Integer
If pMsg = WM_HID_EVENT Then
Select Case wParam

' El dispositivo HID fue conectado


Case Is = NOTIFY_PLUGGED
HostForm.OnPlugged(lParam)

EL dispositivo HID fue desconectado


Case Is = NOTIFY_UNPLUGGED
HostForm.OnUnplugged(lParam)

El controlador del dispositivo fue cambiado


Case Is = NOTIFY_CHANGED
HostForm.OnChanged()

Lectura de eventos
Case Is = NOTIFY_READ
HostForm.OnRead(lParam)
End Select

End If

WinProc = CallWindowProc(FPrevWinProc, pHWnd, pMsg, wParam, lParam)

End Function
End Module

Ventanas del programa

Ilustracin 10 Ventana principal del programa del probador de tarjetas de interfaz

Esta ventana cuenta con 3 Push Button, 1 Pop-up men, 2 Picture Box y 1
Text Box los cuales se encargan de interactuar con el usuario para la verificacin
y reparacin de la tarjeta.
Probar: Este botn se encarga de ordenar al computador verificar todas las
seales de la tarjeta una vez conectada y verifica su estado para definir si la
tarjeta se encuentra en buen estado o si hay algn fallo.
Verificar Cambio: Este botn se utiliza para verificar especficamente la
lnea que se encontraba daada una vez se haya recurrido a la reparacin
guiada la cual se activa cuando en la verificacin principal se encuentra un
error.
Salir: Este Boton sirve para slir de la aplicacin una vez termine su uso.
Pop-up men: Sirve para seleccionar el diagrama del circuito que se desea
mostrar en el Picture Box derecho.
Text Box: Sirve para mostrar las instrucciones de reparacin dependiendo
del error obtenido.

Su cdigo es el siguiente:

Public Class frmHID

'////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////
'Definicion de varables globales
Private Const VendorID As UShort = &H1234 ' Indique el VendorID de su
dispositivo.
Private Const ProductID As UShort = &H1 ' Indique el ProductID de su
dispositivo
Private Const BufferInSize As Short = 64 ' Definimos el tamao del buffer
entrada, minimo 1 maximo 65.
Private Const BufferOutSize As Short = 64 ' Definimos el tamao del buffer de
salida, minimo 1 maximo 65.
Dim BufferIn(BufferInSize) As Byte ' En este arreglo se almacenaran
los datos recibidos
Dim BufferOut(BufferOutSize) As Byte ' En este arreglo se almacenaran
los datos a ser transmitidos
'fin de definicion de variables globales

'////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////
Dim mux() As Integer = {0, 64, 128, 192}
Public falla(3, 6) As Integer
Dim inicio As Integer = 0
Dim i As Integer = 0
Dim aprobada As Boolean = True
Dim cx, cy, val As Integer
Dim bandera_verificar As Boolean = False
' Conectar el dispositivo HID en el momento que se carga el formulario
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
ConnectToHID(Me)
conected.BackColor = Color.White
disconected.BackColor = Color.Red
End Sub
' Desconectar el disposivo HID en el momento que se descarga el formulario
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As
System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
DisconnectFromHID()
End Sub
' detectar que un dispositivo HID ha sido conectado al computador
Public Sub OnPlugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) =
ProductID Then
conected.BackColor = Color.Green
disconected.BackColor = Color.White
End If
End Sub
' Detectar que un dispositivo ha sido desconectado del computador
Public Sub OnUnplugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) =
ProductID Then
hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
' ** Su codigo va aqui!!! **
conected.BackColor = Color.White
disconected.BackColor = Color.Red
End If
End Sub
' Detectar un cambio en la conexion plug and play
Public Sub OnChanged()
Dim pHandle As Integer
pHandle = hidGetHandle(VendorID, ProductID)
hidSetReadNotify(hidGetHandle(VendorID, ProductID), True)
End Sub
' Leer un dato que recibi el computador

Public Sub OnRead(ByVal pHandle As Integer)


' Lee los datos recibidos y los agrupa en una matriz
If inicio = 1 Then
If hidRead(pHandle, BufferIn(0)) Then
falla(i, 0) = (CInt(BufferIn(8)) + CInt(BufferIn(7)) << 1)
falla(i, 1) = (CInt(BufferIn(10)) + CInt(BufferIn(9)) << 1)
falla(i, 2) = (CInt(BufferIn(12)) + CInt(BufferIn(11)) << 1)
falla(i, 3) = (CInt(BufferIn(14)) + CInt(BufferIn(13)) << 1)
falla(i, 4) = (CInt(BufferIn(16)) + CInt(BufferIn(15)) << 1)
falla(i, 5) = (CInt(BufferIn(18)) + CInt(BufferIn(17)) << 1)
falla(i, 6) = (CInt(BufferIn(20)) + CInt(BufferIn(19)) << 1)
' Threading.Thread.Sleep(100)
End If
End If
' Binarisa los datos de la matriz para hacer mas sensilla su comparacin al
momento de comparar la matriz
If bandera_verificar = True Then
If hidRead(pHandle, BufferIn(0)) Then
val = (CInt(BufferIn(2 * cy + 8)) + CInt(BufferIn(2 * cy + 7)) <<
1)
If val <= 50 Then
frm_NA.Show()
MsgBox(" La reparacin guiada no es apta para resolver el
problema, consulte el diagrama elctrico")
ElseIf val > 50 Then
frm_NA.Show()
End If
bandera_verificar = False
End If
End If

If inicio = 1 Then

ReDim BufferOut(BufferOutSize) 'redimenciona el array BufferOut y lo


limpia (hay comando para que no se limpie )
BufferOut(0) = 0 ' Buffer de informacin general para comunicacin(no
utilizar)
BufferOut(1) = mux(i) ' Buffer de datos
hidWriteEx(VendorID, ProductID, BufferOut(0)) ' Comando para escribir
lo que hay en el BufferOut
Threading.Thread.Sleep(50)
i = i + 1
If i >= 4 Then
For x As Integer = 0 To 3
For y As Integer = 0 To 6
If falla(x, y) >= 50 Then
falla(x, y) = 1
Else
falla(x, y) = 0

End If
Next
Next
For x As Integer = 0 To 3
For y As Integer = 0 To 6
If falla(x, y) = 0 Then
aprobada = False
End If
Next
Next
If aprobada = False Then
Reparar.Show()
Else
frm_A.Show()
End If
i = 0
inicio = 0

End If
End If

End Sub

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles


pb_probar.Click
ReDim BufferOut(BufferOutSize)
BufferOut(0) = 0
BufferOut(1) = 0 ' Buffer de datos
hidWriteEx(VendorID, ProductID, BufferOut(0)) ' Comando para escribir
inicio = 1
End Sub
Esta funcin sirve para verificar la lnea que resultaba daada
Private Sub pb_verificar_Click(sender As Object, e As EventArgs) Handles
pb_verificar.Click
For x As Integer = 0 To 3
For y As Integer = 0 To 6
If falla(x, y) = 0 Then
cx = x
cy = y
Exit For
End If
Next
Next
ReDim BufferOut(BufferOutSize)
BufferOut(0) = 0
BufferOut(1) = mux(cx) ' Buffer de datos
hidWriteEx(VendorID, ProductID, BufferOut(0)) ' Comando para escribir
bandera_verificar = True

End Sub
' Despliega las imgenes del Picture box de los diagramas elctricos de los
circuitos.
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs)
Handles ComboBox1.SelectedIndexChanged
Select Case ComboBox1.Text
Case "U1 y U2"
PictureBox2.Image = HIDSoft1.My.Resources._74HCT244
Case "U3 y U6"
PictureBox2.Image = HIDSoft1.My.Resources.inversor_40106bcn
Case "U4, U14 y U15"
PictureBox2.Image = HIDSoft1.My.Resources.optocoplador
Case "U8 a U10"
PictureBox2.Image = HIDSoft1.My.Resources.uln2803
Case "K2 a K9"
PictureBox2.Image = HIDSoft1.My.Resources.rele
Case "K14"
PictureBox2.Image = HIDSoft1.My.Resources.rele5pin
End Select
End Sub
End Class

Si la verificacin de la tarjeta resulta sin errores el programa desplegar una


ventana de aprobacin de color verde el cual es usado en las etiquetas y es de
ayuda visual para el usuario Ilustracin 11
Ilustracin 11 Ventana de aprobacin de tarjeta

En caso de que la verificacin falle se desplegara una ventana de color amarillo


Ilustracin 12, para preguntar si se desea reparar la tarjeta o no, en caso de que
se decida reparar se mostrara una imagen de la tarjeta en la ventana principal
indicando con etiquetas la posicin y nombre de los componentes que pueden
estar daados y en el Text Box se mostraran instrucciones de como verificar cada
uno de los componentes.

Ilustracin 12 Ventana para comienzo de reparacin guiada

El cdigo de esta ventana es el siguiente:

Public Class Reparar


Private Sub Reparar_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Private Sub Pb_Tarde_Click(sender As Object, e As EventArgs) Handles


Pb_Tarde.Click

frm_NA.Show()
Close()
End Sub
' Funcin para comparer la matriz adquirida y desplegar las instrucciones de
reparacin dependiendo de la linea daada
Private Sub Pb_Aceptar_Click(sender As Object, e As EventArgs) Handles
Pb_Aceptar.Click
My.Forms.frmHID.pb_verificar.Enabled = True
For x As Integer = 0 To 3
For y As Integer = 0 To 6
If My.Forms.frmHID.falla(x, y) = 0 Then
If x = 0 And y = 0 Then ' Cuarto apagado
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_CUARTO_APAGADO
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U10.1 y OUT-
U10.18 " & vbCrLf & "Verificar K9 " & vbCrLf & "Verificar Continuidad JIN 13.5 a JIN
13.6 cuando K9 este activo"
Exit For
ElseIf x = 0 And y = 1 Then ' NIVEL_V
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_NIVEL_V
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U9.7 y OUT-
U9.12"
Exit For
ElseIf x = 0 And y = 2 Then ' DISP_CTRL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_DISP_CTRL
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U9.6 y OUT-
U9.13 "
Exit For
ElseIf x = 0 And y = 3 Then ' PUERTA_AB
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_PUERTA_AB
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador
U14.1 y U14.2 Emisor / U14.16 y U14.15 Receptor " & vbCrLf & "Verificar R18 " &
vbCrLf & "Verificar IN-U1.2 y OUT-U1.18"
Exit For
ElseIf x = 0 And y = 4 Then ' PREP_MESA 5
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_PREP_MESA_5
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador U4.1
y U4.2 Emisor / U4.16 y U4.15 Receptor " & vbCrLf & "Verificar R62 y R1 " & vbCrLf &
"Verificar IN-U3.13 y OUT-U3.12" & vbCrLf & "Verificar IN-U3.3 y OUT-U3.4" & vbCrLf
& "Verificar IN-U1.8 y OUT-U1.12"
Exit For
ElseIf x = 0 And y = 5 Then 'TUBO1_CONECT
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_TUBO1_CONECT
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador
U15.1 y U15.2 Emisor / U15.16 y U15.15 Receptor " & vbCrLf & "Verificar R81 " &
vbCrLf & "Verificar IN-U2.13 y OUT-U2.7"
Exit For
ElseIf x = 0 And y = 6 Then 'ROTOR_RDY
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_ROTOR_RDY
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador
U15.7 y U15.8 Emisor / U15.10 y U14.9 Receptor " & vbCrLf & "Verificar R79 " &
vbCrLf & "Verificar IN-U2.6 y OUT-U2.14"
Exit For

'***********************************************************************************
************
ElseIf x = 1 And y = 0 Then ' BUCKY1_OUT
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_BUCKY1_OUT
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U10.2 y OUT-
U10.17 " & vbCrLf & "Verificar K3 " & vbCrLf & "Verificar Continuidad JIN 11.1 a JIN
11.2 cuando K3 este activo"
Exit For
ElseIf x = 1 And y = 1 Then ' MANG2_NA
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_MANG2_NA
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U10.7 y OUT-
U10.12 " & vbCrLf & "Verificar K7 " & vbCrLf & "Verificar Continuidad JIN 6.1 a JIN
6.3 cuando K7 este activo"
Exit For
ElseIf x = 1 And y = 2 Then ' PREP_REL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_PREP_REL
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U6.1 y IN-
U6.2 " & vbCrLf & "Verificar IN-U8.6 y OUT-U8.13"
Exit For
ElseIf x = 1 And y = 3 Then ' COLIMADOR
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_COLIMADOR
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador
U14.3 y U14.4 Emisor / U14.14 y U14.13 Receptor " & vbCrLf & "Verificar R19 " &
vbCrLf & "Verificar IN-U1.15 y OUT-U1.5"
Exit For
ElseIf x = 1 And y = 4 Then ' EXP_MESA_5
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_EXP_MESA_5
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador U4.5
y U4.6 Emisor / U4.14 y U4.13 Receptor " & vbCrLf & "Verificar R60 " & vbCrLf &
"Verificar IN-U3.11 y OUT-U3.10" & vbCrLf & "Verificar IN-U3.5 y OUT-U3.6" & vbCrLf
& "Verificar IN-U1.11 y OUT-U1.9"
Exit For
ElseIf x = 1 And y = 5 Then ' R_REL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_R_REL_AND_F_REL
My.Forms.frmHID.TextBox1.Text = "Verificar Continuidad JIN
9.3 a JIN 9.4 cuando K6 este activo "
Exit For

'***********************************************************************************
************
ElseIf x = 2 And y = 0 Then ' BUCKY2_OUT
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_BUCKY2_OUT
My.Forms.frmHID.TextBox1.Text = " Verificar IN-U10.3 y OUT-
U10.16 " & vbCrLf & "Verificar K4 " & vbCrLf & "Verificar continuidad JIN 11.1 a JIN
11.3 cuando K4 este activo"
Exit For
ElseIf x = 2 And y = 1 Then ' MAGN1_NA
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_MANG1_NA
My.Forms.frmHID.TextBox1.Text = " Verificar IN-U10.6 y OUT-
U10.13 " & vbCrLf & "Verificar K5 " & vbCrLf & "Verificar continuidad JIN 6.2 a JIN
6.3 cuando K5 este activo"
Exit For
ElseIf x = 2 And y = 2 Then ' T1_ON_REL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_T1_ON_REL_AND_ALTA_VEL
My.Forms.frmHID.TextBox1.Text = " Verificar IN-U8.1 y OUT-
U8.18 "
Exit For
ElseIf x = 2 And y = 3 Then ' TUBO1_CAL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_TUBO1_CAL
My.Forms.frmHID.TextBox1.Text = " Verificar Optocoplador
U14.5 y U14.6 Emisor / U14.12 y U14.11 Receptor " & vbCrLf & "Verificar R20 " &
vbCrLf & "Verificar IN-U2.2 y OUT-U2.18"
Exit For
ElseIf x = 2 And y = 4 Then ' FLUORO_MESA_5
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_FLUORO_MESA_5
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador
U14.5 y U14.6 Emisor / U14.12 y U14.11 Receptor " & vbCrLf & "Verificar R61 " &
vbCrLf & "Verificar IN-U3.9 y OUT-U3.8" & vbCrLf & " IN-U1.13 y OUT-U1.7"
Exit For
ElseIf x = 2 And y = 5 Then ' F_REL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_R_REL_AND_F_REL
My.Forms.frmHID.TextBox1.Text = "Verificar continuidad JIN
9.3 a JIN 9.5 cuando K6 este activo "
Exit For

'***********************************************************************************
*************
ElseIf x = 3 And y = 0 Then ' GETTER2
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_GETTER2
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U10.4 y OUT-
U10.15 " & vbCrLf & "Verificar K14 " & vbCrLf & "Verificar continuidad JIN 13.5 a
JIN 13.6 cuando K14 este activo"
Exit For
ElseIf x = 3 And y = 1 Then ' FLUORO_REL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_FLUORO_REL
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U6.13 y OUT-
U6.12 " & vbCrLf & "Verificar IN-U9.8 y OUT-9.11"
Exit For
ElseIf x = 3 And y = 2 Then ' ALTA_VEL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_T1_ON_REL_AND_ALTA_VEL
My.Forms.frmHID.TextBox1.Text = "Verificar IN-U8.3 y OUT-
U8.16 "
Exit For
ElseIf x = 3 And y = 3 Then ' TUBO2_CAL
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_TUBO2_CAL
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador
U14.7 y U14.8 Emisor / U14.10 y U14.9 Receptor " & vbCrLf & "Verificar R21 " &
vbCrLf & "Verificar IN-U2.4 y OUT-U2.16"
Exit For
ElseIf x = 3 And y = 4 Then ' TUBO2_CONECT
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_TUBO2_CONECT
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador
U15.3 y U15.4 Emisor / U15.14 y U15.13 Receptor " & vbCrLf & "Verificar R82 " &
vbCrLf & "Verificar IN-U2.15 y OUT-U2.5"
Exit For
ElseIf x = 3 And y = 5 Then ' SALIDA_X4
My.Forms.frmHID.PictureBox1.Image =
HIDSoft1.My.Resources.tarjeta_interface_SALIDA_X4
My.Forms.frmHID.TextBox1.Text = "Verificar Optocoplador
U15.5 y U15.6 Emisor / U15.12 y U15.11 Receptor " & vbCrLf & "Verificar R17 " &
vbCrLf & "Verificar IN-U2.8 y OUT-U2.12"
Exit For
End If
End If

Next
Next
Close()
End Sub
End Class

Si se elige la opcin Mas Tarde el programa desplegar una ventana roja


Ilustracin 13 para indicar que la tarjeta no fue aprobada.

Ilustracin 13 Ventana de rechazo de tarjeta

Programa del PIC en C


#include <Built_in.h>

unsigned char Leer_USB[64] absolute 0x500;

unsigned char Escribir_USB[64] absolute 0x540;

unsigned char Reservar_USB[256] absolute 0x400;

void interrupt(){

Usb_Interrupt_Proc(); //Mantiene viva la comunicacion

void EntradaAnalogica()

unsigned analogVal;
analogVal = ADC_get_sample(0); // lee el dato recibido en el adc

Escribir_USB[6] = Hi(analogVal); // guarda el dato recibido en el adc

Escribir_USB[7] = Lo(analogVal);

analogVal = ADC_get_sample(1);

Escribir_USB[8] = Hi(analogVal);

Escribir_USB[9] = Lo(analogVal);

analogVal = ADC_get_sample(2);

Escribir_USB[10] = Hi(analogVal);

Escribir_USB[11] = Lo(analogVal);

analogVal = ADC_get_sample(3);

Escribir_USB[12] = Hi(analogVal);

Escribir_USB[13] = Lo(analogVal);

analogVal = ADC_get_sample(4);

Escribir_USB[14] = Hi(analogVal);

Escribir_USB[15] = Lo(analogVal);

analogVal = ADC_get_sample(5);

Escribir_USB[16] = Hi(analogVal);

Escribir_USB[17] = Lo(analogVal);

analogVal = ADC_get_sample(6);

Escribir_USB[18] = Hi(analogVal);

Escribir_USB[19] = Lo(analogVal);

analogVal = ADC_get_sample(7);

Escribir_USB[20] = Hi(analogVal);

Escribir_USB[21] = Lo(analogVal);

analogVal = ADC_get_sample(8);

Escribir_USB[22] = Hi(analogVal);

Escribir_USB[23] = Lo(analogVal);

while(!HID_Write(&Escribir_USB, 64));
}

/*void EntradaDigital()

Escribir_USB[4] = PORTB;

while(!Hid_write(&Escribir_USB, 64));

} */

void main() {

char dato; // Se recibo datos de la PC

TRISA = 255; // Entradas Analogicas

//TRISB = 0x00; // Entradas Digitales

TRISC = 0x00;

PORTC = 0x00;

TRISD = 0x00;

PORTD = 0x00;

ADCON1 = 0;

// A0-A12 Analogicos lo demas, son digitales

ADC_Init(); // Iniciales el conversor ADC

PWM1_Init(1500); // PWM 1 1500Hz

PWM2_Init(1500);

PWM1_Set_Duty(0);

PWM2_Set_Duty(0);

PWM1_Start();

PWM2_Start();

HID_Enable(&Leer_USB,&Escribir_USB);
while(1){

EntradaAnalogica();

//EntradaDigital();

dato = HID_Read(); // Devuelve el numero de bytes recibidos

if(dato != 0){ //dato != 0

dato = 0;

PORTD = Leer_USB[0]; //

PWM1_Set_Duty(Leer_USB[2]);

PWM2_Set_Duty(Leer_USB[3]);

Mtodo de verificacin

Por medio de una tarjeta de prueba se enviarn las seales de entrada de la


tarjeta de interfase y se probar que las seales de salida sean las correctas.
1. Verificar visualmente el ensamble de los componentes de la tarjeta
Ilustracin 14.

Ilustracin 14 Tarjeta de interfaz


2. Colocar la tarjeta de interfaz en la mesa destinada para el probador y
verificar que los conectores estn en el lugar correcto.
3. Verifique que las clavijas de 220 V y 127 V del probador estn conectadas
Ilustracin 15.

Ilustracin 15 Clavijas de alimentacin

4. Verifique que la tarjeta Probador de Interfaz este conectada correctamente


5. Abrir el Programa del Probador
6. Verificar que el indicador de conexin con la tarjeta se encuentre en verde

Ilustracin 16 Ventana principal del programa del probador de tarjetas de interfaz


7. Presionar el Botn Probar del programa
8. Si el programa muestra la ventana de aprobado Ilustracin 17, coloque una
etiqueta verde en la tarjeta.

Ilustracin 17 ventana de tarjeta aprobada

9. Si el programa muestra la ventana de reparacin Ilustracin 18 y desea


reparar la tarjeta siga las instrucciones hasta observar la ventana de tarjeta
aprobada Ilustracin 17.

Ilustracin 18 Ventana de reparacin guiada

10. En caso de que el programa muestre la ventana de rechazo Ilustracin 19


coloque una etiqueta roja en la tarjeta.

Ilustracin 19 Ventana de tarjeta rechazada


Resultados
Se logr la implementacin de un probador de tarjetas de interfaz de rayos x con
fluoroscopa, La tarjeta que se construy se muestra en Ilustracin 20.

Ilustracin 20 Tarjeta electrnica del probador

Para probar el funcionamiento de la misma se tom una tarjeta de interfaz


previamente probada y calibrada en un equipo de rayos x funcional y se mont en
el tablero de prueba como se muestra en la Ilustracin 21.
Ilustracin 21 Tarjeta de interfaz montada en el tablero de prueba

Se realiz la verificacin resultando aprobada por el programa, posteriormente se


montaron dos tarjetas daadas para verificar que el programa detectara las fallas
especficas de dichas tarjetas obteniendo como resultado tarjetas rechazadas con
posibilidad de reparacin.

Conclusin
El probador de tarjetas de interfaz verifica de manera eficiente dichas tarjetas
optimizando los tiempos de calibracin de los equipos de rayos x, por otro lado se
recomienda analizar la tarjeta de control para poder generar un probador doble ya
que la tarjeta de control y la tarjeta de interfaz se comunican directamente
generando la posibilidad de disear un probador para ambas tarjetas.

Referencias
Http://picaxe.electronicasimple.com. (23 de 10 de 2016).

Lucas, L. M. (25 de 10 de 2016).


http://www.ieslosviveros.es/alumnos/asig8/carpeta714/PROYECTO_PIC_usb.pdf.

Nashesky, R. L. (1998). Electrnica- Teoria de circuitos y dispositivos electrnicos. Mexico: Prentice


Hall.

Anda mungkin juga menyukai