4.4. Calibración y cálculo de...

46
- 103 - 4.4. Calibración y cálculo de errores *Transductor de desplazamiento La función de transferencia teórica implementada, siendo el rango de medida 100 mm, es: ( ) ( ) 2 12.5 d mm VV = + d = 0 mm V = 4 mA x 500 = 2 V d = 100 mm V = 20 mA x 500 = 10 V Como en la medida obtenida se consigue una precisión de 0.01 V, tenemos que el paso mínimo en la medida de desplazamiento que se puede identificar es: ( 2 12.5 12.5 0.01 12.5 0.125 125 MINIMO MINIMO d V V mm m μ = - × =∆ × = × = = Y por lo tanto, el error a fondo escala, en la medida del desplazamiento axial del cabezal móvil de la prensa (y por consiguiente de la porosidad del polvo a consolidar) es: 0.125 (%) 100 100 0.125% 100 MINIMO desplazamiento RANGO d mm d mm ε = × = × = Realizando la integración del transductor de desplazamiento en la prensa (ver apartado 4.3.) el rango de medida se reduce a 70 mm, que es lo que recorre el pistón de la prensa. Dicho transductor se coloca en una posición tal que las tensiones registradas son: * Posición inicial (0 mm) 2.33 V * Posición final (70 mm) 7.75 V (a 1 BAR) 7.78 V (a 2 BAR) 7.80 V (a 3 BAR) 7.81 V (a 4 BAR) 7.83 V (a 5 BAR) La posición inicial es independiente de la carga aplicada (proporcional a la presión del aire comprimido que entra en la cámara), pero para la posición final, debido a la alta precisión de la medida ( 0.125% desplazamiento ε = ), se detectan pequeñas variaciones en función de la presión aplicada. Esto es así, principalmente, porque la arandela polimérica que rodea el cilindro del pistón en su parte superior se comprime en función de la presión aplicada. También se comprimen los aislantes y el acero, pero estas variaciones son inferiores al MINIMO d .

Transcript of 4.4. Calibración y cálculo de...

Page 1: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 103 -

4.4. Calibración y cálculo de errores *Transductor de desplazamiento La función de transferencia teórica implementada, siendo el rango de medida 100 mm, es:

( )

( ) 212.5

d mmV V = + d = 0 mm V = 4 mA x 500 Ω = 2 V

d = 100 mm V = 20 mA x 500 Ω = 10 V Como en la medida obtenida se consigue una precisión de 0.01 V, tenemos que el paso mínimo en la medida de desplazamiento que se puede identificar es:

( )2 12.5 12.5 0.01 12.5 0.125 125MINIMO MINIMOd V V mm mµ∆ = − × = ∆ × = × = =

Y por lo tanto, el error a fondo escala, en la medida del desplazamiento axial del cabezal móvil de la prensa (y por consiguiente de la porosidad del polvo a consolidar) es:

0.125(%) 100 100 0.125%

100MINIMO

desplazamientoRANGO

d mm

d mmε ∆= × = × =

Realizando la integración del transductor de desplazamiento en la prensa (ver apartado 4.3.) el rango de medida se reduce a 70 mm, que es lo que recorre el pistón de la prensa. Dicho transductor se coloca en una posición tal que las tensiones registradas son: * Posición inicial (0 mm) 2.33 V * Posición final (70 mm) 7.75 V (a 1 BAR) 7.78 V (a 2 BAR) 7.80 V (a 3 BAR) 7.81 V (a 4 BAR) 7.83 V (a 5 BAR) La posición inicial es independiente de la carga aplicada (proporcional a la presión del aire comprimido que entra en la cámara), pero para la posición final, debido a la alta precisión de la medida ( 0.125%desplazamientoε = ), se detectan

pequeñas variaciones en función de la presión aplicada. Esto es así, principalmente, porque la arandela polimérica que rodea el cilindro del pistón en su parte superior se comprime en función de la presión aplicada. También se comprimen los aislantes y el acero, pero estas variaciones son inferiores al MINIMOd∆ .

Page 2: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 104 -

La función de transferencia real que registra nuestro dispositivo de adquisición de de datos es:

7. 2.33( ) ( ) 2.33

70

XXV V d mm

−= × +

Donde XX se fija en función de la presión del aire comprimido con el que opera la prensa:

- 75 si la presión es 1 bares - 78 si la presión es 2 bares - 80 si la presión es 3 bares - 81 si la presión es 4 bares - 83 si la presión es 5 bares

Esta determinación de XX se realiza fácilmente por software. *Célula de carga La función de transferencia teórica implementada, siendo el rango de medida 20 kN, es:

( ) 0.5 ( )V V Q kN= × Q = 0 kN V = 0 mV x 500 = 0 V Q = 20 kN V = 20 mV x 500 = 10 V Como en la medida obtenida se consigue una precisión de 0.01V, tenemos que el paso mínimo en la medida de carga aplicada que se puede identificar es:

0.010.02 20

0.5 0.5 0.5MINIMO

MINIMO

VVQ kN N

∆∆ = = = = =

Y, por lo tanto, el error a fondo escala en la medida de la carga aplicada por la prensa es:

0.02(%) 100 100 0.1%

20MINIMO

desplazamientoRANGO

Q kN

Q kNε ∆= × = × =

Para determinar la función de transferencia que realmente registra el dispositivo de adquisición de datos, la célula de carga se calibra. Esta función de transferencia real va diferir un poco de la teórica, principalmente porque la alimentación del puente de Wheatstone no son 10 V justos, si no 9.83V. Para esta calibración se hace uso de una prensa que a su vez está perfectamente calibrada. La célula de carga es atornillada a los dos paralelepípedos de integración. El conjunto célula-paralelepípedos queda fijado con una contratuerca y es llevado junto a toda la electrónica a la prensa de calibración.

Page 3: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 105 -

Fig.122: Célula de carga en la prensa de calibración

La calibración es realizada del modo en el que se explica a continuación. Se inicia aplicando una carga que ya pertenece a la zona lineal ( 5 kN∼ ) y se toma el valor de

tensión leído por el MEphisto mecánico. A continuación se va incrementando en pasos de 1 kN la carga aplicada y se van anotando los valores de tensión leídos, hasta llegar a un valor que no supere la carga máxima de la prensa, para que ésta no plastifique ( 16 20kN kN<∼ ). Llegado a este valor máximo, se empieza a decrementar la carga

aplicada en pasos de 1kN hasta llegar al valor de carga inicial. Los valores obtenidos son:

Carga aplicada (kN) Tensión leída (V) 5.14 2.55 6.13 3.05 7.16 3.56 8.2 4.08

9.06 4.52 10.07 5.03 11.12 5.57 12.2 6.1 13.1 6.57 14.15 7.1 15.11 7.58 16.17 8.12

15 7.53 14.14 7.11 13.16 6.61 12.27 6.16 11.21 5.63 9.95 4.99 9.1 4.56 8.3 4.17

7.14 3.57 6.17 3.09 5.02 2.5

Tabla 7: Resultados calibración célula de carga

Page 4: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 106 -

Y su representación gráfica es:

Calibración célula

0

2

4

6

8

10

0 2 4 6 8 10 12 14 16 18

Carga aplicada (kN)

Ten

sión

leíd

a (V

)

Serie1

Fig.123: Gráfica calibración célula

Calculando la recta de mínimos cuadrados para esta nube de puntos se obtiene la función de transferencia real que va a leer nuestro dispositivo de adquisición de datos:

( ) 0.5046 ( ) 0.0388V V Q kN= × − Con esta función de transferencia real, sólo conocemos la tensión leída en función de la carga aplicada. Es necesario conocer la relación presión del aire comprimido con la que opera la prensa; carga aplicada. Conociendo dicha relación se puede ajustar la presión de operación, mediante un regulador manométrico, previamente a la aplicación de carga. La actuación es la siguiente:

- 1º: Se selecciona la carga que se quiere aplicar. - 2º: Se ajusta la presión de operación para que la carga aplicada se aproxime a la

seleccionada. - 3º: Se aplica la carga. - 4º: Se lee la tensión resultante que transformándola en carga, mediante la

función de transferencia real tensión/carga, se compara con la que se quería aplicar. Las discrepancias serán mínimas.

Para obtener esta función presión de operación / carga aplicada, se va a aplicar carga para presiones de operación distintas (paso 0.5 bares). Se obtienen valores de tensión que los transformamos en carga mediante la función de transferencia real tensión / carga. Dado que la carga aplicada para experiencias C.D.E. en rara ocasión va a superar los 1500 kgf, se decide que la presión de operación máxima admisible es la correspondiente a una carga de unos 1500 kgf. Limitando a esta carga, estamos protegiendo la integridad de la célula de carga, ya que su carga máxima admisible es

220 9.81 2038kN m s kgf≈∼ . La obtención de resultados se detiene cuando se

llegue a esta presión. Los datos obtenidos y transformados son:

Page 5: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 107 -

Presión de operación (BAR) Tensión leída (V) Carga aplicada (kN) Carga aplicada (kgf) 0 0 0 0

0.5 0.44 0.949 96.725 1 1.22 2.495 254.297

1.5 2.02 4.080 415.909 2 2.8 5.626 573.480

2.5 3.57 7.152 729.032 3 4.32 8.638 880.543

3.5 5.09 10.164 1036.095 4 5.88 11.730 1195.687

4.5 6.63 13.216 1347.198 5 7.4 14.742 1502.750

Tabla 8: Resultados presión operación / carga aplicada

Se determina que la presión máxima admisible de operación es 5 bares.

Observando la tabla 5 podemos verificar que a incrementos iguales de presión de operación (0.5 bares) se obtienen incrementos de tensión leídas prácticamente iguales( )0.77V∼ , y como la relación tensión leída / carga aplicada es lineal se puede

afirmar que la relación presión de operación / carga aplicada es lineal. Representando la curva se comprueba dicha afirmación.

0

1

2

3

4

5

6

0 200 400 600 800 1000 1200 1400 1600

Carga aplicada (kgf)

Pre

sión

de

oper

ació

n (B

AR

)

Fig.124: Relación lineal “Presión de operación / Carga aplicada”

Calculando la recta de mínimos cuadrados, haciéndola pasa por cero, para esta nube de puntos se obtiene la función la relación “Presión de operación / Carga aplicada”:

( ) 0.00337187 ( )operaciónP BAR Q kgf= ×

* Amplificador de aislamiento “STUD-DI”

• Adaptación tensión batería de condensadores

El diseñador del “STUD-DI” nos da la siguiente función de transferencia:

0.0181 batería condensadoresV V= ×

Page 6: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 108 -

Con un error en la medida del ± 1%. Por tanto, el rango de tensiones teórico (sin tener en cuenta la caída de tensión en los cables) que va a leer el canal del “MEphisto eléctrico” destinado a la lectura de la adaptación de la tensión de descarga es: + 50 V x 0.45 (divisor de tensión) = 22.5 V: 22.5 0.0181 0.99 0.41V⋅ ⋅ ≈

22.5 0.0181 1.01 0.42V⋅ ⋅ ≈

+ 200 V x 0.45 (divisor de tensión) = 90 V: 90 0.0181 0.99 1.62V⋅ ⋅ ≈

90 0.0181 1.01 1.65V⋅ ⋅ ≈

• Sensor HALL

La función de transferencia para la posición cercana (ver apartado 4.2.2.) es:

3

5

1.8 10 sensor HALLI V−= ××

Considerando que la medida muestreada se obtiene con una precisión de 0.01 V, tenemos que el error absoluto mínimo en la medida de intensidad es:

3 3

5 50.01 27.8

1.8 10 1.8 10MINIMO sensor HALLI V A− −∆ = × ∆ = × ≈× ×

4.5. Adquisición de datos y software de control Toda la instrumentación del equipo proyectado, ampliamente detallada en el apartado 4.2., genera o requiere señales eléctricas digitales y/o analógicas. Para el control y gestión de todas estas señales es necesario un dispositivo con microprocesador. Las especificaciones mínimas que tiene que poseer dicho dispositivo son:

• Que posea un microprocesador que ejecute las instrucciones del programa principal de control / monitorización.

• Es necesario un convertidor analógico digital, que muestree las señales

analógicas a registrar y adquirir, para posteriormente procesar. Dichas señales analógicas son:

+ Tensión proporcional a la tensión transitoria de descarga. + Tensión proporcional a la intensidad transitoria de descarga. + Tensión proporcional al desplazamiento del cabezal móvil de la prensa neumática. + Tensión proporcional a la fuerza que desarrolla la prensa neumática.

Page 7: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 109 -

• Se necesitan pines que puedan ser configurados como salidas digitales, que son las entradas a los dos circuitos “interruptor electrónico”.

Estas tres especificaciones mínimas, las cumplen una amplia gama de dispositivos comerciales. Entre todos ellos se selecciona el más económico que cumpla la restricción principal del sistema diseñado, que no es otra que la que se comenta en el siguiente párrafo. El dispositivo ha de ser capaz de tomar un número suficiente de muestras durante el ciclo de descarga eléctrica, para que la curva obtenida “magnitud – tiempo” sea representativa. Dado que el tiempo de descarga es muy pequeño (< 5 ms), se necesita una frecuencia de muestreo por parte del conversor analógico digital muy alta. Esta restricción principal acota mucho la gama de dispositivos comerciales disponibles y viables. Tras un estudio exhaustivo se selecciona el osciloscopio digital “MEphisto Scope 1 UM202” del fabricante “MEILHAUS ELECTRONIC”, que es capaz de realizar un muestreo de 1 Mhz . La aplicación informática que gestiona y controla el dispositivo seleccionado se desarrolla en el entorno de programación “MICROSOFT VISUAL BASIC”. El programa desarrollado con este lenguaje es ejecutado mediante una macros de “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto Scope 1 UM202” del fabricante “MEILHAUS ELECTRONIC” es un dispositivo compacto que tiene distintos modos de funcionamiento.

Fig.125: MEphisto Scope 1UM202

Se conecta al PC vía USB (datos y alimentación) y posee dos conectores BNC para la lectura de señales analógicas. Estos dos canales poseen dos convertidores analógico – digital independientes de 16 bits, siendo el muestreo máximo simultáneo de 1Mhz. El rango de tensiones máximo a la entrada es ± 10V y el mínimo ± 100 mV. Se debe ajustar por software este rango, adecuándose lo máximo posible al rango de la señal a registrar, para así obtener la mayor resolución posible en la medida. Los ajustes posibles son:± 10V,± 5V, ± 2.5V , ± 1V , ± 500 mV , ± 250 mV y ± 100 mV.

Page 8: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 110 -

El dispositivo dispone también de 24 pines de señales digitales (CMOS) que pueden ser configurados individualmente como entrada o salida. Los posibles modos de funcionamiento del “MEphisto”, que pueden ser configurados por software, son los siguientes:

• Modo “osciloscopio digital”: - 2 canales - Muestreo máximo por canal: 1 Mhz - Rangos de tensión a la entrada ajustables: ± 100 mV, ± 250 mV, ± 500 mV,

± 1V, ± 2.5V, ± 5V, ± 10V.

Este es el modo que se utiliza para la adquisición de datos de las cuatro tensiones a registrar. Se utiliza porque es el que realiza la adquisición con la mayor frecuencia de muestreo.

• Modo “análisis lógico”: - 16 pines (D0 … D15) - Frecuencia máxima por pin: 100 Khz - Señal digital (0V – 5V CMOS) • Modo “registro de datos analógicos”: - 2 canales analógicos - Muestreo máximo: 100 Khz - Rangos de tensión a la entrada ajustables: ± 100 mV, ± 250 mV, ± 500 mV,

± 1V, ± 2.5V, ± 5V, ± 10V. • Modo “registro de datos digitales”: - 16 pines (D0 … D15) - recuencia máxima por pin: 100 Khz - Señal digital (0V – 5V CMOS) • Modo “voltímetro”: - 2 canales - Rangos de tensión a la entrada ajustables: ± 100 mV, ± 1V, ± 2.5V, ± 10V. - Medida tensión AC (RMS) ó DC

• Modo “digital entrada/salida”: - 24 pines - Configuración individual de cada pin - 0V – 5V CMOS

Como especificaciones de hardware más relevantes se pueden comentar las siguientes:

Page 9: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 111 -

• Entradas analógicas:

- Resolución: 2×16bit - Rango de muestreo total: 2 Mhz (2 canales) - Canales simultáneos: 2 - Rango de tensión de entrada: ± 100 mV … ± 10 V - Frecuencia de corte superior: 2.5 Mhz (sin filtro anti-aliasing) - Memoria de muestreo: 256000 muestras - Tipos de “trigger”: de nivel, Windows, edge, slope/flanco (dV dt), externo,

manual

• Entradas / salidas digitales

- Numero de pines: 24 (D0 … D23) - Configuración: cada bit es programable como entrada o como salida - Corriente de salida nominal: 5 mA (de pico 10 mA) - Nivel señal: 0V - 5V (CMOS)

Estos pines se encuentran en la parte trasera del dispositivo:

Fig.126: Puerto entradas/salidas digitales

Se trata de un conector hembra con 26 pines en total (23 entradas / salidas digitales + 1 pin de entrada de “trigger” externo + 2 pines de tierra (PC_GND)) y su esquema de nomenclaturas es el siguiente:

Fig.127: Esquema puerto entradas/salidas digitales

El software de control da la orden de inicio de adquisición de datos al “MEphisto eléctrico” en el instante adecuado para que éste adquiera los valores de las tensiones en bruto equivalentes a la tensión e intensidad de descarga. Para que el “MEphisto mecánico” inicie su adquisición casi simultáneamente, el “MEphisto eléctrico” coloca 5 V digitales en el pin D6. Dicho pin está conectado al pin D23 (trigger externo) del “MEphisto mecánico” que activa la adquisición del mismo.

Page 10: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 112 -

En los modos “análisis lógico” y “registro de datos digitales” los pines D0 … D15 son entradas digitales y los pines D16 … D22 no pueden ser conectado porque son pines reservados. El pin D23 es una entrada de “trigger” externo. Éste tipo de trigger es opcional en los siguientes modos: “osciloscopio digital”, “análisis lógico”, “registro de datos digitales” y “registro de datos analógicos”. A continuación se muestran una serie de datos generales del dispositivo:

- PC interface: USB 2.0 full-speed (compatible con USB 1.1) - Alimentación: + 5V / 0.85 W (vía interface USB) - Tierra de referencia: la del PC conectado al dispositivo (pines 18 y 9, PC_GND) - Conectores: + canales analógicos: 2×conector BNC + canales digitales: conector hembra con 26 pines en total + conector USB (tipo B) - Tamaño: 110 mm×35 mm×136 mm (incluido conectores) - Peso: 420g

Un aspecto importante a comentar es el siguiente. La tierra del “MEphisto” se une directamente a la tierra del ordenador con el que esta conectado, vía USB. Si el PC utilizado es de sobremesa, a su vez la tierra del PC será la referencia de la instalación eléctrica donde se conecte y no existirá problema alguno. Ahora bien, si el PC utilizado es un portátil y está en modo autónomo (sin conexión a la red) la referencia de potencial (tierra) no está clara, ya que tendríamos como referencia un potencial flotante, y podrían ocurrir fallos. Para una seguridad mayor en la parte trasera del dispositivo existe un contacto tierra:

Fig.128: Contacto tierra MEphisto

Page 11: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 113 -

Para finalizar se muestra el diagrama de bloques del dispositivo:

Fig.129: Diagrama de bloques MEphisto

4.5.2. Disposición del sistema Dado que se van a tomar cuatro medidas de tensión analógica, cada una de ellas proporcional a la correspondiente magnitud que se requiere registrar (tensión e intensidad de descarga, desplazamiento del cabezal móvil de la prensa y fuerza desarrollada por la prensa), se necesitan dos dispositivos “MEphisto”, ya que cada uno de ellos sólo dispone de dos canales con convertidor analógico-digital. Hay que agrupar en dos y en dos las cuatro tensiones a registrar. Parece lógico agrupar por un lado, las dos medidas procedentes del dispositivo de descarga (tensión e intensidad), y por otro las dos medidas procedentes de la prensa neumática (desplazamiento y fuerza). Al “MEphisto” conectado al circuito acondicionador de la tensión e intensidad de descarga (STUD-DI) lo denominamos “MEphisto eléctrico”, y al que está conectado al circuito acondicionador de las señales procedentes del transductor de desplazamiento y de la célula de carga, nos referiremos con el nombre de “MEphisto mecánico”. En el software de control los tenemos identificados y diferenciados (número de serie). La disposición de dichos dispositivos en el sistema es la siguiente:

Page 12: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 114 -

Fig.130: Disposición del sistema

Page 13: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 115 -

4.5.3. Programa La aplicación informática que gestiona y controla el “MEphisto Scope 1 UM202”, y a su vez todo el sistema, se desarrolla en el entorno de programación “MICROSOFT VISUAL BASIC”. El programa desarrollado con este lenguaje es ejecutado mediante una macros de “MICROSOFT EXCEL”. Se selecciona este entorno informático básicamente por 3 motivos:

1. Programación sencilla. 2. Fácil gestión de resultados, gráficos, datos, etc. 3. Fácil acceso al código fuente del programa para variar parámetros, suprimir o

editar líneas de código, etc. El programa desarrollado no está cerrado y se prevén futuras modificaciones y /o mejoras. Las partes del código más destacables se muestran en el “Apéndice: Código Fuente”. Aspectos importantes a señalar, son los siguientes: - Modo seleccionado: osciloscopio. La adquisición de datos se realiza con una frecuencia de muestreo de 100 kHz (tiempo entre muestra y muestra igual a 10 microsegundos). Se realizan 1000 muestras, es decir, el tiempo de adquisición son 10 ms, en el que se registrarán los cuatro magnitudes (tiempo de descarga 5 – 6 ms aproximadamente en el que se obtienen 500 – 600 muestras, más que suficiente). - La configuración de los canales de cada MEphisto es la siguiente: * “MEphisto eléctrico”

• Intensidad Rango tensión que se registra proporcional a la intensidad de descarga: [0 V, 3.6 V]

(3

5

1.8 10I V−= ×

× y se prevén intensidades máximas del orden de 10 kA)

Valor pico – pico = 5 V Offset = +2.5 V

• Tensión Rango tensión que se registra proporcional a la tensión de descarga: [0 V,1.63 V] (90 V x 0.0181 = 1.63 V) Valor pico – pico = 2 V Offset = +1 V

Page 14: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 116 -

* “MEphisto mecánico”

• Desplazamiento Rango tensión que se registra proporcional al desplazamiento: [2.33 V, 7.80 V] Valor pico – pico = 10 V Offset = +5 V

• Carga Rango tensión que se registra proporcional a la carga: [0 V, 10 V] Valor pico –pico = 10 V Offset = +5 V

- En el software se identifican por su número de serie cada MEphisto y se le asigna la etiqueta correspondiente (“MEphisto électrico, “MEphisto mecánico”) - La hoja de parámetros a rellenar antes de realizar una experiencia C.D.E. se muestra a continuación.

Fig.131: Hoja de parámetros

Las casillas amarillas son las que se tienen que rellenar.

- El panel de botones del software desarrollado es el siguiente:

Page 15: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 117 -

Fig.132: Panel de botones

En las columnas A, B, C y D se cargan los valores en bruto de las tensiones proporcionales a la tensión de descarga, intensidad de descarga, fuerza aplicada y desplazamiento del transductor de desplazamiento, respectivamente. El botón de “Procesa Graficas” al pulsarlo, genera el evento que transforma los valores en bruto en los equivalentes reales, además de aplicar rutinas de alisamiento de curvas. - La adquisición de datos se realiza pulsando el botón de “adquiere datos”, que es el evento que: *activa la descarga eléctrica *dispara la adquisición de datos del “MEphisto eléctrico” *y activa el trigger externo del “MEphisto mecánico”, que permanecía a la espera. Esta señal de trigger externo activa la adquisición de datos de las “señales mecánicas”. 5. Protocolo de actuación El protocolo de actuación a seguir para realizar una experiencia C.D.E. se describe a continuación: - 1º: Encender el ordenador y abrir el programa de control. - 2º: Conectar los dos cables USB correspondientes a los dos “MEphisto” del sistema. - 3º: Conectar el cable de alimentación que sale de la caja que contiene la electrónica del sistema. - 4º: Comprobar la existencia de las siguientes conexiones: * Cable para alimentación del solenoide de la electroválvula. * Fijación mecánica del sensor HALL en el cable + de descarga. * Cable de la de la célula de carga. * Cable medida de tensión de descarga conectado a los electrodos. * Cable del transductor de desplazamiento.

Page 16: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 118 -

- 5º: Ajustar la presión de operación de la prensa en función de la carga que se desee aplicar (ver 4.4.) ATENCIÓN: ¡¡PRESIÓN MÁXIMA ADMISIBLE ES 5 BAR!! - 6º: Abrir la llave de paso de aire comprimido y esperar a que se estabilice la presión en la cámara de la prensa (mirar manómetro). - 7º: Encender el dispositivo de descarga y ajustar la tensión y la capacidad (ver 4.1.1. C.). Comprobar en el display que el ciclo de soldadura está en “contacto electrodo polvo”. - 8º: Rellenar en el programa los parámetros de la experiencia (ver Fig.131) - 9º: Comprobar que los interruptores en el frontal de la caja que contiene la electrónica del sistema están en: * Soldadura NO * Presión NO Y encender el interruptor basculante instalado también en el frontal de dicha caja. - 10º: Realizar las siguientes comprobaciones:

* Los cables de descarga no deben de estar enrollados para evitar crear una bobina.

* El cable del sensor HALL, fijado al cable + de descarga, debe de estar a una distancia mayor a 10 cm del cable masa de descarga. * Los cables de medida de tensión de descarga no deben estar paralelos a los cables + o masa de descarga - 11º: Ejecutar programa: * Aplicar presión si procede. * Indicar inicio de descarga eléctrica. * Procesar curvas obtenidas. 6. Experiencias de comprobación Una vez implementado el equipo experimental, se realizan algunas experiencias de comprobación y se llega a las siguientes conclusiones: - El dispositivo de descarga coloca a su salida tensiones de pico mucho menores que las que teóricamente debería poner. Esto es debido a que dicho equipo dispone de un dispositivo de control que limita la intensidad máxima. Dicho dispositivo de control es un elemento activo en serie con la batería de condensadores, que varía su resistencia en función de la tensión a la que se carga la batería de condensadores. - La intensidad de descarga se mantiene en un rango 5 - 7 kA para todo el rango de tensiones de carga (50 – 200 V).

Page 17: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 119 -

- La aplicación habitual de este dispositivo de descarga es la soldadura de pernos y la limitación de intensidad a 5 – 7 kA no es obstáculo para tal fin. En nuestra aplicación se precisan intensidades y tensiones máximas mayores, por lo que se prevén futuras soluciones técnicas. - El divisor de tensión diseñado no se utiliza para estas experiencias, ya que no se superan en ningún momento los 90 V en bornas de los electrodos. No obstante, para futuras soluciones técnicas será un elemento importante, ya que nos permitirá medir consolidaciones a más de 90 V. - El retraso que se observan en las curvas obtenidas es debido, principalmente, al tiempo de respuesta de los tiristores de salida que posee el dispositivo de descarga. - Se ha conseguido consolidar polvo con porosidad igual a la de compactación (porosidad en verde), de ahí que nuestro transductor de desplazamiento nos de un valor constante durante la descarga. Como el pistón neumático no se mueve la carga mecánica también es constante. A modo de ejemplo se muestran las curvas obtenidas para polvo de ensayo Ni T225 utilizando cables de soldadura de 25 mm2 (longitud total 5 m). Los parámetros de la experiencia son los siguientes:

- Tensión a la que se cargan los condensadores = 150 V - Capacidad = 132 mF - Carga mecánica aplicada = se ajusta la presión del aire comprimido a unos 3.37

bares que equivalen a una carga aplicada de 1000 kgf aproximadamente:

( ) 0.00337187 ( ) 0.00337187 1000 3.37operaciónP bares Q kgf kgf bares= × = × ≈

Los valores de tensión obtenidos por el canal de tensión del “MEphisto eléctrico” proporcionales a la tensión durante la descarga, se muestran en la siguiente gráfica.

-0.04

-0.02

0.00

0.02

0.04

0.06

0.08

0.10

0.12

0.14

0.16

0 2000 4000 6000 8000

Tiempo de descarga (micro_segundos)

Ten

sión

de

desc

arga

ent

re lo

s el

ectr

odos

(V

bru

tos)

Fig.133: Tensión registrada proporcional a la tensión de descarga

Page 18: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 120 -

La tensión de descarga equivalente leída se obtiene dividiendo los valores brutos entre 0.0181. En la Fig.134 se puede observar como el valor de pico son unos 7 V. La medida de esta tensión se realiza entre los electrodos que encierran al polvo. Sumándole a cada valor de tensión obtenido en la Fig.134, la tensión que cae en los cables, que es el resultado de multiplicar los valores de la intensidad de descarga (ver Fig.137) por la resistencia total de los cables + contactos (aproximadamente 8 mΩ ), se obtiene la curva que se muestra en la Fig.135.

-4

-2

0

2

4

6

8

10

0 2000 4000 6000 8000

Tiempo de descarga (micro_segundos)

Ten

sión

de

desc

arga

ent

re lo

s el

ectr

odos

(V

)

Fig.134: Tensión de descarga entre los electrodos

-10

0

10

20

30

40

50

60

70

0 2000 4000 6000 8000

Tiempo de descarga (micro_segundos)

Ten

sión

de

desc

arga

a la

sal

ida

del s

olda

dor

(V)

Fig.135: Tensión de descarga a la salida del dispositivo de descarga

Los valores de tensión obtenidos por el canal de intensidad del “MEphisto eléctrico” proporcionales a la intensidad durante la descarga, se muestran en la siguiente gráfica.

Page 19: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 121 -

-0.50

0.00

0.50

1.00

1.50

2.00

2.50

0 2000 4000 6000 8000

Tiempo de descarga (micro_segundos)

Inte

nsid

ad d

e de

scar

ga

(V b

ruto

s)

Fig.136: Tensión registrada proporcional a la intensidad de descarga

La intensidad de descarga se obtiene aplicando:

3

5

1.8 10 BRUTAI V−= ××

La intensidad máxima leída son unos 6.2 kA (ver Fig.137).

-1000.00

0.00

1000.00

2000.00

3000.00

4000.00

5000.00

6000.00

7000.00

0 2000 4000 6000 8000

Tiempo de descarga (micro_segundos)

Inte

nsid

ad d

e de

scar

ga (

A)

Fig.137: Intensidad de descarga

Multiplicando la inversa de los valores de la intensidad de descarga (Fig.137) por los valores de la tensión de descarga entre los electrodos (Fig.134), se obtiene la resistencia durante la descarga del conjunto electrodos, contacto electrodo – polvo y polvo.

Page 20: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 122 -

0

0.2

0.4

0.6

0.8

1

1.2

1.4

Res

iste

ncia

(m

ilioh

mio

s)

Fig.138: Resistencia entre los electrodos durante la descarga

Se observa como la resistencia disminuye a medida que aumenta la consolidación del polvo con la descarga. A partir de unos 5 ms los valores de resistencia obtenidos se desechan (intensidades prácticamente cero). Los valores de tensión obtenidos por el canal de desplazamiento del “MEphisto mecánico” proporcionales al movimiento axial del cabezal móvil de la prensa neumática durante la descarga, se muestran en la siguiente gráfica.

5.04

5.05

5.06

5.07

5.08

5.09

5.10

0 2000 4000 6000 8000

Tiempo de descarga (micro_segundos)

Des

plaz

amie

nto

(V b

ruto

s)

Fig.139: Tensión registrada proporcional al desplazamiento

Sabiendo que el error es de 0.01 V, este valor leído (∼ 5.07 V) es constante. Dado que la presión del aire comprimido es aproximadamente 3.37 bares (unos 1000 kgf), la fórmula a aplicar para transformar los valores de tensión en bruto en desplazamiento es:

7. 2.33( ) ( ) 2.33

70

XXV V d mm

−= × + , con XX = 80

Page 21: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 123 -

La posición del transductor de desplazamiento durante la descarga es 35.064 mm ± 0.125 mm [ ]0,70 mm∈ .

Los valores de tensión obtenidos por el canal de fuerza del “MEphisto mecánico” proporcionales a la carga mecánica aplicada por la prensa neumática durante la descarga, se muestran en la siguiente gráfica.

5.04

5.04

5.05

5.05

5.06

5.06

5.07

5.07

5.08

5.08

0 2000 4000 6000 8000

Tiempo de descarga (micro_segundos)

Car

ga a

plic

ada

(V b

ruto

s)

Fig.140: Tensión registrada proporcional a la carga mecánica

Sabiendo que el error es de 0.01 V, este valor leído (∼ 5.06 V) es constante. La presión a la que se regula el aire comprimido, previo a la experiencia, buscando aplicar unos 1000 kgf es ∼ 3.37 bares. Según, ( ) 0.5046 ( ) 0.0388V V Q kN= × − , la carga mecánica aplicada durante la descarga es 1030 kgf (g = 9.81 m/s2). 7. Presupuesto El presupuesto desglosado del proyecto se muestra a continuación: - Electrónica * Componentes y accesorios: resistencias, condensadores, diodos, reguladores, fusibles, integrados, placas, bornes, interruptores, etc 260.23 € * Fuente de alimentación ± 12 V (1 A) 83.16 € * Circuito “STUD-DI” 342 €

Page 22: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 124 -

- Neumática * Accesorios: tubos, conectores, codos, manómetro, filtros, etc 27.07 € * Electroválvula 5 vías 2 posiciones (24 V DC) 88.29 € * Prensa “PULMON MOD 200-N” 1225 € - Soldadura por pernos * Dispositivo de descarga eléctrica LSP 130 3885 € * Mangueras 63.05 € - Sensores * Transductor de desplazamiento “LT100M-Q21-LIOX3-H1141” 658.66 € * Célula de carga 20 kN “8431-20000” 1304 € - Adquisición de datos * Osciloscopio digital “MEphisto Scope 1 UM202” 557.5 € × 2 = 1115 € - Accesorios * Tornillería / ferretería 17.25 € * Bancada para prensa de madera de pino 55 € Total…………………………………………………………………… 9123.71 € + I.V.A.

Page 23: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 125 -

Apéndice: Código Fuente

Page 24: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 126 -

• Módulo FTD2XX - Declarations for functions in FTD2XX.dll: CLASSIC INTERFACE Public Declare Function FT_ListDevices Lib "FTD2XX.DLL" (ByVal arg1 As Long, ByVal arg2 As String, ByVal dwFlags As Long) As Long Public Declare Function FT_GetNumberOfDevices Lib "FTD2XX.DLL" Alias "FT_ListDevices" (ByRef arg1 As Long, ByVal arg2 As String, ByVal dwFlags As Long) As Long Public Declare Function FT_GetDeviceString Lib "FTD2XX.DLL" Alias "FT_ListDevices" (ByVal lngDeviceIndex As Long, ByVal lpszDeviceString As String, ByVal lngFlags As Long) As Long Public Declare Function FT_GetDeviceInfo Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lngFT_Type As Long, ByRef lngID As Long, ByVal pucSerialNumber As String, ByVal pucDescription As String, ByRef pvDummy As Byte) As Long Public Declare Function FT_OpenByIndex Lib "FTD2XX.DLL" Alias "FT_Open" (ByVal intDeviceNumber As Integer, ByRef lngHandle As Long) As Long Public Declare Function FT_OpenByDescription Lib "FTD2XX.DLL" Alias "FT_OpenEx" (ByVal Description As String, ByVal arg2 As Long, ByRef lngHandle As Long) As Long Public Declare Function FT_OpenBySerialNumber Lib "FTD2XX.DLL" Alias "FT_OpenEx" (ByVal SerialNumber As String, ByVal lngFlags As Long, ByRef lngHandle As Long) As Long Public Declare Function FT_Close Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long Public Declare Function FT_ReadString Lib "FTD2XX.DLL" Alias "FT_Read" (ByVal lngHandle As Long, ByVal lpszBuffer As String, ByVal lngBufferSize As Long, ByRef lngBytesReturned As Long) As Long Public Declare Function FT_ReadBytes Lib "FTD2XX.DLL" Alias "FT_Read" (ByVal lngHandle As Long, ByRef lpvBuffer As Byte, ByVal lngBufferSize As Long, ByRef lngBytesReturned As Long) As Long Public Declare Function FT_ReadIntegers Lib "FTD2XX.DLL" Alias "FT_Read" (ByVal lngHandle As Long, ByRef lpvBuffer As Integer, ByVal lngBufferSize As Long, ByRef lngBytesReturned As Long) As Long Public Declare Function FT_ReadUDT Lib "FTD2XX.DLL" Alias "FT_Read" (ByVal lngHandle As Long, ByRef lpvBuffer As Any, ByVal lngBufferSize As Long, ByRef lngBytesReturned As Long) As Long

