89C52单片机控制PWM输出的直流电机闭环调速系统设计

本文介绍了如何使用89C52单片机及其内部定时器2实现PWM波输出,通过PID控制算法调节直流电机转速,详细阐述了实验目的、流程、硬件电路和参考程序,展示了闭环调速系统的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的

1、了解89C52单片机内部三个定时器/计数器0、1和2的工作原理;

2、掌握基于89C52单片机定时器2的PWM波的输出和电机功率驱动原理,及其实现方法;

3、掌握以89C52单片机为核心、基于PID控制的直流电机闭环调速系统的软、硬件设计方法。

二、实验内容

本实验以AT89C52为核心所组成的实时控制系统,使用PID控制,给单片机输入两个参考控制信号:转速给定信号r(t)和转速反馈信号c(t),且通过PID程序的控制在单片机P1.5口输出PWM信号来控制达林顿管TIP122,通过单片机内部的定时器调节PWM信号的占空比,直流电机的转速也就跟着变化了,从而实现对直流电机的转速控制。从单片机的定时器T0口输入250KHz的给定信号,此信号作为直流电机的转速基准信号,在调节过程中一直处于不变状态;单片机定时器T1口输入转速反馈信号,在电机稳速转动时反馈信号是5KHz。以上两个信号在PID调节过程中是比例环节的输入信号,PID程序通过比较二者的变化情况,当转速有变化时,PID程序启动,通过比例、积分、微分环节来改变PWM波的占空比,从而对直流电机的转速进行实时控制调节。

三、实验流程图

直流电机闭环调速系统框图 

单片机控制PWM输出的直流电机闭环调速系统框图 

利用Visio绘制的程序流程图 

四、实验结果

硬件电路图 

运行结果 

五、参考程序

ORG 0000H
START: SJMP START1
		ORG 001BH
T10: AJMP T100
	ORG 002BH
T2: AJMP T20
	ORG 0030H
START1: CLR P1.5;PWM=0
		SETB 78H ;SET P1.5 SIGN
		MOV IE,#10100000B ;T2 REQ
		SETB IP.5 ;T2 INTERRVPT PRIORITY
		MOV 0C8H,#00000000B ;T2CON
		MOV 0CDH,#0D8H ;TH2
		MOV 0CCH,#0F0H ;TL2
		MOV 0CBH,#0D8H ;RCAP2H
		MOV 0CAH,#0F0H ;RCAP2L
		MOV 31H,#0D8H ;
		MOV 30H,#0F0H ;PWM = 1,10000
		MOV 33H,#0D8H ;
		MOV 32H,#0F0H ;PWM = 0,10000
		NOP
		MOV TMOD,#65H ;T1 MODE 2,T0 MODE 1
		MOV TH0,#00
		MOV TL0,#00
		MOV TH1,#244 ;
		MOV TL1,#244 ;12 * 1000/300 ms = 40 ms NOP
		MOV 41H,#03H ;
		MOV 40H,#84H ;600
		NOP
		MOV 71H,#00
		MOV 70H,#24
		MOV 72H,#01 ;KP1,KP2;KP1=24,KP2=1,DIV 2 NOP ;KP1/KP2 =12
		MOV 75H,#00
		MOV 74H,#16
		MOV 76H,#05 ;KI1. KI2:KI1=16. KI2=5. DIV 32
		MOV 76H,#05 ;KI1,KI2;KI1=16,KI2=5,DIV 32
		NOP ;KI1/KI2 =0.5
		MOV 79H,#00
		MOV 78H,#00
		MOV 7AH,#05 ;KD1,KD2;KD1=0,KD2=5,DIV 32
		NOP ;KD1/KD2 =0
		MOV 7FH,#00
		MOV 7EH,#00
		MOV 7DH,#00
		MOV 7CH,#00
		NOP
		MOV 35H,#00
		MOV 34H,#00
		NOP
		MOV 37H,#00
		MOV 36H,#00
		NOP
		MOV 39H,#00 ;
		MOV 38H,#00 ;e(k)
		NOP
		MOV 3BH,#00 ;
		MOV 3AH,#00 ;e(k-1)
		NOP
		MOV 3DH,#00 ;
		MOV 3CH,#00 ;e(k-2)
		NOP
		MOV 59H,#00 ;
		MOV 58H,#00 ;e(k)-e(k-1)
		NOP
		MOV 5BH,#00 ;
		MOV 5AH,#00 ;e(k)
		NOP
		MOV 5DH,#00 ;
		MOV 5CH,#00 ;e(k)-2e(k-1)+e(k-2)
		NOP
		MOV 4BH,#00H
		MOV 4AH,#00H
		MOV 49H,#00H
		MOV 48H,#00H ;KP1/KP2 [e(k)-k(k-1)]
		NOP
		MOV 4FH,#00H
		MOV 4EH,#00H
		MOV 4DH,#00H
		MOV 4CH,#00H ;KI1/KI2 e(k)
		NOP
		MOV 53H,#00H
		MOV 52H,#00H
		MOV 51H,#00H
		MOV 50H,#00H ;KD1/KD2 [e(k)-2e(k-1)+e(k-2)]
		NOP
		
		
		MOV 57H,#00H
		MOV 56H,#00H
		MOV 55H,#0D8H
		MOV 54H,#0F0H;n(k-1)=10000
		NOP
		MOV 61H,#00
		MOV 60H,#00
