直流电机闭环调速控制系统设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录 (1)

一、课设任务 (2)

1.1设计内容 (2)

1.2具体要求 (2)

1.3程序调试建议 (2)

二、系统方案 (3)

三、硬件设计 (3)

3.1数码管显示和行列式键盘电路 (4)

3.2数模变换电路 (5)

3.3直流电机驱动电路 (6)

3.4片选译码电路 (7)

3.5 RAM电路 (7)

四、软件设计 (8)

五、调试及结果 (19)

六、心得体会 (19)

七、参考文献 (20)

八、附录 (20)

直流电机闭环调速控制系统设计报告

一、课设任务

1.1设计内容:

以实验室实验装置为设计对象,从中选择出合适的部分,构成一个直流电机恒转速控制系统,具有如下功能:

1、可以通过按键设定直流电机转速(转/ 分钟,r/min);

2、可以实时显示电机转速,同时显示设定值(各用三位显示);

3、运行过程中改变负载可以维持设定的转速稳定后保持不变。(稳态误差小于等于设定值的5%)

4、开始时只显示设定值,采集值显示为0,按运行键后显示实时采集值与设定值,左边三位是设定值,右边三位是实时值;

5、设置停止运行键,控制直流电机停止运行;

6、其它扩展发挥功能。

1.2具体要求:

1、根据功能要求从实验装置上选择合适电路构成系统,用protel软件画出原理图与控制系统结构图,分析系统工作过程;

2、根据实验装置具体情况确定接线方法,从而确定各端口的口地址(D/A、键盘、

显示等);

3、采用PID算法作为恒转速控制算法,对PID算法加以分析说明;

4、按照系统工作过程要求编制程序,画出流程图与编写具体程序;

5、调试运行,记录运行结果;

6、书写课程设计报告,符合学院有关课程报告的要求。

1.3程序调试建议:

1、先通过简单程序验证硬件工作正常(D/A输出,带负载能力,显示器正常等等);不正常时及时与实验室老师联系更换器件。

2、调试测速显示子程序;

3、调试参数设置程序;

4、调试控制算法程序;

5、调试综合程序

二、系统方案

直流电动机具有良好的起、制动性能,宜于大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域得到了广泛的应用。采用PID调节的转速单环直流调速系统可以在保证稳定的前提下实现转速无静差。

系统进行信号采集进行D/A转换,使单片机送出脉冲来控制触发器,控制电路输出,驱动电动机工作,再由检测电路带回实际转速给单片机,让单片机根据实际转速和给定的转速进行比较,放大及PID运算等操作,从而控制整流电路α角的大小,进而改变电机

电枢电压的大小,达到调节电动机转速的目的。

三、硬件设计

3.1 数码管显示和行列式键盘电路

数码管显示和行列式键盘电路图

3.2数模变换电路

数模变换电路图

3.3直流电机驱动电路:

直流电机驱动电路图3.4片选译码电路:

片选译码电路图3.5 RAM电路:

RAM 电路图

四、软件设计

MCS-51 8031

ROM 2662

DAC 0832 模数 转换

LED 显示 PID 调速

键盘设 定速度

LED 显示

判断按键执行跳转

图1 结构框图

主程序流程图

显示程序流程图

程序://*********课程设计PID直流电机调速******************** #include

//******************地址定义*********************************

xdata unsigned char IN _at_ 0x8001; // 键盘读入口

xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口

xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口

xdata unsigned char CS0832 _at_ 0x9000; // DA地址约定

//********************变量定义***********************************

unsigned int VOUT=0 ; // DA输出缓存变量

unsigned int FDC=0,FREF=0,DFDC=0,uctrl=0; // 转速检测值FDC,给定值FREF

unsigned int PVAL=10,PIVAL=1,IVAL=0;

unsigned int ERROR;

//********************缓冲区及其长度定义*************************

#define LEDLen 6 //数码管数量

unsigned char LEDBuf[LEDLen]; // 显示缓冲

//****************** 八段管显示码*********************************

code unsigned char LEDMAP[] = {

0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,

0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71

};

//****************** 键码定义************************************

相关文档
最新文档