Page 25: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 127 -

Public Declare Function FT_WriteString Lib "FTD2XX.DLL" Alias "FT_Write" (ByVal lngHandle As Long, ByVal lpszBuffer As String, ByVal lngBufferSize As Long, ByRef lngBytesWritten As Long) As Long Public Declare Function FT_WriteBytes Lib "FTD2XX.DLL" Alias "FT_Write" (ByVal lngHandle As Long, ByRef lpszBuffer As Byte, ByVal lngBufferSize As Long, ByRef lngBytesWritten As Long) As Long Public Declare Function FT_WriteIntegers Lib "FTD2XX.DLL" Alias "FT_Write" (ByVal lngHandle As Long, ByRef lpszBuffer As Integer, ByVal lngBufferSize As Long, ByRef lngBytesWritten As Long) As Long Public Declare Function FT_WriteUDT Lib "FTD2XX.DLL" Alias "FT_Write" (ByVal lngHandle As Long, ByRef lpszBuffer As Any, ByVal lngBufferSize As Long, ByRef lngBytesWritten As Long) As Long Public Declare Function FT_SetBaudRate Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal lngBaudRate As Long) As Long Public Declare Function FT_SetDataCharacteristics Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal byWordLength As Byte, ByVal byStopBits As Byte, ByVal byParity As Byte) As Long Public Declare Function FT_SetFlowControl Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal intFlowControl As Integer, ByVal byXonChar As Byte, ByVal byXoffChar As Byte) As Long Public Declare Function FT_SetDtr Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long Public Declare Function FT_ClrDtr Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long Public Declare Function FT_SetRts Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long Public Declare Function FT_ClrRts Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long Public Declare Function FT_GetModemStatus Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lngModemStatus As Long) As Long Public Declare Function FT_SetChars Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal byEventChar As Byte, ByVal byEventCharEnabled As Byte, ByVal byErrorChar As Byte, ByVal byErrorCharEnabled As Byte) As Long Public Declare Function FT_Purge Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal lngMask As Long) As Long