START2: SETB P1.5
		CLR 78H;CLEAR P1.5 SIGN
		SETB 0CAH;SET TR2
		MOV R2,#60
		LCALL DELAY;DELAY FOR 3S
		SETB TR0;SET TRO
		SETB TR1;SET TR1
		SETB IE.3;T1 INTERRVPT ENABLE
HERE:	SJMP HERE
		ORG 0200H
T100:	PUSH ACC
		PUSH B
		PUSH PSW
		CPL P1.4;############
T11:
		MOV A,TH0
		MOV B,TL0
		CJNE A,TH0,T11
		PUSH ACC
		PUSH B
		CLR C
		XCH A,B
		SUBB A,34H
		MOV 36H,A
		XCH A,B
		SUBB A,35H
		MOV 37H,A
		POP 34H
		POP 35H
		CLR C
		MOV A,40H
		SUBB A,36H
		MOV 38H,A
		MOV 60H,A
		MOV A,41H
		SUBB A,37H
		MOV 39H,A
		MOV 61H,A
		JNC PT
		NT:SETB 7CH
		MOV A,60H
		CPL A
		ADD A,#01H
		MOV 60H,A
		MOV A,61H


		CPL A
		ADDC A,#00H
		MOV 61H,A;|e(k)|
		SJMP PTT
