Note

Programas con interfaz gráfica descritos en los capítulos anteriores están previstos para un conjunto determinado de experimentos. Para desarrollar nuevas experiencias, uno debe saber cómo acceder a las funcionalidades de expEYES por software. Llamadas de funciones importantes para comunicarse con el dispositivo se dan a continuación.

Establecer la conexión

Para acceder al hardware EYES17, los módulos Python para eyes17 debe estar instalado Se supone que están en un directorio denominado eyes17, que podría estar en su directorio personal o sobre « Python PATH ».

Todos los programas deben comenzar con las siguientes dos líneas:

System Message: WARNING/2 (_sources/9.0.rst, line 20)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   import eyes17.eyes
   p = eyes17.eyes.open()

La variable p es el objeto de software que representa el hardware.

Las siguientes secciones explican las llamadas a la función Python para acceder al hardware EYES17. Cada llamada a la función se explica con un ejemplo de uso.

set_pv1(v), set_pv2(v)

Ajusta el voltaje de CC en PV1 y PV2. El intervalo para PV1 es de -5 a 5. El intervalo para PV2 est de -3,3 a 3,3.

System Message: WARNING/2 (_sources/9.0.rst, line 37)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.set_pv1(4)
   print p.set_pv2(2.1)

Se muestra el valor asignado a la salida. Medir los voltajes con un voltímetro

get_voltage(entrada)

Devuelve el voltaje de la entrada especificada.

System Message: WARNING/2 (_sources/9.0.rst, line 50)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.get_voltage('A1')
   print p.get_voltage('A2')
   print p.get_voltage('A3')
   print p.get_voltage('MIC')
   print p.get_voltage('SEN')

Conectar PV1 en A1, y utilizar set_pv1() y get_voltage('A1') juntos. Esta función ajusta la plantilla de entrada por prueba y error, dependiendo del valor de la señal de entrada..

get_voltage_time(entrada)

Devuelve una tupla, que contiene el sello de fecha de la computadora y el voltaje en la entrada especificada..

System Message: WARNING/2 (_sources/9.0.rst, line 68)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.get_voltage_time('A1')


get_resistance()

Devuelve el valor de la resistencia conectada en SEN, que debería ser entre 100Ω y 100kΩ para una precisión razonable.

..code-block:: python

print p.get_resistance()

get_capacitance()

Devuelve el valor de la capacidad conectada en IN1 (funciona bien en el dominio de pF)

System Message: WARNING/2 (_sources/9.0.rst, line 90)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.get_capacitance()


get_version()

Devuelve la versión del firmware.

System Message: WARNING/2 (_sources/9.0.rst, line 100)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.get_version()

get_temperature()

Devuelve la temperatura del procesador dentro de EYES17

System Message: WARNING/2 (_sources/9.0.rst, line 109)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.get_temperature()


set_state(SALIDA=valor)

Establece el estado lógico de la salida OD1, SQ1, etc. Conectar OD1 en A1 y lanzar :

System Message: WARNING/2 (_sources/9.0.rst, line 120)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   p.set_state(OD1=1)
   print p.get_voltage('A1')


set_sine(frecuencia)

Genera la señal sinusoidal de la frecuencia solicitada en WG (intervalo de 5Hz a 5000Hz). Todos los valores intermedios no son posibles, la función devuelve el valor realmente adoptado.

System Message: WARNING/2 (_sources/9.0.rst, line 133)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.set_sine(502)

502.00803

set_sine_amp(amplitud)

La amplitud se puede establecer en tres valores de voltaje preestablecidos en las cresta (0 para tener 80mV, 1 para tener 1V, 3 para tener 3V).

System Message: WARNING/2 (_sources/9.0.rst, line 145)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   p.set_sine_amp(2)

Ajusta la amplitud en 3V cresta.

set_sqr1(frecuencia)

Ajusta la frecuencia de la salida SQ1 (intervalo de 4Hz en 1MHz). Todos los valores intermedios no son posibles, la función devuelve el valor realmente adoptado.