Page 26: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 128 -

Public Declare Function FT_SetTimeouts Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal lngReadTimeout As Long, ByVal lngWriteTimeout As Long) As Long Public Declare Function FT_GetQueueStatus Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lngRxBytes As Long) As Long Public Declare Function FT_SetBreakOn Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long Public Declare Function FT_SetBreakOff Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long Public Declare Function FT_GetStatus Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lngRxBytes As Long, ByRef lngTxBytes As Long, ByRef lngEventsDWord As Long) As Long Public Declare Function FT_SetEventNotification Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal dwEventMask As Long, ByVal pVoid As Long) As Long Public Declare Function FT_ResetDevice Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long 'Public Declare Function FT_SetDivisor Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal shDivisor) As Short 'Public Declare Function FT_GetEventStatus Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lngEventsDWord As Long) As Long Public Declare Function FT_GetBitMode Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef intData As Any) As Long Public Declare Function FT_SetBitMode Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal intMask As Byte, ByVal intMode As Byte) As Long Public Declare Function FT_SetLatencyTimer Lib "FTD2XX.DLL" (ByVal Handle As Long, ByVal pucTimer As Byte) As Long Public Declare Function FT_GetLatencyTimer Lib "FTD2XX.DLL" (ByVal Handle As Long, ByRef ucTimer As Long) As Long

