TDX-PITE_80X86微机接口应用技术实验_温度闭环控制实验

目录

7.1实验目的

7.2实验设备

7.3实验内容

7.4实验原理

7.5实验步骤


7.1实验目的

1.了解温度调节闭环控制方法
2.掌握 PID 控制规律及算法。

7.2实验设备

PC 机一台,TDX-PITE 实验装置一套

7.3实验内容

        温度闭环控制原理如图 7.1 所示。人为数字给定一个温度值,与温度测量电路得到的温度值(反馈量) 进行比较,其差值经过 PID 运算,将得到控制量并产生 PWM 脉冲,通过驱动电路控制温度单元是否加热,从而构成温度闭环控制系统。

        该单元采用一个 5V/60C/2~4W 的陶瓷加热片作为发热体,下面放置热敏电阻用于测温。线路连接如图 7-2 所示,只要在 A 端输入漏极开路的驱动信号,加热片即开始加热。热敏电阻的 B 端引出,用于连接 ADC 输入端的测量电路。

7.4实验原理

实验电路中采用的是 NTC MF58-103 型热敏电阻,实验电路连接如下

 

 温度值与对应 AD 值的计算方法如下:
25C: Rt=10KVAD=5x500/(10000+500)=0.238(V) 对应AD 值: 0CH

30C:Rt=5.6KVAD=5x500/(5600+500)=0.410(V) 对应AD 值:15H

40C:Rt=3.8K VAD=5x500(3800+500)=0.581(V) 对应AD 值: 1EH

50C:Rt=2.7K VAD=5x 500 /(2700+500)=0.781(V) 对应AD 值: 28H

60C:Rt=2.1K VD=5x500 /(2100+500)=0.962(V) 对应AD 值: 32H

100C:Rt=900 VAD=5x500/(900 +500)=1.786(V)对应AD 值: 5AH
......
        测出的 AD 值是程序中数据表的相对偏移,利用这个值就可以找到相应的温度值。例如测出的AD 值为 5AH=90,在数据表中第 90 个数为 64H,即温度值: 100C。

7.5实验步骤

1.实验接线图如图 7.3 所示,按图连接实验线路图。


2. 编写实验程序(例程文件名为: Wendu.ASM) ,实验参数取值范围见表 7.1,编译、链接后装入系统。

;=========================================================
; 文件名: WENDU.ASM
; 功能描述: 温度闭环控制实验,通过专用图形显示界面观察
;           实验现象
;           IOY0--8255, IOY3--8254, IOY1--AD0809
;=========================================================

SSTACK	SEGMENT STACK
		DW 256 DUP(?)