System Message: WARNING/2 (_sources/9.0.rst, line 158)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.set_sqr1(15030)

15030.53

set_sqr1_slow(frecuencia)

Ajusta la frecuencia de la salida SQ1 (intervalo de 0, 1Hz a 1MHz). Todos los valores intermedios no son posibles, la función devuelve el valor realmente adoptado. La resolución está bien, pero WG está deshabilitado cuando se ordena SQ1 de esta manera.

System Message: WARNING/2 (_sources/9.0.rst, line 172)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.set_sqr1_slow(0.5)


set_sqr2(frecuencia)

Similar a set_sqr1() pero SQ2 no está disponible al mismo tiempo que WG, sólo se puede usar una de las dos salidas a la vez.

set_sqr1(frecuencia, cicloDeTrabajo)

Ajusta la frecuencia de la salida SQ1 (intervalo de 0, 1Hz a 1MHz). Todos los valores intermedios no son posibles, la función devuelve el valor realmente adoptado.

System Message: WARNING/2 (_sources/9.0.rst, line 190)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.set_sqr1(1000, 30)          #1000 Hz, ciclo de trabajo 30%


get_freq(entrada)

Mide la frecuencia de una señal cuadrada en la entrada, IN2 o SEN. Conectar SQ1 en IN2 e iniciar el código:

System Message: WARNING/2 (_sources/9.0.rst, line 201)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   p.set_sqr1(1000)
   print p.get_freq('IN2')


duty_cycle(entrada)

Mide el ciclo de trabajo de una onda cuadrada, IN2 oo SEN. Conectar SQ1 en IN2 y lanzar el còdigo :

System Message: WARNING/2 (_sources/9.0.rst, line 213)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   p.set_sqr1(1000, 30)
   print p.duty_cycle('IN2')


r2ftime(entrada1, entrada2)

Mide el intervalo de tiempo entre un flanco ascendente en la entrada1 hasta un flanco descendente en la entrada2, las entradas pueden ser las mismas. Se puede usar para probar una onda cuadrada.

Conectar SQ1 en IN2 y lanzar el código :

System Message: WARNING/2 (_sources/9.0.rst, line 228)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   p.set_sqr1(1000, 30)
   print p.r2ftime('IN2', 'IN2')

0.0003

La señal cuadrada en 1kHz y permanece en el estado ALTO durante 0, 3ms.

multi_r2rtime(entrada, nCiclos)

Mide el intervalo de tiempo entre dos bordes ascendentes de la entrada entrada. La duración entre dos bordes ascendentes es un ciclo. Se puede especificar el número de ciclos a medir, el valor predeterminado es 1. Los valores permitidos son 1,2,4,8,12,16,32 y 48. Esto se puede probar con una señal cuadrada.

Conectar SQ1 en IN2 y lanzar el código :

System Message: WARNING/2 (_sources/9.0.rst, line 249)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   p.set_sqr1(1000)
   print p.multi_r2rtime('IN2', 8)

0.008

select_range(canal, calibre)

Los calibres para A1 y A2 se pueden ajustar desde ±0.5V hasta ±16V, utilizando amplificadores de ganancia programables.

System Message: WARNING/2 (_sources/9.0.rst, line 262)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   p.select_range('A1', 4)         # 4 volt maximum
   p.select_range('A1', 8)         # 8 volt maximum


capture1(entrada, nMuestras, intervaloTiempo)

Escanea la entrada especificada. El número de muestras puede subir hasta 10000. La duración entre dos muestras consecutivas se da en microsegundos (intervalo de 2 a 1000μs).

System Message: WARNING/2 (_sources/9.0.rst, line 275)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   print p.capture1('A1', 5, 5)

mostrará dos tablas de fechas y voltajes.

Cuando necesite crear un gráfico del voltaje de salida para una mejor comprensión, puede hacerlo utilizando el módulo matplotlib, importado a través de la interfaz pylab. Conectar WG en A1 con la ayuda un hilo y tirar :