PT: CLR 7CH
PTT:
CLR C
MOV A,60H
SUBB A,#200
MOV A,61H
SUBB A,#00
JNC PTTT;500 < SAMPLE < 70000<SAMPLE <700
SJMP PID
PTTT:
LJMP BANG
PID:
CPL P1.2;##
CLR C
MOV A,38H
SUBB A,3AH
MOV 58H,A
MOV A,39H
SUBB A,3BH
MOV 59H,A
;e(k)-e(k-1)
MOV 5AH,38H
MOV 5BH,39H ;e(k)
CLR C
MOV A,3CH
SUBB A,3AH
MOV 5CH,A
MOV A,3DH
SUBB A,3BH
MOV 5DH,A
MOV A,5CH
ADD A,58H
MOV 5CH,A
MOV A,5DH
ADDC A,59H
MOV 5DH,A
;e(K)-2e(K-1)+e(k-2);e(K)-2e(
MOV R0,#58H
MOV R1,#70H
LCALL LOAD
MOV R0,#48H
LCALL MUL3
;KP1[e(k)-e(k-1)]
MOV 7FH,4BH
MOV 7EH,4AH
MOV 7DH,49H
MOV 7CH,48H
MOV R0,72H
LCALL DIVV
MOV 4BH,7FH
MOV 4AH,7EH
MOV 49H,7DH


MOV 48H,7CH
;KP1/KP2 [e(k)-e(k-1)]
MOV R0,#5AH
MOV R1,#74H
LCALL LOAD
MOV R0,#4CH
LCALL MUL3;KI1 e(k)
MOV 7FH,4FH
MOV 7EH,4EH
MOV 7DH,4DH
MOV 7CH,4CH
MOV R0,76H
LCALL DIVV
MOV 4FH,7FH
MOV 4EH,7EH
MOV 4DH,7DH
MOV 4CH,7CH
;KI1/KI2 e(k)
MOV R0,#5CH
MOV R1,#78H
LCALL LOAD
MOV R0,#50H
LCALL MUL3
;KD1 [e(k)-2e([e(k)-2e(k-1)+e(k-2)]
MOV 7FH,53H
MOV 7EH,52H
MOV 7DH,51H
MOV 7CH,50H
MOV R0,7AH
LCALL DIVV
MOV 53H,7FH
MOV 52H,7EH
MOV 51H,7DH
MOV 50H,7CH
;KD1/KD2 [e(k)-2e[e(k)-2e(k-1)+e(k-2)]
MOV R0,#54H
MOV R1,#48H
MOV R2,#03
LCALL ADD4
;n(k-1)+KP[e(k)-e(k-1)]
MOV R0,#54H
MOV R1,#4CH
MOV R2,#03
LCALL ADD4
;n(k-1)+KP[e(k)-e(k-1)]+KIe(k)
MOV R0,#54H
MOV R1,#50H
MOV R2,#03
LCALL ADD4
;n(k)=n(k-1)+KP[e(k)-e(k-1)]+KIe(k)
NOP
;+KD[e(k)-2e(k-1)+e(k-2)]
MOV A,57H
CJNE A,#00,BJ
MOV A,56H
CJNE A,#00,BJ
SJMP NOR
BJ: CPL P1.6


NOR:
CLR IE.5
;CLOSE T2 REQ
MOV  31H,55H
MOV  30H,54H
;WIDTH of PWM-1
CLR C
MOV  A,#0E0H
SUBB A,30H
MOV  32H,A
MOV  A,#0B1H
SUBB A,31H
MOV  33H,A
SETB IE.5
;OPEN T2 REQ
MOV  3CH,3AH
MOV  3DH,3BH
;ST0RE NEW e(k-2)
MOV  3AH,38H
MOV  3BH,39H
;ST0RE NEW e(k-1)
SJMP T1RE
BANG:
CPL P1.3
;############
JB 7CH,T0_FAST
T0_SLOW:
MOV 31H,#0F8H
MOV 30H,#30H
;COUNTER=2000
MOV 33H,#0B9H
MOV 32H,#0B0H
;L BYTE,COUNTENTER-18000
SJMP T1RE0
T0_FAST:
MOV 31H,#0B9H
MOV 30H,#0B0H
;H BYTE,COUNTI,COUNTER-18000
MOV 33H,#0F8H
MOV 32H,#30H
;L BYTE,COUN,COUNTER=2000
T1RE0:MOV  39H,#00
MOV  38H,#00
;e(K)-0
MOV  3BH,#00
MOV  3AH,#00
;e(K-1)-8
MOV  3DH,#00
MOV  3CH,#00
;e(K-2)-0
MOV  57H,#00H
MOV  56H,#00H
MOV  55H,#0D8H
MOV  54H,#0F0H
;n(k-1)=10000
T1RE:NOP
T1RE1:  POP PSW
		POP B
		POP ACC
		RETI
		ORG 0400H
T20:
		CLR 0CFH
		;CLR TF2
		JNB 78H,CPWM
SPWM:
SETB P1.5
;PWM=1
;MOV GCBH,33H
;PRESENT PWM-1


MOV 0CBH,33H
;PRESENT PWM=1
MOV 0CAH,32H
;NEXT PWM-0 WIDTH
CLR 78H
SJMP T20R
CPWM:
CLR P1.5
;PWM=0
MOV 0CBH,31H
;PRESENT PWM=0
MOV 0CAH,30H
;NEXT PWM-1 WIDTH
SETB 78H
T20R:
RETI
ORG 0500H
LOAD:
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R7,A
MOV A,@R1
MOV R4,A
INC R1
MOV A,@R1
MOV R5,A
RET
ORG 0600H
MUL3:
MOV A,R7
RLC A
MOV 7AH,C
MOV A,R5
RLC A
MOV 79H,C
ANL C,7AH
JC POSI
MOV C,7AH
ORL C,79H
SJMP SIGN
POSI:CPL C
SIGN:
MOV 7BH,C;NSIS
MOV A,R7
JB ACC.7,CPL11
MUL01:	MOV A,R5
		JB ACC.7,CPL22
MUL10:	LCALL MUL1
		JB 7BH,CPL33
		SJMP MUL11
CPL11:	MOV A,R6
		CPL A
		ADD A,#01H
		MOV R6,A
		MOV A,R7
		CPL A
		ADDC A,#00H
		MOV R7,A
		SJMP MUL01
		
		
CPL22: 	MOV A,R4
		CPL A 
 		ADD	A,#01H
 	    MOV R4,A 
 		MOV A,R5
		CPL A 
 		ADDC A ,#00H 
		MOV R5, A 
 		SJMP MUL10
CPL33: 	DEC R0 
 		DEC R0 
 		DEC R0 
 		MOV R2,#03H	 
CPL2:		MOV A,@R0
 		CPL A 
 		ADD A,#01H
 		MOV @R0,A 
NEXT: 		INC R0
 		MOV A,@R0 
 		CPL A 
 		ADDC A ,#00H 
 		MOV @R0, A 
		DJNZ R2,NEXT 
MUL11:	RET 
 		ORG 0700H
MUL1: 	MOV A,R6
 		MOV B,R4
 		MUL AB 
 		MOV @R0,A 
 		MOV R3,B 
 		MOV A,R4
 		MOV B,R7
 		MUL AB 
 		ADD A,R3
		MOV R3,A 
		MOV A,B 
		ADDC A,#00
		MOV R2,A 
		MOV A,R6
		MOV B,R5
	    MUL AB 
 		ADD A,R3
 		INC R0 
 		MOV @R0,A 
		MOV R1,#00
 		MOV A,R2
 		ADDC A,B 
		MOV R2,A
 		JNC LAST 
 		INC R1
		
		
		
LAST: MOV A,R7
	MOV B,R5 
	MUL AB 
	ADD A,R2 
	INC R0 
	MOV @R0,A 
	MOV A,B 
	ADDC A,R1 
	INC R0 
	MOV @R0,A 
	RET 
 		ORG 0800H 
ADD4: 	MOV A ,@R0
 	ADD A,@R1
	MOV @R0,A 
ADD41: INC R0 
 	INC R1
 	MOV A,@R0
 	ADDC A,@R1
 	MOV @R0, A 
 	DJNZ R2,ADD41 
 	RET 
 	ORG 0900H 
SUB4: CLR C 
 	MOV A,@R0
 	SUBB A,@R1
 	MOV @R0,A 
SUB41: INC R0
 	INC R1
 	MOV A,@R0
 	SUBB A,@R1
 	MOV @R0,A 
 	DJNZ R2,SUB41 
 	RET 
		ORG 0A00H
DIVV:	MOV A,7FH
 	JB ACC.7,N 
 	LCALL DIVV1
 	SJMP DRE 
N: 	LCALL BUM 
 	LCALL DIVV1
 	LCALL BUM 
DRE:	RET 
 		ORG 0B00H
DIVV1: CLR C
 	MOV A,7FH 
 	RRC A 
 	MOV 7FH, A 
 	MOV A,7EH 
 	RRC A


 	MOV 7EH,A 
 	MOV A,7DH 
 	RRC A 
 	MOV 7DH,A 
 	MOV A,7CH 
 	RRC A 
 	MOV 7CH,A 
 	DJNZ R0,DIVV1 
 	RET 
 		ORG 0C00H 
 BUM:	MOV A,7FH
 	CPL A 
 	MOV 7FH,A 
 	MOV A,7EH 
 	CPL A 
 	MOV 7EH,A 
 	MOV A,7DH 
 	CPL A 
 	MOV 7DH,A 
 	MOV A,7CH 
 	CPL A 
 	MOV 7CH,A 
 	MOV A,7CH 
 	ADD A,#01H 
 	MOV 7CH,A 
 	MOV A,7DH 
 	ADDC A,#00H 
 	MOV 7DH,A 
 	MOV A,7EH 
 	ADDC A,#00H 
 	MOV 7EH,A 
 	MOV A,7FH 
 	ADDC A,#00H 
 	MOV 7FH,A 
 	RET 
 		ORG 0D00H
 DELAY:	PUSH 02H
 DELY1:	PUSH 02H
 DELY2:	PUSH 02H
 DELY3:	DJNZ 02H,DELY3
; DELAY :DELY1:DELY2:DELY3
 	POP 02H
	DJNZ 02H,DELY2 
	POP 02H
 	DJNZ 02H,DELY1 
 	POP 02H
 	DJNZ 02H,DELAY 
 	RET 
 	END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值