def main(self, num_samples, start_freq, end_freq, set_voltage, Father): global curOven # Initialize screen self.RE_VAL = set() DE = str(DIS.read()) # print (DE) self.RE_VAL.add(DE) # print (RE_VAL) # 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) o = OvenThread(TP, Father, self.RE_VAL) curOven = o m = MeasureThread(num_samples, start_freq, end_freq, set_voltage, Father, self.RE_VAL) o.start() m.start()
def main(self, Father): RE_VAL = set() print("start") TP = readTempProfile(FILE_NAME)[0] print(TP) OVEN = VT4002_SM.VT4002(VT4002_IP) OVEN.startComm() 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 = OVEN.read_temp() temp_set = temp[0] temp_real = temp[1] OVEN.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.close() 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 read_profile(self): print("here") FILENAME = detect_file.File(folder)[0] Profile = str(readTempProfile(FILENAME)[0]) if len(Profile) >= 200: content = Profile[:200] else: content = Profile print(content) DIS.write('t0.txt="' + content + '"\xff\xff\xff')
def VT_SM_Auto(self): start_time = str(datetime.datetime.now())[0:19] print(start_time) FILENAME = detect_file.File(folder)[0] total_time = readTempProfile(FILENAME)[1] * 60 end_time = datetime.datetime.now() + datetime.timedelta( seconds=total_time) end_time_formated = str(end_time.strftime("%Y-%m-%d %H:%M:%S")) VSA = VT_SM_Auto.VT_SM_Auto() print("Run VT4002 + Sourcemeter Auto") DIS.write('t0.txt="Auto"\xff\xff\xff') DIS.write('t1.txt="VT4002 + Sourcemeter"\xff\xff\xff') DIS.write('t2.txt="' + start_time + '"\xff\xff\xff') DIS.write('t7.txt="' + end_time_formated + '"\xff\xff\xff') VSA.main(self.number_sample, self.sm_AV, self)
def TTC_DMM_Auto(self): start_time = str(datetime.datetime.now())[0:19] print(start_time) FILENAME = detect_file.File(folder)[0] total_time = readTempProfile(FILENAME)[1] * 60 end_time = datetime.datetime.now() + datetime.timedelta( seconds=total_time) end_time_formated = str(end_time.strftime("%Y-%m-%d %H:%M:%S")) TMA = TTC_DMM_Auto.TTC_DMM_Auto() print("Run TTC4006 + DMM196 Auto") DIS.write('t0.txt="Auto"\xff\xff\xff') DIS.write('t1.txt="TTC4006 + DMM196"\xff\xff\xff') DIS.write('t6.txt="' + start_time + '"\xff\xff\xff') DIS.write('t7.txt="' + end_time_formated + '"\xff\xff\xff') TMA.main(self.number_sample, self)
def TTC_SM_Manual(self): start_time = str(datetime.datetime.now())[0:19] print(start_time) FILENAME = detect_file.File(folder)[0] total_time = readTempProfile(FILENAME)[1] * 60 end_time = datetime.datetime.now() + datetime.timedelta( seconds=total_time) end_time_formated = str(end_time.strftime("%Y-%m-%d %H:%M:%S")) TIM = TTC_SM_Manual.TTC_SM_Manual() print("Run TTC4006 + Sourcemeter Manual") DIS.write('t0.txt="Manual"\xff\xff\xff') DIS.write('t1.txt="TTC4006 + Sourcemeter"\xff\xff\xff') DIS.write('t6.txt="' + start_time + '"\xff\xff\xff') DIS.write('t7.txt="' + end_time_formated + '"\xff\xff\xff') TIM.main(self.number_sample, self.sm_MT, self.sm_startV, self.sm_endV, 0.01, self)
def VT_IMP_Auto(self): start_time = str(datetime.datetime.now())[0:19] print(start_time) FILENAME = detect_file.File(folder)[0] total_time = readTempProfile(FILENAME)[1] * 60 end_time = datetime.datetime.now() + datetime.timedelta( seconds=total_time) end_time_formated = str(end_time.strftime("%Y-%m-%d %H:%M:%S")) VIA = VT_IMP_Auto.VT_IMP_Auto() print("Run VT4002 + IMP Auto") DIS.write('t0.txt="Auto"\xff\xff\xff') DIS.write('t1.txt="VT4002 + IMP"\xff\xff\xff') DIS.write('t6.txt="' + start_time + '"\xff\xff\xff') DIS.write('t7.txt="' + end_time_formated + '"\xff\xff\xff') setV = float(self.imp_AV) / 1000 start_f = self.imp_startAF end_f = self.imp_endAF VIA.main(self.number_sample, start_f, end_f, setV, self)
def TTC_IMP_Manual(self): start_time = str(datetime.datetime.now())[0:19] print(start_time) FILENAME = detect_file.File(folder)[0] total_time = readTempProfile(FILENAME)[1] * 60 end_time = datetime.datetime.now() + datetime.timedelta( seconds=total_time) end_time_formated = str(end_time.strftime("%Y-%m-%d %H:%M:%S")) TIM = TTC_IMP_Manual.TTC_IMP_Manual() print("Run TTC4006 + IMP Manual") DIS.write('t0.txt="Manual"\xff\xff\xff') DIS.write('t1.txt="TTC4006 + IMP"\xff\xff\xff') DIS.write('t6.txt="' + start_time + '"\xff\xff\xff') DIS.write('t7.txt="' + end_time_formated + '"\xff\xff\xff') set_temp = self.imp_MT setV = float(self.imp_MV) / 1000 start_f = self.imp_startMF end_f = self.imp_endMF TIM.main(self.number_sample, set_temp, start_f, end_f, setV, self)
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, voltage, frequency, 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 if APP_OVEN_PRESENT: OVEN = VT4002_SM.VT4002(VT4002_IP) OVEN.startComm() P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) if APP_LCR_PRESENT: LCR = LCR_Eth.LCR_Meter(LCR__IP, LCR_Port) LCR.startComm() # create file and title CF = data_storage.create_file() test_mode = "Auto" equipment_Info = "VT-4002 + LCR-4284A" if APP_PEN_DRIVE: Driver_root = detect_file.File(folder)[1] else: Driver_root = "/home/pi/Desktop/TTC_LCR/" 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\tR\tX\tCP\tRP\r\n" ) 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.94, ".2f")) t1 = datetime.datetime.now() t2 = datetime.datetime.now() + datetime.timedelta( seconds=step_time) while (t1 < t2): for i in range(self.NEXTION_NUM_SAMPLES): if APP_OVEN_PRESENT: # run oven) print("01 - Reading data from Oven...") temp = OVEN.read_temp() temp_set = temp[0] temp_real = temp[1] 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 if target_temperature > 180: target_temperature = 180 elif target_temperature < -40: target_temperature = -40 else: target_temperature = target_temperature OVEN.set_temp(target_temperature) print("PID set Temperature : ", str(target_temperature)) print("Chamber real Temperature : ", temp_real) # run time t_step = time.time() t_r = t_step - t_start t_run = format(t_r, "0.2f") REL.RelaySelect(i) if APP_LCR_PRESENT: FinalD = LCR.measure(voltage, frequency) print("LCR Reading: ", FinalD) CP = str(FinalD[0]) RP = str(FinalD[1]) R_value = str(FinalD[2]) X_value = str(FinalD[3]) else: CP = 0 RP = 0 R_value = 0 X_value = 0 REL.RelayDeSelect(i) # Persistency print("06 - Saving data...") print("") result1 = [] result2 = [] result1.append([ str(t_run), str(step[1]), str(temp_real), str(HUMI_sensor), str(TEMP_sensor), str(i), str(R_value), str(X_value), str(CP), str(RP) ]) 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(R_value), str(X_value), str(CP), str(RP) ]) CF.content(PATH, 'Sample' + str(i), result2) Father.Update([ temp_set, temp_real, TEMP_sensor, humidity, t_run, R_value, X_value, 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.close() 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() if APP_OVEN_PRESENT: OVEN.close()
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 = VT4002_SM.VT4002(VT4002_IP) OVEN.startComm() 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" equipment_Info = "VT-4002 + 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, ("Time(s)\tSetTemp.(oC)\tActual Temp.(oC)\tHumidity(%)\tTemp.Sensor(oC)\tSample number\tCurrent(A)\tResistence(ohm)\r\n")) 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.94, ".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 = OVEN.read_temp() temp_set = temp[0] temp_real = temp[1] 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 if target_temperature > 180: target_temperature = 180 elif target_temperature < -40: target_temperature = -40 else: target_temperature = target_temperature OVEN.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(fcurrent, ".3E") R_Value = format(self.NEXTION_SET_VOLTAGE / float(I_Value), ".3E") 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.close() 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.close()
def main(self, num_samples, 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] # Load Profile TP = readTempProfile(FILE_NAME)[0] print(TP) # set PID parameters P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) # get sample number if APP_NEXTION_PRESENT: self.NEXTION_NUM_SAMPLES = num_samples else: self.NEXTION_NUM_SAMPLES = 8 # 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 = "Auto" 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() # temperature loop 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")) print(step) 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): # run oven if APP_OVEN_PRESENT: 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 = step_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) if APP_OVEN_PRESENT: OVEN.TTC_Set_Temp(target_temperature) # run time t_step = time.time() t_r = t_step - t_start t_run = format(t_r, "0.2f") 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 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...") 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()
def main(self,num_samples, start_voltage, end_voltage, step_voltage, Father): # Initialize Relay self.REL = relay.Relay_module() self.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) print(TP) #sleep(5) P = 5 I = 0 D = 0 pid = PID.PID(P, I, D) pid.setSampleTime(1) # import oven and multimeter if APP_OVEN_PRESENT: OVEN = VT4002_SM.VT4002(VT4002_IP) OVEN.startComm() if APP_Sourcemeter_PRESENT: self.Sourcemeter = Sourcemeter_sweep.SourceMeter(IP_addr, PORT) self.Sourcemeter.startComm() self.NEXTION_NUM_SAMPLES = num_samples self.NEXTION_START_VOLTAGE = start_voltage self.NEXTION_END_VOLTAGE = end_voltage self.NEXTION_STEP_VOLTAGE = step_voltage # create file and title self.CF = data_storage.create_file() self.test_mode = "Auto" self.equipment_Info = "VT-4002 + Sourcemeter-2602" # Driver_root = detect_file.File(folder)[1] Driver_root = "/home/pi/Desktop/" start_time = str(datetime.datetime.now()) self.folder_name = start_time.replace(" ", "_").replace(".", "-").replace(":", "-") self.CF.folder(Driver_root, self.folder_name) t_start = time.time() for step in TP: #create folder for each step self.CF.folder_SM(step) # setting the oven step_time = step[1] * 60 # step_time in seconds step_temp = float(format(float(step[0]) / 0.94, ".2f")) print(step) #sleep(5) t1 = datetime.datetime.now() t2 = datetime.datetime.now() + datetime.timedelta(seconds=step_time) t3 = datetime.datetime.now() + datetime.timedelta(seconds=10) counter = 0 while (t1 < t2): # run oven print('01 - Reading data from Oven...') if APP_OVEN_PRESENT: temp = OVEN.read_temp() temp_set = temp[0] temp_real = temp[1] else: temp_set = format(1.00, "0.2f") temp_real = format(1.00, "0.2f") # 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) # run oven if APP_OVEN_PRESENT: pid.SetPoint = step_temp pid.setKp(float(P)) pid.setKi(float(I)) pid.setKd(float(D)) temp = OVEN.read_temp() temp_real = str(temp[1]) self.actual_temperature = temperature print("Sensor Temperature : " + str(self.actual_temperature)) pid.update(self.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.set_temp(target_temperature) if t1 > t3 and t1 < t2 and counter < 2: for i in range(self.NEXTION_NUM_SAMPLES): print('03 - Swtich Relay: %d' % i) self.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(":", "-") name = 'Sample' + str(i) locals()['v' + str(i)] = i PA = self.CF.sample_folder(name) self.CF.header_sm(PA, self.time_str, self.time_str, self.equipment_Info, self.test_mode, self.NEXTION_NUM_SAMPLES, self.NEXTION_START_VOLTAGE, self.NEXTION_END_VOLTAGE, self.NEXTION_STEP_VOLTAGE, 10) print('04 - Sourcemeter Reading...') # measurement of sourcemeter if APP_Sourcemeter_PRESENT: data = self.Sourcemeter.Measure('a', self.NEXTION_START_VOLTAGE, self.NEXTION_END_VOLTAGE, self.NEXTION_STEP_VOLTAGE, self) self.CF.content(PA, self.time_str, data) print('05 - Swtich Relay Unselection: %d' % i) self.REL.RelayDeSelect(i) if APP_NEXTION_PRESENT: print('07 - Reading Display...') RE_VAL = set() DE = str(DIS.read()) # print (DE) RE_VAL.add(DE) # print (RE_VAL) if "['e\\x05\\x15\\x01\\xff\\xff\\xff']" in RE_VAL: DIS.write('t0.txt="Stop"') OVEN.close() sys.exit() elif "['e\\x05\\x14\\x01\\xff\\xff\\xff']" in RE_VAL: # DIS.write("rest\xff\xff\xff") os.system("sudo reboot") print('07 - Updating Display...') Father.Update(self.updateList) counter += 1 t1 = datetime.datetime.now() if APP_OVEN_PRESENT: OVEN.close()