TOP		LABEL WORD
SSTACK	ENDS
DATA	SEGMENT
TS		DB 64H						;采样周期
SPEC	DW 001DH					;给定温度值32H为50℃
IBAND	DW 0040H					;PID算法中积分分离值   
KPP		DW 1F40H					;PID算法中比例项系数值
KII		DW 0010H					;PID算法中积分项系数值
KDD		DW 0010H					;PID算法中微分项系数值
CH1		DB ?						;专用图形显示的CH1通道
CH2		DB ?						;专用图形显示的CH2通道
CH3		DB ?						;专用图形显示的CH3通道
YK		DW ?						;电机转速反馈量
CK		DB ?						;电机转速控制量
TC		DB ?
TKMARK	DB ?
ADMARK	DB ?
ADVALUE	DB ?
FPWM	DB ?
CK_1	DB ?
EK_1	DW ?
AEK_1	DW ?
BEK		DW ?
AAAA	DB ?
VAA		DB ?
BBB		DB ?
VBB		DB ?
R0		DW ?
R1		DW ?
R2		DW ?
R3		DW ?
R4		DW ?
R5		DW ?
R6		DW ?
R7		DB ?
R8		DW ?
;热敏电阻温度表
TAB		DB 14H,14H,14H,14H,14H,14H,14H,14H,14H,14H,15H,16H,17H,18H,19H,1AH
		DB 1BH,1CH,1DH,1EH,1EH,1FH,20H,21H,23H,24H,25H,26H,27H,28H,29H,2AH
		DB 2BH,2CH,2DH,2EH,2FH,31H,32H,32H,33H,34H,35H,36H,37H,38H,39H,3AH
		DB 3BH,3CH,3DH,3EH,3FH,40H,42H,43H,44H,45H,46H,47H,48H,49H,4AH,4BH
		DB 4CH,4DH,4EH,4FH,50H,4FH,50H,51H,52H,53H,54H,55H,56H,57H,58H,59H
		DB 5AH,5BH,5CH,5DH,5EH,5FH,60H,61H,62H,63H,64H,64H,65H,65H,66H,66H
		DB 67H,68H,69H,6AH,6BH,6CH,6DH,6EH,6EH,6FH,6FH,70H,71H,72H,73H,74H
		DB 75H,76H,77H,78H,79H,7AH,7BH,7CH,7DH,7EH,7FH,80H,81H,82H,83H,84H
		DB 84H,85H,86H,87H,88H,89H,8AH,8BH,8CH,8EH,8FH,90H,91H,92H,93H,94H
		DB 95H,96H,97H,98H,99H,9AH,9BH,9BH,9CH,9CH,9DH,9DH,9EH,9EH,9FH,9FH
		DB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7H,0A8H,0A9H,0AAH,0ABH,0ACH
		DB 0ADH,0AEH,0AFH,0B0H,0B0H,0B1H,0B2H,0B3H,0B4H,0B4H,0B5H,0B6H,0B7H
		DB 0B8H,0B9H,0BAH,0BBH,0BDH,0BEH,0BEH,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H
		DB 0C8H,0CAH,0CCH,0CEH,0CFH,0D0H,0D1H,0D2H,0D4H,0D5H,0D6H,0D7H,0D8H
		DB 0D9H,0DAH,0DBH,0DCH,0DDH,0DEH,0E3H,0E6H,0E9H,0ECH,0F0H,0F2H,0F6H
		DB 0FAH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
		DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
		DB 0FFH,0FFH,0FFH,0FFH,0FFH
DATA	ENDS

CODE	SEGMENT
		ASSUME  CS:CODE,DS:DATA
START:	MOV AX, DATA
		MOV DS, AX
MAIN:	CALL INIT					;系统初始化
		STI
M1:		CMP	TKMARK, 01H    		;判采样周期到否
		JNZ	M1
		MOV	TKMARK, 00H
M2:		CMP	ADMARK, 01H
		JNZ	M2
		MOV	ADMARK, 00H
		MOV AX, 0000H				;查温度表
		MOV	AL, ADVALUE
		MOV	BX, OFFSET TAB
		ADD	BX, AX
		MOV	AL, [BX]	
		MOV YK, AX
		CALL PID					;调用PID计算控制量 CK
		MOV AL, CK				;根据 CK 产生 PWM 脉冲
		SUB AL, 80H         
		JC  IS0
		MOV AAAA, AL
		JMP COU
IS0:	MOV AL, 00H
		MOV AAAA, AL        
COU:	MOV AL, 7FH
		SUB AL, AAAA
		MOV BBB, AL
		MOV AX, SPEC				;将给定量SPEC 存入 CH1
		MOV CH1, AL
		MOV AX, YK           		;将反馈量YK 存入 CH2
		MOV CH2, AL
		MOV AL, CK           		;将控制量CK 存入 CH3
		MOV CH3, AL
		CALL PUT_COM				;调用PUT_COM显示给定、反馈与控制量的波形
		JMP M1         
PUT_COM:							;显示子程序
		MOV DX, 03FBH
		IN  AL, DX
		AND AL, 7FH
		OUT	DX, AL
		MOV DX, 03FDH
WAIT1:	IN	AL, DX
		TEST AL, 20H
		JZ	WAIT1
		MOV DX, 03F8H
		MOV AL, CH1	
		OUT DX, AL
		MOV DX, 03FDH
WAIT2:	IN  AL, DX
		TEST AL, 20H
		JZ WAIT2
		MOV DX, 03F8H        
		MOV	AL, CH2
		OUT	DX, AL
		MOV DX, 03FDH
