目录1设计要求 (1)2方案设计 (1)2.1设计思路 (1)2.2总体方案方框图 (1)2.3基本原理 (2)3硬件模块设计 (3)3.1 复位电路及时钟电路模块 (4)3.2 驱动主电路模块 (4)3.3 LCD12864显示与矩阵键盘电路 (5)4系统软件设计 (5)4.1程序设计 (6)4.2 PID控制算法 (7)5总电路图 (8)6总结 (8)参考文献 (9)附录 (10)课程设计成绩评价表 (16)1设计要求分析直流电机的调速原理,设计单片机控制的直流电机的速度控制系统的电路,用C 语言编程实现速度的显示和控制。
并完成以下功能1、了解直流电机调速原理;2、电机速度检测、控制3、实现电机速度的控制和显示4、分析该速度控制系统的特点和性能,撰写设计报告2方案设计2.1设计思路本此课程设计选择STC89C52单片机作为主控芯片,选取带有光电编码器的直流电机作为被控对象,利用单片机的T0定时器产生PWM信号并送到直流电机。
在Proteus仿真环境下搭建了L298N直流电机驱动电路、矩阵键盘扫描电路以及LCD12864显示电路。
实现了直流电机的启动、加速、正转、反转、制动等功能。
同时,采用PID控制算法可实现电机速度在特定的场合实现自动切换。
2.2总体方案方框图本次课程设计可分为主控制器(STC89C52)、按键控制模块、速度采集模块、数据显示模块、速度控制模块这五个部分,总体的设计方案图如图1所示:图1总体方案框图2.3基本原理2.3.1直流电机PWM 调速原理直流电动机的调速方法有改变改变磁通量、改变电枢回路串联电阻以及改变电枢电压三种。
在电枢回路串联电阻,调速范围不大并且铜耗大,不经济。
弱磁调速中当磁通量Φ在低速时受磁极饱和限制,在高速时受换向器结构强度和换向火花的限制,而且由于励磁圈电感较大,动态响应较差,因此采用改变电枢电压的调速方法。
PWM (Pulse Width Modulation ),全称为脉冲宽度调制,可以改变电枢电压值。
PWM 的优点是精度高,易于控制,运行稳定。
PWM 调速方法有三种,分别为定频调宽法、调宽调频法和定频调宽法。
前两种方法在调速时会改变控制脉冲的频率,而控制脉冲的频率与系统固有频率接近时会引起震荡,因此本设计选用定频调宽法。
调速原理计算如下:占空比:1112t t D t t T ==+ (1)式中,T 为电压变化周期;1t 为一个周期内高电平持续时间;2t 为一个周期内低电平持续时间;电机电压平均值0*U D U =, 式中,0U 为总电压。
电机转速: U IR N K ϕ-= (2) 式中,U 为电机电压平均值;I 为电枢电流;R 为电枢电路总电阻;ϕ为每极磁通量;K 为电动机参数。
利用51单片机内部定时计数器T0的定时功能,PWM 可在固定频率下控制电源的接通与断开,来改变一个周期内高低电平持续时间的长短,从而使电机电枢两端电压的占空比(即电机电枢通电时间相对于总时间所占的比例)发生变化,使电机电压平均值改变,最终实现对电机的调速。
因此PWM 又被称之为“开关驱动装置”。
2.3.2直流电机测速原理本设计中采用脉冲式光电编码器。
光电编码器是一种将机械几何位移量转化为脉冲或数字量的传感器,是目前应用最多的传感器。
光电编码器随电机旋转,产生与转速成正比的两相(A 相、B 相)相差90°相位角的正交编码脉冲。
如果A 相脉冲比B 相脉冲超前则光电编码器为正转,否则为反转。
本次设计采用外部中断0检测A 相的下降沿,判断B 相电平的高低,进而判断电机的正反转;即A 相为下降沿时,B 相为高电平,则电机正转,反正则反转。
由此可测出电机转速与转向。
如图2为区分旋转方向的两组脉冲序列:图2 区分旋转方向的A 、B 两组脉冲序列采用旋转编码器的数字测速方法有三种:M 法、T 法、M/T 法。
本次设计结合51单片机的特性以及测速的方便性选择M 法测速。
在一定的时间c T 内测出旋转编码器输出的脉冲个数1M ,用以计算中这段时间内的转速称为M 法测速。
将1M 除以时间c T 就可得到旋转编码器的输出频率11/c f M T =,故又称频率法。
电机每转一圈产生Z 个脉冲,将1f 除以Z 就得到电机在单位时间内的转速。
习惯上电机以每分多少转为单位(r/min),则电机的转速公式为:160c M n ZT = (3)由于Z 和c T 为常数,因此转速n 与计算值1M 成正比,故此方法称为M 法测速,本次设计采用单片机的定时器T0确定采样时间c T ,采样单片机的外部中断计算在c T 时间内的A 相脉冲数1M ,同时判断B 相脉冲的电平高低,进而可以计算出电机的转速以及旋转方向。
如图3为M 法测速的原理示意图:图3 M 法测速原理示意图3硬件模块设计本次课程设计的硬件仿真软件是Proteus ,Proteus 是一种电子设计自动化软件,多达30多个元件库,此外该软件害提供图形显示功能,可以将线路上变化的信号以图形的方式实时地显示出来。
这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗和极低的输出阻抗等,这些都尽可能地减少了仪器对测量结果的影响。
Proteus 在编译方面支持Keil 编译器。
当电路设计完成之后,为了减少电路在电路板上调试的难度,保证电路的正确性,可将KeilC51编译生成的HEX文件载入Proteus软件,实现电路仿真。
3.1 复位电路及时钟电路模块复位电路和时钟电路是维持单片机最小系统稳定运行的基本模块和最重要的内部因素之一,复位电路通常分为:上电复位和手动复位,手动复位是为了防止有时系统在运行过程中出现程序跑飞的情况且在程序开发的过程中经常需要手动复位。
时钟电路是单片机系统工作的核心,它提供单片机工作的动力,并关系到单片机的运行速度快慢、应用系统稳定性高低等。
一般采用晶振及电容搭建时钟电路。
本次设计选取12MHz无源晶振接入单片机的XTAL1和XTAL2引脚,并联两个33pF的陶瓷电容帮助起振。
复位电路以及时钟电路如图4所示:图4 复位电路及时钟电路3.2 驱动主电路模块本次课程设计选用L298N芯片作为直流电机的驱动芯片,L298N是一种双H桥电机驱动芯片,包含4个通道的逻辑电路。
VSS接逻辑控制电源。
VS接电动机驱动电源。
IN1,IN2输入引脚为标准TTL逻辑电平信号,用来控制H桥的开与关即实现电机的正反转,ENA、ENB引脚则为使能控制端,用来输入PWM 信号实现电机调速。
驱动原理:使能端ENA为高电平:输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,IN2为PWM 信号时,电机反转;IN1与IN2相同且都为高电平信号或都为低电平信号或ENA 为低电平信号时电机停止。
如图5为L298N芯片的引脚图:图5 L298N芯片的引脚图下表为L298N的逻辑功能表:IN1 IN2 ENA 电机状态X X 0 停止1 0 1 顺时针0 1 1 逆时针1 1 1 停止3.3 LCD12864显示与矩阵键盘电路带中文字库的LCD128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集。
利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字。
也可完成图形显示。
低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
如图6为Proteus仿真环境下LCD12864的仿真界面:图6 LCD12864仿真界面本次设计采用4*4矩阵键盘设定速度的输入、电机方向、转速、启停等功能的控制按钮;选择P2口作为矩阵键盘的行列扫描,先进行列扫描,再进行逐行扫描。
矩阵键盘功能描述:“ON\C”启停键,“X”、“/”电机正反转切换键,“+”,“-”电机加减速键,“=”电机速度设定界面切换键。
4系统软件设计本次课程设计采用Keil uVision5软件进行软件编程,KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具。
程序主要由主程序、中断程序、显示程序、矩阵键盘扫描处理以及电机的控制程序这5部分组成。
利用STC89C51单片机的定时器中断0产生了以500ms为周期的脉冲波,采用外部中断进行脉冲计数以及电机旋转方向的判断。
如图7为Keil5的编辑界面:图7 Keil5编辑界面4.1程序设计单片机通电开机后,CPU得电,根据软件定义引脚功能,定时器工作方式等初始化工作后,进行矩阵键盘扫描子程序并返回键值,根据键值决定直流电机的启停、转速、转向等工作。
如图8为主程序流程图,主程序见附录。
图8 主程序流程图4.2 PID 控制算法本次设计的控制算法采取的是传统的位置式PID 控制算法。
常规PID 控制器系统原理图如图9所示,这是一个典型的单位负反馈控制系统。
系统由PID 控制器和被控对象组成。
图9 PID 控制器系统原理图PID 控制器是一种线性控制器,它根据给定输入值r ሺt ሻ与实际输出值y ሺt ሻ构成偏差:e ሺt ሻൌr ሺt ሻെy ሺt ሻ。
将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对受控对象进行控制。
其控制规律为:001()()u()[()()()()t t p d p i d i de t de t t K e t e t dt T K e t K e t dt K T dt dt=++=++⎰⎰ 式中p K 为比例系数,i T 为积分时间常数,d T 为微分时间常数;p i iK K T =为积分系数,*d p d K K T =,为微分系数,u()t 为控制器的输出,()e t 为控制器的输入。
本次设计将设定速度与实际速度之间的偏差作为PID 控制器的输入,并根据PWM 占空比对PID 的输出进行限幅。
同时,针对不同的转速区间,设定不同的PID 参数,选取0~50r/min ,50~100r/min ,大于50r/min 这三个转速区间。
5总电路图如图10为本次课程设计在Proteus软件上面仿真的电路图:图10 Proteus仿真电路图6总结通过本次课程设计,我学到了许多新的知识,也深刻明白了“绝知此事要躬行”这句话的道理,在我们平时的学习中大多都局限在课本之内,而且我们很少会亲手去实现一些小项目。
在完成课程设计的过程中,无论是在硬件还是软件设计上,我都遇到了不少的问题,同时,我也从中学到了许多,特别是在课堂上学不到的东西,如LCD12864的显示等。