System Message: WARNING/2 (_sources/9.0.rst, line 286)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   from pylab import *
   p.set_sine_amp(2)
   p.set_sine(1000)
   p.select_range('A1', 4)
   t,v = p.capture1('A1', 300, 10)
   plot(t,v)
   show()

El resultado de este código se da a continuación.

pics/sine-mpl-screen.png

capture2(nMuestras, intervaloTiempo)

Escanea las entradas A1 y A2 simultáneamente. El número de muestras puede ser de hasta 10000. La duración entre dos muestras consecutivas se da en microsegundos (intervalo de 2 a 1000μs).

Conectar WG en A1, y un diodo entre A1 y A2. Iniciar el siguiente código :

System Message: WARNING/2 (_sources/9.0.rst, line 311)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   from pylab import *
   p.set_sine_amp(2)
   p.set_sine(1000)
   p.select_range('A1', 4)
   t,v,tt,vv = p.capture2(300, 10)
   plot(t,v)
   plot(tt,vv)
   show()

El resultado de este código se da a continuación.

pics/halfwave-mpl-screen.png

capture4(nMuestras, intervaloTiempo)

Escanea las entradas A1, A2, A3 y MIC simultáneamente. El número de muestras puede ser de hasta 10000. La duración entre dos muestras consecutivas se da en microsegundos (intervalo de 2 a 1000μs).

Conectar WG en A3 e inicie el código que figura a continuación. El resultado se muestra a continuación.

System Message: WARNING/2 (_sources/9.0.rst, line 337)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   from pylab import *
   p.set_sine_amp(2)
   p.set_sine(1000)
   p.select_range('A1', 4)
   res = p.capture4(300, 10)
   plot(res{[}4{]},res{[}5{]})        # A3
   plot(res{[}6{]},res{[}7{]})        # MIC
   show()


set_wave(frecuencia, tipoDeSenal)

Si el parámetro tipoDeSenal no está especificado, esto genera una signal señal utilizando la tabla de ondas existente. Si tipoDeSenal está especificada 'sine' ou 'tria', la tabla de onda correspondiente está cargada.

System Message: WARNING/2 (_sources/9.0.rst, line 357)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   from pylab import *
   p.set_wave(1000, 'sine')
   p.set_wave(100)          # frec. 100Hz con la tabla corriente
   x,y = p.capture1('A1', 500,50)
   plot(x,y)
   p.set_wave(100, 'tria')  # tabla de onda triangular y 100 Hz
   x,y = p.capture1('A1', 500,50)
   plot(x,y)
   show()


load_equation(funcion, intervalo)

Crea la tabla de ondas usando la ecuación. Conecte WG a A1 e inicia el código siguiente. El resultado se muestra a continuación.

System Message: WARNING/2 (_sources/9.0.rst, line 376)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   from pylab import *

   def f1(x):
       return sin(x) + sin(3*x)/3

   p.load_equation(f1, [-pi,pi])
   p.set_wave(400)
   x,y = p.capture1('A1', 500,10)
   plot(x,y)
   show()


load_table(tabla)

También puede cargar la tabla de ondas con una matriz de 512 elementos. Conecte WG a A1 e inicie el código a continuación. Después de la operación de valor absoluto, la tabla comienza con 256, luego baja a 0 y finalmente vuelve a 255, que dibuja una señal triangular. El resultado debido a esta tabla se muestra arriba.

System Message: WARNING/2 (_sources/9.0.rst, line 399)

Cannot analyze code. Pygments package not found.

.. code-block:: python

   from pylab import *
   x = arange(-256, 256)
   x = abs(x)
   p.load_table(x)
   p.set_wave(400)
   x,y = p.capture1('A1', 500, 10)
   plot(x,y)
   show()


pics/load-equation-mpl-screen.png pics/load-table-mpl-screen.png