WAIT3:	IN  AL, DX
		TEST AL, 20H
		JZ WAIT3
		MOV DX, 03F8H        
		MOV	AL, CH3
		OUT	DX, AL
		RET

INIT:	NOP							;写中断入口地址
		PUSH DS
		XOR AX, AX
		MOV DS, AX
		MOV AX, OFFSET IRQ6   		;8259 IRQ10定时中断
		MOV SI, 0038H            
		MOV [SI], AX
		MOV AX, CS
		MOV SI, 003AH
		MOV [SI], AX
		MOV AX, OFFSET IRQ7    		;8259 IRQ7中断
		MOV SI, 003CH
		MOV [SI], AX
		MOV AX, CS
		MOV SI, 003EH
		MOV [SI], AX
		CLI
		POP DS
        		
		IN  AL, 21H
		AND AL, 3FH				;允许 IRQ6,IRQ7
		OUT 21H, AL
        
		MOV CK, 00H				;变量初始化
		MOV YK, 0000H
		MOV CK_1, 00H
		MOV EK_1, 0000H
		MOV AEK_1, 0000H
		MOV BEK, 0000H
		MOV BBB, 00H
		MOV VBB, 00H
		MOV R0, 0000H
		MOV R1, 0000H
		MOV R2, 0000H
		MOV R3, 0000H
		MOV R4, 0000H
		MOV R5, 0000H
		MOV R6, 0000H
		MOV R7, 00H
		MOV	R8, 0000H
		MOV TKMARK, 00H
		MOV FPWM, 01H
		MOV	ADMARK, 00H
		MOV	ADVALUE, 00H
		MOV AAAA, 7FH
		MOV VAA, 7FH
		MOV TC, 00H
        
		MOV DX, 606H
		MOV AL, 80H				;初始化 8255-B口
		OUT DX, AL
		MOV DX, 640H			;启动 ADC0809
		OUT DX, AL
		MOV DX, 6C6H
		MOV AL, 36H				;8254 计数器0输出 OUT0
		OUT DX, AL
		MOV DX, 6C0H            
		MOV AL, 10H				;定时 10ms 方波
		OUT DX, AL
		MOV AL, 27H
		OUT DX, AL
		RET
IRQ7:	NOP
		PUSH AX
		PUSH DX
		MOV DX, 0640H
		IN	AL, DX				;读 ADC0809 采样值
		MOV ADVALUE, AL
		MOV ADMARK, 01H  
		MOV AL, 20H        		;关闭 IRQ7
		OUT 20H, AL
		POP DX
		POP AX
		IRET
IRQ6:	NOP 
		PUSH AX
		PUSH DX
		MOV  DX, 0640H
		OUT  DX, AL				;启动 ADC0809
		MOV	 AL, TC
		CMP	 AL, TS
		JNC	 TT2
		INC  TC
TT1:	CALL KJ
		MOV  AL, 20H			;关闭 IRQ6
		OUT  20H, AL
		POP  DX
		POP  AX
		IRET
TT2:	MOV	TKMARK, 01H
		MOV	TC, 00H
		JMP	TT1
KJ:		NOP  					;PWM子程序
		PUSH AX
		CMP FPWM, 01H
		JNZ TEST2
		CMP VAA, 00H
		JNZ ANOT0
		MOV FPWM, 02H
		MOV AL, BBB
		CLC
		RCR AL, 01H
		MOV VBB, AL
		JMP TEST2
ANOT0:	DEC VAA
		MOV DX, 0602H				;加温
		MOV AL, 01H
		OUT DX, AL
TEST2:	CMP FPWM, 02H
		JNZ OUTT
		CMP VBB, 00H
		JNZ BNOT0
		MOV FPWM, 01H
		MOV AL, AAAA
		CLC
		RCR AL, 01H
		MOV VAA, AL
		JMP OUTT
BNOT0:	DEC VBB
		MOV DX, 0602H				;停止加温
		MOV AL, 00H
		OUT DX, AL  
OUTT:	POP AX
		RET       
