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()
Exemple #2
0
 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))
Exemple #4
0
 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):