control de un multímetro digital mediante python

67
Trabajo de Final de Grado Grado en Ingeniería en Tecnologías Industriales Control de un multímetro digital mediante python MEMORIA Autor: Ana Aragonés Director: Manuel Moreno Eguílaz Convocatoria: Junio 2021 Escola Tècnica Superior d’Enginyeria Industrial de Barcelona

Upload: others

Post on 23-Jul-2022

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Control de un multímetro digital mediante python

Trabajo de Final de Grado

Grado en Ingeniería en Tecnologías Industriales

Control de un multímetro digital mediante

python

MEMORIA

Autor: Ana Aragonés Director: Manuel Moreno Eguílaz Convocatoria: Junio 2021

Escola Tècnica Superior d’Enginyeria Industrial de Barcelona

Page 2: Control de un multímetro digital mediante python

Pág. 2 Memoria

Page 3: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 3

Sumario

1. SUMARIO _________________ ¡ERROR! MARCADOR NO DEFINIDO.

2. PREFACIO _______________________________________________ 7

2.1. Origen del proyecto ........................................................................................ 7

2.2. Motivación ...................................................................................................... 7

2.3. Requerimientos previos .................................................................................. 8

3. INTRODUCCIÓN __________________________________________ 9

3.1. Objetivos del proyecto .................................................................................... 9

3.2. Alcance del proyecto ...................................................................................... 9

4. PREPARACIÓN PREVIA ___________________________________ 10

4.1. National Instruments..................................................................................... 10

4.1.1. Instrumentación Virtual vs Instrumentación Tradicional .................................. 12

4.1.2. Ventajas de automatizar las mediciones ......................................................... 14

4.2. PyVISA ......................................................................................................... 15

4.3. Equipo Utilizado............................................................................................ 17

4.4. Bus USB: Universal Serial Bus .................................................................... 18

4.5. Comandos estándar para instrumentos programables – SCPI .................... 23

4.6. Conexión al multímetro ................................................................................ 25

4.7. Antecedentes: control de otros instrumentos ............................................... 28

5. DESARROLLO DEL CÓDIGO _______________________________ 30

5.1. Clase Keithley 2100 ..................................................................................... 30

5.2. Comandos creados ...................................................................................... 31

5.2.1. Comandos comunes ....................................................................................... 32

5.2.2. Comandos de trigger....................................................................................... 42

5.2.3. Comandos relacionados con el sistema .......................................................... 46

5.3. Verificación y validación de los resultados ................................................... 49

5.4. Presupuesto del proyecto ............................................................................. 54

5.4.1. Coste del equipo ............................................................................................. 54

5.4.1. Coste del tiempo de elaboración ..................................................................... 56

5.5. Impacto medioambiental .............................................................................. 58

CONCLUSIONES _____________________________________________ 59

AGRADECIMIENTOS __________________________________________ 61

BIBLIOGRAFÍA ______________________________________________ 62

Page 4: Control de un multímetro digital mediante python

Pág. 4 Memoria

Referencias bibliográficas ..................................................................................... 62

Bibliografía complementaria .................................................................................. 65

ANEXOS ____________________________________________________ 67

Page 5: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 5

Page 6: Control de un multímetro digital mediante python
Page 7: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 7

1. Prefacio

1.1. Origen del proyecto

Recientemente la Escuela Técnica Superior de Ingeniería Industrial de Barcelona (ETSEIB)

adquirió 7 multímetros digitales de banco para el Laboratorio Docente II de Electrónica,

situado en la novena planta. Dichos instrumentos complementan el instrumental del

laboratorio, mejorando la calidad de las prácticas de los estudiantes.

Estos multímetros, modelo Keithley 2100, incluyen una serie de elementos extra, como un

manual de instrucciones, un cable de alimentación, un cable USB, cables de prueba de

seguridad y un CD-ROM. Este disco incluye el software ya diseñado para poder controlar este

multímetro concreto. Sin embargo, tiene el inconveniente de ser un software de código

cerrado, es decir, solo creadores del programa están autorizados a acceder al código fuente

y a modificarlo.

Debido a este inconveniente, mi tutor del trabajo de final de grado pensó en la utilidad que

supondría poder controlar estos multímetros remotamente, a partir de un código abierto y que

pudiera ser modificado sin problema alguno. La automatización de las medidas y de

comandos supondría una gran ventaja, ya que ahorraría tiempo en la ejecución de cada

prueba, práctica o ensayo de laboratorio.

Por consiguiente, se pretende facilitar las tareas mediante el diseño de un programa que

realice las medidas experimentales usando los instrumentos del laboratorio mediante control

remoto.

Justamente, éste es el objetivo del proyecto: diseñar un código en Python que permita

configurar y controlar de forma remota cada uno de los multímetros digitales de banco

adquiridos para el laboratorio II de Electrónica. Se estudiarán los diversos comandos que

ofrece el control remoto, se implementarán mediante una clase de Python y se realizará una

validación posterior.

1.2. Motivación

Los estudiantes de la ETSEIB cursamos la asignatura de Electrónica durante el cuarto año

del grado, en la que se enseñan los diferentes instrumentos que se pueden encontrar en el

laboratorio y sus usos. Asimismo, aprendemos a utilizar estos equipos durante prácticas

Page 8: Control de un multímetro digital mediante python

Pág. 8 Memoria

experimentales, mediante las cuales se consolidan los conocimientos adquiridos. Además, se

cursan dos asignaturas en las que se aprende sobre el lenguaje de programación Python y

sobre sus elementos y objetos.

Estos conocimientos adquiridos en la carrera son un aliciente para el diseño de un programa

de control remoto de un multímetro, no solo para aprender durante su creación sino para

poder luego ser utilizado y de esta forma disminuir el tiempo necesario para realizar medidas

experimentales.

1.3. Requerimientos previos

Para la realización de este proyecto fue imprescindible disponer de conocimientos del

lenguaje de programación Python, pues fue la base para poder controlar remotamente el

multímetro. Específicamente, el uso de las clases de Python; cómo inicializarlas, añadir

argumentos y la creación de métodos. Python cuenta con paquetes y módulos puestos a

disposición de cualquier desarrollador para realizar distintas tareas, entre ellas el control

remoto de instrumentación mediante PyVISA, cuyo uso e implementación se explicará más

adelante.

De la misma manera, una base de Electrónica era requerida para poder avanzar en el

proyecto, siendo el multímetro el elemento a configurar. Por ejemplo, identificar los diferentes

parámetros que puede medir un multímetro así como su significado, especialmente para las

posteriores verificaciones a realizar.

Page 9: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 9

2. Introducción

2.1. Objetivos del proyecto

El proyecto pretende crear una clase en Python que permita controlar remotamente mediante

un PC y un cable USB el multímetro digital de banco modelo Keithley 2100. En esta clase se

incluirán todos los comandos que tienen la posibilidad de ser ejecutados de forma remota.

Para ello, será esencial primero estudiar detalladamente cada comando, su función, los

parámetros que requiere y los resultados que devuelve al ser ejecutado. Concretamente,

cada uno de estos comandos se incluirá en la clase creada en forma de método y los

parámetros serán atributos que cada método específico requerirá.

Finalmente, se realizará una comprobación de la clase creada, garantizando su correcto

funcionamiento. Mediante pruebas en el laboratorio se demostrará la validez de todo lo

previamente expuesto. Para esta etapa se aplicarán los conocimientos aprendidos de

Electrónica y se aplicarán de forma práctica. Se verificarán la mayoría de los comandos con

el uso de pilas, un LED y resistencias. Podremos así crear un circuito y contrastar los valores

de medición obtenidos por el circuito con los esperados.

2.2. Alcance del proyecto

Este proyecto se centra en el diseño de un código en Python que permita configurar el control

en remoto de un multímetro digital y así facilitar su configuración y uso.

Por lo tanto, el trabajo pretende crear una clase que conectada al instrumento pueda ejecutar

cada uno de los comandos que este soporta.

Page 10: Control de un multímetro digital mediante python

Pág. 10 Memoria

3. Preparación previa

En este apartado se detalla todo el proceso realizado para alcanzar los objetivos definidos en

el proyecto.

Para iniciar el control remoto del multímetro se debe empezar conectando éste a un ordenador

desde el que se desea configurarlo y controlarlo. Por ello, el cuerpo del trabajo iniciará con la

conexión al multímetro digital y los materiales necesarios para ello. La instrumentación virtual,

concretamente la librería PyVISA1 y el bus USB serán los paquetes utilizados para llevar a

cabo el control remoto, tal y como se expone a continuación. Seguidamente nos centraremos

en el lenguaje de programación Python y los comandos estándar SCPI2.

En la segunda fase del proyecto, nos ocuparemos del diseño, ejecución y verificación de los

comandos del multímetro mediante el software previamente explicados. Estudiaremos la

manera de ejecutar cada comando y la respuesta que éste crea en el instrumento.

Posteriormente, se comentará en detalle las pruebas realizadas y los resultados obtenidos.

Por último, se incluirá el presupuesto del proyecto y el impacto medioambiental.

3.1. National Instruments

La instrumentación virtual (IV) es un concepto introducido por la compañía National

Instruments con el objetivo de desarrollar un software que permita utilizar el ordenador

personal como instrumento para realizar mediciones de señales como velocidad, temperatura,

voltaje, periodo, etc. En otras palabras, el ordenador recibe información digitalizada que

proviene de un dispositivo externo, el cual realiza mediciones de fenómenos físicos y las

convierte en señales de corriente o voltaje. El PC no solo adquiere las medidas, sino que

también realiza el procesamiento, análisis, almacenamiento, distribución y despliegue de los

datos obtenidos. Esta es la base de los instrumentos virtuales, los cuales tienen sus funciones

definidas por software. Esto es lo que se conoce como instrumentación virtual. National

Instruments definió el instrumento virtual como aquel “instrumento que no es real, se ejecuta

1 Ver [Anexo I.1]

2 Ver [Anexo I.2]

Page 11: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 11

en una computadora y tiene sus funciones definidas por software” 3.

El Laboratory Virtual Instrument Engineering Workbench o, como se conoce más

habitualmente, LabVIEW, fue la primera versión de un software que permitiera el control

remoto de un instrumento. Se elaboró en 1983 por Truchard y Kodosky y fue el primer

instrumento virtual, capaz de medir, configurar, limitar, calcular, y en definitiva, controlar

remotamente un instrumento de medición a partir de un ordenador.

Este software, el LabVIEW, es usado para diseñar instrumentos en el ordenador mediante

dibujos gráficos, favoreciendo su comprensión. El método de la programación gráfica consiste

en realizar un código de manera similar a un diagrama de flujo, en vez de usar secuencias de

texto. Consiste en sustituir equipos físicos por el ordenador: el usuario opera un instrumento

que no es real y realiza mediciones con él que luego serán ejecutadas en un PC. Con este

procedimiento realiza las mismas funciones que con un instrumento real pero solo

visualizando de forma gráfica las variables del sistema y los botones virtuales para controlar

en la pantalla del ordenador.

Resumiendo lo explicado anteriormente, el esquema de montaje de un instrumento virtual

consta del conjunto de un controlador, en general un ordenador personal, el software de

instrumentación necesario para realizar medidas, el hardware (dependiendo de la tarea en

particular) y los drivers, aquellos controladores de dispositivos que permite al sistema

operativo interactuar con los periféricos. Así pues, el ordenador es usado para adquirir la

señal, es decir, medir fenómenos físicos representados en señales de voltaje y/o corriente.

Posteriormente y con la instrumentación virtual, se implica la interfaz hombre-máquina, el

estudio y procesamiento de señales y la gestión de almacenamiento de datos.

3 National Instrument Colombia. (2001). National Instrument Colombia. [Consultado: 15 julio 2012]

<http://colombia.ni.com>

Figura 1. Izquierda: logotipo de National Instruments en su fundación (1976).

Derecha: nueva imagen corporativa de junio de 2020, tras renombrarse a NI. Fuente: [1]

Page 12: Control de un multímetro digital mediante python

Pág. 12 Memoria

En la Fig. 2 se puede observar cómo un instrumento virtual puede realizar lo anteriormente

explicado. Se requiere para las tareas de automatización de medidas efectuar el siguiente

montaje con los equipos. Aparece un controlador, generalmente un ordenador (Controller) en

el cual habrá un software de control remoto ejecutándose, los instrumentos de medición a

utilizar (Instrument 1, Instrument 2, Instrument 3) con capacidad de control remoto y que se

comunicarán con el controlador mediante una interfaz de comunicación física (Communication

Interface). Por último, será necesario un dispositivo bajo prueba (DUT), que se comunicará

con el controlador, en los casos que sea necesario, mediante otra interfaz (DUT Control

Interface).

3.1.1. Instrumentación Virtual vs Instrumentación Tradicional

Por un lado, la instrumentación tradicional, según House (1995)4, es caracterizada por

ejecutar una o varias funciones determinadas que no se pueden modificar por el usuario, solo

por el creador de éstas. En otras palabras, proporciona el software y los circuitos para medidas

integrados en un único producto con funcionalidad fija mediante el panel frontal del

instrumento.

4 House, R. Choosing the right software for data acquisition. IEEE Spectrum, vol. 32, no. 5, pp. 24-26,

May 1995, ISSN electrónico: 1939-9340. [Consultado 15 mayo 2021]

<https://ieeexplore.ieee.org/abstract/document/381875>

Figura 2. Esquema montaje para la automatización de medidas.

Fuente: [2]

Page 13: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 13

Estos sistemas de instrumentación tradicional se basaron en la realización de mediciones

individuales con el uso de sensores o transductores para obtener variables físicas y

convertirlas en señales eléctricas para luego interpretarlas y procesarlas. Para realizar

mediciones mediante instrumentación tradicional se requieren diferentes aparatos físicos, con

o sin múltiples interfaces, lo que supone una complicación añadida para la gestión de los datos