;==============================================
;PID算法子程序
;根据SPEC, KPP, KII, KDD及YK计算对应控制量CK
;==============================================    
PID:	MOV AX, SPEC				;求偏差EK
		SUB AX, YK
		MOV R0, AX
		MOV R1, AX				;求偏差变化量AEK
		SUB AX, EK_1
		MOV R2, AX				;求BEK
		SUB AX, AEK_1
		MOV	BEK, AX
		MOV R8, AX
		MOV AX, R1
		MOV EK_1, AX
		MOV AX, R2
		MOV AEK_1, AX
		TEST R1, 8000H
		JZ 	EK1
		NEG R1  
EK1:	MOV AX, R1				;判积分分离值
		SUB AX, IBAND
		JC 	II 
		MOV R3, 00H
		JMP DDD
II:		MOV AL, TS				;计算积分项
		MOV AH, 00H
		MOV CX, R1
		MUL CX
		MOV CX, KII
		DIV CX
		MOV R3, AX
		TEST R0, 8000H
		JZ 	DDD
		NEG R3
DDD:	TEST BEK, 8000H			;计算微分项
		JZ 	DDD1
		NEG BEK
DDD1:	MOV AX, BEK
		MOV CX, KDD
		MUL	CX
		PUSH AX
		PUSH DX
		MOV AL, TS						
		MOV AH, 00H
		MOV CX, 0008H
		MUL CX
		MOV CX, AX
		POP DX
		POP AX
		DIV CX
		MOV R4, AX
		TEST R8, 8000H
		JZ 	DD1
		NEG R4
DD1:	MOV AX, R3				;积分项和微分项相加,判溢出
		ADD AX, R4
		MOV R5, AX
		JO 	L9
L2:		MOV AX, R5
		ADD AX, R2
		MOV R6, AX
		JO 	L3 
L5:		MOV AX, R6				;计算比例项
		MOV CX, KPP
		IMUL CX
		MOV CX, 1000H
		IDIV CX
		MOV	CX, AX
		RCL	AH, 01H
		PUSHF
		RCR	AL, 01H
		POPF
		JC	LLL1				;判溢出,溢出赋极值
		CMP	CH, 00H
		JZ	LLL2
		MOV	AL, 7FH
		JMP	LLL2
LLL1:	CMP	CH, 0FFH
		JZ	LLL2
		MOV	AL, 80H				;CK=CK_1+CK
LLL2:	MOV	R7, AL      
		ADD AL, CK_1
		JO 	L8
L18:	MOV CK_1, AL
		ADD AL, 80H
		MOV CK, AL
		RET						;PID 子程序返回
L8:		TEST R7, 80H			;溢出处理程序
		JNZ L17
		MOV AL, 7FH
		JMP L18
L17:	MOV AL, 80H
		JMP L18               	
L9:		TEST R3, 8000H
		JNZ L1
		MOV	R5, 7FFFH
		JMP L2
L1:		MOV R5, 8000H
		JMP L2
L3:		TEST R2, 8000H
		JNZ L4
		MOV R6, 7FFFH
		JMP L5
L4:		MOV R6, 8000H
		JMP L5
CODE	ENDS
		END START


3.下载程序完毕,打开专用图形界面,然后运行程序, 

4.观察响应曲线。
5.改变 PID 参数IBAND、KPP、KII、KDD,重复实验,观察实验现象,找出合适的参数并记录。
        注: 实验中给定值、反馈值都为单极性,屏幕最底端对应值为 00H,最顶端对应值为 FFH对于时间刻度值由于采样周期不同存在以下关系:
        实际时间 (秒) = n(实际刻度值) 采样周期

        控制量具有双极性,00H~7FH 为负值,80H~FFH 为正值。
        温度闭环控制实验中,温度单元的 7805 控制范围的最佳温度范围为 50C~70C,不要过高。即给定值 SPEC 范围约在 14H(20C)~46H(70C)之间。示例程序中 SPEC = 32H为 60C。TS = 64H,由于 8253 0UT2 接 IRO6 中断为 10ms,故采样周期 = 64Hx10ms = ls; 如实际刻度值 n= 100,则实际响应时间(秒)= 1x100=100s。

实际实验现象结果如图 7.4 所示:

都是我自己测出来是这样的曲线,和老师核查可能是热敏电阻传感器损坏!!! 

 

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

STM32单片机定制

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值