示例#1
0
文件: pidthread.py 项目: lovedva/B
    def run(self):  #把要执行的代码写到run函数里面 线程在创建后会直接运行run函数
        # print "Starting " + self.name
        # print_time(self.name, self.counter, 5)
        # print "Exiting " + self.name

        RPi.GPIO.setmode(RPi.GPIO.BCM)
        RPi.GPIO.setup(3, RPi.GPIO.OUT)
        ads1248.init()
        TempOUT1 = 12  #60度
        TempOUT2 = 23  #70度
        TempOUT3 = 15  #90度
        RPi.GPIO.setmode(RPi.GPIO.BCM)
        RPi.GPIO.setup(TempOUT1, RPi.GPIO.OUT)
        RPi.GPIO.setup(TempOUT2, RPi.GPIO.OUT)
        RPi.GPIO.setup(TempOUT3, RPi.GPIO.OUT)
        RPi.GPIO.setmode(RPi.GPIO.BCM)
        RPi.GPIO.output(3, RPi.GPIO.HIGH)
        try:
            if self.pidName == 60:
                RPi.GPIO.setmode(RPi.GPIO.BCM)
                #设置pwm输出占空比
                pwm = RPi.GPIO.PWM(TempOUT1, 5)  #pwm周2500ms
                pwm.start(1)
                #创建pid控制器对象
                pid60 = pid60Ctr.pidCtr()
                #准备写入文件
                file_handle = open('60Templog.txt', mode='w')
                # xls.creatxls()
                #循环控制温度
                while True:
                    time.sleep(0.5)
                    pid60.Pv = float(pt1000.calcTemp(01))
                    print(
                        "Pt1000で測温[01]==%s\n温度センサー测温[01]==None 度\n-----------------------------"
                        % pid60.Pv)
                    file_handle.write("%s | " % pid60.Pv)
                    pid60.calc()
                    # print("pidCr.OUTの計算結果==%s"%pid60.OUT)
                    dc = pid60.OUT / pid60.pwmcycle * 100
                    pwm.ChangeDutyCycle(dc)
                    # print("PWM信号のDutyCyle:%s"%dc)
                    # file_handle.write("%s ;\n"%dc)

                file_handle.close()
            elif self.pidName == 70:
                RPi.GPIO.setmode(RPi.GPIO.BCM)
                #设置pwm输出占空比
                pwm = RPi.GPIO.PWM(TempOUT2, 5)  #pwm周期200ms
                pwm.start(1)
                #创建pid控制器对象
                pid70 = pid70Ctr.pidCtr()
                #准备写入文件
                file_handle = open('70Templog.txt', mode='w')
                #循环控制温度
                while True:
                    time.sleep(0.5)
                    pid70.Pv = float(pt1000.calcTemp(23))
                    print(
                        "Pt1000で測温[23]==%s\n温度センサー测温[23]== None度\n-----------------------------"
                        % pid70.Pv)
                    # print("温度センサー测温[4,5]==%s度"%adt7410.read_adt7410())
                    file_handle.write("%s | " % pid70.Pv)
                    pid70.calc()
                    # print("pidCr.OUTの計算結果==%s"%pid70.OUT)
                    dc = pid70.OUT / pid70.pwmcycle * 100
                    pwm.ChangeDutyCycle(dc)
                    # print("PWM信号のDutyCyle:%s"%dc)
                    # file_handle.write("%s ;\n"%dc)

                file_handle.close()
            elif self.pidName == 90:
                RPi.GPIO.setmode(RPi.GPIO.BCM)
                #设置pwm输出占空比
                pwm = RPi.GPIO.PWM(TempOUT3, 5)  #pwm周期200ms
                pwm.start(1)
                #创建pid控制器对象
                pid90 = pid90Ctr.pidCtr()
                #准备写入文件
                file_handle = open('90Templog.txt', mode='w')
                #循环控制温度
                while True:
                    time.sleep(0.5)
                    pid90.Pv = float(pt1000.calcTemp(45))
                    print(
                        "Pt1000で測温[45]==%s\n温度センサー测温[45]== None度\n-----------------------------"
                        % pid90.Pv)
                    # print("温度センサー测温[4,5]==%s度"%adt7410.read_adt7410())
                    file_handle.write("%s | " % pid90.Pv)
                    pid90.calc()
                    # print("pidCr.OUTの計算結果==%s"%pid90.OUT)
                    dc = pid90.OUT / pid90.pwmcycle * 100
                    pwm.ChangeDutyCycle(dc)
                    # print("PWM信号のDutyCyle:%s"%dc)
                    # file_handle.write("%s ;\n"%dc)
                file_handle.close()
        finally:
            RPi.GPIO.output(3, RPi.GPIO.LOW)
            RPi.GPIO.cleanup()
