def pid_compute(): with open("/dev/data_proc", "rb") as fd: in_recv = fd.read(8192) in_recv = struct.unpack('4096h'.encode('utf-8'), in_recv) in_ = int(sum(in_recv[0::2]) / len(in_recv[0::2])) print("IN_dt =", in_) try: t_inte = fe.read() except IOError: print("IO error!") t_inte = Vars.t_err fe.seek(0) Vars.t_err = t_inte t = int(t_inte.split()[0]) R = t / 0.112 * scale if R > 0: ntc10k = 1 / (0.0012146 + 0.00021922 * math.log(R) + 0.00000015244 * math.log(R)**3) - 273.15 else: ntc10k = 0 print("Error: bad voltage value") print("IN_t =", ntc10k, "°C") [out, cor_pid2] = tctrl.compute(in_, t, Vars.t0) liboscimp_fpga.axi_to_dac_set_chan("/dev/proc_out", liboscimp_fpga.CHANA, int(out)) print("CORR_PID2 =", cor_pid2) print("OUT =", out, "\n") pid_compute.thread = threading.Timer(Vars.tempo * 10**-3, pid_compute) pid_compute.thread.start()
def sb_ch2_dds_ampl_changed(self, widget, value): vals.ch2_dds_ampl = value liboscimp_fpga.axi_to_dac_conf_enable("/dev/dds_ampl", liboscimp_fpga.BOTH_ALWAYS_HIGH) print("/dev/dds_ampl ch2", int(value)) liboscimp_fpga.axi_to_dac_set_chan("/dev/dds_ampl", liboscimp_fpga.CHANB, int(value)) self.sd_ch2_dds_ampl.set_value(int(float(value)))
def sd_ch1_perturb_ampl_changed(self, widget, value): vals.ch1_perturb_ampl = value liboscimp_fpga.axi_to_dac_conf_enable("/dev/perturb_ampl", liboscimp_fpga.BOTH_ALWAYS_HIGH) print("/dev/perturb_ampl", int(value)) liboscimp_fpga.axi_to_dac_set_chan("/dev/perturb_ampl", liboscimp_fpga.CHANA, int(value)) self.sb_ch1_perturb_ampl.set_value(int(value))
def sb_ch1_dds_range_changed(self, widget, value): vals.ch1_dds_range = value liboscimp_fpga.axi_to_dac_conf_enable("/dev/dds_range", liboscimp_fpga.BOTH_ALWAYS_HIGH) print("/dev/dds_range ch1", int(value)) liboscimp_fpga.axi_to_dac_set_chan("/dev/dds_range", liboscimp_fpga.CHANA, int(value)) self.sd_ch1_dds_range.set_value(int(float(value)))
#!/usr/bin/env python import liboscimp_fpga import time, struct, ctypes, sys, threading, os, math import remi.gui as gui from remi import start, App import temp_ctrl liboscimp_fpga.axi_to_dac_set_chan("/dev/proc_out", liboscimp_fpga.CHANA, int(0)) os.system('./zmq_data2ram_proc.py &') os.system('./zmq_data2ram_adc2.py &') os.system('./zmq_data2ram_fast.py &') os.system('./zmq_data2ram_slow.py &') os.system('./temp_acq.py &') tctrl = temp_ctrl.TempCtrl(kps=[int(0), int(0)], kis=[int(0), int(0)], omaxs=[8191, 2**30], imaxs=[int(2**36), int(2**36)], oscales=[10, 16]) in_ = 0 t = 0 t0 = 0 out = 0 class IniVar: def __init__(vars):