- Declarations for functions in FTD2XX.dll: INTERFACE Win32 API Public Declare Function FT_W32_CreateFile Lib "FTD2XX.DLL" (ByVal lpszName As String, ByVal dwAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As LPSECURITY_ATTRIBUTES, ByVal dwCreate As Long, ByVal dwAttrsAndFlags As Long, ByVal hTemplate As Long) As Long Public Declare Function FT_W32_CloseHandle Lib "FTD2XX.DLL" (ByVal ftHandle As Long) As Long

Page 27: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 129 -

Public Declare Function FT_W32_ReadFile Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal lpszBuffer As String, ByVal lngBufferSize As Long, ByRef lngBytesReturned As Long, ByRef lpftOverlapped As lpOverlapped) As Long Public Declare Function FT_W32_WriteFile Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal lpszBuffer As String, ByVal lngBufferSize As Long, ByRef lngBytesWritten As Long, ByRef lpftOverlapped As lpOverlapped) As Long Public Declare Function FT_W32_GetOverlappedResult Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lpftOverlapped As lpOverlapped, ByRef lpdwBytesTransferred As Long, ByVal bWait As Boolean) As Long Public Declare Function FT_W32_GetCommState Lib "FTD2XX.DLL" (ByVal lngHandle, ByRef lpftDCB As FTDCB) As Long Public Declare Function FT_W32_SetCommState Lib "FTD2XX.DLL" (ByVal lngHandle, ByRef lpftDCB As FTDCB) As Long Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (ByVal lpEventAttributes As Long, ByVal bManualReset As Long, ByVal bInitialState As Long, ByVal lpName As String) As Long Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Public Declare Function SetEvent Lib "kernel32" (ByVal hHandle As Long) As Long Public Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long Public Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long - Declarations for the EEPROM-accessing functions in FTD2XX.dll: Public Declare Function FT_EraseEE Lib "FTD2XX.DLL" (ByVal lngHandle As Long) As Long Public Declare Function FT_EE_ReadEx Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lpData As FT_PROGRAM_DATA, ByVal pucManufacturer As String, ByVal pucManufacturerID As String, ByVal pucDescription As String, ByVal pucSerialNumber As String) As Long