adquiridos. La falta de interacción con equipos de cómputo en tiempo real es uno de los

principales inconvenientes de la instrumentación tradicional, frente a la virtual en la que

automatizan las medidas a realizar.

A partir de los desarrollos científicos surgen amplias mejoras en los sistemas electrónicos.

Esto provoca el uso de nuevos sistemas como es el caso de la instrumentación virtual. Ésta

dota de una nueva perspectiva a la instrumentación tradicional, incorporando características

y funciones gracias a las mencionadas innovaciones tecnológicas.

La instrumentación virtual consiste en reemplazar algunos elementos hardware de los

instrumentos tradicionales por software y así mejorar su funcionamiento y conseguir

incorporar nuevas funcionalidades. Un instrumento virtual consta, por lo tanto, de una

combinación de elementos de software más potente y nuevo hardware preestablecidos, que

efectúan las mismas funciones que el instrumento tradicional. Estos elementos dotan al

instrumento no solo de la capacidad de medición y de control, sino que también pueden añadir

las funciones de adquisición, almacenamiento y estudio de presentación.

Esto le confiere al instrumento la máxima flexibilidad y el usuario puede diseñarlo según sus

objetivos, no se trata de un equipo fijado. Es decir, el programa puede ser modificado

alterando las funciones de acuerdo con las necesidades del usuario. En esto se basa la

principal ventaja de los instrumentos virtuales, su alta flexibilidad y adaptabilidad para cada

situación concreta, en contraste con la rigidez de la instrumentación tradicional.

Figura 3. Diferencias entre la instrumentación tradicional y la instrumentación virtual. Fuente: [3]

Page 14: Control de un multímetro digital mediante python

Pág. 14 Memoria

3.1.2. Ventajas de automatizar las mediciones

La idea principal de la instrumentación virtual, como ya se ha explicado anteriormente, es

sustituir y ampliar elementos hardware por otros de software, con la ayuda de un ordenador.

Esto concede ventajas ilimitadas respecto a la instrumentación tradicional, ya que existirá un

avance continuo en cuanto a adaptabilidad y flexibilidad de equipos e instrumentos de

medición. Las principales ventajas de automatizar las medidas son:

1. Ahorro de tiempo

Frecuentemente es necesario realizar una prueba repetidas veces en el laboratorio, para así

poder determinar el comportamiento de un equipo para un rango de valores amplio. La

automatización en las mediciones requiere invertir tiempo en el diseño de una aplicación de

control remoto empleando software. Una vez automatizado el proceso, se podrá repetir la

misma tarea de medición con mucho menos tiempo y sin necesitar configurar los instrumentos

para cada una de las mediciones. Por lo tanto, ahorra tiempo en las partes más rutinarias del

trabajo, permitiendo emplearlo para otras tareas.

2. Distancia de operación

Tal y como se ha mencionado anteriormente, no es necesario estar presente físicamente para

las mediciones, y ésta es otra de las ventajas de la instrumentación virtual. Aplicando este

Figura 4. Tabla comparativa de los tipos de instrumentación. Fuente: [4]

Page 15: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 15

concepto de forma práctica, concluimos que se pueden realizar medidas del DUT (dispositivo

bajo prueba) en cámaras anecoica o de temperatura, para ver cómo se comporta y hacer las

medidas a distancia.

3. Mediciones repetibles

El procedimiento realizado para elaborar las pruebas de medición siempre será el mismo. Por

ello, cuando el proceso está correctamente diseñado y depurado, puede repetirse infinidad de

veces. Esta reproducibilidad en la medición otorga resultados más fiables y permite detectar

posibles datos anómalos mediante la comparación.

4. Facilidad de ampliación

Los sistemas automatizados se pueden ampliar de forma sencilla. Si un usuario requiere

realizar una misma tarea en múltiples DUT, puede realizarlo fácilmente mediante una correcta

estructura.

3.2. PyVISA

Programar instrumentos para mediciones podría resultar muy complicado, ya que existen

diversos protocolos, que se envían y utilizan a través de distintas interfaces y sistemas de bus

como pueden ser: GPIB, RS232, USB, PXI, Serial, Ethernet, etc. Para cada lenguaje de

programación existen bibliotecas de software que asisten tanto el dispositivo como un sistema

de bus determinado. Para simplificar este contacto, a mediados de los 90 se definió el

estándar Virtual Instrument Software Architecture (VISA)5

El estándar VISA (acrónimo de Virtual Instrument Software Architecture) es una interfaz de

programación de aplicaciones, ampliamente utilizada en el ámbito de prueba y medición,

diseñada para comunicarse con cualquier instrumento desde una aplicación sin necesidad de

preocuparse de los detales de interfaz entrada/salida. VISA dota la interfaz de programación

entre el hardware y entornos de programación como pueden ser LabVIEW, Lab-

Windows/CVI, Visual Studio, Matlab y Python, programa que se usará a lo largo del presente

proyecto. VISA aporta la gran ventaja de permitir al desarrollador programar

independientemente del bus usado, debido a que usando la misma librería se puede

establecer la comunicación con buses diferentes, como puede observarse en la Fig. 5.

5 Ver Anexo [I.1]

Page 16: Control de un multímetro digital mediante python

Pág. 16 Memoria

Actualmente, VISA es un estándar para la industria que se aplica en todos los sistemas

operativos dominantes en el área comercial. Tanto es así que las empresas más reconocidas

en el sector de medición y pruebas como Rohde & Schwarz, Keysight Technologies,

Tektronix, National Instruments, entre otras, se encargan de su comercialización poniendo a

disposición del usuario la descarga gratuita de algunos paquetes.

VISA se estandarizó inicialmente a través de la VXIplug & play Alliance, una organización de

estándares de prueba y medida. En la actualidad, el estándar “Especificación VISA 5.0” es

mantenido por la Fundación IVI, un consorcio abierto fundado con la intención de promover

especificaciones para la programación de los instrumentos de medida, ayudando a simplificar

la intercambiabilidad, proporcionar un mejor rendimiento y reducir el coste de desarrollo y

mantenimiento de programas. Pese a la existencia de varias implementaciones y

desarrolladores de la interfaz VISA, las aplicaciones escritas sobre esta especificación se

pueden intercambiar entre los distintos fabricantes gracias a esta estandarización.

Concretamente, PyVISA6 es la biblioteca de software que permite a los programas de Python

la comunicación con los instrumentos y equipos de prueba. Estos recursos deben estar

conectados a un ordenador que actúa como controlador mediante alguno de los buses

anteriormente citados como es el caso del USB, que es el que usaremos para la realización

de ese proyecto. Es el paquete de Python más ampliamente usado para el control remoto y

se apoya en el estándar VISA previamente detallado.

6 Ver Anexo [I.1]

Figura 5. Empleo de VISA con distintos buses para una misma aplicación. Fuente: [5]

Page 17: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 17

3.3. Equipo Utilizado

En este apartado se describe el instrumento de medida que ha permitido la realización de este

trabajo de final de grado. El equipo de laboratorio que será controlado remotamente es el

multímetro digital modelo Keithley 2100 [6], que se puede observar en la Fig. 6. Este aparato

dispone de una precisión y unas especificaciones que optimizan las medidas realizadas. El

equipo puede ser controlado de forma remota desde un ordenador usando secuencias de

instrucciones en Python mediante el paquete PyVISA y el bus USB.

El multímetro digital USB de 6,5 dígitos Keithley 2100 ofrece la combinación adecuada de

rendimiento y precisión (38 ppm) para efectuar mediciones críticas. Tiene una precisión de

tensión CC básica de un 0,0038% durante 1 año en el rango de 10 V y una precisión de

resistencia básica de un 0,013% durante 1 año en el rango de 10 kΩ. Con 6,5 dígitos, el

modelo 2100 ofrece 50 lecturas activadas por segundo mediante la interfaz USB remota. Con

el ajuste rápido de 4,5 dígitos, el modelo Keithley 2100 realiza más de 2.000 lecturas por

segundo en su búfer interno de 2.000 lecturas 7, 8.

El multímetro Keithley 2100 es un producto robusto con protectores de caucho extraíbles y un

asa resistente. Esto lo convierte en una solución duradera y portátil para su uso en diversos

entornos de prueba. Gracias a su bajo coste y alta precisión, este instrumento es ideal para

ingenieros de I + D, científicos y estudiantes, y puede usarse como multímetro digital de banco

o como componente de un sistema.

El multímetro Keithley 2100 es de rápida, fácil configuración y uso, gracias a su panel frontal

de alto contraste y teclado. Cada función dispone de un color distinto con el fin de distinguirla.

7 Ver [Anexo I.3]

