def __init__(self, TP, Father, RE_VAL): Thread.__init__(self) # import oven and multimeter if APP_OVEN_PRESENT: self.OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT) self.OVEN.TTC_ON() self.OVEN.TTC_ENABLE_TEMP() self.TP = TP self.RE_VAL = RE_VAL # set PID parameters self.P = 5 self.I = 0 self.D = 0 self.pid = PID.PID(self.P, self.I, self.D) self.pid.setSampleTime(1) self.lock = threading.Lock() self.Father = Father self.t1 = 0 self.t2 = 0 self.t3 = 0
def main(self, set_temp, Father): RE_VAL = set() self.set_temp = set_temp t_start = time.time() print("start") print(self.set_temp) OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT) OVEN.TTC_ON() OVEN.TTC_ENABLE_TEMP() while True: t_now = time.time() t_run = t_now - t_start # setting the oven OVEN.TTC_Set_Temp(self.set_temp) # run oven print('01 - Reading data from Oven...') temp_set = str(format(OVEN.TTC_Read_SP_Temp(), "0,.2f")) temp_real = str(format(OVEN.TTC_Read_PV_Temp(), "0,.2f")) Father.updateOven([str(t_run), str(self.set_temp), temp_real]) DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x11\\x04\\x01\\xff\\xff\\xff']" in RE_VAL: print("Exiting") OVEN.TTC_OFF() RE_VAL.clear() DIS.write("page Device Select\xff\xff\xff") return elif "['e\\x11\\x05\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") RE_VAL.clear() DIS.write("page restart\xff\xff\xff") os.system("sudo reboot") time.sleep(1)
def main(self, Father): RE_VAL = set() print("start") TP = readTempProfile(FILE_NAME)[0] print(TP) OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT) OVEN.TTC_ON() OVEN.TTC_ENABLE_TEMP() t_start = time.time() for step in TP: # setting the oven step_time = step[0] * 60 # step_time in seconds step_temp = float(format(float(step[1]), ".2f")) print(step) t1 = datetime.datetime.now() t2 = datetime.datetime.now() + datetime.timedelta( seconds=step_time) while (t1 < t2): # run oven print('01 - Reading data from Oven...') t_step = time.time() t_r = t_step - t_start t_run = format(t_r, "0.2f") temp_set1 = OVEN.TTC_Read_SP_Temp() temp_real1 = OVEN.TTC_Read_PV_Temp() temp_set = str(format(temp_set1, "0,.2f")) temp_real = str(format(temp_real1, "0,.2f")) OVEN.TTC_Set_Temp(step_temp) Father.updateOven([str(t_run), str(step_temp), temp_real]) DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x11\\x04\\x01\\xff\\xff\\xff']" in RE_VAL: print("Exiting") OVEN.TTC_OFF() RE_VAL.clear() DIS.write("page Device Select\xff\xff\xff") return elif "['e\\x11\\x05\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") RE_VAL.clear() DIS.write("page restart\xff\xff\xff") os.system("sudo reboot") time.sleep(1) t1 = datetime.datetime.now()
def main(self, num_samples, set_temperature, Father): RE_VAL = set() # Initialize Relay REL = relay.Relay_module() REL.reset() # set PID parameters P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) if APP_NEXTION_PRESENT: self.NEXTION_NUM_SAMPLES = num_samples self.NEXTION_SET_TEMP = float(format(float(set_temperature) / 0.84, ".2f")) else: self.NEXTION_NUM_SAMPLES = 8 self.NEXTION_SET_TEMP = 25 # import oven and multimeter if APP_OVEN_PRESENT: OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT) OVEN.TTC_ON() OVEN.TTC_ENABLE_TEMP() if APP_DMM_196_PRESENT: Multimeter = DMM_196.DMM_196(DMM_IP, DMM_PORT) Multimeter.startComm() # create file and title CF = data_storage.create_file() test_mode = "Manual" equipment_Info = "TTC-4006 + DMM-196" Driver_root = detect_file.File(folder)[1] start_time = str(datetime.datetime.now()) filename = start_time.replace(" ", "_").replace(".", "-").replace(":", "-") PATH = CF.folder(Driver_root, filename) CF.header(PATH, filename, start_time, equipment_Info, test_mode, self.NEXTION_NUM_SAMPLES) CF.content(PATH, filename, ("Time(s)\tSetTemp.(oC)\tActual Temp.(oC)\tHumidity(%)\tTemp.Sensor(oC)\tSample number\tResistence(ohm)\r\n")) t_start = time.time() while True: # Relay reset REL.reset() for i in range(self.NEXTION_NUM_SAMPLES): if APP_OVEN_PRESENT: # run oven) print("01 - Reading data from Oven...") temp_set1 = OVEN.TTC_Read_SP_Temp() temp_real1 = OVEN.TTC_Read_PV_Temp() temp_set = str(format(temp_set1, "0,.2f")) temp_real = str(format(temp_real1, "0,.2f")) else: temp_set = format(1.00, "0.2f") temp_real = format(1.00, "0.2f") pid.SetPoint = self.NEXTION_SET_TEMP pid.setKp(float(P)) pid.setKi(float(I)) pid.setKd(float(D)) # read temperature sensor # Humidity Sensor # If is not OK => apply non valid temp and humidity print("02 - Reading data from Humidity Sensor...") if APP_BME_280_PRESENT: try: temperature, pressure, humidity = bme280.readBME280All() # Medicine if ((humidity == None) or (temperature == None)): humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print("02 - Reading data from Humidity Sensor (NONE! - ERROR)...") elif ((type(humidity) == str) or (type(temperature) == str)): humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print("02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)...") except: humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print("02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)...") else: print("02 - Reading data from Humidity Sensor (DISABLED)...") humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP HUMI_sensor = format(humidity, "0.2f") TEMP_sensor = format(temperature, "0.2f") print("02 - Reading data from Humidity Sensor: Temp(oC): ", TEMP_sensor) print("02 - Reading data from Humidity Sensor: Humi(%): ", HUMI_sensor) print("Sensor Temperature : ", str(TEMP_sensor)) pid.update(TEMP_sensor) target_temperature = pid.output if target_temperature > 130: target_temperature = 130 elif target_temperature < -40: target_temperature = -40 else: target_temperature = target_temperature print("PID set Temperature : ", str(target_temperature)) print("Chamber real Temperature : ", temp_real) OVEN.TTC_Set_Temp(target_temperature) # run time t_step = time.time() t_run = format(t_step - t_start, "0.2f") # relay selection print("03 - Swtich Relay: %d" % i) REL.RelaySelect(i) sleep(RELAY_HOLDING_TIME) # run multimeter print("04- Multimeter DMM196 Reading...") if APP_DMM_196_PRESENT: mval = Multimeter.read_resiatance() else: mval = (i * float(t_run)) R_value = str(mval) # relay reset print("05 - Swtich Relay Unselection: %d" % i) REL.RelayDeSelect(i) # Persistency print("06 - Saving data...") result1 = [] result2 = [] result1.append([str(t_run), str(temp_set), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(R_value)]) CF.content(PATH, filename, result1) # create file for each sample result2.append([str(t_run), str(temp_set), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(R_value)]) CF.content(PATH, 'Sample' + str(i), result2) Father.updateMultimeter([temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run, R_value, i]) DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x0e\\x13\\x01\\xff\\xff\\xff']" in RE_VAL: print("Exiting") OVEN.TTC_OFF() RE_VAL.clear() DIS.write("page Device Select\xff\xff\xff") return elif "['e\\x0e\\x14\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") RE_VAL.clear() DIS.write("page restart\xff\xff\xff") os.system("sudo reboot") print("07 - Updating Display...")
def main(self, num_samples, set_temperature, start_freq, end_freq, set_voltage, Father): RE_VAL = set() # Initialize Relay REL = relay.Relay_module() REL.reset() # set PID parameters P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) self.NEXTION_NUM_SAMPLES = num_samples self.NEXTION_SET_TEMP = float(format(float(set_temperature) / 0.84, ".2f")) self.NEXTION_START_FREQ = start_freq self.NEXTION_END_FREQ = end_freq self.NEXTION_SET_VOLTAGE = set_voltage # import oven and multimeter if APP_OVEN_PRESENT: OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT) OVEN.TTC_ON() OVEN.TTC_ENABLE_TEMP() if APP_IMP_PRESENT: IMP = Impedanz_4192A_Eth.Impedance_Analyser(IMP_IP, IMP_PORT) IMP.startComm() # create file and title CF = data_storage.create_file() test_mode = "Auto" equipment_Info = "TTC-4006 + IMP-4192A" Driver_root = detect_file.File(folder)[1] start_time = str(datetime.datetime.now()) filename = start_time.replace(" ", "_").replace(".", "-").replace(":", "-") CF.folder(Driver_root, filename) t_start = time.time() t1 = datetime.datetime.now() t2 = datetime.datetime.now() + datetime.timedelta(seconds=20 * 60) while True: if APP_OVEN_PRESENT: # run oven) print("01 - Reading data from Oven...") temp_real = OVEN.TTC_Read_PV_Temp() temp_set = OVEN.TTC_Read_SP_Temp() else: temp_set = format(1.00, "0.2f") temp_real = format(1.00, "0.2f") pid.SetPoint = self.NEXTION_SET_TEMP pid.setKp(float(P)) pid.setKi(float(I)) pid.setKd(float(D)) # read temperature sensor # Humidity Sensor # If is not OK => apply non valid temp and humidity print("02 - Reading data from Humidity Sensor...") if APP_BME_280_PRESENT: try: temperature, pressure, humidity = bme280.readBME280All() # Medicine if ((humidity == None) or (temperature == None)): humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print("02 - Reading data from Humidity Sensor (NONE! - ERROR)...") elif ((type(humidity) == str) or (type(temperature) == str)): humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print("02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)...") except: humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print("02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)...") else: print("02 - Reading data from Humidity Sensor (DISABLED)...") humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP HUMI_sensor = format(humidity, "0.2f") TEMP_sensor = format(temperature, "0.2f") print('02 - Reading data from Humidity Sensor: Temp(oC): ', TEMP_sensor) print('02 - Reading data from Humidity Sensor: Humi(%): ', HUMI_sensor) print("Sensor Temperature : ", str(TEMP_sensor)) pid.update(float(TEMP_sensor)) target_temperature = pid.output if target_temperature > 130: target_temperature = 130 elif target_temperature < -40: target_temperature = -40 else: target_temperature = target_temperature print("PID set Temperature : ", str(target_temperature)) print("Chamber real Temperature : ", temp_real) OVEN.TTC_Set_Temp(target_temperature) t_step = time.time() while (t1 > t2): for i in range(self.NEXTION_NUM_SAMPLES): # run time t_run = format(t_step - t_start, "0.2f") # relay selection print("03 - Swtich Relay: %d" % i) REL.RelaySelect(i) sleep(RELAY_HOLDING_TIME) # create folder for each sample current_time = str(datetime.datetime.now()) self.time_str = current_time.replace(" ", "_").replace(".", "-").replace(":", "-") Father.updateIMPSweep([temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run, "Measureing", " ", i]) DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x0f\\x1b\\x01\\xff\\xff\\xff']" in RE_VAL: print("Exiting") OVEN.TTC_OFF() RE_VAL.clear() DIS.write("page Device Select\xff\xff\xff") return elif "['e\\x0f\\x1c\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") RE_VAL.clear() DIS.write("page restart\xff\xff\xff") os.system("sudo reboot") print("07 - Updating Display...") # creat file sample_time = str(datetime.datetime.now()).replace(" ", "_").replace(".", "-").replace(":", "-") name = 'Sample' + str(i) locals()['v' + str(i)] = i PA = CF.sample_folder(name) CF.header_imp(PA, self.time_str, self.time_str, equipment_Info, test_mode, self.NEXTION_START_FREQ, self.NEXTION_END_FREQ, self.NEXTION_SET_VOLTAGE) # run multimeter print("04- Multimeter DMM196 Reading...") if APP_IMP_PRESENT: data = IMP.sweep_measure(self.NEXTION_START_FREQ, self.NEXTION_END_FREQ, self.NEXTION_SET_VOLTAGE) CF.content(PA, self.time_str, data) # relay reset print("06 - Swtich Relay Unselection: %d" % i) REL.RelayDeSelect(i) else: if APP_NEXTION_PRESENT: # run time t_run = format(t_step - t_start, "0.2f") Father.updateIMPSweep([temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run, "Waiting", " ", 0]) DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x0f\\x1b\\x01\\xff\\xff\\xff']" in RE_VAL: print("Exiting") OVEN.TTC_OFF() RE_VAL.clear() DIS.write("page Device Select\xff\xff\xff") return elif "['e\\x0f\\x1c\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") RE_VAL.clear() DIS.write("page restart\xff\xff\xff") os.system("sudo reboot") print("07 - Updating Display...") t1 = datetime.datetime.now()
def main(self, num_samples, set_voltage, Father): RE_VAL = set() # Initialize Relay REL = relay.Relay_module() REL.reset() # detect file if APP_PEN_DRIVE: FILE_NAME = detect_file.File(folder)[0] else: FILE_NAME = "/home/pi/Desktop/Temperature_profile.txt" # Load Profile TP = readTempProfile(FILE_NAME)[0] print(TP) self.NEXTION_NUM_SAMPLES = num_samples self.NEXTION_SET_VOLTAGE = set_voltage # import oven and multimeter if APP_OVEN_PRESENT: OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT) OVEN.TTC_ON() OVEN.TTC_ENABLE_TEMP() # set PID parameter P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) if APP_Sourcemeter_PRESENT: Sourcemeter = Keithley_2602_Eth.SourceMeter(SM_IP, SM_PORT) Sourcemeter.startComm() # create file and title CF = data_storage.create_file() test_mode = "Auto" head = [] head.append([ "Time(s)", "SetTemp.(oC)", "Actual Temp.(oC)", "Humidity(%)", "Temp.Sensor(oC)", "Sample number", "Current(A)", "Resistence(ohm)" ]) equipment_Info = "TTC-4006 + Sourcemeter-2602" Driver_root = detect_file.File(folder)[1] start_time = str(datetime.datetime.now()) filename = start_time.replace(" ", "_").replace(".", "-").replace(":", "-") PATH = CF.folder(Driver_root, filename) CF.header(PATH, filename, start_time, equipment_Info, test_mode, self.NEXTION_NUM_SAMPLES) CF.content(PATH, filename, head) t_start = time.time() for step in TP: print(step) # setting the oven step_time = step[0] * 60 # step_time in seconds step_temp = float(format(float(step[1]) / 0.84, ".2f")) t1 = datetime.datetime.now() t2 = datetime.datetime.now() + datetime.timedelta( seconds=step_time) while (t1 < t2): # Relay switching REL.reset() for i in range(self.NEXTION_NUM_SAMPLES): if APP_OVEN_PRESENT: # run oven) print("01 - Reading data from Oven...") temp_real = OVEN.TTC_Read_PV_Temp() temp_set = OVEN.TTC_Read_SP_Temp() else: temp_set = format(1.00, "0.2f") temp_real = format(1.00, "0.2f") pid.SetPoint = step_temp pid.setKp(float(P)) pid.setKi(float(I)) pid.setKd(float(D)) print("02 - Reading data from Humidity Sensor...") if APP_BME_280_PRESENT: try: temperature, pressure, humidity = bme280.readBME280All( ) # Medicine if ((humidity == None) or (temperature == None)): humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print( "02 - Reading data from Humidity Sensor (NONE! - ERROR)..." ) elif ((type(humidity) == str) or (type(temperature) == str)): humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print( "02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)..." ) except: humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP print( "02 - Reading data from Humidity Sensor (INVALID STRING! - ERROR)..." ) else: print( "02 - Reading data from Humidity Sensor (DISABLED)..." ) humidity = BME_280_INVALID_HUMI temperature = BME_280_INVALID_TEMP HUMI_sensor = format(humidity, "0.2f") TEMP_sensor = format(temperature, "0.2f") print("02 - Reading data from Humidity Sensor: Temp(oC): ", TEMP_sensor) print("02 - Reading data from Humidity Sensor: Humi(%): ", HUMI_sensor) print("Sensor Temperature : ", str(TEMP_sensor)) pid.update(float(TEMP_sensor)) target_temperature = pid.output # limit oven temperature if target_temperature > 180: target_temperature = 180 elif target_temperature < -40: target_temperature = -40 else: target_temperature = target_temperature OVEN.TTC_Set_Temp(target_temperature) print("PID set Temperature : ", str(target_temperature)) print("Chamber real Temperature : ", temp_real) # run time t_step = time.time() t_run = format(t_step - t_start, "0.2f") REL.RelaySelect(i) sleep(RELAY_HOLDING_TIME) if APP_Sourcemeter_PRESENT: fcurrent = Sourcemeter.Measure( "a", self.NEXTION_SET_VOLTAGE) print("Reading Sourcemeter:", i) else: fcurrent = (i * float(t_run)) I_Value = format(float(fcurrent), ".4E") R_Value = format(self.NEXTION_SET_VOLTAGE / float(I_Value), ".4E") print("Resistance:", R_Value) print("") REL.RelayDeSelect(i) # Persistency print("06 - Saving data...") result1 = [] result2 = [] result1.append([ str(t_run), str(step[1]), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(I_Value), str(R_Value) ]) CF.content(PATH, filename, result1) # create file for each sample result2.append([ str(t_run), str(step[1]), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(I_Value), str(R_Value) ]) CF.content(PATH, 'Sample' + str(i), result2) Father.updateMultimeter([ temp_set, temp_real, TEMP_sensor, HUMI_sensor, t_run, R_Value, i ]) DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x0e\\x13\\x01\\xff\\xff\\xff']" in RE_VAL: print("Exiting") OVEN.TTC_OFF() RE_VAL.clear() DIS.write("page Device Select\xff\xff\xff") return elif "['e\\x0e\\x14\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") RE_VAL.clear() DIS.write("page restart\xff\xff\xff") os.system("sudo reboot") print("07 - Updating Display...") t1 = datetime.datetime.now() if APP_OVEN_PRESENT: OVEN.TTC_OFF()
def main(self): print("start") TP = readTempProfile(FILE_NAME)[0] print(TP) OVEN = TTC4006_Tira.TTC4006(TTC_SERIAL_PORT) P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) t_start = te.time() for step in TP: # setting the oven step_time = step[0] * 60 # step_time in seconds step_temp = float(format(float(step[1]) / 0.84, ".2f")) start_time = str(datetime.datetime.now()) #filename = start_time.replace(" ", "_").replace(".", "-").replace(":", "-") + "_P_5" filename = "PID_15" + "_" + start_time.replace(" ", "_").replace( ".", "-").replace(":", "-") op = open("/home/pi/Desktop/" + filename + ".txt", "a") op.write( "Time(s)\tSetTemp.(oC)\tActual Temp.(oC)\tTemp.Sensor(oC)\r\n") op.close() print(step) t1 = datetime.datetime.now() t2 = datetime.datetime.now() + datetime.timedelta( seconds=step_time) while (t1 < t2): t_step = te.time() t_r = t_step - t_start t_run = format(t_r, "0.2f") # run oven print('01 - Reading data from Oven...') t_step = time.time() t_r = t_step - t_start t_run = format(t_r, "0.2f") pid.SetPoint = step_temp pid.setKp(float(P)) pid.setKi(float(I)) pid.setKd(float(D)) temp_set1 = OVEN.TTC_Read_SP_Temp() temp_real1 = OVEN.TTC_Read_PV_Temp() temp_set = str(format(temp_set1, "0,.2f")) temp_real = str(format(temp_real1, "0,.2f")) actual_temperature = bme280.readBME280All()[0] print("Sensor Temperature : " + str(actual_temperature)) pid.update(actual_temperature) target_temperature = pid.output if target_temperature > 130: target_temperature = 130 elif target_temperature < -40: target_temperature = -40 else: target_temperature = target_temperature print("PID set Temperature : " + str(target_temperature)) print("Chamber real Temperature : " + temp_real) OVEN.TTC_Set_Temp(target_temperature) print('Saving data...') op = open("/home/pi/Desktop/" + filename + ".txt", "a") op.writelines([ str(t_run), "\t", str(target_temperature), "\t", temp_real, "\t", str(actual_temperature), "\r\n" ]) op.close() time.sleep(1) t1 = datetime.datetime.now()