张观山,鲁晓庆,尹义蕾,施国英,宋占华,张传洋,宋月鹏

(1.山东农业大学机械与电子工程学院,山东泰安,271018;2.山东省泰安英雄山中学,山东泰安,271021;3.农业农村部规划设计研究院,北京,100125)

《电子技术综合训练》是面向自动化、电气工程及其自动化、机械与电子工程等专业开设的实训课程,旨在综合应用大一、大二学年学习的《模拟电子技术基础》、《数字电子技术基础》、《电路原理》等课程理论知识,进行系统化、综合性项目设计和实践。传统的实践教学依托电子技术综合实验平台等设备开展实验,以上实验设备只能满足常规的实验教学项目需求,而无法满足创新性、综合性项目设计需求,导致因设备配置实验资源有限而在选择和设计实验过程中,放弃了诸多创新的设计思路和想法,制约了《电子技术综合训练》课程实践教学内容发展[1]。

Proteus软件是由Labcenter Electronics公司基于ProSPICE[2]开发的目前世界上最先进、最完整的嵌入式系统设计与仿真平台[3],能够实现模拟电子、数字电子以及主流的微处理器,如51,STM32,ARM等的仿真[4]。因此,Proteus软件能够解决因实验设备资源有限而制约《电子技术综合训练》课程实践教学内容发展的问题。

本文采用Proteus软件对电机恒速系统进行了设计和仿真,通过软件仿真代替传统实验教学设备,摆脱了实验资源的限制[5],降低了实验成本,提高了实验设计的灵活性,提升了实验教学效果[6]。

1 系统概述

本文使用Proteus软件对电机恒速系统进行了设计和仿真。电机恒速系统采用AT89C51单片机作为核心控制器,采用PWM方波驱动电机运转,采用单片机计数器采集电机的速度脉冲,采用8位共阴数码管显示电机速度设定值和实际值,采用按键电路修改速度设定值,采用增量式PID控制算法计算单片机控制输出。

实验前学生需熟练掌握Proteus软件的使用,包括查找元件、放置元件、元件布局、线路连接、虚拟仪器仪表使用等内容。

熟练掌握Proteus软件之后,按照设计要求搭建电机恒速系统硬件电路。电路搭建过程中,遵循模块化思想,按照先部分后整体的思路分模块搭建电路,避免整体电路无法正常工作而难以查找问题的情况。例如搭建电机驱动、电机测速模块电路,使用Proteus内置的方波发生器连接电机驱动电路,观察电机是否运转,使用Proteus软件内置的示波器观察电机脉冲输出。增大方波发生器输出方波占空比,观察电机转速是否增加,通过示波器观察电机脉冲频率是否增加。如果以上现象符合预期要求,则表示电机驱动、电机测速模块硬件电路搭建完成。如果现象不符合预期要求,需查找存在的问题,直至将问题解决。按照上述方法,继续搭建数码管显示电路、按键电路等,最终完成整体硬件电路设计。

按照由简单到复杂的思路完成软件设计,共分13个步骤完成,具体实现步骤如下:

(1)实现单个LED灯点亮程序;

(2)实现LED灯熄灭程序;

(3)编写延时程序,实现LED间隔1s闪烁;

(4)P1口连接8个LED,实现8个LED间隔1s闪烁;

(5)P0口连接数码管段控位,向P0口发送0xFF,1s后发送0x00,不断循环,实现第0位数码管从显示8到全灭循环。

(6)向P0口发送0xFF,P2.5,P2.6,P2.7口通过控制LS138译码器控制数码管位选,实现数码管从0-7位循环显示8。

(7)减少延时时间为5ms,利用动态扫描原理实现数码管同时显示8。

(8)控制数码管不同位显示不同内容。例如控制第0位显示时,发送显示0的段码,控制第7位显示时,发送显示7的段码,实现数码管从低位到高位显示0至7,并通过修改段码改变显示内容。

(9)初始速度设定值为200脉冲/秒,通过低四位数码管显示。

(10)编写独立按键程序,通过按键调整速度设定值,并在数码管显示。

(11)编写单片机定时器程序,通过中断服务程序产生方波驱动电机运转。

(12)将单片机定时器/计数器设置为计数器模式,每隔1s时间读取计数器存储的电机脉冲数,将脉冲数转化为电机转速,通过数码管高四位显示。

(13)编写PID控制程序,计算PWM方波占空比,实现电机闭环调速。

2 硬件电路设计

2.1 硬件整体电路设计

图1为硬件电路整体结构图,由微处理器、振荡电路、复位电路、按键电路、数码管驱动电路、数码管段选电路、数码管位选电路等组成。微处理器发送PWM方波到电机驱动电路驱动电机转动,电机转动产生方波脉冲。微处理器将定时器/计数器设定为计数器模式,计数器采集电机产生的方波,并转化为电机转速。数码管显示电路包括数码管段选电路、数码管位选电路和数码管,数码管段选电路控制每一位数码管显示内容,数码管位选电路控制某一位数码管显示,按键电路设定电机速度。

