Para el banco de ensayos de las cámaras de PLATO desarrollamos el control de la fuente de luz Energetiq EQ-99: encenderla y apagarla como un paso más del ensayo, leer su estado y sus horas de uso, y hacerlo todo por red. Esto es lo esencial.
El USB: un chip FTDI a 38400 baudios
El controlador de la EQ-99 lleva un chip FTDI. Según el manual, la comunicación es a 38400 baudios, 8 bits de datos, sin paridad y 1 bit de parada, con los comandos terminados en retorno de carro y salto de línea. Con la librería pylibftdi se abre así:
import time
import pylibftdi
fuente = pylibftdi.Device(mode="t", device_id="NUMERO_DE_SERIE_FTDI")
fuente.baudrate = 38400
fuente.ftdi_fn.ftdi_set_line_property(8, 1, 0) # 8N1
time.sleep(0.05)
fuente.flush(pylibftdi.FLUSH_BOTH) # vaciar buffers
time.sleep(0.05)
fuente.ftdi_fn.ftdi_setflowctrl(0) # sin control de flujo
def comando(texto):
fuente.write(texto + "\r\n")
def consulta(texto, espera=2.0):
comando(texto)
respuesta, limite = "", time.monotonic() + espera
while time.monotonic() < limite:
c = fuente.read(1)
if c == "\n":
return respuesta.strip()
respuesta += c
raise TimeoutError(texto)
La línea que más importa es la última de la configuración: hay que desactivar el control de flujo. Si no, la fuente no devuelve nada al ordenador: las consultas se quedan sin respuesta y parece que el equipo está mal, cuando es solo eso.
Los comandos que se usan en un ensayo
consulta("*IDN?") # identificacion
comando("LDLS:OUTput 1") # encender (0 para apagar)
consulta("LDLS:OUTput?") # "1" si esta encendida
consulta("LDLS:COND?") # registro de estado
consulta("ERRSTR?") # "0" si no hay errores
consulta("LDLS:LAMPTIME?") # horas de uso de la lampara
Después de encender hay que dejar un tiempo de estabilización antes de medir: el software del ensayo debe esperarlo en lugar de dar por buena la luz en cuanto la fuente dice que está encendida.
Llevarla a la red
Un cable USB no llega de la sala de la fuente al ordenador del ensayo, y menos si hay una cámara de vacío en medio. La solución que montamos fue un pequeño ordenador junto a la fuente (una Raspberry Pi) con un servicio que recibe los comandos por TCP y se los pasa por USB.
Así el software del ensayo habla con la fuente igual que con cualquier otro equipo de red, y el detalle del USB queda encerrado en un sitio. Conviene que el servicio salude al conectar con su nombre y versión: el cliente comprueba que habla con quien cree y se detecta enseguida si alguien ha cambiado el equipo o la IP.
Del script al banco de ensayo
Encender la fuente desde un script es fácil. Que se encienda en el momento justo del ensayo, coordinada con el obturador, las ruedas de filtros y el medidor de potencia, que avise si da un error y que lleve la cuenta de horas de la lámpara, es lo que hacemos a medida.