Page 28: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 130 -

Public Declare Function FT_EE_ProgramEx Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lpData As FT_PROGRAM_DATA, ByVal pucManufacturer As String, ByVal pucManufacturerID As String, ByVal pucDescription As String, ByVal pucSerialNumber As String) As Long Public Declare Function FT_EE_UASize Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByRef lpdwSize As Long) As Long Public Declare Function FT_EE_UAWrite Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal pucData As String, ByVal dwDataLen As Long) As Long Public Declare Function FT_EE_UARead Lib "FTD2XX.DLL" (ByVal lngHandle As Long, ByVal pucData As String, ByVal dwDataLen As Long, ByRef lpdwBytesRead As Long) As Long Public Type LPSECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Public Type lpOverlapped Internal As Long InternalHigh As Long Offset As Long OffsetHigh As Long hEvent As Long End Type Public Type FTDCB DCBlength As Long 'sizeof (FTDCB) BaudRate As Long '9600 End Type - Type definition for EEPROM as equivalent for C-structure "FT_PROGRAM_DATA" Public Type FT_PROGRAM_DATA signature1 As Long '&H00000000 signature2 As Long '&HFFFFFFFF version As Long '0 VendorId As Integer '&H0403 ProductId As Integer '&H6001 Manufacturer As Long '32 "FTDI" ManufacturerId As Long '16 "FT" Description As Long '64 "USB HS Serial Converter" SerialNumber As Long '16 "FT000001" if fixed, or NULL MaxPower As Integer '0 < MaxPower <= 500

Page 29: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 131 -

PnP As Integer '0 = disabled, 1 = enabled SelfPowered As Integer '0 = bus powered, 1 = self powered RemoteWakeup As Integer '0 = not capable, 1 = capable 'Rev4 extensions: Rev4 As Byte 'true if Rev4 chip, false otherwise IsoIn As Byte 'true if in endpoint is isochronous IsoOut As Byte 'true if out endpoint is isochronous PullDownEnable As Byte true if pull down enabled SerNumEnable As Byte 'true if serial number to be used USBVersionEnable As Byte 'true if chip uses USBVersion USBVersion As Integer 'BCD (&H0200 => USB2) 'FT2232C extensions: Rev5 As Byte 'non-zero if Rev5 chip, zero otherwise IsoInA As Byte 'non-zero if in endpoint is isochronous IsoInB As Byte 'non-zero if in endpoint is isochronous IsoOutA As Byte 'non-zero if out endpoint is isochronous IsoOutB As Byte 'non-zero if out endpoint is isochronous PullDownEnable5 As Byte 'non-zero if pull down enabled SerNumEnable5 As Byte 'non-zero if serial number to be used USBVersionEnable5 As Byte 'non-zero if chip uses USBVersion USBVersion5 As Integer 'BCD &H110 = USB 1.1, BCD &H200 = USB 2.0 AlsHighCurrent As Byte 'non-zero if interface is high current BlsHighCurrent As Byte 'non-zero if interface is high current IFAlsFifo As Byte 'non-zero if interface is 245 FIFO IFAlsFifoTar As Byte 'non-zero if interface is 245 FIFO CPU target IFAlsFastSer As Byte 'non-zero if interface is Fast Serial AlsVCP As Byte 'non-zero if interface is to use VCP drivers IFBlsFifo As Byte 'non-zero if interface is 245 FIFO IFBlsFifoTar As Byte 'non-zero if interface is 245 FIFO CPU target IFBlsFastSer As Byte 'non-zero if interface is Fast Serial BIsVCP As Byte 'non-zero if interface is to use VCP drivers 'FT232R extensions UseExtOSC As Byte 'non-zero use ext osc HighDriveIOs As Byte 'non-zero to use High Drive IO's EndPointSize As Byte '64 Do not change PullDownEnableR As Byte 'non-zeero if pull down enabled SerNumEnableR As Byte 'non-zero if pull serial number enabled InvertTXD As Byte 'non-zero if invert TXD InvertRXD As Byte 'non-zero if invert RXD InvertRTS As Byte 'non-zero if invert RTS InvertCTS As Byte 'non-zero if invert CTS InvertDTR As Byte 'non-zero if invert DTR InvertDSR As Byte 'non-zero if invert DSR InvertDCD As Byte 'non-zero if invert DCD InvertRI As Byte 'non-zero if invert RI Cbus0 As Byte 'Cbus Mux control Cbus1 As Byte 'Cbus Mux control Cbus2 As Byte 'Cbus Mux control Cbus3 As Byte 'Cbus Mux control Cbus4 As Byte 'Cbus Mux control

