control de un multímetro digital mediante python
TRANSCRIPT
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
Pág. 2 Memoria
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
Pág. 4 Memoria
Referencias bibliográficas ..................................................................................... 62
Bibliografía complementaria .................................................................................. 65
ANEXOS ____________________________________________________ 67
Control de un multímetro digital mediante python Pág. 5
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
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.
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.
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]
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]
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]
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]
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]
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]
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]
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]
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.
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]
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]
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].
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].
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
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]
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]
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.
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.
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]
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.
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]
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.
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.
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]
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.
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]
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.
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
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
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.
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
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𝑚𝑊⁄
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]
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.
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.
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.
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.
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]
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.
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]
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]
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
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.
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.
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
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
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]
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
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.
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
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.
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.
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>
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>
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>
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>
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>
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.