8 Ver [Anexo I.4

Figura 6. Multímetro digital Keithley 2100. Fuente: [6]

Page 18: Control de un multímetro digital mediante python

Pág. 18 Memoria

Estas son algunas de sus características y ventajas:

- Solución rentable para mediciones críticas.

- 11 funciones de medición y 8 matemáticas.

- Rango de medición de resistencia: 100 Ω → 100 MΩ.

- Rango de frecuencia de medidas: 3 Hz → 300 kHz.

- Rango de medición de temperatura: –100 a +630°C.

- Precisiones totalmente especificadas en todas las funciones para ofrecer resultados

conformes con la norma ISO.

- Interfaz USB 2.0 conforme con TMC para su uso con programas de prueba SCPI.

- Incluye herramientas de software para PC para gráficos y para compartir datos.

- Construcción robusta para mayor durabilidad en aplicaciones de banco y portátiles.

- Entradas seleccionables en la parte trasera/delantera para facilitar su uso en un

banco o rack.

Además, deberán utilizarse otros dispositivos electrónicos para la realización de medidas.

Estos servirán para ir comprobando los distintos métodos creados en Python. Nos serviremos

de algunos componentes electrónicos de sencilla adquisición. Unas pilas de 1,5 V, algunas

resistencias eléctricas y un LED serán los elementos que colocaremos en un circuito. Para

realizarlo usaremos un porta pilas y así facilitaremos el montaje. También se necesitará

disponer de un cable USB que conecte el multímetro con el ordenador. El diseño de la clase

para controlar el multímetro requerirá de pruebas con este circuito, para ir comprobando su

correcto desarrollo y avanzar en la dirección adecuada. Más adelante se explicará

detalladamente el montaje del circuito, las medidas tomadas y las verificaciones realizadas.

3.4. Bus USB: Universal Serial Bus

El USB o Universal Serial Bus es una interfaz que transmite datos, distribuye energía y

comunica los ordenadores con periféricos u otros dispositivos electrónicos.

Este bus tiene la ventaja de no requerir reiniciar el dispositivo al conectarse el USB, se

puede hacer la conexión y desconexión en caliente, pues se trata de una interfaz

plug&play. Además, cuenta con configuración y detección automáticas, sin la necesidad

de instalar algún software o hardware suplementario.

Page 19: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 19

El USB es un bus de arquitectura tipo serie, capaz de transferir los datos bit a bit con

solamente un cable transfiriendo la información. Este único cable tiene el objetivo de

conectar ratones, impresoras, discos duros, cámaras digitales, y dispositivos

electrónicos, como se procederá en este proyecto. En otras palabras, es un bus punto a

punto; el origen es el host, que puede ser tanto un PC como un hub, y el lugar de llegada

es un periférico, como puede ser alguno de los mencionados o un hub distinto.

La gran mayoría de los ordenadores tienen dos puertos USB y esto podría resultar un

inconveniente. Sin embargo, cabe la posibilidad de que un periférico contenga un hub

integrado, lo que permite que se puedan conectar dos dispositivos a un ordenador

usando una única toma USB. Por ejemplo, un teclado USB puede tener integrado un

ratón USB y así solamente se requiere el uso de una toma del PC.

Figura 7. Conexión de un cable USB a un ordenador. Fuente: [7]

Page 20: Control de un multímetro digital mediante python

Pág. 20 Memoria

En los años 90, un grupo de empresas líderes en el sector de las telecomunicaciones y

ordenadores detectó la necesidad de normalizar y economizar el uso de periféricos.

Algunas de las compañías eran Intel, Microsoft, IBM, NEC y Nortel. Éstas empezaron a

trabajar conjuntamente con la intención de mejorar la velocidad de transferencia de las

lentas interfaces serie (RS-232) y otras arquitecturas en paralelo. Así es como en 1995

fundaron el USB Implementers Forum (USB-IF). Algunas de las sociedades iniciales ya

no forman parte de la organización y hay otras que se han incorporado en los últimos años

como es el caso de Hewlett-Packard, Apple Inc., NEC y Agere Systems.

El USB-IF principalmente promociona y comercializa el USB, además de establecer un

programa de cumplimento y mantener las especificaciones, que a continuación se

explicarán. Esta organización, sin ánimo de lucro, promueve e impulsa a la tecnología

USB. En 1996 el fórum, un año tras su creación, lanzó el estándar USB 1.1, la primera e

impopular especificación.

El USB-IF además definen los estándares según la rapidez de transferencia datos y realiza

una división en cinco velocidades de transferencia:

- USB 1.0- Baja velocidad: Tasas de transferencia de hasta 1.5 Mb/s.

Principalmente usado para teclados, cámaras WEB, ratones, etc.

- USB 1.1-Velocidad completa: Tasas de transferencia de hasta 12 Mb/s. Estos

dispositivos dividen el ancho de banda de la conexión entre ellos empleando

algoritmos LIFO. Muchos dispositivos actualmente tienen esta velocidad de

transmisión y fue la que más alta velocidad antes de la especificación USB 2.0.

Figura 8. Diferentes tipos de periféricos. Fuente: [8]

Page 21: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 21

- USB 2.0- Alta velocidad: Tasas de transferencia generalmente alrededor de 125

Mb/A y hasta 480 Mb/s como máximo. El cable en este caso dispone de cuatro

líneas en total, un par de línea para datos y otro par de alimentación.

- USB 3.0- Super-alta velocidad: Disponible des de julio 2013, tiene tasas de

transferencia de hasta 4.8 Gb/s. La velocidad puede llegar a ser diez veces

superior que la del USB 2.0 debido a la incorporación de 5 contactos adicionales.

Es compatible con los estándares anteriores.

- USB 3.1- Super-alta velocidad +: También es conocida como SuperSpeed+.

Llega a alcanzar tasas de transferencia de 10 Gb/s. El estándar USB 3.1 es

compatible con USB 2.0 y 3.0.

Figura 10. Logotipo del USB 2.0. Fuente: [9].

Figura 11. Logotipo del USB 3.0. Fuente: [9].

Figura 9. Logotipo del USB 1.1. Fuente: [9].

Page 22: Control de un multímetro digital mediante python

Pág. 22 Memoria

Tanto el dispositivo receptor como el emisor deben ser compatibles con el de la

conectividad escogido, es decir, debe ser aceptado. Como se ha mencionado

anteriormente, todas las especificaciones son compatibles entre sí. Sin embargo, cabe

destacar que el uso de un dispositivo USB 2.0 en un puerto de baja velocidad limitará su

velocidad al máximo de la velocidad de dicho puerto.

Las siguientes características que se citan son comunes a todos los USB sin importar la

especificación.

- Posibilidad de realizar tanto el tipo de transferencia isócrono como el

asíncrono con un mismo conjunto de cables.

- Los conectores y el cableado tienen un bajo coste y un modelo simple

- Se pueden insertar diversos tipos de periféricos en un mismo bus.

- Soporta hasta 127 dispositivos físicos o periféricos.

- Tiempo de respuesta garantizado (para audio y vídeo)

- Flexibilidad a nivel de banda de paso; se puede adecuar el ancho de banda desde

unos pocos kbs hasta varios Mbs.

- Fiabilidad, pues posee mecanismos de control de errores y de

recuperación ante fallos implementados en e l protocolo.

- Perfectamente integrado en el PC, pues se trata de una interfaz plug&play

Durante la realización del proyecto que nos ocupa, se conectará el multímetro digital con

un cable USB al ordenador por el Channel 2, como veremos más adelante.

Figura 12. Logotipo del USB 3.1. Fuente: [9].

Page 23: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 23

3.5. Comandos estándar para instrumentos programables –

SCPI

Los Comandos Estándar para Instrumentos Programables, SCPI por sus siglas del inglés,

definen un conjunto de mensajes, los cuales forman un lenguaje que permite la comunicación

con los instrumentos de prueba y de medición programables [10]. Resumiendo, es un

estándar de comandos de programación.

Su origen data a principios de la década de 1970, cuando Hewlett-Packard inventó el "HP-IB”,

denominado más tarde GPIB (General Purpose Interface Bus) y posteriormente el IEEE

adoptó como IEEE-488. Este hecho revolucionó las pruebas automatizadas, ya que los

instrumentos de múltiples proveedores podían combinarse y automatizarse desde un

controlador del sistema de pruebas.

Anteriormente, se enviaban caracteres ASCII muy sencillos a un instrumento desde un

controlador del sistema de pruebas para controlarlo. Los comandos no estaban

estandarizados. En otras palabras, cada proveedor podía escoger qué comandos emprendían

que acciones. Por consiguiente, si se compraba otro modelo del mismo proveedor o el mismo

producto de otro vendedor, utilizaba comandos enteramente diferentes por lo que se debía

reprogramar por completo.

Por ejemplo, un problema común se plantea continuamente. Si se tiene un multímetro digital

con rangos de precisión de 0,3, 3, 30 y 300 V, no existe manera de que un lenguaje de

programación otorga la posibilidad de ofrecer compatibilidad con otro aparto con rangos de

0,1, 1, 10 y 100 V.

El estándar, por lo tanto, supone una solución para el problema citado. Este proporciona una

especificación universal en cuanto a la sintaxis, la estructura del comando y los tipos de datos

a utilizar con cualquier instrumento de prueba y medición en general. La adopción de este

lenguaje por varios de los grandes proveedores en el sector como Hewlett Packard (HP) o

Keysight ha permitido la normalización en las comunicaciones entre dispositivos.

Por ejemplo, para una función de medida determinada, SCPI define los comandos

específicos que hay que emplear para poder realizarla a través de las interfaces LAN, GPIB

o USB. Los comandos más genéricos como CONFigure y MEASure? pueden ser ejecutados

en cualquier instrumento de medición.

Seguidamente, se detallan las principales características del uso de comandos SCPI, así

como sus principales ventajas:

- Los parámetros numéricos sin unidades se entenderán en unidades del Sistema

Page 24: Control de un multímetro digital mediante python

Pág. 24 Memoria

Internacional (SI). Si se prefiere introducir los valores en otras unidades se debe especificar

mediante las letras correspondientes.

- El signo dos puntos (:) separa los niveles por jerarquías. Algunos comandos tienen

solamente un único nivel, pero otros contienen especificaciones adicionales. El primer nivel

es la función por realizar: medición, configuración, lectura, calcular, etc. En el caso de la

medición y la configuración seguidamente se decide si se trata de voltaje o corriente y, por

último, se escoge entre corriente continua o alterna. En una línea de código cada conjunto de

letras estaría separado por los dos puntos. Por ejemplo, tendríamos “MEAS:VOLT:DC” y

“MEAS:CUR:AC”. Seguidamente se podría añadir algún otro parámetro, que fija los

parámetros con los que el multímetro realiza la medición. Algunos de ellos son el rango y la

resolución. Este tema se tratará en un apartado más adelante.

- Los caracteres en mayúsculas son obligatorios para especificar una orden o comando,

mientras que los que están en minúsculas pueden suprimirse para abreviar el código,

sirviendo sólo para facilitar la lectura de programas al usuario. Los comandos SCPI pueden

ser escritos indistintamente en mayúsculas o en minúsculas. Por lo tanto “MEASure”,

“MEAS” y “meas” realizan la misma función. Cabe resaltar que cualquier otra combinación

resultaría en un error de escritura y, por lo tanto, no ejecutaría la orden deseada.

- Los comandos se pueden combinar utilizando punto y coma (;). Esto puede observarse

en la Fig. 13, donde se concatenan las órdenes de medida de tensión y de corriente.

- La principal ventaja de estos comandos es la uniformidad de comandos para todos los

aparatos de una misma clase. Si se saben utilizar unas funciones en un equipo usando el

Figura 13. Representación de las jerarquías y la concatenación en los comandos SCPI.

Fuente: [11]

Page 25: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 25

estándar SCPI, se podrán controlar las mismas funciones en otro equipo SCPI distinto con

mínimas modificaciones en el programa de control. Asimismo, un programa escrito para un

instrumento SCPI, se adaptará fácilmente a otro SCPI. Por lo tanto, se ahorra tiempo y

trabajo al aprovecharse la programación ya realizada.

Generalmente, las órdenes o comandos se dividen en dos tipos:

- Comandos comunes: están regidos por la norma IEEE 488.2 [12]. Controlan los

registros de estado, la sincronización y el almacenamiento de datos. Son sencillos de

identificar, pues todos empiezan con un asterisco.

- Comandos del subsistema: se reconocen por los dos puntos (:), que se usan al

comienzo del comando o entre jerarquías. Cada subsistema de comandos contiene

un conjunto de órdenes que pertenecen al mismo bloque. Por ejemplo: “:VOLT:DC”,

“:VOLT:AC” y “:VOLT:DC:RAT” son tres comandos que pertenecen al subsistema de

voltaje.

3.6. Conexión al multímetro

En este capítulo se explicará cómo se ha procedido para desarrollar la clase desde el

principio , haciendo énfasis tanto en los comandos del multímetro (sus parámetros, funciones,

limitaciones, etc.), como en la manera de ejecutarlos.

Primeramente y una vez explicados detalladamente los diferentes requerimientos necesarios

para controlar remotamente el multímetro, se procederá a detallar el orden a seguir para

conectar el multímetro al ordenador. Se necesita instalar el controlador NI-VISA, disponible

en la página web oficial de National Instruments [14].

Figura 14. Distribución de los tipos de comandos. Fuente: [13]

Page 26: Control de un multímetro digital mediante python

Pág. 26 Memoria

Adicionalmente, deberemos descargar el módulo PyVISA en la página web oficial de Python,

así como la aplicación Python en su última versión, si todavía no está instalada en el

ordenador desde el que trabajaremos.

Previamente a empezar con la conexión y diseño del código, debemos cerciorarnos de que

el multímetro está conectado a la corriente y al ordenador mediante un USB, en este caso

concreto. Luego deberemos apretar el botón inferior izquierdo en el aparato y observamos si

se enciende la pantalla. Esto significa que está funcionando correctamente y estamos listos

para continuar con la conexión remota.

Seguidamente, se debe continuar abriendo el intérprete de Python y escribir las líneas de

código necesarias para importar la librería PyVISA previamente descargada. Desde Python

cargaremos a una variable el Resource Manager. Este comando buscará la carpeta

compartida PyVISA utilizando el servidor por defecto, en las librerías NI-VISA, del controlador

instalado antes. A menudo este comando resulta en un OSError que puede entenderse que

PyVISA no ha logrado encontrar la biblioteca. En este caso debemos encontrar la ruta de la

biblioteca manualmente y especificar un archivo de configuración.

Si el Resource Manager ha funcionado correctamente, se puede usar el método

list_resources; que retorna una tupla con los nombres de los recursos de PyVISA, es decir,

los instrumentos que se han conectado. La tupla resultante en este proyecto es

(“USB0::0x05E6::0x2100::8014217::INSTR”, )”, a partir del cual obtenemos información de

interés. El código tras “USB0::” es único para este multímetro Keithley 2100 en particular. En

el caso de conectar otro aparato, devolvería otra combinación.

Esta cadena de strings se denomina PyVISA Resource ID o PyVISA Resource Name. A partir

de éste, identificaremos y nos conectaremos al instrumento durante todo el diseño de la clase.

Por lo tanto, se deberá recuperar el Resource ID al inicio de cada script mediante los

comandos recientemente expuestos. Otra manera de lograr la conexión al aparato es

copiando directamente la combinación de strings obtenida al script. Esta codificación no es

portátil, pues los códigos obtenidos funcionarán solamente con este multímetro en concreto.

Estamos realizando un hard-code, o lo que es lo mismo, incrustando datos en el código fuente

en lugar de obtenerlos de la fuente externa, el aparato conectado.

Durante este proyecto, para la elaboración de la clase en Python, realizaremos una copia

directa, pues es una manera apropiada para demostrar el funcionamiento y la utilidad de

describir el multímetro. Sin embargo, debemos apuntar que se debe rectificar el código de

Python para controlar otro aparato, sustituyendo el Resource ID actual por el del nuevo

instrumento.

Page 27: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 27

El Resource ID tiene un formato específico. Se trata de una combinación de strings que sigue

la siguiente estructura:

“Tipo de comunicación (USB, GPIB, etc.)::Información de la fuente (ID del proveedor, ID

del producto, Número de Serie, Dirección IP, etc..):: Tipo de fuente”. Seguidamente

estudiaremos tres posibles casos:

- “USB0::0x0483::0x7540::SPD3XGB4150080::INST”. Una fuente de alimentación,

“power supply”, (SPD3X) conectado mediante un USB (USB0).

- “USB0::0xF4EC::0x1301::SVA1XEAX2R0073::INSTR”. Se trata de un analizador

de redes vectoriales, “vector network analyzer” (SVA1X), también con una conexión

vía USB (USB0).

- “TCPIP0::192.168.55.122::inst0::INSTR”. Tenemos un instrumento conectado vía

LAN utilizando una conexión TCPIP en la dirección IP 192.168.55.122.

Page 28: Control de un multímetro digital mediante python

Pág. 28 Memoria

3.7. Antecedentes: control de otros instrumentos

Asimismo, se han consultado comunidades en línea de programadores. Actualmente en la

red disponemos de una multitud de plataformas dirigidas a desarrolladores para preguntar,

discutir, debatir y resolver sobre temas relativos a la tecnología.

En estos foros se comparten dudas y soluciones a problemas de programación que pueden

resultar útiles, pues pueden reconocerse errores propios y resolverlos con las indicaciones

publicadas. También puede ser eficaz para buscar ejemplos de clases ya creadas para otros

modelos de instrumentos y así obtener ideas para proseguir con el diseño del código.

Durante la elaboración de este proyecto se han consultado especialmente “GitHub”

[https://github.com/] y “Stack Overflow” [https://stackoverflow.com/].

En estas páginas web se ha realizado una búsqueda exhaustiva, así como en otras páginas.

En ellas se han encontrado códigos ya creados por otros programadores para el control de

instrumentos.

Se debe destacar que cada archivo encontrado es únicamente válido para un aparato en

concreto y una función determinada. Esto es debido a que cada instrumento admite unas

funciones de control remoto determinadas que pueden coincidir o no. Además, es posible que

tengan una manera diferente de ejecutarlas. También se emplean unas operaciones

concretas según aquello que se quiera controlar, medir y configurar.

Por ejemplo, se han encontrado páginas que detallaban el código para realizar un barrido

mediante un Keithley 2400 [17]. Este no es nuestro objetivo, pero se ha podido basar la

realización de nuestra clase a partir de este código, mediante las adaptaciones necesarias.

Otro código para el mismo instrumento ha sido especialmente beneficioso ya que detallaba

paso a paso los resultados de los comandos ejecutados [18].

Figura 16. Logotipos de plataformas para desarrolladores: Stack Overflow y GitHub.

Fuentes: [15] y [16]

Page 29: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 29

Algunos ejemplos adicionales de consultas para otros multímetros de la misma marca han

sido: Keithley 2000 [19], Keithley 2100 [20], Keithley 2600 [21], Keithley 7065 [22]. Se ha

encontrado asimismo una publicación para varios instrumentos de la marca Keithley [23].

Estos archivos han sido de gran utilidad gracias a sus similitudes con nuestro aparato.

Por otra parte, se ha consultado un foro con comentarios de usuarios que probaban unos

códigos para controlar un Rigol DS1054z [24]. En estos explicaban sus resultados, con las

dudas y errores generados. Otros respondían resolviendo los problemas, especificando los

cambios que debían realizar. Aunque no se trata de un instrumento demasiado parecido en

cuanto a funcionamiento, la interacción entre los programadores ha ayudado en la

comprensión del código.

Page 30: Control de un multímetro digital mediante python

Pág. 30 Memoria

4. Desarrollo del código

4.1. Clase Keithley 2100

El siguiente paso es escribir la clase en Python que incluya todos los comandos que soporta

nuestro instrumento. De esta manera nos aseguramos de que es lo más completa posible y

que es capaz de configurar el número máximo de parámetros del multímetro.

Se trata de una biblioteca creada mediante el paquete de PyVISA de Python y es válida

únicamente para este aparato concreto, el Keithley 2100.

Por lo tanto, si el aparato ha sido conectado correctamente, ya se puede escribir el código en

Python. Durante el diseño de la clase han sido imprescindible dos piezas de documentación.

En primer lugar, el manual del multímetro Keithley 21009,donde se listan todos los comandos

disponibles para este aparato con el código descrito para poder reproducirlo en la interfaz.

También incluye un detalle de los diferentes parámetros necesarios para ejecutar la orden,

así como la manera de llamarla.

Por otro lado, la documentación de PyVISA contiene un conjunto de tutoriales muy útiles para

familiarizarse con el paquete y entender su funcionamiento.

Se empieza, por lo tanto, creando una clase en Python. En este caso la hemos denominado

Keithley2100, pues es el nombre del aparato a controlar.

9 Ver [Anexo I.3]

Figura 15. Logotipo de PyVISA. Fuente: [25]

Page 31: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 31

Por el hecho de ser una clase, deberá tener un método que la inicialice, y éste procederá a

realizar la conexión entre el ordenador y el multímetro. Esta clase contiene todas las funciones

para controlar y configurar remotamente el multímetro a través de la interfaz USB,

especificadas en el manual. Cada uno de estos comandos requiere un formato concreto y,

además, a veces, se puede llamar con ciertos parámetros opcionales. Estos detalles se

explicarán con más detalle en el siguiente apartado.

Para realizar el diseño se ha empezado leyendo el manual del multímetro, realizando pruebas

en el intérprete de Python y luego creando el código en un script. Es decir, una vez funcionaba

como se esperaba, se creaba un archivo de Python que contenía todo el código necesario

para ejecutar un comando concreto. Finalmente, si las operaciones se ejecutaban

correctamente, se añadía a la clase que controla el aparato. De esta forma, se trabaja de una

manera más ordenada y cómoda durante el desarrollo de la clase.

4.2. Comandos creados

Primeramente, diferenciamos los comandos en dos tipos, según la función que realizan:

- Operaciones: solamente necesitan un comando de escritura, write. Se ejecuta una

acción para que el instrumento realice sin devolver ningún valor. Su objetivo es que

se sincronice o establezca el estado de operación. Un caso es el comando que fija

un valor máximo de medición.

- Consultas: en este caso se requiere un comando de lectura que extraiga la

información que se le solicita al aparato, query. Estos comandos se caracterizan

por terminar con un interrogante, “?”. Algunos ejemplos son las funciones de

medición, como por ejemplo “MEAS?” y consultas para obtener datos como el ID

del instrumento o los límites establecidos en el multímetro.

Es importante la correcta escritura de estas órdenes, pues en caso contrario el aparato

devuelve un error o no realiza ninguna función. Al realizar una consulta se debe usar query

y seguidamente una función con interrogante final.. Un par de ejemplos no válidos son:

“query(“MEAS:VOLT:DC”)” y “write(“CONF:RES?”)”.

A lo largo de este capítulo se estudiarán los diferentes comandos, haciendo hincapié en la

jerarquía de éstos y el tipo de función que ejecuta, si es una operación o una consulta.

Adicionalmente, comentaremos los distintos parámetros que se pueden añadir a la

instrucción de la orden e interpretaremos su significado.

Page 32: Control de un multímetro digital mediante python

Pág. 32 Memoria

Este apartado se estructura siguiendo como modelo el manual del instrumento Keithley

2100, pues se estudiarán una a una las diferentes funciones que soporta el aparato. Así

pues, se dividen y ordenan los comandos de acuerdo con este listado.

4.2.1. Comandos comunes

Inicialización:

Es imprescindible que el aparato esté conectado al ordenador para poder controlarlo

remotamente. Por este motivo, aprovecharemos la inicialización para realizar esta conexión.

La inicialización de una clase se ejecuta inmediata y automáticamente durante la creación de

la clase (método init).

Se deben escribir una serie de variables: el nombre de la clase, el nombre que será asignado

al objeto y los parámetros concretos que precisa la inicialización. En este caso solamente se

requiere proporcionar el nombre al objeto a crear, pues el instrumento está conectado vía

USB con el ordenador. Este nombre será el primer argumento implícito, self, imprescindible

en el establecimiento de toda clase.

Para identificar al instrumento se ha procedido a crear un atributo con el Resource Manager

y luego a abrir el instrumento. Identificamos el multímetro mediante un hard-code, pues se ha

copiado directamente el Resource ID determinado anteriormente. De esta forma, evitamos

crear atributos y líneas de código prescindibles. Sin embargo, se debe tomar en consideración

que esta clase debería ser modificada para controlar cualquier otro instrumento salvo este.

Comando MEASure?:

El comando MESASure? es el más simple para realizar mediciones con el multímetro. Sin

embargo, no es demasiado flexible, pues no se pueden cambiar la mayoría de los parámetros

de sus valores, ya que están predeterminados.

Esta orden es de tipo consulta y, por lo tanto, siempre termina con un interrogante final. Como

se ha comentado en capítulos anteriores, puede ser escrito de tres formas diferentes:

MEASure?, MEAS? o meas?, pues el SCPI admite tanto el formato abreviado como el

extendido.

Este grupo de comandos están dispuestos de forma que otorgan al usuario gran control de

precisión en la toma de medidas. Tiene la capacidad de configurar el aparato, medir y devolver

los datos de medición en una única operación. Consecuentemente, se complementa con dos

comandos: CONFigure? y READ?, que se detallan más adelante. El primero establece los

parámetros para la medición y el segundo adquiere, procesa y retorna las medidas realizadas.

Page 33: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 33

Para estas consultas se selecciona la función que se desea conocer y el rango y la resolución

en un mismo comando. El aparato establece todos los parámetros de medición y los

parámetros de activación a sus valores predeterminados para las mediciones de tensión y

activa inmediatamente una medición. Los resultados se mandan directamente al buffer de

salida del multímetro.

Una vez indicado el comando de medición, se precisa qué es exactamente lo que se debe

medir: la función. Para el multímetro modelo Keithley 2100 éstas son las posibilidades que el

aparato admite en la configuración en remoto:

- Voltaje en corriente continua (DC).

- Ratio de voltaje en corriente continua: configura la relación de la tensión en los

terminales de entrada y la tensión de referencia.

- Voltaje en corriente alterna (AC).

- Corriente en corriente continua (DC).

- Corriente en corriente alterna (AC).

- Resistencia

- Frecuencia: para las entradas de 3Hz a 300kHz retorna la frecuencia, sino el valor

nulo.

- Periodo: para las entradas de 0,33 segundos a 3,3 μs, sino el valor nulo.

- Continuidad

- Diodo

- Temperatura: se precisa una sonda transductora de temperatura, RTD.

Para la mayoría de las funciones citadas, existe la posibilidad de indicar el rango y la

resolución con la que se quiere medir. Entonces, el multímetro los establece para la medición.

Figura 17. Algunas posibilidades de la función de medición y su jerarquía para

ejecutarlas. Fuente: [26]

Page 34: Control de un multímetro digital mediante python

Pág. 34 Memoria

Si estos no han sido especificados, se le asignan los valores automáticos de rango y

resolución. Si se indica la resolución, deben incluirse las unidades de medida respectivas a la

función.

El autorango selecciona automáticamente el rango para la medición en función de la entrada.

Este tiene el inconveniente de que resulta en mediciones más lentas que el uso de un rango

manual. La resolución, en el caso de no ser determinada por el usuario, se fija según el tipo

de función y si se trata de corriente continua o alterna.

Si se especifica una resolución el autorango origina un error porque el instrumento no puede

resolver con precisión el tiempo de integración (especialmente si la entrada cambia

continuamente). En el caso de determinar el rango por defecto o no determinarlo, se debe

dejar también la resolución sin precisar.

Existen unas tablas donde se pueden consultar los valores de rango y resolución

predeterminados para cada medición del modelo Keithley 2100, así como sus límites mínimos

y máximos.

La función de temperatura solamente posibilita la elección de la resolución. Las funciones de

continuidad y diodo tampoco admiten la opción de escoger rango y resolución, pues están

fijadas a valores concretos. Para la continuidad el rango se fija a 1 kΩ y para el diodo a 1 VDC

para una fuente de corriente de 1 mA. En ambos casos la resolución es 5 ½ dígitos.

Los demás parámetros para su medición están determinados por defecto. A continuación, se

observa una imagen con estos valores.

Page 35: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 35

Por lo tanto, la clase de Python Keithley 2100, creada para controlar el multímetro, contiene

un método para cada función de medición. Por lo tanto, si está creado un objeto que

representa un instrumento, puede llamarse a alguno de los métodos y éste realizara las

mediciones pertinentes. Nótese que las sondas deben estar conectadas correctamente al

multímetro y a los terminales deseados para la distintas mediciones.

Comando CONFigure:

Otro de los comandos principales es el denominado CONFigure, ya que es la manera más

precisa de configurar las mediciones del multímetro.

Este comando ofrece más flexibilidad que el comando MEASure?, pues solamente establece

los parámetros para una medición, pero no se inician automáticamente. Por lo tanto, existe la

posibilidad de cambiar los atributos de medición antes de tomar las medidas. Es por ello por

lo que, si se desea medir, deberá ejecutarse otro comando posteriormente. Algunos de los

que pueden añadirse son INITiate, que tan solo realiza las mediciones o READ?, que también

las muestra como respuesta en el intérprete de Python.

Al igual que con el comando anterior, éste también ofrece la posibilidad de determinar la

función, rango y resoluciones deseadas en las mediciones. Los demás parámetros también

están fijados por el fabricante.

Figura 18. Parámetros predeterminados y sus valores en las consultas de medición.

Fuente: [27]

Page 36: Control de un multímetro digital mediante python

Pág. 36 Memoria

El listado de funciones posibles a configurar remotamente con este modelo es el mismo que

para el comando de medición. Así pues, se ha creado un método de la clase para cada una

de las opciones para las que se puede determinar la configuración. De la misma manera, las

especificaciones de rango y resolución detalladas anteriormente son también válidas para

este comando. El autorango, las funciones que no permiten precisar estos parámetros y

demás detalles son también aplicables aquí. Igualmente, los parámetros asignados por el

multímetro por defecto para el comando CONFigure son iguales a los de MEASure?. Por lo

tanto, pueden también consultarse en la Fig. 18.

Comando CONFigure?:

Permite hacer la consulta de la función actual, el rango y la resolución determinados en el

multímetro.

Al ejecutarse, devuelve una lista de estos parámetros, con la forma abreviada de la función.

Un resultado posible sería: "VOLT +1.00000000E+01,+3.00000000E-06”. Esta respuesta

representa que el multímetro está configurado para la función de voltaje, con un rango de 10

y resolución 0,000003.

Este método de la clase no necesita ser llamado con ningún parámetro, excepto el primer

atributo, self. De nuevo, recordar que se trata de una consulta de los datos establecidos en el

instrumento, por lo que debe llamarse con el método query de PyVisa.

Comando READ?:

Este comando, al igual que el de medición, es similar a la unión de dos funciones

concatenadas. En este caso, el efecto de READ? es parecido al uso del comando INITiate e

inmediatamente después el FETCh?. No obstante, el uso de READ? no almacena en la

memoria interna del instrumento el resultado de las lecturas, a diferencia del comando

FETCh?

Al inicializarse un conjunto de mediciones, el comando espera a que estas se completen y

posteriormente transfiere estos datos al controlador. Así pues, este comando suele utilizarse

para enviar al buffer de salida las medidas inmediatamente después de realizarlas.

Este comando está incluido como método en la clase, pero su uso de forma individual no es

muy común. Suele usarse conjuntamente con otros comandos para la lectura de medidas

durante la realización de otras operaciones, como el trigger.

Page 37: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 37

Comandos INITiate y FETCh?:

La utilización de estos comandos proporciona un bajo nivel de control de la activación de la

medición y la recuperación de la lectura. No obstante, presentan una alta flexibilidad.

Una vez se ha configurado el multímetro con los parámetros deseados, se ejecuta el método

INITiate. Este cambia el estado del sistema de disparo del aparato; de “inactivo” a “espera de

disparo”. Por lo tanto, con este nuevo estado, empezará a medir una vez se cumplan los

requisitos determinados en las condiciones de disparo. Tras completarse las mediciones,

éstas se envían a la memoria interna de lectura, donde permanecen almacenadas. El

almacenamiento en esta memoria se realiza más rápidamente mediante el comando INITiate

que la transferencia de mediciones al buffer de salida con READ?, si tenemos en cuenta que

el comando FETCh? no se ejecuta hasta que se hayan terminado las mediciones.

Este comando INITiate es solapable o, lo que es lo mismo, se pueden llamar a otras funciones

que no correspondan a las funciones de medir. Así pues, se puede verificar el estado de la

recogida de datos antes de intentar leerlos. FETCh? no será llamado hasta que se hayan

completado las mediciones. Es decir, se asegura que la respuesta está lista para leerse antes

de consultar los datos. El objetivo es obtener una notificación de que los datos están

disponibles en la memoria de salida del instrumento antes de intentar leerlos. Esto debe

hacerse solamente cuando la respuesta no es inmediata, pues en caso contrario añadiríamos

complejidad a un código ya suficientemente robusto.

Después, cuando se quieran obtener los datos, se consulta el comando FETCh?, con el

método query. Esta operación consiste en transferir los datos disponibles de la memoria

interna al buffer de salida del multímetro y se pueden leer desde el controlador del bus, el

intérprete de Python.

La función FETCh? puede consultarse varias veces para recuperar las mismas mediciones,

pues almacena los datos en la memoria de lectura. Si esta se desborda, las mediciones más

antiguas son sobrescritas por las nuevas. Así, las mediciones más recientes no quedan

invalidadas.

Sin embargo, cabe tener en consideración que el multímetro elimina las mediciones de la

memoria de lectura en dos ocasiones. Si se ejecuta algunos de estos comandos siguientes:

INIT, MEAS?, READ?, *RST, SYST:PRES, o si se cambia la configuración de las mediciones.

Comando SENSe:

Este método configura las mediciones. El comando SENSe más básico es sirve para

determinar la función de medición. Los demás comandos del conjunto están relacionados con

el de la función. Muchos de los métodos pertenecientes a este grupo tratan la configuración

Page 38: Control de un multímetro digital mediante python

Pág. 38 Memoria

de medición de temperatura. Como no se ha tenido la posibilidad de realizar pruebas de

debido a la falta de un RTS, no se especifica en detalle este método.

Comando input:

Con el método INPut se configura el modo automático de resistencia de entrada tanto para

las medidas de tensión continua como para las relaciones de corriente continua.

El instrumento dispone de un poco automático que puede activarse o desactivarse mediante

los métodos: INPut:IMPedance:AUTO ON y INPut:IMPedance:AUTO OFF.

Cuando el modo automático está habilitado la resistencia de entrada para las mediciones se

ajusta a un valor según el rango. Para los rangos de 100 mV, 1 V y 10 V se ajusta en “HI-Z”

(alta impedancia), mayor a 10 GΩ. Así se consiguen reducir las consecuencias de los errores

de carga en mediciones para estos rangos menores. En cambio, la resistencia de entrada se

mantiene en 10 MΩ cuando los rangos son de 100 V y 1000 V.

En caso de desactivarse el modo automático, la impedancia de entrada es 10 MΩ

independientemente del valor del rango. Así se minimiza la captación de ruido.

Con la consulta INPut:IMPedance:AUTO? se retorna el modo de resistencia de entrada, 1

cuando es automático y 0, cuando es fija.

Al ejecutar los métodos de los conjuntos de MEASure? y CONFigure la impedancia de entrada

desactiva de forma inmediata el modo automático.

Al realizarse un *RST o ejecutarse SYSTem:PRESet se retorna al valor por defecto, modo

automático desactivado.

El ultimo método relacionada con las entradas se trata de una consulta. Esta determina que

terminales de entrada han sido seleccionados. Por lo tanto, devuelve “FRON” cuando son los

terminales frontales y “REAR” para los traseros.

Comando CALCulate:

El comando CALCulate pretende dar valor añadido a las mediciones realizadas mediante

un posprocesamiento.

Primero se activa una medición con alguno de los comandos INITiate, MEASure o TRIGger

y el comando SENSe adquiere las medidas. Después se ejecuta CALCulate, que opera

sobre los datos obtenidos. Mediante este comando se consigue convertir los datos a una

Page 39: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 39

forma más ventajosa y eficaz para su aplicación. Asimismo, se pueden almacenar estos

datos para usarlos más adelante o realizar cálculos matemáticos sobre las lecturas.

Finalmente, los datos son visualizados en el intérprete de Python o se pasan a la salida

determinada.

Las operaciones más comunes incluyen el cambio de unidades y el posprocesamiento. Un

ejemplo: determinar el tiempo de subida a partir de la forma de una onda en el tiempo.

Una ventaja que destacar de este comando es que se puede aprovechar una única medida

para varios cálculos. Si se ejecuta un comando para realizar un cálculo sobre unos datos

luego permite cambiar la configuración para realizar otra operación sobre las mismas

medidas. Entonces se puede obtener un conjunto distinto de resultados a partir del mismo

conjunto de datos sin la necesidad de adquirir las medidas de nuevo.

A cada una de las funciones de medición se le pueden aplicar todos estos cálculos salvo a

las pruebas de diodos y continuidad:

- Función:

Selección o consulta de la función a calcular. Se ejecuta mediante FUNCtion,

seguido de alguna de las posibles funciones o un interrogante si se quiere conocer

la función seleccionada previamente. Las posibles operaciones matemáticas son:

PERCent, AVERage, NULL, LIMit, MXB y DB que deben activarse individualmente.

Si no se asigna ninguna función, por defecto se selecciona PERCent.

- Estado:

Formado por una operación y una consulta.

La operación que se encarga de activar, STATe:ON o desactivar, STATe:OFF la

operación matemática que esta seleccionada.

La consulta STATe? sirve para conocer el estado de la operación matemática, si

está activo o no. Por lo tanto, las posibles respuestas son 0, OFF y 1, ON.

- Porcentaje, objetivo:

La operación matemática PERCent:TARGet calcula la relación de una lectura de

medición y un valor objetivo determinado en forma de porcentaje. El valor objetivo

especificado se almacena en una memoria volátil y se elimina al apagarse el

multímetro o cuando se realiza un *RST.

Page 40: Control de un multímetro digital mediante python

Pág. 40 Memoria

- Media aritmética:

El subcomando AVERage contiene cuatro funciones que determinan el mínimo

(MINimum), el máximo (MAXimum), la media (AVERage), y la cantidad de medidas

adquiridas (COUNt) desde que se eliminaron las estadísticas por última vez. Estas

se eliminan mediante un *RST o un SYSTem:PRESet.

- Valor Nulo

Al activarse la función nula, los datos medidos son la diferencia entre la lectura de

las señales y el valor nulo o relativo. Este valor se puede especificar mediante la

función NULL:OFFSet, seguido del valor que se desea establecer. También puede

consultarse cuál es el valor determinado como nulo mediante el query

NULL:OFFSet?. Este valor se guarda en una memoria volátil y solamente se borra

al apagarse el aparato.

También puede modificarse el estado de la función nula, activándose NULL:ON y

desactivándose NULL:OFF. Esta función, al igual que todas las de CALCulate, no

está disponible para las funciones de diodo y continuidad.

- Limites Inferior y Superior:

Establece y consulta de límites para las mediciones. Se ejecuta mediante: el límite

inferior, LIMit:LOWer, superior, LIMit:UPer o ambos, LIMit:LOWer:UPPer, seguido

del valor deseado o de un interrogante si se trata de una consulta. Este provoca

errores si se agina el límite inferior por encima del límite superior.

- Cálculo de la pendiente, MXB:

La función matemática sirve para calcular la pendiente a partir de una lectura de

señal, X y dos constantes determinadas por el usuario: factor de escala, M y offset

o desplazamiento, B. Con la operación realizada se obtiene una respuesta que se

visualizará en pantalla siguiendo la ecuación: Y=MX+B.

Los valores de las constantes: M y B se especifican con esta función:

MXB:MMFactor seguido del valor para M y MXB:MBFactor y el valor del

desplazamiento, B. Se almacenan en una memoria volátil del multímetro y se

pueden consultar con un query con la función anterior seguido del símbolo ? Estas

constantes se borran tras realizar un reset, apagar el multímetro o reiniciar la

interfaz

Page 41: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 41

- Conversión de tensión a unidad de decibelios:

Este comando incluido dentro del conjunto CALCulate realiza una operación de

conversión de unidades. Su función es mostrar una medida de tensión, que puede

ser de corriente continua o alterna, en unidad de decibelios relativa a un valor de

referencia, 𝑉𝑟𝑒𝑓. Para realizar esta operación por lo tanto, existe la opción de

asignar el valore de la referencia o dejar que el multímetro tome un valor la primera

lectura. Se ajusta remotamente mediante la ejecución del comando dB:REFerence

seguido del valor deseado, que debe estar entre 0 y 200. Si no fuera así, el

instrumento ignoraría la función y asignaría el valor por defecto.

Presenta dos fórmulas de cálculo:

𝑑𝐵 = 20𝑥 log(𝑉𝑖𝑛

𝑉𝑟𝑒𝑓)

𝑑𝐵 = (𝑠𝑒ñ𝑎𝑙 𝑑𝑒 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 𝑒𝑛 𝑑𝐵𝑚) − (𝑣𝑎𝑙𝑜𝑟 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑜 𝑒𝑛 𝑑𝐵𝑚)

- Conversión de tensión a unidad de decibelios relativa a un milivatio:

Se utiliza para mostrar una medida de tensión en unidad de potencia dBm o, lo que

es lo mismo, unidad de decibelios relativa a un mV. Consecuentemente, tan solo

puede utilizarse en mediciones de tensión de corriente continua y alterna, al igual

que el anterior comando.

De igual forma, el usuario ajusta el valor de la resistencia de referencia ejecutando

dBm:REFerence dentro del rango (50, 8000. Si no se especifica un valor de

referencia o este cae fuera del intervalo anterior, el instrumento toma 600 Ω. Este

valor es almacenado en una memoria volátil y se borrará al apagar el multímetro o

reiniciar el instrumento.

La ecuación que sigue este comando es la siguiente:

𝑑𝐵𝑚 = 10𝑥 log(𝑉𝑖𝑛

2

𝑍𝑟𝑒𝑓) 1𝑚𝑊⁄

Page 42: Control de un multímetro digital mediante python

Pág. 42 Memoria

4.2.2. Comandos de trigger

Comando TRIGger:

El comando trigger o sistema de disparo, tiene como propósito proporcionar al multímetro la

capacidad de sincronización para la toma de medidas. Detecta el principio de un ciclo de

medición compuesto por tres estados. Este ciclo, representado en Fig.19, se describe a

continuación:

- Idle (inactivo):

El sistema de disparo se encuentra en estado de reposo o inactivo al iniciar el

multímetro o cuando se ejecuta un *RST.

- Waiting for trigger (esperando el disparo):

El instrumento se encuentra en el estado de espera de disparo tras ejecutar un

INITiate.

- Measurement (medición):

El sistema de disparo pasa al estado de medición si ocurre uno de los siguientes:

1) Detecta un disparo cuando transcurre el tiempo de retardo de disparo.

2) Recibe el comando TRIGger si se encontraba en el estado de espera de

disparo.

Es importante advertir que el aparato tan solo tomara las medidas si desde el estado de

espera de disparo es activado. Entonces es importante garantizar que está en este estado

antes de disparar.

Figura 19. Diagrama de funcionamiento de la operación trigger. Fuente: [28]

Page 43: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 43

Activar un sistema de disparo desde una interfaz remota suponer seguir una serie de fases

para realizar la toma de medidas.

Primero el usuario especifica diferentes ajustes de disparo para una medición. Estos son los

siguientes:

- Configurar la función de medición, el rango y la resolución deseados; con el

comando CONFigure.

- Determinar los ajustes de disparo.

- Especificar fuente de disparo. El multímetro puede utilizar un disparo inmediato

interno, por bus/software o externo.

Esta configuración es almacenada en una memoria volátil y será borrada tras el apagado o

reinicio del aparato para restablecer la configuración por defecto.

Como se ha detallado, el modo de activación del instrumento varía en función de la fuente de

activación especificada. Sin embargo, al realizar un control remoto del multímetro este

solamente soporta el método de disparo interno y de disparo por software.

- Disparo interno:

Es el método de disparo que se activa por defecto al controlar un multímetro

remotamente. Se emite un disparo de manera inmediata cuando se configura el

aparato en el estado de espera de disparo.

Para especificar este método de disparo se ejecuta el comando TRIGger:SOURce

IMMediate. Así pues, configuramos la medición, determinamos el disparo inmediato

y accedemos al estado de espera de disparo. Para esto ejecutamos uno de los

siguientes comandos: INITiate, READ?, o MEASure?

- Disparo por software:

El disparo por software o por bus es una fuente de disparo establecida mediante el

comando siguiente TRIGger:SOURce BUS. Su funcionamiento consiste en el envío

de un comando desde el ordenador que emite el disparo y se inician las mediciones.

El disparo se realiza mediante la ejecución del comando *TRG a través de la interfaz

remota cuando el aparato se encuentra en el estado de espera de disparo.

En la clase de Python creada para el control del instrumento se han diseñado dos métodos

de TRIGger, uno para el disparo inmediato y otro para el disparo por software. En éstos se

pueden especificar parámetros ajustables relacionados con la medida o con el disparo.

Page 44: Control de un multímetro digital mediante python

Pág. 44 Memoria

Sin embargo, no son imprescindibles pues las funciones pueden realizar las operaciones con

los valores predeterminados del multímetro.

Si se desea conocer la fuente de disparo seleccionada se puede realizar una consulta al

aparato mediante el query de SOURCE?

Ajustes de disparo:

El usuario puede determinar una serie de ajustes para un disparo mediante funciones del

conjunto TRIGger.

Todos estos valores se almacenan en una memoria volátil desde donde podrán ser

consultados. Para ello se realiza un query, por ejemplo: SAMPle:COUNt? y TRIGger:COUNt?

Los valores por defecto de los parámetros se restablecen al apagar el multímetro, reiniciar la

interfaz o efectuando un *RST.

- Número de disparos:

Esta función permite configurar el número de disparos que acepta el multímetro

antes de volver al estado inactivo. En general, el instrumento solamente soporta un

disparo; es su configuración por defecto. Sin embargo, se pueden establecer

múltiples disparos con el comando TRIGger:COUNt y el valor deseado.

Al igual que con la función anterior, si se reinicia el aparato, se realiza de nuevo un

único disparo por ciclo de medición.

- Tiempo de retardo:

El comando TRIGger añade un tiempo de retardo entre la señal de disparo y la

primera medición. Es de utilidad para que la entrada se establezca y corrija las

variaciones iniciales antes de la toma de medidas. También se aprovecha para

marcar el ritmo en ráfagas de medidas.

El retardo siempre existe en las mediciones por disparo. No obstante, su valor por

defecto depende de la configuración de medición: función, rango y tiempo de

integración. Así pues, se trata de un retardo automático, TRIGger:DELay:AUTO

ON.

Page 45: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 45

Si el usuario quiere establecer un valor concreto para el retardo puede ejecutar la

función TRIGger:DELay y el valor. El valor que el usuario asigna puede estar entre

0 y 3600 segundos. De esta manera se desactiva el retardo de disparo automático,

TRIGger:DELay:AUTO OFF.

Este parámetro se guarda en una memoria volátil y puede ser consultado mediante

la interfaz de Python. Mediante un query(“TRIGger:DELAY?”) podemos conocer el

valor de retardo asignado y si la función de retardo de disparo automático está

activa, query(“TRIGger:DELay:AUTO?”). Mencionar que en el caso concreto que

el instrumento tome varias muestras por un disparo, este retardo se aplica entre

una y la consecutiva. Es decir, se incluye tras el disparo y además se intercala entre

todas las mediciones.

La función de retardo de disparo automático se reactiva tras un reinicio de fábrica,

*RST o de un preajuste del instrumento SYSTem:PRESet.

Seguidamente se mencionan algunos aspectos destacables:

Primeramente, el retardo real que se establece es ligeramente diferente al valor

especificado. Aproximadamente puede variar en un 1 µs. La variación podría para

cables largos, señales de alta capacitancia o alta impedancia.

En segundo lugar, el retardo de disparo especificado es aceptado por todas las

funciones salvo las de continuidad y diodo, que ignoran este ajuste.

El último detalle se explicará en el próximo subapartado pues, aunque esté

relacionado con los comandos de disparo, no forma parte de este subconjunto.

Comando SAMPle:

Los métodos sample sirven para configurar los ajustes de disparo detallados anteriormente.

Por lo tanto, se usan juntamente con los comandos TRIGger para establecer el número de

muestras por disparo.

En otras palabras, sirve para ajustar el número de medidas que toma el multímetro al recibir

un disparo. El valor predeterminado es una única lectura por disparo, pero éste se modifica

ejecutando el comando SAMPle:COUNt seguido del número de muestras deseado se

establece el nuevo valor.

Como es de esperar, no cualquier valor es válido. El multímetro Keithley 2100 acepta el

máximo de 50.000 muestras por un único disparo. Si se asigna un valor superior, el

instrumento mantiene el valor por defecto, 1.

Page 46: Control de un multímetro digital mediante python

Pág. 46 Memoria

4.2.3. Comandos relacionados con el sistema

Comando DISPlay:

El subsistema DISPlay permite controlar la pantalla del instrumento remotamente por medio

de la selección y presentación de información textual y gráfica. Algunos ejemplos de esta

información son datos de medición, datos determinados por el controlador y pantallas de

interacción con el usuario.

Este incluye varios comandos mediante programados mediante la interfaz remota:

- DISPlay: ON/OFF:

Esta operación activa o desactiva el panel frontal. Al desactivarse, los anunciadores

se desactivan y la pantalla se atenúa, pero se mantiene encendida. Por defecto el

instrumento tiene la función de visualización activada y se debe ejecutar el comando

necesario para inhabilitarla.

La principal ventaja de desactivar la pantalla es la mejora de la velocidad de

ejecución de los comandos y la seguridad que proporciona.

- DISPlay?

Se trata de una consulta mediante la cual se conoce el estado de la función DISPlay,

si esta activada, ON (1) o no, OFF (0).

- DISPlay:TEXT

Si se ejecuta este comando y una cadena de strings a continuación se envía el texto

al aparato y será mostrado el texto en la pantalla del panel frontal. El texto puede

tener un máximo de 40 caracteres y éstos pueden ser letras, números y caracteres

especiales. En la fila tan solo pueden aparecer 16 caracteres; todos los demás se

truncarán. Este texto se mostrará en pantalla hasta que se apague el instrumento,

pero no le afecta la ejecución de un *RST.

- DISPlay:TEXT?

Se consulta el texto enviado al panel frontal del multímetro. El valor por defecto que

retorna la interfaz es el string vacío cuando no se ha enviado ningún texto al

instrumento. Este comando también es válido cuando la función DISPlay está

desactivada, es decir, cuando DISPlay? retorna el valor nulo.

- DISPlay:TEXT:CLEar

Si se desea borrar el texto de la pantalla, se debe ejecutar el comando mostrado.

Devuelve la pantalla a su modo normal.

Page 47: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 47

Comando SYSTem:

El conjunto de métodos del comando SYSTem ejecutan operaciones de carácter general.

Algunas de ellas son las siguientes:

Comandos de beep o pitido:

Dentro del conjunto de comandos de SYSTem:BEEPer el instrumento soporta los siguientes

métodos.

- BEEPer:STATe ON/OFF

Activar/Desactivar el estado de aviso por pitido. Sin embargo, aunque este

desactivo se sigue produciendo un pitido en algunos casos: cuando se produce un

error, se supera el intervalo para las pruebas de continuidad y se pulsa una tecla

del panel frontal.

- BEEPer:STATe?

Consultar del estado con el comando query.

- BEEPer

Emisión inmediata de un pitido.

SYSTem:ERRor?

El instrumento retorna un mensaje de error según el estándar SCPI. Se trata de una cadena

como máximo de 80 caracteres, como:-113,"Undefined header".

El máximo de errores que pueden guardarse en la memoria es de 20. Cuando se supera el

límite de errores el instrumento sustituye el último error encontrado por: -350,"Queue

overflow". Hasta la eliminación de los valores de la memoria el error -350 aparece en pantalla

y el instrumento no almacena nuevos errores. Estos solamente pueden ser borrados

ejecutando el comando *CLS.

Por el contrario, si no se ha producido ningún error al consultar la cola de errores un +0,"No

error" es devuelto por el intérprete.

La numeración de errores por el estándar SCPI se realiza según su tipo, cambiando la centena

para cada uno de ellos. Esta puede ser consultada en los anexos10.

10 Ver [Anexo I.3]

Page 48: Control de un multímetro digital mediante python

Pág. 48 Memoria

SYSTem:VERSion?

Consulta la versión de los comandos SCPI con la que el multímetro se ajusta. Típicamente la

versión con la que cumplen la mayoría de los instrumentos de medición es la 1994.0.

DATA:POINts?

Retorna el número de mediciones almacenadas en la memoria de lectura. Este método puede

ser consultado en cualquier momento, también cuando el instrumento está realizando una

serie de mediciones.

Comando STATus:

Dentro del conjunto de comandos de estado se encuentras los que realizan el reinicio,

comprobación y operaciones de estado. Estos empiezan con el asterisco (*) y suelen tener

cuatro o cinco caracteres. Estos son los comandos comunes.

Por otro lado, tenemos los métodos que contienen STATus: QUEStionable en su código.

Estos están relacionados con la determinación de la calidad de las mediciones. El conjunto

de registros de estado datos cuestionables incluye todos aquellos valores generados que son

de calidad dudosa. Estos valores son bits y cada uno de ellos se asocia a un parámetro que

indica porque la señal no es de calidad

- STATus:QUEStionable:EVENt?

Consulta el registro de datos cuestionables almacenados. Al leerse el registro estos

bits se eliminan automáticamente.

- STATus:QUEStionable:ENABle

Con este código puede realizarse una operación y una consulta. Para el primero se

deberá indicar el valor decimal correspondiente a la suma ponderada binaria de un

bit. Este bit del registro de eventos será habilitado en el registro de Bytes de Estado.

Por otro lado, se puede consultar el valor decimal del bit establecido en el registro

de habilitación mediante un query.

Page 49: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 49

4.3. Verificación y validación de los resultados

En el apartado anterior se ha realizado un análisis del código diseñado para el desarrollo del

proyecto con el fin de poder comprobar su comportamiento. Por lo tanto, este capítulo consiste

en la verificación del funcionamiento de la clase en Python Keithley2100 mediante pruebas

experimentales.

Para ello se ha realizado un montaje con los dispositivos electrónicos necesarios detallados

en el subapartado 4.3; el multímetro digital, el portapilas con un par de pilas de 1,5 V,

resistencias y un LED. Para todas las verificaciones se ha mantenido el mismo circuito.

El circuito eléctrico del montaje durante esta comprobación del código es el de la Fig. 20. Se

colocan las pilas en serie, seguidamente la resistencia y un LED rojo. La idea del circuito

descrito es que el LED se encienda gracias a la alimentación de las pilas. Debido a la caída

de voltaje que le pueden transmitir las baterías se ha optado por usar un LED de color rojo

pues su iluminación es más eficiente a menores voltajes. Si deseáramos usar un LED de otro

color como verde o amarillo se debería aumentar el voltaje de las pilas para conseguir que los

LEDs emitieran luz.

Es importante destacar que debe conectarse el ánodo del LED al mayor punto de voltaje, al

terminal positivo de las pilas mientras el cátodo se encuentra en el de menor voltaje. Si no

fuera así el LED seguro que no se iluminaría, pues el circuito no estaría correctamente

montado.

Figura 20. Diagrama de funcionamiento de la operación matemática trigger.

Fuente: [29]

Page 50: Control de un multímetro digital mediante python

Pág. 50 Memoria

Para ello, se han realizado dos pruebas con distintos dispositivos a caracterizar.

Procedemos a cerrar el interruptor permitiendo el paso de la corriente eléctrica por el circuito.

Si el LED se ilumina podemos corroborar que se ha conectado de manera satisfactoria la

instalación del circuito.

Así pues, conectado el circuito se sigue con la preparación para la toma de medidas. Se debe

proporcionar alimentación al instrumento, conectarlo al ordenador y encender ambos

dispositivos. Se inicia el intérprete de Python y se importan la clase de Python diseñada.

Realizados estos pasos ya se pueden iniciar las pruebas experimentales del circuito. Se

empezará por las más sencillas y posteriormente se avanzará para comprobar los métodos

desarrollados.

Mencionar que, debido a limitaciones de material, no todas las funciones de la clase se han

podido ejecutar para la comprobación. La situación actual de pandemia ha supuesto que las

comprobaciones se llevaran a cabo fuera del laboratorio, por lo que no se ha tenido acceso al

suficiente material. No obstante, todas las funciones incluidas en el manual del instrumento

se han diseñado y se prevé poderlas ejecutar en un futuro.

Tras el montaje se importa el código creado desde la terminal y así realizaran las pruebas.

Primeramente, se instancia la clase de Python creada en una variable.11

Automáticamente se inicializa la clase que conectará el multímetro al ordenador. Ya se puede

controlar el multímetro remotamente, instanciando los distintos métodos de la clase.

Se empieza con la verificación de los métodos más simples, que no requieren tener el circuito

conectado. Para ello se procede a ejecutar el comando idn, que realiza un query para obtener

la cadena de caracteres que identifica el instrumento. Obtenemos: “KEITHLEY

INSTRUMENTS INC.,MODEL 2100,8014217,01.12-01-01”, por lo que la creación de este

comando resulta exitosa.

Continuamos con la verificación de otros métodos vinculados al sistema como los de

visualización en el panel frontal, establecimiento de límites y los que provocan al instrumento

realizar un pitido.

Llamamos al conjunto de métodos que permiten conocer y cambiar el estado de visualización

en pantalla del instrumento. Primeramente, se descubre que la pantalla del panel frontal esta

activa, mediante display. Esto era predecible pues por defecto la pantalla está encendida y la

11 Ver [Anexo I.5]

Page 51: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 51

función retorna el valor 1.

Ahora se procede a mostrar un texto en la pantalla del panel frontal. Para ello se llama al

método de la clase setdisplaytext y entre paréntesis se escribe el texto a visualizar.

Realizamos una prueba con el string “Keithley2100” pues esta función acepta tanto letras

como números. Así pues, observamos en la pantalla frontal del multímetro el texto. El método

de la clase showdisplaytext nos permite corroborar cual es el texto que se visualiza en

pantalla, pues realiza una consulta a la memoria donde está almacenado.

A continuación, podemos apagar la pantalla si ejecutamos displayoff y el texto desaparece.

Para volver al estado predeterminado ejecutamos displayon y “Keithley2100” vuelve a

mostrarse en pantalla. Esto se ha detallado anteriormente, si la pantalla está encendida el

texto solamente se borrará si se ejecuta el comando requerido. Es por esto por lo que la única

forma de eliminar el texto es por medio de cleardisplaytext.

Se procede a verificar otros métodos incluidos en el manual del multímetro. Por ejemplo, se

restringirán los valores mínimos y máximos de medición. Para ello se realiza un setlowerlimit

y setupperlimit con los límites a establecer como atributos. También puede realizarse esta

operación con la ejecución del comando setlimits. Con este método se deben especificar los

valores deseados para el límite inferior y para el límite superior en este orden. Es importante

destacar que el límite inferior debe ser más pequeño que el límite superior. También recordar

que los comandos SCPI trabajan con las unidades del sistema internacional y se trabaja con

el punto como separador decimal.

Los comandos anteriores supuestamente determinan los valores límites para las mediciones.

Se procede ahora a verificar si dichos métodos realmente han establecido los valores

solicitados. Para ello llamamos al método calculatlowerlimit y calculateupperlimit en el

intérprete de Python. Estas consultas retornan el límite inferior y superior, respectivamente.

Los valores coinciden con los esperados por lo que se concluye que todas las operaciones de

límites funcionan correctamente.

Seguidamente con los comandos del conjunto de SYSTem conseguiremos que el multímetro

realiza un pitido o un beep, tal y como se llama en el manual. Para ello probamos el método

beep y oímos el pitido que el instrumento realiza. También consultamos la versión del sistema,

obteniendo “1991.0”. Probamos las demás funciones del subsistema del sistema con un

resultado predecible, por lo que concluimos que el código es correcto.

Configuraremos el multímetro para diferentes funciones con parámetros de rango y resolución

definidos. Como se ha explicado anteriormente, la especificación de estos parámetros no es

imprescindible, pero le otorga rapidez al instrumento. Recordar que es posible determinar un

valor para la resolución si se trabaja con el autorango. También se debe mencionar que las

Page 52: Control de un multímetro digital mediante python

Pág. 52 Memoria

configuraciones de temperatura, diodo y continuidad no admiten la especificación de

resolución. A las dos últimas tampoco se les puede determinar el rango deseado.

Se procede a ejecutar la siguiente serie de comandos: configurevoltageAC,

configurevoltageDC, configurecurrentAC, configurecurrentDC, configureresistance,

configurefresistance, configurefrequency, configurediode, configureperiod, configurecontinuity

y configuretemperature. Después de la ejecución de cada método, con los valores de rango y

resolución particulares, se verifica su correcto establecimiento. Para ello, tras cada comando

se realiza una consulta mediante configure. Este método realiza un query de la configuración

que tiene almacenada el multímetro en su memoria. Se comprueba uno a uno que coinciden

tanto la función como los valores definidos en el comando anterior. Concluimos que tanto los

métodos de configuración como el query realizan las operaciones y consultas de

satisfactoriamente.

Conectamos las sondas a los terminales del portapilas y ejecutamos la función de medida de

voltaje. Para ello se ha ejecutado el comando readDCvoltage de la clase de Python. Al tener

dos pilas de 1.5 V cada una, podemos suponer que la terminal retorne un resultado alrededor

de 3 V. Para la ejecución de este comando podemos especificar el rango y de resistencia

deseadas. Se han recogido las siguientes medidas: +3.09827712E+00 entre las baterías,

+1.64557582E+00 entre el ánodo y el cátodo del LED y 1.45271352E+00 entre los bornes de

la resistencia. Con estas medidas se ha comprobado el comportamiento de la clase. Así pues,

se ha encontrado un resultado esperable, la clase diseñada ha realizado una medición con

éxito.

Proseguimos a realizar mediciones de resistencia, corriente y diodo. En todas las

simulaciones obtenemos resultados satisfactorios, esperables con el comportamiento del

circuito montado.

Seguidamente ejecutamos los métodos relacionados con operaciones matemáticas, las que

pertenecen al conjunto de CALCulate. Establecemos valores determinados para las

constantes de la función Y=MX+B. Esto lo realizamos por medio de setmbfactor y setmmfactor

con los valores deseados. Podemos consultar los valores que M y B toman mediante

calculatembfactor y calculate mmfactor, Puesto que el intérprete retorna los mismos valores

antes introducimos, se supone que funciona correctamente.

Se prueban del mismo modo los comandos setdbreference y setdbmreference, con la misma

conclusión de antes, el código permite el control remoto del multímetro. Recordar que para su

correcto funcionamiento se deben insertar unos números dentro de un rango. Esto es así

puesto que, en caso contrario, los resultados no serían de utilidad. En caso de no realizarse

así, se mantendrían los valores que el multímetro tiene predeterminados.

Page 53: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 53

Por desgracia, algunos métodos como la medición de temperatura no se han podido verificar.

En los casos en los que no hemos podido realizar los experimentos consideramos que los

resultados serían favorables. De todas formas, es aconsejable que en futuras líneas de trabajo

se procede a su comprobación.

Page 54: Control de un multímetro digital mediante python

Pág. 54 Memoria

4.4. Presupuesto del proyecto

A continuación, se realiza un análisis del trabajo realizado, cuantificándolo en unidades y

precio. El objetivo de este capítulo es por lo tanto estudiar el impacto económico del proyecto,

el gasto generado durante el desarrollo del trabajo.

4.4.1. Coste del equipo

Para ello se dividen los costes del proyecto según su concepto. Analizaremos en primer lugar

todo aquel coste correspondiente a la obtención del material. Este incluye los componentes

necesarios tanto electrónicos como informáticos. Indicar que el coste de los materiales se

contabiliza a partir de su amortización, considerando su vida útil y el tiempo de uso para el

proyecto.

Por un lado, consta el multímetro digital Keithley 2100, resistencias eléctricas, LED, porta pilas

y pilas. Por otro el portátil ThinkPad y los accesorios del ordenador como monitor, teclado y

ratón y el software instalado.

A continuación, se detalla porque la mayoría de los costes de los materiales no han sido

contabilizados en el presupuesto.

Se considera que el coste de los dispositivos electrónicos usados es mínimo. Es así puesto

que solamente se han necesitado para la verificación del código desarrollado. Este tiempo,

en comparación con su larga vida útil, es insignificante. Por ejemplo, un LED tiene una vida

útil de entre 105 y 108 horas [30]. Podemos realizar una estimación a groso modo de que este

ha emitido luz 15 minutos. Por lo tanto, se depreciará un 0,00001% de su valor, por lo que se

concluye que su impacto económico es despreciable.

El conjunto del equipo informático, salvo el ordenador, tampoco ha sido contabilizados en el

presupuesto. La razón detrás de esta decisión recae en que no son dispositivos de uso

imprescindible para desarrollar el proyecto. Además, es habitual que estos se encuentren en

oficinas y hogares. El software necesario se ha detallado en apartados anteriores. Los

programas y librerías: Python, el driver VISA y la librería PyVISA se han descargado

Page 55: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 55

gratuitamente desde las páginas oficiales, por lo que no añaden ningún coste adicional 12,13,14.

Por lo tanto, el único material cuya amortización se incluye en el presupuesto es el ordenador.

Se estima que se ha utilizado durante cinco meses; de febrero a junio. Este portátil, cuyo

precio de adquisición es aproximadamente 650€, cuenta con una vida útil media de cinco

años. Realizando las operaciones adecuadas calculamos el valor de la amortización que es

de 55€.

Además, consideramos el consumo eléctrico que este ordenador necesita. Suponemos un

consumo de media de 135 W de potencia durante el uso del ordenador y que este se necesita

para todo el trabajo [31]. También tomamos 0,14 €/kWh como precio medio para el consumo

eléctrico [32]. A partir de esto realizamos el cálculo para obtener el precio por hora del uso del

portátil como podemos ver en la Tabla 1.

12 Python Releases for Windows. Python. (2021) [Consultado 10 febrero 2021]

<https://www.python.org/downloads/windows/>

13 NI-VISA. National Instruments. (2020) [Consultado 10 febrero 2021] <https://www.ni.com/es-

es/support/downloads/drivers/download.ni-visa.html#346210>

14 Download files. PyPi. (2020) [Consultado 10 febrero 2021] <https://pypi.org/project/PyVISA/#files>

Coste material y consumo Tiempo Coste/tiempo Coste total (€)

Consumo eléctrico 360 h 0,019 €/hora 6,80

Amortización portátil Lenovo 5 meses 10,83 €/mes 54,15

Coste total 60,95

Tabla 1. Coste de amortización del material y del consumo eléctrico.

Fuente: propia

Page 56: Control de un multímetro digital mediante python

Pág. 56 Memoria

4.4.1. Coste del tiempo de elaboración

Analizados los costes materiales y de consumo del presupuesto, se prosigue con el desglose

del tiempo invertido en el proyecto. Para ello se tiene en consideración el diseño y la

elaboración del código y la memoria, contabilizado en horas de trabajo.

Este trabajo ha requerido diferentes fases de realización.

Primeramente, se ha requerido la preparación previa o de lectura. Consiste en la comprensión

de los componentes de software y del multímetro. El programa Python ya se conocía puesto

que varias asignaturas cursadas en el grado estaban dedicadas a su aprendizaje. El driver, el

paquete PyVISA y el multímetro si resultaban desconocidos por lo que se dedicaron horas a

aprender sus fundamentos, características y funciones que soportan.

A continuación, se ha procedido al diseño del código. Aquí se incluye tiempo dedicado a la

programación de las clase en Python con la ayuda de los documentos que describen los

comandos SCPI, la librería PyVISA y el manual del multímetro Keithley 210015,16,17. Por lo

tanto, esta fase consta del desarrollo de la clase para controlar del instrumento remotamente.

Por último, se considera la fase de verificación y de redactado. Las pruebas consisten en

realizar medidas y configurar el instrumento con la obtención de datos de simulación. Estas

mediciones, constatadas anteriormente, ayudan al entendimiento del código. Así como la

redacción de la memoria y la síntesis del trabajo realizado. Todo esto es parte de esta última

fase del proyecto.

En la Tabla 2 se pueden ver la cantidad de horas invertidas para cada etapa del proyecto.

Apreciamos como, en total se suma un total de 360 horas de trabajo equivalentes a los 12

ECTS de un Trabajo de Final de Grado. Suponiendo un sueldo de 30 €/hora para el ingeniero

se concluye que el coste total del tiempo necesario es de 108.000 €.

15 Ver [Anexo I.1]

16 Ver [Anexo I.2]

17 Ver [Anexo I.3]

Page 57: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 57

Fase Tiempo (horas) Coste total (€)

Preparación previa 90 2.700

Desarrollo del código 150 4.500

Verificación y redacción 120 3.600

Total 360 108.000

Finalmente, sumando el coste del material y del tiempo dedicado obtenemos un total de

108.060,95 €. Como era de esperar, se trata de un coste moderado puesto que el trabajo está

basado en programación.

Tabla 2. Coste desglosado del tiempo invertido en el proyecto.

Fuente: propia

Page 58: Control de un multímetro digital mediante python

Pág. 58 Memoria

4.5. Impacto medioambiental

El impacto medioambiental de este proyecto es reducido, ya que la mayor parte de este

consiste en la programación de una clase. Por lo tanto, tan solo los dispositivos de hardware

utilizados tendrán un impacto en el medio ambiente.

Es decir, se analizará solamente la huella que produce el multímetro digital Keithley2100 en

el planeta. A lo largo de la realización del proyecto este ha consumido electricidad. Esta

cantidad de energía requerida es mínima, puesto que solamente se ha requerido su uso para

la verificación del código.

Aunque este sea mínimo, lo tomamos en consideración. Gracias al desarrollo del código y a

su éxito para el control remoto del multímetro, logramos reducir significativamente el consumo

de este. Usar la clase diseñada en Python permite reducir la cantidad de tiempo para la toma

de mediciones, puesto que el proceso se ha automatizado. Así pues, solamente se requiere

configurar el instrumento solo una vez.

En consecuencia, el aparato ahorra en consumo de energía y aumenta su vida útil. Como

conclusión, afirmamos que el proyecto supone un impacto medioambiental positivo, aunque

este sea reducido.

Page 59: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 59

Conclusiones

A lo largo de la realización de este proyecto se demuestra que el lenguaje de programación

Python supone una herramienta de trabajo altamente eficiente para llevar a cabo tareas de

control remoto de instrumentos de medición.

Tal y como se ha explicado en el capítulo de objetivos, se ha diseñado un código que facilita

la realización de medidas automáticas de forma remota utilizando un ordenador personal. En

este trabajo se ha empleado el bus USB para conectar el ordenador con el instrumento de

medición. Los comandos SCPI han sido la base de la comunicación y para enviar estos

comandos se ha empleado el módulo PyVISA de Python.

Con la ayuda del código diseñado, el usuario final no tiene que interactuar directamente con

el instrumento, sino que puede configurar los parámetros necesarios a través de la clase

creada en Python.

El aspecto más destacado de hacer tareas de control remoto con Python es el tiempo que

ahorra en realizar medidas que necesitan una gran cantidad de configuraciones en los

equipos. El código permite disminuir significativamente la duración de la realización de las

medidas dado que, si no contara con ellos, se deberían establecer manualmente los valores

en cada una de las mediciones. Además, cabe recalcar la facilidad de programación, puesto

que se trata de un lenguaje interpretado. Otra ventaja por resaltar es la posibilidad de realizar

las mediciones a cierta distancia del aparato.

En este proyecto se ha dado especial atención al concepto de instrumentación virtual, que

cada vez está más presente en los proyectos de toma de datos. Asimismo, actualmente se

han diseñado un gran número de sistemas para implementar aplicaciones que se basan en

la instrumentación virtual. Los numerosos beneficios y la eficiencia que proporciona esta

metodología de trabajo han sido las principales razones para este desarrollo. Adicionalmente,

se permite al usuario configurar y generar sus propios sistemas logrando un buen desempeño

de los equipos junto con una alta flexibilidad, reutilización y reconfiguración de estos, de

manera que se reducen considerablemente los costes de desarrollo, mantenimiento, etc. Este

concepto garantiza, además de que el trabajo actual podrá ser empleado en el futuro, una

flexibilidad y extensión a medida que cambian las necesidades funcionales y operativas del

usuario, ya que al estar todo definido por software y no por hardware, la adaptación del

instrumento según la necesidad es casi completa.

Una vez finalizado el proyecto y evaluados los resultados obtenidos, cabe mencionar los

nuevos objetivos a afrontar con la intención de explorar con más profundidad el control remoto

de instrumentos y así aprovechar sus ventajas. Por ejemplo, en este caso podría tratarse de

Page 60: Control de un multímetro digital mediante python

Pág. 60 Memoria

verificar los métodos creado en la clase que no han sido de comprobar por falta de material.

Adicionalmente, podrían extrapolarse las mediciones a circuitos más complejos y realizar con

ellos estudios comparativos. Podría valerse de la posibilidad de repetir medidas con el fin de

verificar el correcto comportamiento tanto del aparato como de los equipos: resistencias,

diodos, pilas, etc. En el futuro, se podría extender la funcionalidad de dichos códigos en

función de las necesidades del usuario, como se viene explicando anteriormente, gracias a la

flexibilidad de la instrumentación virtual. Además, a pesar de estar perfectamente explicada

la funcionalidad de cada módulo en esta memoria, se podría elaborar una interfaz gráfica que

haga más intuitivo el uso del código y mejore la interactividad con el usuario.

Page 61: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 61

Agradecimientos

Quiero agradecer al supervisor de mi proyecto de fin de grado, Manuel Moreno Eguílaz. En

primer lugar, por el apoyo incondicional recibido, su compromiso y atención. En segundo lugar,

por su disponibilidad para ayudarme en cualquier situación, resolviendo dudas y mostrando

siempre interés en presentar un trabajo de calidad.

Agradecer también a los profesores de la Escuela que me han formado. Especialmente a los

departamentos de informática y electrónica ya que sus enseñanzas me han sido de gran

utilidad para el desarrollo de este trabajo. Asimismo, el conocimiento aprendido ha estimulado

mi interés por la electrónica y el software.

Por último, quiero expresar mi enorme agradecimiento a mis amigos y a mi familia,

especialmente a mi tía Margarita Anglada. Por su ayuda, confianza y apoyo no solamente

durante la realización del proyecto sino también a lo largo de los cuatro años del grado.

Page 62: Control de un multímetro digital mediante python

Pág. 62 Memoria

Bibliografía

Referencias bibliográficas

[1] NI Trademarks and Logo Guidelines. National Instruments (2020) [Consultado 13 junio

2021] <https://www.ni.com/en-us/about-ni/legal/trademarks-and-logo-guidelines.html>

[2] Basics of Instrument Remote Control. Rhode & Schwarz. [Consultado 1 abril 2021]

<https://www.rohde-schwarz.com/sg/driver-pages/remote-control/automation-by-

remote-control-step-by-step_231238.html>

[3] Pulido, Iván. Control remoto de instrumentación para radiocomunicación mediante

Python. Tesis de Master, Universidad de Sevilla. (2017) [Consultado 28 abril 2021]

<https://idus.us.es/bitstream/handle/11441/70672/TFG%20Iv%c3%a1n%20Pulido%20

Mu%c3%b1oz.pdf?sequence=1&isAllowed=y>

[4] Instrumentación virtual hardwares y beneficios. Ingeniería Electrónica. (2015)

[Consultado 17 mayo 2021] <https://ingenieriaelectronica.org/instrumentacion-virtual-

hardwares-y-beneficios/>

[5] Signer, Eric. Will USB have an impact on test-and-measurement users? EE Times.

(2005) [Consultado 12 mayo 2021] <https://www.eetimes.com/will-usb-have-an-impact-

on-test-and-measurement-users/#>]

[6] Multímetro de banco Keithley 2100/230-240, 750V ac/1000V dc, 3A ac/3A dc. RS.

[Consultado 14 febrero 2021] < https://es.rs-online.com/web/p/multimetros/7600290>

[7] USB. Computer Hope. (2020) [Consultado 2 abril 2021]

<https://www.computerhope.com/jargon/u/usb.htm#usb>

[8] How to Set Up Peripherals on a Windows Computer. Support [Consultado 21 mayo 2021]

<https://www.support.com/how-to/how-to-set-up-peripherals-on-a-windows-computer-

10967>

[9] USB Logo Usage Guidelines. USB Implementers Forum, Inc. (USB-IF). (2018)

[Consultado 2 mayo 2021] <https://www.usb.org/sites/default/files/usb-

if_logo_usage_guidelines_final_as_of_august_3_2018_locked.pdf>

[10] SCPI Consortium. IVI Foundation. [Consultado 8 mayo 2021]

<https://www.ivifoundation.org/SCPI/Default.aspx>

Page 63: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 63

[11] Asterion Series SCPI Programming Manual. AMETEK Programmable Power. (2018)

[Consultado 2 junio 2021] <https://www.powerandtest.com/-

/media/ametekprogrammablepower/files/ac%20power%20sources/asterion%20ac%20

1u2u/manuals/ast_series_scpi_programming_manual_m330100-01_rvd.pdf>

[12] IEEE 488.2-1992 - IEEE Standard Codes, Formats, Protocols, and Common Commands

for Use With IEEE Std 488.1-1987, IEEE Standard Digital Interface for Programmable

Instrumentation. (1992) [Consultado 4 mayo 2021]

<https://standards.ieee.org/standard/488_2-1992.html>

[13] SCPI Basics. RF & Microwave Navigation Map. [Consultado 6 abril 2021]

<https://rfmw.em.keysight.com//wireless/helpfiles/n5106a/scpi_basics.htm>

[14] Nationals Instruments, Página Web Oficial de Nationals Instruments. [Consultado 4

mayo 2021] <http://www.ni.com/es-es.html>

[15] Guidelines for the Use of the Stack Exchange, Inc. Trademarks. Stack Overflow.

[Consultado 3 marzo 2021] <https://stackoverflow.com/legal/trademark-guidance>

[16] GitHub Logos and Usage. GitHub. [Consultado 3 marzo 2021]

<https://github.com/logos>

[17] Keithley-IV-Sweep. GitHub. (2018) [Consultado 5 febrero 2021]

<https://github.com/pmasi/Keithley-Python-Interface>

[18] Van Veenhuizen, Marc. Build an instrument control library for Python. EDN Asia. (2019)

[Consultado 17 abril 2021] <https://www.ednasia.com/build-an-instrument-control-

library-for-python/>

[19] Introducción a Python utilizado en IoT Step5-Python3 VISA ④ DMM Keithley 2000 +

instalación de la fuente de alimentación E3631A. Denshiclub. (2020) [Consultado 17

marzo 2021] <https://www.denshi.club/pc/python/iotpython-step5-python3-visa1dmm-

keithley-2000-e3631a.html>

[20] Calibrating the calibrator. Hack a day. (2015) [Consultado 18 febrero 2021]

<https://hackaday.io/project/5971-python-powered-scientific-instrumentation-

tool/log/19637-calibrating-the-calibrator>

[21] Keithley2600. PyPi. (2020) [Consultado 18 febrero 2021]

<https://pypi.org/project/keithley2600/>

[22] Convert Keithley’s code into Python. Tektronix Technical Forums. (2018) [Consultado 23

marzo 2021] <https://forum.tek.com/viewtopic.php?t=140954>

Page 64: Control de un multímetro digital mediante python

Pág. 64 Memoria

[23] Keithley Instruments. GitHub. (2018) [Consultado 16 abril 2021]

<https://github.com/tektronix/keithley>

[24] List, Jenny. How to control your instruments from a computer: it’s easier than you think.

Hack a day. (2016) [Consultado 10 abril 2021] <https://hackaday.com/2016/11/16/how-

to-control-your-instruments-from-a-computer-its-easier-than-you-think/>

[25] Control your instruments with Python. PyVISA. (2021) [Consultado 1 marzo 2021]

<https://pyvisa.readthedocs.io/en/latest/#pyvisa-control-your-instruments-with-python>

[26] SCPI Explained - SCPI Commands. JPA-SCPI Parser. [Consultado 17 marzo 2021]

<https://jpacsoft.com/scpi_commands.php>

[27] MEASure Subsystem. Operating and Service Guide. RF & Microwave Navigation Map.

[Consultado 12 junio 2021]

<https://rfmw.em.keysight.com/bihelpfiles/Truevolt/WebHelp/US/>

[28] Starting a New Measurement Cycle (Triggering). KEYSIGHT TECHNOLOGIES.

[Consultado 29 mayo 2021]

<http://ena.support.keysight.com/e4982a/manuals/webhelp/eng/index.htm#programmin

g/remote_control/starting_measurement_cycle_(triggering)_and_detecting_end_of_me

asurement/starting_a_new_measurement_cycle_(triggering).htm>

[29] El circuito eléctrico. Geekebrains. (2018) [Consultado 10 junio 2021]

<https://geekebrains.com/sin-categoria/circuito-electrico>

[30] Ott, Melanie. Capabilites and Reliability of LEDs and Laser Diodes. Technology

Validation Assurance Group Swales Aerospace. (1997) [Consultado 12 junio 2021]

<https://photonics.gsfc.nasa.gov/tva/meldoc/sources1.pdf>

[31] Gargallo, Agustín. Medida y análisis del consumo de energía eléctrica en los receptores

domésticos en condiciones reales de funcionamiento: Aplicación a una vivienda

unifamiliar. Trabajo Final de Grado, Universidad Politécnica de Valencia. (2018)

[Consultado 10 junio 2021]

<https://riunet.upv.es/bitstream/handle/10251/106520/21790210X_Trabajo_153081533

30007985563568234754430.pdf?sequence=1&isAllowed=y>

[32] ¿Cuánto cuesta la luz? Endesa. (2021) [Consultado 10 junio 2021]

<https://www.endesa.com/es/blog/blog-de-endesa/luz/cuanto-cuesta-electricidad>

Page 65: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 65

Bibliografía complementaria

Allegue Martínez, Michel. Modeling and compensation of non-linear effects in wireless

communications Systems. Tesis Doctoral, Universidad de Sevilla. (2012) [Consultado 20 abril

2021] <file:///C:/Users/sesa594307/Desktop/D_T.PROV43.pdf>

Amores, Eduardo. Control de instrumentos mediante el bus GPIB programado con Matlab.

Tesis de Máster, UAB. (2010) [Consultado 2 mayo 2021]

<https://ddd.uab.cat/pub/trerecpro/2010/hdl_2072_97366/PFC_EduardoAmoresRubio.pdf>

Borrero Serrano, María España. Herramienta software para el control remoto de una fuente

de alimentación mediante una interfaz gràfica. Trabajo Fin de Grado, Universidad de Sevilla.

(2011) [Consultado 23 abril 2021]

<http://bibing.us.es/proyectos/abreproy/11986/fichero/Archivo+%C3%ADndice%252F%C3%

8DNDICE.pdf>

Desjardin, Larry. SCPI programming: Strenghts and weaknesses. EDN. (2013) [Consultado

28 febrero 2021] <https://www.edn.com/scpi-programming-strengths-and-weaknesses/>

Estándar VISA. PyVISA. [Consultado 19 febrero 2021] <https://pyvisa.readthedocs.io/en/>

Gargallo, Agustín. Medida y análisis del consumo de energía eléctrica en los receptores

domésticos en condiciones reales de funcionamiento: Aplicación a una vivienda unifamiliar.

Trabajo Final de Grado, Universidad Politécnica de Valencia. (2018) [Consultado 10 junio

2021]

<https://riunet.upv.es/bitstream/handle/10251/106520/21790210X_Trabajo_1530815333000

7985563568234754430.pdf?sequence=1&isAllowed=y>

González, Cristian. ¿Qué es la Instrumentación Virtual? Electroindustria. (2006) [Consultado

11 marzo 2021] <http://www.emb.cl/electroindustria/articulo.mvc?xid=471>

González de la Rosa, Juan José. Instrumentos electrónicos programables. UCA.(2003)

[Consultado 15 marzo 2021] <http://docplayer.es/22769900-Instrumentos-electronicos-

programables-gpib-norma-ieee-488-2.html>

Guerrieri, Fabrizio. How to automate measurements with Python. EDN. (2016) [Consultado 20

febrero 2021] <https://www.edn.com/how-to-automate-measurements-with-python/>

Huang, Kang-Jing. Introduction to Instrument Control Using Python. GitBooks. [Consultado 17

febrero 2021] <https://chaserhkj.gitbooks.io/ivi-book/content/control/scpi.html>

Page 66: Control de un multímetro digital mediante python

Pág. 66 Memoria

Programming Example: List connectes VISA compatible resources using PyVISA. Siglent.

(2019) [Consultado 10 abril 2021] <https://www.siglenteu.com/application-note/programming-

example-list-connected-visa-compatible-resources-using-pyvisa/>

Pulido, Iván. Control remoto de instrumentación para radiocomunicación mediante Python.

PyVISA: Control your instruments with Python. PyVISA. (2021) [Consultado 9 mayo 2021]

<https://pyvisa.readthedocs.io/en/stable/>

Rowe, Martin. Control test instruments with Python. EDN. (2011) [Consultado 28 febrero

2021]<https://www.edn.com/control-test-instruments-with-python/>

SCPI Basics. Keysight Signal Generators. (2020) [Consultado 1 junio 2021]

<https://zhuanlan.zhihu.com/p/169695383>

Tesis de Master, Universidad de Sevilla. (2017) [Consultado 28 abril 2021]

<https://idus.us.es/bitstream/handle/11441/70672/TFG%20Iv%c3%a1n%20Pulido%20Mu%c

3%b1oz.pdf?sequence=1&isAllowed=y>

Tutorial de Python. Python. (2021) [Consultado 1 marzo 2021]

<https://docs.python.org/es/3/tutorial/index.html>

Using Instrument Status Registers and Service Requests in LabVIEW. National Instruments.

(2020) [Consultado 27 abril 2021] <https://www.ni.com/es-

es/support/documentation/supplemental/06/using-instrument-status-registers-and-service-

requests-in-labvie.html>

Van Rossum, Guido. El tutorial de Python. Python Software Foundation. (2015) [Consultado

14 febrero 2021] <https://argentinaenpython.com/quiero-aprender-

python/TutorialPython3.pdf>

Page 67: Control de un multímetro digital mediante python

Control de un multímetro digital mediante python Pág. 67

Anexos

Los anexos se han adjuntado en una carpeta ZIP; su contenido es el siguiente:

Anexo [I.1] Librería PyVISA.

Anexo [I.2] Estandarización de los comandos SCPI.

Ver [Anexo I.3] Manual multímetro digital Keithley 2100.

Ver [Anexo I.4] Datasheet multímetro digital Keithley 2100.

Ver [Anexo I.5] Clase de Python.