图1 硬件电路整体结构图

2.2 电机驱动电路设计

电机驱动电路使用L298N专用驱动集成电路设计而成,L298N属于H桥集成电路,具有输出电流大,电路简单,使用方便等特点,能够实现电机调速、急停、换向等功能[7]。图2为电机驱动电路设计图,电机使用Proteus仿真软件内置的ENCMOTOR模块,该模块包括三个端口,左右端口为转速信号,中间端口为脉冲信号,本文设置ENCMOTOR电机转1圈,输出60个脉冲信号。

图2 电机驱动电路设计

2.3 数码管显示电路设计

数码管显示电路中数码管选用8位共阴数码管,前四位显示电机转速实际值,后四位显示电机转速测量值。AT89C51单片机P0口连接74HC573锁存器,74HC573锁存器连接数码管段控端,控制数码管显示内容。AT89C51单片机通过P2.5口,P2.6口,P2.7口连接74HC138译码器输入端口,74HC138译码器输出端口连接数码管位控端,控制数码管位选。74HC138译码器是一种3线-8线通用译码器,可实现扩展单片机IO口(见图6)。

图6 电机恒速系统Proteus软件仿真界面

3 软件系统设计

3.1 数码管显示程序设计

采用单片机中断技术结合LED动态扫描显示原理实现数码管显示[8],图3为数码管显示程序流程。设置单片机定时器/计数器工作于定时器模式,将定时器设置为工作方式1,打开中断总开关和定时器中断开关,分别给TH0和TL0装入初值,TH0装入的初值为(65536-5000)/256,TL0装入的初值为(65536-5000)%256,设置定时器每5ms产生一次中断,启动定时器。设置数码管位控显示变量i等于0。判断是否满足定时器中断触发的条件,如果未满足,则继续等待,如果满足定时器中断触发条件,则定时器中断触发并进入定时器中断服务程序。在中断服务程序中,单片机给数码管发送数码管段选码和位选码,然后判断数码管显示控制变量i是否大于7,如果i不大于7,i加1,等待下一次定时器中断触发。如果i大于7,i清零,并等待下一次定时器中断触发。

图3 数码管显示程序实现流程

3.2 测速系统设计

图4为测速程序实现流程图。首先设置定时器0为5ms定时器,设置定时器1工作于计数器模式,设置1s定时控制变量j等于0,判断定时器0是否满足中断触发条件,如果不满足,则等待定时器0中断触发,如果满足,则进入定时器0中断服务程序。进入定时器0中断服务程序之后,判断1s定时控制变量j是否大于200,如果不满足,则j加1,跳出中断,等待下一次定时器0中断触发。如果满足,则读取计数器存储数值,同时计数器清零。读取的数值经过处理之后得到电机速度,1s定时控制变量j清零,跳出定时器0中断服务程序,等待下一次定时器中断触发。

图4 测速程序实现流程图

3.3 PID电机调速系统设计

图5为PID原理框图,本文使用的增量式PID算法调节单片机输出控制量。图5中,r(t)为给定值,y(t)为输出值,给定值与输出值构成控制偏差e(t),即e(t)=r(t)-y(t),e(t)作为PID控制器的输入,u(t)作为PID控制器的输出和被控对象的输入,u(t)指PWM方波的占空比,占空比越大,电机转速越快。PID控制器的控制律通过公式1表达。

图5 PID原理框图

式(1)中,u(t)为输出信号,e(t)为偏差信号,Kp为比例系数,TI为积分时间,TD为微分时间,u0为控制常量,Kp/TI为积分系数,Kp/Td为微分系数。

4 仿真结果分析

本文使用Proteus软件进行电机恒速系统设计与仿真,图6为电机恒速系统Proteus软件仿真界面。设置比例系数Kp等于1,积分系数Kp/TI等于0.3,微分系数Kp/Td等于0.03,初始电机速度设定为200脉冲/秒。启动仿真,系统运行约5s后,电机实际速度稳定在200脉冲/秒。

通过加速按键,将速度设定值增加至250脉冲/秒,调整结束后,系统将电机实际速度调整为250脉冲/秒大约需要4秒时间。

通过减速按键,将速度设定值减小至150脉冲/秒,系统将电机速度调整为150脉冲/秒大约需要6秒。

5 结束语

为了满足《电子技术综合训练》课程实训要求,提出了基于Proteus的电机恒速系统实验教学项目。该项目要求学生按照模块化思想搭建硬件仿真电路,按照由简单到复杂的思路逐步完成程序的设计。系统采用增量式PID控制算法调节电机速度,实现了电机转速闭环控制。通过该项目实践,能够对学生数字电路、模拟电路、自动控制理论等知识进行较为系统的应用和训练,对学生电路设计能力、仿真分析能力、软件编程能力具有较大的帮助和提升。