Page 30: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 132 -

RIsVCP As Byte 'non-zero if using VCP driver End Type - FTD2XX Return codes Public Const FT_OK = 0 Public Const FT_INVALID_HANDLE = 1 Public Const FT_DEVICE_NOT_FOUND = 2 Public Const FT_DEVICE_NOT_OPENED = 3 Public Const FT_IO_ERROR = 4 Public Const FT_INSUFFICIENT_RESOURCES = 5 Public Const FT_INVALID_PARAMETER = 6 Public Const FT_INVALID_BAUD_RATE = 7 Public Const FT_DEVICE_NOT_OPENED_FOR_ERASE = 8 Public Const FT_DEVICE_NOT_OPENED_FOR_WRITE = 9 Public Const FT_FAILED_TO_WRITE_DEVICE = 10 Public Const FT_EEPROM_READ_FAILED = 11 Public Const FT_EEPROM_WRITE_FAILED = 12 Public Const FT_EEPROM_ERASE_FAILED = 13 Public Const FT_EEPROM_NOT_PRESENT = 14 Public Const FT_EEPROM_NOT_PROGRAMMED = 15 Public Const FT_INVALID_ARGS = 16 Public Const FT_NOT_SUPPORTED = 17 Public Const FT_OTHER_ERROR = 18 - FTD2XX Flags 'Flags for FT_OpenEx Public Const FT_OPEN_BY_SERIAL_NUMBER = 1 Public Const FT_OPEN_BY_DESCRIPTION = 2 'Flags for FT_ListDevices Public Const FT_LIST_BY_NUMBER_ONLY = &H80000000 Public Const FT_LIST_BY_INDEX = &H40000000 Public Const FT_LIST_ALL = &H20000000 - FTD2XX Buffer Constants Const FT_In_Buffer_Size = &H100000 ' 1024K Const FT_In_Buffer_Index = FT_In_Buffer_Size - 1 Const FT_Out_Buffer_Size = &H10000 ' 64K Const FT_Out_Buffer_Index = FT_Out_Buffer_Size – 1 - FTD2XX Constants 'FT Standard Baud Rates (See FT_SetBaudrate) Public Const FT_BAUD_300 = 300 Public Const FT_BAUD_600 = 600 Public Const FT_BAUD_1200 = 1200 Public Const FT_BAUD_2400 = 2400

Page 31: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 133 -

Public Const FT_BAUD_4800 = 4800 Public Const FT_BAUD_9600 = 9600 Public Const FT_BAUD_14400 = 14400 Public Const FT_BAUD_19200 = 19200 Public Const FT_BAUD_38400 = 38400 Public Const FT_BAUD_57600 = 57600 Public Const FT_BAUD_115200 = 115200 Public Const FT_BAUD_230400 = 230400 Public Const FT_BAUD_460800 = 460800 Public Const FT_BAUD_921600 = 921600 'FT Data Bits (See FT_SetDataCharacteristics) Public Const FT_DATA_BITS_7 = 7 Public Const FT_DATA_BITS_8 = 8 'FT Stop Bits (See FT_SetDataCharacteristics) Public Const FT_STOP_BITS_1 = 0 Public Const FT_STOP_BITS_2 = 2 'FT Parity (See FT_SetDataCharacteristics) Public Const FT_PARITY_NONE = 0 Public Const FT_PARITY_ODD = 1 Public Const FT_PARITY_EVEN = 2 Public Const FT_PARITY_MARK = 3 Public Const FT_PARITY_SPACE = 4 'FT Flow Control (See FT_SetFlowControl) Public Const FT_FLOW_NONE = &H0 Public Const FT_FLOW_RTS_CTS = &H100 Public Const FT_FLOW_DTR_DSR = &H200 Public Const FT_FLOW_XON_XOFF = &H400 'Modem Status Public Const FT_MODEM_STATUS_CTS = &H10 Public Const FT_MODEM_STATUS_DSR = &H20 Public Const FT_MODEM_STATUS_RI = &H40 Public Const FT_MODEM_STATUS_DCD = &H80 'FT Purge Commands (See FT_Purge) Public Const FT_PURGE_RX = 1 Public Const FT_PURGE_TX = 2 'FT Bit Mode (See FT_SetBitMode) Public Const FT_RESET_BITMODE = &H0 Public Const FT_ASYNCHRONOUS_BIT_BANG = &H1 Public Const FT_MPSSE = &H2 Public Const FT_SYNCHRONOUS_BIT_BANG = &H4 Public Const FT_MCU_HOST = &H8 Public Const FT_OPTO_ISOLATE = &H10

Page 32: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 134 -

'FT Notification Event Masks (See FT_SetEventNotification) Public Const FT_EVENT_RXCHAR = 1 Public Const FT_EVENT_MODEM_STATUS = 2 Public Const WAIT_ABANDONED As Integer = &H80 Public Const WAIT_FAILED As Integer = &HFFFFFFFF Public Const WAIT_OBJECT_0 As Integer = &H0 Public Const WAIT_TIMEOUT As Integer = &H102 Private Const INFINITE As Long = 1000 '&HFFFFFFFF Global hThread As Long Global hThreadID As Long Global hEvent As Long Global EventMask As Long Global lngHandle As Long - Public declarations of variables for external modules to access from FTD2XX.dll Public FT_Status As Long Public FT_Device_Count As Long Public FT_Serial_Number As String Public FT_Description As String Public FT_Handle As Long Public FT_Type As String Public FT_VID_PID As String Public FT_Current_Baud As Long Public FT_Current_DataBits As Byte Public FT_Current_StopBits As Byte Public FT_Current_Parity As Byte Public FT_Current_FlowControl As Long Public FT_Current_XOn_Char As Byte Public FT_Current_XOff_Char As Byte Public FT_ModemStatus As Long Public FT_RxQ_Bytes As Long Public FT_TxQ_Bytes As Long Public FT_EventStatus As Long Public FT_Event_On As Boolean Public FT_Error_On As Boolean Public FT_Event_Value As Byte Public FT_Error_Value As Byte Public FT_In_Buffer(FT_In_Buffer_Index) As Byte Public FT_Out_Buffer(FT_Out_Buffer_Index) As Byte Public FT_Latency As Byte Public FT_EEPROM_DataBuffer As FT_PROGRAM_DATA Public FT_EEPROM_Manufacturer As String Public FT_EEPROM_ManufacturerID As String Public FT_EEPROM_Description As String Public FT_EEPROM_SerialNumber As String Public FT_UA_Size As Long

Page 33: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 135 -

Public FT_UA_Data() As Byte

• Módulo Mephisto

'Declara función de espera (Función Api Sleep Para generar una espera o retardo de tiempo) Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Ejemplo de uso 'Sleep 1500 'Hacemos una pausa de 1.5 segundos 'El tamaño de esta estructura = 11*4(single) + 4*4(long)= 60 bytes Public Const TamañoPL As Byte = 60 Public Type TipoParámetrosLectura AmplitudeC0 As Single AmplitudeC1 As Single OffsetC0 As Single OffsetC1 As Single NullpointCorrectionC0 As Single NullpointCorrectionC1 As Single TimeBase As Single MemoryDepth As Single TriggerPoint As Single TriggerChannel As Long TriggerType As Long UpperTriggerLevel As Single LowerTriggerLevel As Single DataGPIO As Long DirInfoGPIO As Long End Type 'El tamaño de esta estructura = 4 (string) + 9*4(single) + 4*4(long)= 56 bytes Public Const TamañoPE As Byte = 56 Public Type TipoParámetrosEscritura CommandID As String * 4 AmplitudeC0 As Single AmplitudeC1 As Single OffsetC0 As Single OffsetC1 As Single TimeBase As Single MemoryDepth As Single TriggerPoint As Single TriggerChannel As Long TriggerType As Long UpperTriggerLevel As Single LowerTriggerLevel As Single DataGPIO As Long DirInfoGPIO As Long End Type

Page 34: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 136 -

'El tamaño de esta estructura = 4 (string) + 2*4(long)= 12 bytes Public Const TamañoPt As Byte = 12 Public Type TipoPuerto CommandID As String * 4 DataGPIO As Long '24 bit data DirInfoGPIO As Long '24 bit direction information End Type 'Para identificar los dispositivos Public Type TipoInfo Ident As Long 'número de identificación asignado por el sistema Descr As String 'descripción asignada por el sistema Número As String 'número de serie Tipo As String 'tipo de dispositivo VidPid As String 'ni idea de lo que es End Type

• Hoja Adquisición Option Explicit Dim PE() As TipoParámetrosEscritura Dim PL() As TipoParámetrosLectura Dim NúmDispositivos As Long Dim Identificador() As Long Dim Mecánico As Long Dim Eléctrico As Long Dim HayPresión As Boolean Dim Mensaje As String Dim AbiertasCOM As Boolean Function CuentaNúmeroDispositivos(NúmDisp As Long) As Boolean Dim Estado As Long Estado = FT_GetNumberOfDevices(NúmDisp, vbNullChar, FT_LIST_BY_NUMBER_ONLY) If Estado <> FT_OK Then CuentaNúmeroDispositivos = False Mensaje = "No se han podido contar los dispositivos conectados." Else CuentaNúmeroDispositivos = True Mensaje = "Número de dispositivos encontrados: " & NúmDisp End If End Function

Page 35: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 137 -