示例#2
0
if __name__ == "__main__":
	try:
		pi=PIinit()
		print("初始化完毕,创建PIinit对象pi,flag==%s"%pi.flag)
		# RPi.GPIO.output(pi.TempOUT1, True)
		# print("TempOUT1开始输出1")
		pid=pidCtr()
		print("创建pidCtr对象pid,flag==%s"%pid.flag)
		#设置pwm
		pwm=RPi.GPIO.PWM(pi.TempOUT1,5)#pwm周期200ms
		pwm.start(1)
		file_handle=open('90Templog.txt',mode='w')
		while True:
			time.sleep(0.35)
			# pid.Pv=adt7410.read_adt7410()
			pid.Pv=float(pt1000.calcTemp(0,1))  
			print("今回の温度==%s度,目标温度=90度"%pid.Pv)
			file_handle.write("%s | "%pid.Pv)
			pid.calc()
			print("pidCr.OUTの計算結果==%s"%pid.OUT)
			dc=pid.OUT/pid.pwmcycle*100
			pwm.ChangeDutyCycle(dc)
			print("PWM信号のDutyCyle:%s"%dc)
			file_handle.write("%s ;\n"%dc)
			print("-----------------------------")
			
			pass
			
		file_handle.close()
	except Exception as e:
		raise
示例#3
0
        print("初始化完毕,创建PIinit对象pi,flag==%s" % pi.flag)
        # RPi.GPIO.output(pi.TempOUT1, True)
        # print("TempOUT1开始输出1")
        pid = pidCtr()
        print("创建pidCtr对象pid,flag==%s" % pid.flag)
        #设置pwm
        pwm = RPi.GPIO.PWM(pi.TempOUT1, 5)  #pwm周期200ms
        pwm.start(1)
        file_handle = open('Templog.txt', mode='w')
        while True:
            time.sleep(0.5)
            # pid.Pv=adt7410.read_adt7410()
            pid.Pv = float(
                str(
                    pt1000.calcTemp(
                        (-0.0000005775), 0.0039083,
                        (1 - pt1000.calcVoltaverage(4, 5) / 1000))))
            print("今回の温度==%s度" % pid.Pv)
            file_handle.write("%s | " % pid.Pv)
            pid.calc()
            print("pidCr.OUTの計算結果==%s" % pid.OUT)
            dc = pid.OUT / pid.pwmcyle * 100
            pwm.ChangeDutyCycle(dc)
            print("PWM信号のDutyCyle:%s" % dc)
            file_handle.write("%s ;\n" % dc)
            print("-----------------------------")

            pass

        file_handle.close()
    except Exception as e:
示例#4
0
文件: pidall.py 项目: lovedva/B
        file_handle1 = open('60Templog.txt', mode='w')
        file_handle2 = open('70Templog.txt', mode='w')
        file_handle3 = open('90Templog.txt', mode='w')

        ads1248.init()
        RPi.GPIO.output(3, RPi.GPIO.HIGH)  #conversation start

        while True:
            # time.sleep(0.05)
            pid60.Pv = float(pt1000.calcTemp(01))
            pid60.calc()
            dc1 = pid60.OUT / pid60.pwmcycle * 100
            pwm1.ChangeDutyCycle(dc1)

            pid70.Pv = float(pt1000.calcTemp(23))
            pid70.calc()
            dc2 = pid70.OUT / pid70.pwmcycle * 100
            pwm2.ChangeDutyCycle(dc2)
            thermocouple = max31855.sensor.readTempC()

            pid90.Pv = float(pt1000.calcTemp(45))
            pid90.calc()
            dc3 = pid90.OUT / pid90.pwmcycle * 100
            pwm3.ChangeDutyCycle(dc3)

            print("Pt1000で測温[01]==%s\n-----------------------------" %
                  pid60.Pv)
            print("Pt1000で測温[23]==%s\n-----------------------------" %
                  pid70.Pv)
            print("----------------------温度センサーで測温[热电偶]:" + str(thermocouple))
示例#5
0
if __name__ == "__main__":
    try:
        pi = PIinit()
        print("初始化完毕,创建PIinit对象pi,flag==%s" % pi.flag)
        # RPi.GPIO.output(pi.TempOUT1, True)
        # print("TempOUT1开始输出1")
        pid = pidCtr()
        print("创建pidCtr对象pid,flag==%s" % pid.flag)
        #设置pwm
        pwm = RPi.GPIO.PWM(pi.TempOUT1, 5)  #pwm周期200ms
        pwm.start(1)
        file_handle = open('70Templog.txt', mode='w')
        while True:
            time.sleep(0.5)
            # pid.Pv=adt7410.read_adt7410()
            pid.Pv = float(pt1000.calcTemp(2, 3))
            # pt1000temp=float(pt1000.calcTemp(2,3))
            # print("Pt1000で測温[2,3]==%s"%pt1000temp)
            print("Pt1000で測温[2,3]==%s" % pid.Pv)
            # pid.Pv=max31855.sensor.readTempC()
            sensortemp = max31855.sensor.readTempC()
            print("温度传感器测温(热电偶)==%s度" % sensortemp)
            # print("温度传感器测温(热电偶)==%s度"%pid.Pv)
            file_handle.write("%s | " % pid.Pv)
            file_handle.write("%s \n" % sensortemp)
            # file_handle.write("%s \n"%pt1000temp)
            pid.calc()
            print("pidCr.OUTの計算結果==%s" % pid.OUT)
            dc = pid.OUT / pid.pwmcycle * 100
            pwm.ChangeDutyCycle(dc)
            print("PWM信号のDutyCyle:%s" % dc)