Function AbreDispositivoPorÍndice(n As Byte, Ident As Long) As Boolean ' Obtiene un Identificador del n-ésimo dispositivo conectado. ' Este identificador será requerido como primer parámetro de todas las ' funciones subsiguientes. Dim Estado As Long Dim NúmeroSerie As String Estado = FT_OpenByIndex(n, Ident) If Estado = FT_OK Then 'You may always check the status to ensure reliable communication. 'We omit this subsequently in favour of clarity. NúmeroSerie = ObtieneNúmeroSerie(Ident) If NúmeroSerie <> "" Then Mensaje = "" AbreDispositivoPorÍndice = True 'Reconoce dispositivo If NúmeroSerie = "ME0300CD" Then Mecánico = Ident ElseIf NúmeroSerie = "ME0203C7" Then 'anterior "ME0300D1" Eléctrico = Ident End If Else AbreDispositivoPorÍndice = False Mensaje = "Error al leer el número de serie del dispositivo: " & n End If Else AbreDispositivoPorÍndice = False Mensaje = "Error al abrir el dispositivo: " & n End If End Function Function IniciaModoOsciloscopio(Ident As Long) As Boolean ' Envía el comando '*SMd' ('SetMode') al dispositivo. ' Este comando consiste en los 4 bytes del comando ID '*SMd' ' seguidos de otros 4 bytes para el modo ID 'OSA0'. ' Este parámetro debe interpretarse como un entero sin signo ' y debe ser enviado al revés. Dim NúmBytesEscritos As Long Dim NúmBytesLeídos As Long Dim Estado As Boolean Dim Modo As String Dim númcar As Long

Page 36: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 138 -

Dim comodín As Long 'Purga dispositivo Estado = FT_Purge(Ident, FT_PURGE_RX Or FT_PURGE_TX) 'Escribe datos Modo = Space(4) Estado = FT_WriteString(Ident, "*SMd0ASO", 8, NúmBytesEscritos) If Estado = FT_OK And NúmBytesEscritos = 8 Then 'Espera la respuesta Estado = FT_GetQueueStatus(Ident, númcar) 'Segunda comprobación Estado = FT_ReadString(Ident, Modo, 4, NúmBytesLeídos) Modo = Trim(Modo) 'Modo = Left(Modo, InStr(1, Modo, vbNullChar) - 1) If Estado = FT_OK And Modo = "0ASO" Then IniciaModoOsciloscopio = True Mensaje = "" Else IniciaModoOsciloscopio = False Mensaje = "Error al establecer el modo de Osciloscopio en equipo " & NombreDisp(Ident) End If Else IniciaModoOsciloscopio = False Mensaje = "Error al establecer el modo de Osciloscopio en equipo " & NombreDisp(Ident) End If End Function Function EnvíaParámetros(Ident As Long) As Boolean ' Envía el comando '*SWr' ('SetupWrite') al dispositivo. ' Este comando se envía en la forma de un UDT TipoParámetrosEscritura Dim NúmBytesEscritos As Long Dim NúmBytesLeídos As Long Dim Estado As Boolean Dim índice As Byte 'Carga los parámetros a escribir en el osciloscopio índice = BuscaÍndice(Ident) If índice = 0 Then 'osciloscopio eléctrico PE(0).CommandID = "*SWr" ' Comando ID "*SWr" PE(0).AmplitudeC0 = 2# ' Amplitud 2 V --> C0 es la TENSION PE(0).AmplitudeC1 = 5# ' Amplitud 10 V --> C1 es la INTENSIDAD PE(0).OffsetC0 = 1# ' Offset PE(0).OffsetC1 = 2.5# ' Offset

Page 37: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 139 -

PE(0).TimeBase = 0.00001 ' Periodo entre muestras (=1/Ritmo_de_muestreo, 100 kHz) PE(0).MemoryDepth = 5000# ' Adquiere 1000 valores por cada canal (50 ms) 'PE(0).TriggerPoint = 20# ' 20% -> 200 Valores pre-trigger, 800 Valores post-trigger 'PE(0).TriggerChannel = 1 ' Usa canal 1 para trigger 'PE(0).TriggerType = 1 ' Nivel - Flanco positivo 'PE(0).UpperTriggerLevel = 5 ' Nivel de Trigger 'PE(0).LowerTriggerLevel = 0# ' No utilizado con este tipo de trigger PE(0).DataGPIO = 1 ' Activa descarga PE(0).DirInfoGPIO = 1 ' Activa descarga Else 'osciloscopio mecánico PE(1).CommandID = "*SWr" ' Comando ID "*SWr" PE(1).AmplitudeC0 = 10# ' Amplitud 5 V PE(1).AmplitudeC1 = 10# ' Amplitud 5 V PE(1).OffsetC0 = 5# ' Offset = V PE(1).OffsetC1 = 5# ' Offset = V PE(1).TimeBase = 0.00001 ' Periodo entre muestras (=1/Ritmo_de_muestreo, 100 kHz) PE(1).MemoryDepth = 5000# ' Adquiere 5000 valores por cada canal 'PE(1).TriggerPoint = 20# ' 20% -> 200 Valores pre-trigger, 800 Valores post-trigger 'PE(1).TriggerChannel = 1 ' Usa canal 1 para trigger 'PE(1).TriggerType = 1 ' Nivel - Flanco positivo 'PE(1).UpperTriggerLevel = 5 ' Nivel de Trigger 'PE(1).LowerTriggerLevel = 0# ' No utilizado con este tipo de trigger PE(1).DataGPIO = 1 ' Activa Presión PE(1).DirInfoGPIO = 1 ' Activa Presión End If Estado = FT_WriteUDT(Ident, PE(índice), TamañoPE, NúmBytesEscritos) If Estado = FT_OK And TamañoPE = NúmBytesEscritos Then 'Segunda comprobación ' Lee la respuesta del dispositivo. Esto es necesario porque ' Los valores que realmente adopta el dispositivo pueden ' no coincidir exactamente con los enviados. Por tanto, ' utilice siempre los valores devueltos para postprocesar las medidas. ' Los parámetros son devueltos agrupados en una estructura 'TipoParámetrosLectura'. Estado = FT_ReadUDT(Ident, PL(índice), TamañoPL, NúmBytesLeídos) If Estado = FT_OK And TamañoPL = NúmBytesLeídos Then EnvíaParámetros = True Mensaje = "" Else EnvíaParámetros = False Mensaje = "Error al establecer el modo 'Osciloscopio' en el dispositivo: " & NombreDisp(Ident) End If

Page 38: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 140 -

Else EnvíaParámetros = False Mensaje = "Error al establecer los parámetros del osciloscopio : " & NombreDisp(Ident) End If End Function Function LeeDatosAdquiridos(Ident As Long) As Boolean 'Envía el comando '*RUN' al dispositivo. 'Este comando consiste en sólo 4 bytes para el comando ID '*RUN' Dim Estado As Long Dim NúmBytesEscritos As Long Dim NúmBytesLeídos As Long Dim TotalBytes As Long Dim índice As Byte Dim Búfer() As Integer índice = BuscaÍndice(Ident) TotalBytes = 4 * PL(índice).MemoryDepth '.MemoryDepth = nº_datos/canal (hay 2 canales) ReDim Búfer(0 To TotalBytes - 1) 'Damos la orden de inicio de adquisición Estado = FT_WriteString(Ident, "*RUN", 4, NúmBytesEscritos) If Estado <> FT_OK Or NúmBytesEscritos <> 4 Then LeeDatosAdquiridos = False Mensaje = "No se ha podido iniciar la adquisición." Exit Function End If 'Leemos los datos adquiridos desde el dispositivo Estado = FT_ReadIntegers(Ident, Búfer(0), TotalBytes, NúmBytesLeídos) If Estado <> FT_OK Or NúmBytesLeídos <> TotalBytes Then LeeDatosAdquiridos = False Mensaje = "La recepción de datos ha fallado." Exit Function End If 'Extrae datos codificados Dim i As Long, j As Long, col As Long, fin As Long Dim c0 As Long, c1 As Long Dim V0 As Double, V1 As Double fin = TotalBytes / 2 - 2 For i = 0 To fin Step 2 'Línea actual de escritura

Page 39: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 141 -

j = 2 + i \ 2 'Lee canal 0 c0 = Búfer(i + 1): If c0 < 0 Then c0 = c0 + 65536 '65536 = 2^16 'Lee canal 1 c1 = Búfer(i): If c1 < 0 Then c1 = c1 + 65536 'Acondiciona datos (32768 = 65536/2) V0 = (CDbl(c0) / 32768# - 1) * PL(índice).AmplitudeC0 / 2 + PL(índice).OffsetC0 - PL(índice).NullpointCorrectionC0 V1 = (CDbl(c1) / 32768# - 1) * PL(índice).AmplitudeC1 / 2 + PL(índice).OffsetC1 - PL(índice).NullpointCorrectionC1 'Escribe valores acondicionados If Ident = Eléctrico Then col = 1 Else col = 3 Cells(j, col).Value = V0 Cells(j, col + 1).Value = V1 'Eléctrico: V0 (canal 1) = tensión , V1 (canal 2) = Intensidad 'Mecánico: V0 (canal 1) = fuerza , V1 (canal 2) = desplazamiento Next LeeDatosAdquiridos = True Mensaje = "" End Function Function ActivaPresión() As Bolean Dim NúmBytesEscritos As Long Dim Ok As Byte Dim Puerto As TipoPuerto 'Configura el puerto Puerto.CommandID = "*IOW" Puerto.DataGPIO = 1 ' "1" = "00000001" => pin 0 a 1; el resto a 0 Puerto.DirInfoGPIO = 1 ' 1 = salida , 0 = entrada 'Escribe datos en el puerto Ok = FT_WriteUDT(Mecánico, Puerto, TamañoPt, NúmBytesEscritos) If Ok <> FT_OK Or NúmBytesEscritos <> TamañoPt Then ActivaPresión = False Mensaje = "No se ha podido activar la presión." Else ActivaPresión = True Mensaje = "" End If End Function Function DesactivaPresión() As Boolean

Page 40: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 142 -

Dim NúmBytesEscritos As Long Dim Ok As Byte Dim Puerto As TipoPuerto 'Configura el puerto Puerto.CommandID = "*IOW" Puerto.DataGPIO = 0 ' "0" = "00000000" => pin 0 a 0; el resto tb a 0 Puerto.DirInfoGPIO = 1 ' 1 = salida , 0 = entrada 'Escribe datos en el puerto Ok = FT_WriteUDT(Mecánico, Puerto, TamañoPt, NúmBytesEscritos) If Ok <> FT_OK Or NúmBytesEscritos <> TamañoPt Then DesactivaPresión = False Mensaje = "No se ha podido activar la presión." Else DesactivaPresión = True Mensaje = "" End If End Function Function ActivaDescarga() As Boolean Dim NúmBytesEscritos As Long Dim Ok As Byte Dim Puerto As TipoPuerto 'Configura el puerto para activar Puerto.CommandID = "*IOW" Puerto.DataGPIO = 1 ' "1" = "00000001" => pin 0 a 1; el resto a cero Puerto.DirInfoGPIO = 1 ' 1 = salida , 0 = entrada 'Escribe datos en el puerto Ok = FT_WriteUDT(Eléctrico, Puerto, TamañoPt, NúmBytesEscritos) If Ok <> FT_OK Or NúmBytesEscritos <> TamañoPt Then ActivaDescarga = False Mensaje = "No se ha podido activar la descarga." Else ActivaDescarga = True Mensaje = "" End If End Function Function DesActivaDescarga() As bolean Dim NúmBytesEscritos As Long

Page 41: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 143 -

Dim Ok As Byte Dim Puerto As TipoPuerto 'Configura el puerto para desactivar Puerto.CommandID = "*IOW" Puerto.DataGPIO = 0 ' "0" = "00000000" => pin 0 a 0; el resto tb a cero Puerto.DirInfoGPIO = 1 ' 1 = salida , 0 = entrada 'Escribe datos en el puerto Ok = FT_WriteUDT(Eléctrico, Puerto, TamañoPt, NúmBytesEscritos) If Ok <> FT_OK Or NúmBytesEscritos <> TamañoPt Then DesActivaDescarga = False Mensaje = "No se ha podido desactivar la descarga." Else DesActivaDescarga = True Mensaje = "" End If End Function Function EscribePuerto(Ident As Long, Puerto As TipoPuerto) As Bolean Dim NúmBytesEscritos As Long Dim Ok As Byte Ok = FT_WriteUDT(Ident, Puerto, TamañoPt, NúmBytesEscritos) If Ok <> FT_OK Or NúmBytesEscritos <> TamñoPt Then EscribePuerto = False Mensaje = "No se ha podido escribir en el puerto: " & NombreDisp(Ident) Else EscribePuerto = True Mensaje = "" End If End Function Function CierraDispositivo(Ident As Long) As Boolean Dim Estado As Long 'Cierra el dispositivo 'Identificador' Estado = FT_Close(Ident) If Estado <> FT_OK Then CierraDispositivo = False Mensaje = "No se ha podido cerrar el dispositivo: " & NombreDisp(Ident) Else CierraDispositivo = True Mensaje = "" End If

Page 42: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 144 -

End Function Function BuscaÍndice(Ident As Long) As Byte If Ident = Eléctrico Then BuscaÍndice = 0 'eléctrico Else BuscaÍndice = 1 'mecánico End If End Function Function ObtieneNúmeroSerie(Ident As Long) As String Dim Ok As Long Dim ID As Long Dim NúmSerie As String Dim Description As String Dim Tipo As Long NúmSerie = Space(16) Description = Space(64) Ok = FT_GetDeviceInfo(Ident, Tipo, ID, NúmSerie, Description, 0) If Ok <> FT_OK Then Mensaje = "Error al obtener el número de serie del dispositivo de indentificador: " & Ident Exit Function End If Mensaje = "" ObtieneNúmeroSerie = Left(NúmSerie, InStr(1, NúmSerie, vbNullChar) - 1) 'Trim(NúmSerie) End Function Function NombreDisp(Ident As Long) As String If Ident = Eléctrico Then NombreDisp = "Eléctrico" ElseIf Ident = Mecánico Then NombreDisp = "Mecánico" Else NombreDisp = "Desconocido" End If End Function

Page 43: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 145 -

- Gestión de eventos Private Sub AbreCom_Click() Dim Ok As Boolean Dim i As Byte Ok = CuentaNúmeroDispositivos(NúmDispositivos) If Ok = False Then Exit Sub If NúmDispositivos = 0 Then Range("H3").Value = "No se han encontrado dispositivos." AbiertasCOM = False Exit Sub End If Range("H3").Value = Mensaje ReDim Identificador(0 To 1) As Long For i = 0 To NúmDispositivos - 1 Ok = AbreDispositivoPorÍndice(i, Identificador(i)) If Ok = False Then Range("H3").Value = Mensaje AbiertasCOM = False Exit Sub End If Next 'Todo bien Beep If NúmDispositivos = 1 Then Range("H3").Value = "Abierto el dispositivo encontrado." Else Range("H3").Value = "Abiertos los " & NúmDispositivos & " dispositivos encontrados." End If AbiertasCOM = True ReDim PE(0 To NúmDispositivos - 1) ReDim PL(0 To NúmDispositivos - 1) End Sub Private Sub BtPresión_Click() Dim Ok As Boolean If BtPresión.Caption = "Activa Presión" Then If Worksheets("Parámetros").Range("E11").Value = "SÍ" Then

Page 44: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 146 -

Ok = ActivaPresión If Ok = True Then 'Actualiza la variable de estado HayPresión = True 'Cambia etiqueta del botón BtPresión.Caption = "Desactiva Presión" DoEvents End If Range("H15").Value = Mensaje End If Else Ok = DesactivaPresión If Ok = True Then 'Actualiza la variable de estado HayPresión = False 'Cambia etiqueta del botón BtPresión.Caption = "Activa Presión" DoEvents End If Range("H15").Value = Mensaje End If End Sub Private Sub CierraCom_Click () Dim i As Byte Dim Ok As Boolean If NúmDispositivos = 0 Then Exit Sub For i = 0 To NúmDispositivos - 1 Ok = CierraDispositivo(Identificador(i)) If Ok = False Then Range("H3").Value = Mensaje Exit Sub End If Next 'Todo bien Beep If NúmDispositivos = 1 Then Range("H3").Value = "Cerrado el dispositivo que estaba abierto." Else Range("H3").Value = "Cerrados los " & NúmDispositivos & " dispositivos que estaban abiertos."

Page 45: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 147 -

End If AbiertasCOM = False End Sub Private Sub AdquiereDatos_Click() Dim Ok As Boolean Dim valor As Long 'Comprueba si están aún no están abiertas las comunicaciones If AbiertasCOM = False Then Mensaje = "Abra las comunicaciones antes de adquirir datos" Range("H8").Value = Mensaje Exit Sub End If 'Pone en modo osciloscopio el dispositivo 'Eléctrico' Ok = IniciaModoOsciloscopio(Eléctrico) If Ok = False Then Range("H8").Value = Mensaje Exit Sub End If 'Pone en modo osciloscopio el dispositivo 'Mécánico' If HayPresión Then Ok = IniciaModoOsciloscopio(Mecánico) If Ok = False Then Range("H8").Value = Mensaje Exit Sub End If End If 'Envía parámetros de adquisición al osciloscopio 'Eléctrico' Ok = EnvíaParámetros(Eléctrico) If Ok = False Then Range("H8").Value = Mensaje Exit Sub End If 'Envía parámetros de adquisición al osciloscopio 'Mecánico' If HayPresión Then Ok = EnvíaParámetros(Mecánico) If Ok = False Then Range("H8").Value = Mensaje Exit Sub End If End If

Page 46: 4.4. Calibración y cálculo de erroresbibing.us.es/proyectos/abreproy/4768/fichero/02_MEMORIA%2F02_MEMORIA0… · “MICROSOFT EXCEL”. 4.5.1. MEphisto Scope 1 UM202 “MEphisto

- 148 -

Beep 'Todo bien 'Lee los datos adquiridos Range("A2:D500").ClearContents Range("H8").Value = "Recibiendo datos desde dispositivos..." Ok = LeeDatosAdquiridos(Eléctrico) If Ok = False Then Range("H8").Value = Mensaje Exit Sub End If If HayPresión Then Ok = LeeDatosAdquiridos(Mecánico) If Ok = False Then Range("H8").Value = Mensaje Exit Sub End If End If Range("H8").Value = "Datos Recibidos." Beep 'Todo bien 'Desactiva Descarga Ok = DesActivaDescarga() Range("H8").Value = Mensaje 'Desactiva Presión (esperando el tiempo fijado para forja) valor = Worksheets("Parámetros").Range("J11").Value * 1000 Sleep valor BtPresión_Click 'Cierra comunicaciones CierraCom_Click End Sub