【摘 要】小型直流电机作为一种响应快、控制方便的执行器,目前已广泛应用于汽车仪表、空调、动力转向、玻璃升降、电动座椅等汽车控制系统中。本文采用宏晶科技的51单片机STC89C52RC作为主控芯片,选择ULN2003作为电机的驱动芯片,设计具有独立按键的按键电路来控制电机的加速、减速,设计8位数码管电路来显示电机速度的挡位,并利用Keil 5集成开发环境进行C语言软件编程设计,通过脉宽调制(PWM)信号来实现电机速度1~18挡的控制。验证结果表明,本设计能够有效实现汽车小型直流电機的多挡调速,达到设计预期。
【关键词】51单片机;小型直流电机;PWM;调速系统;Keil软件
中图分类号:U463.6 文献标志码:A 文章编号:1003-8639( 2023 )09-0052-04
Design of Speed Control System for Small DC Motor for Automobile Based on 51 SCM
HUA Jianxin
(Branch of Suzhou Construction & Communications,Jiangsu Union Technical Institute,Suzhou 215000,China)
【Abstract】As an actuator with fast response and convenient control,small DC motor has been widely used in automobile control systems such as automobile instrument,air conditioner,power steering,glass lifter,electric seat,etc. In this paper,STC89C52RC,a 51 SCM of STC Company,is used as the main control chip,ULN2003 is selected as the motor drive chip,and a key circuit with independent keys is designed to control the acceleration and deceleration of the motor,and an 8-bit LED circuit is designed to display the speed gear of the motor. The C language software is programmed using Keil 5 integrated development environment,and the motor speed is controlled from 1 to 18 gears through PWM signal. The verification results show that the design can effectively achieve multi speed regulation of small DC motor,and achieve the design expectations.
【Key words】51 SCM;small DC motor;PWM;speed regulation system;Keil software
作者简介
花建新(1979—),男,讲师,硕士,主要从事汽车智能技术专业教育研究工作。
随着计算机、电子、通信、人工智能、自动控制等高新技术的飞速发展,各种自动化智能设备在生产生活中不断涌现。直流电机因具有调速范围广、响应快、控制方便和启动转矩大等诸多优点,在众多智能化、自动化产品中被广泛应用为执行器[1-2],尤其是在汽车领域,小型直流电机已广泛应用于仪表指示、空调、动力转向、玻璃升降、后视镜、雨刮器、电动座椅等控制系统中[3-4]。近些年来,随着单片机、数字信号处理器等微处理器技术的不断成熟,制造成本不断下降,以微处理器为主控的电机调速数字控制系统,是汽车控制系统的研究方向之一。
本文基于国产公司宏晶科技的51单片机STC89C52RC设计一款针对汽车小型直流电机的调速系统。首先进行汽车小型直流电机调速系统的硬件电路设计,包括单片机最小系统、独立按键电路、数码管显示电路、电机驱动电路以及下载电路,接着应用C语言在Keil 5软件上进行编程设计和调试,最后通过STC-ISP软件将编译生成的hex文件下载到设计电路板中进行实际验证。
1 硬件电路设计
本设计采用的主控芯片STC89C52RC是宏晶科技的一种高性能、高可靠、低功耗的8位51单片机,目前已经广泛应用于众多嵌入式控制应用系统中[5-6]。
单片机是可以正常工作的由最少部件组成的基本应用系统,称之为单片机最小系统。51单片机的最小系统通常包括复位电路、时钟电路与电源电路。本设计通过51单片机提供PWM信号,采用ULN2003专用驱动芯片将PWM信号放大,驱动小型直流电机运转;通过2个独立按键来控制电机1~18挡的加速、减速,通过数码管显示电路来显示电机的速度挡位。另外,程序编写调试完成后,还需要将目标程序下载到单片机中进行验证。因此本设计的硬件电路主要包括单片机最小系统、独立按键电路、数码管显示电路、电机驱动电路和下载电路5个部分。系统整体硬件框架如图1所示。
1.1 单片机最小系统
本设计基于STC89C52RC的单片机最小系统,包括复位电路、时钟电路和电源电路[6],如图2所示。
1.1.1 复位电路
复位电路的主要作用是当单片机系统上电或者出现程序跑飞等异常情况时,让单片机系统恢复初始状态,确保单片机稳定可靠地工作。复位电路触发的方式主要有:一是手动复位,设置专门的按键,通过手动按下进行复位;二是软件复位,通过程序编程实现复位;三是上电复位,电路一通电就立即复位。
本设计采用的是一种非常简单、常用的基本复位电路,电路包括1个电阻、1个电容和1个复位按键,电阻和电容串联在一起,手动复位按键与电容并联,具体如图2a所示。该复位电路具有上电复位和手动按鍵复位的功能。当上电的瞬间,电容与电阻构成充电电路,单片机RST引脚出线高电平,单片机复位;当手动按下复位按键时,电源VCC直接接于单片机RST引脚,单片机复位。
1.1.2 时钟电路
时钟电路主要是产生指定频率和振幅的时间信号,为单片机提供工作时的“时间参考”,以协调单片机各模块之间逻辑操作的顺序执行。单片机的时钟电路通常由晶振和电容组成。晶振是利用石英晶体的压电效应制成的一种谐振器件,可产生频率和峰值皆稳定的正弦信号,分为无源晶振和有源晶振。本设计的时钟电路采用了1个11.0592 MHz的无源晶振,接于单片机的2个时钟输入端口(18号端口和19号端口)间,同时采用2个20pF的电容分别接于2个时钟输入端口,具体如图2a所示。
1.1.3 电源电路
任何电路都需要接通电源才能工作,单片机电路一般需要低压直流电进行供电,但不同的单片机需要的供电电压范围是不一样的,具体可以查阅相关单片机的使用手册。本设计使用的是STC89C52RC单片机,通过查阅该单片机的使用手册可知,STC89C52RC需要5V的直流电压进行供电,而且设计电路中的一些其它元器件需要3.3V直流电压进行供电,因此本设计通过USB接口电路来获得5V直流电压,通过增加一个稳压芯片AMS1117来获得3.3V直流电压,具体如图2b所示。
1.2 独立按键电路
本设计需要对小型直流电机的加速和减速运行进行控制,因此需要2个独立按键K1和K2,其中K1一端搭铁,另一端接单片机的P3.4接口,用来控制电机的加速,K2一端搭铁,另一端接单片机的P3.5接口,用来控制电机的减速,另外还冗余设计了2个独立按键K3和K4,用于功能拓展。独立按键电路如图3所示。
1.3 数码管显示电路
本设计要求将按键设置的电机速度1~18挡位显示出来,因此设计了LED数码管显示电路,电路包含8位LED数码管和2个数据锁存器MC74HC573。数码管显示电路如图4所示。
每位LED数码管由7个条形LED和1个小圆点LED组成,共8段。其中,7个条形LED用于显示数字或英文字符,通常用字母段a、b、c、d、e、f、g来表示;第8个小圆点LED用来显示小数点,用字母段h或dp来表示。本设计的8位LED数码管采用共阴极连接,当字段LED的阳极为高电平“1”时,该字段LED导通发光,为低电平“0”时,该字段LED截止熄灭。由于本设计中的电机速度挡位最高为18挡,实际仅需2位LED数码管,其余6位数码管作为备用冗余设计。
MC74HC573为8路3态输出的非反转透明锁存器,当锁存使能端为高电平“1”时,输出与输入同步,当锁存使能端变为低电平“0”时,输出端的数据会被锁存。图4中的2个MC74HC573,其中1个是作为段选锁存器,用于储存数码管显示的具体数据,其使能端接单片机的P2.6口;另外1个MC74HC573作为位选锁存器,用于选择8位LED数码管的某一位进行显示,其使能端接单片机的P2.7口。2个锁存器的8位输入数据接口均使用单片机的P0口。
1.4 电机驱动电路
单片机通常是不能直接驱动直流电机的,因为直流电机的驱动电流比较大,本设计采用了一片ULN2003达林顿阵列集成芯片来驱动电机。小型直流电机驱动电路如图5所示,其中,ULN2003是一种高耐压、大电流的双列直插式16脚封装达林顿阵列芯片,最大驱动电压为50V,最大驱动电流为500mA,输入电压为5V。ULN2003的端口4,即IN4口接单片机的P1.3口,用于将单片机产生的PWM信号引入驱动电路,端口13,即OUT4口接于直流电机接口J2的输入端IN口,用于输出放大的PWM信号,来驱动小型直流电机运转。
1.5 下载电路
在上位机上将软件程序编制调试好后,需要通过下载电路将编译好的目标程序烧写到单片机的存储器中,然后由单片机执行。STC单片机采用串口烧写方式,即通过单片机的UART口(RXD口和TXD口)实现程序烧写功能。而现在常用的计算机没有UART口,无法和单片机串口直接进行通信,但是可以通过USB串口转换芯片,将USB通信协议和标准UART串行通信协议进行转换,从而实现单片机与计算机的通信。本设计的下载电路使用了一片USB转串口的转换芯片CH340G,并配合一些电阻、电容、稳压二极管和晶振等其它辅助元器件,具体下载电路如图6所示[6]。
2 软件设计
Keil软件是一款非常强大的单片机嵌入式开发工具,它将编译器、连接器、仿真器、调试器等组合在一个集成开发环境里,帮助开发者快速、高效地进行单片机开发。本文利用Keil 5集成开发环境进行汽车小型直流电机调速控制系统的C语言软件编程设计。
本设计软件程序主要通过单片机的中断技术来实现键盘读取和处理、电机运转控制、数码管动态显示控制等任务,软件设计流程图如图7所示,具体程序包括主函数模块、定时器模块和数码管显示模块3个部分。
2.1 主函数模块
本设计软件程序的主函数模块首先对整个系统进行初始化,包括单片机各端口的定义,相关参数的定义和初始化,延时函数和按键释放函数的定义,以及单片机定时器T0的初始化等,然后采用查询方式扫描键盘K1和K2对应的端口,检测2个键盘有没有按键动作,如果检测到有按键动作,立即进行按键操作处理,即根据按键动作对应的值实时修改电机的速度挡位值,并实时更新速度挡位值显示的十位和个位。具体程序如图8~图10所示。
2.2 定时器模块
本设计软件程序是采用定时器中断的方式来控制小型直流电机的速度,在定时器模块首先对单片机的定时器0进行初始化,然后调用相应的中断服务子程序,依据扫描键盘得到的电机速度挡位来控制输出PWM信号的占空比,从而实现电机调速。定时器初始化和中断服务子程序如图11所示。
2.3 数码管显示模块
本设计要求将独立键盘设置的直流电机1~18挡的速度挡位通过数码管动态显示出来,因此在软件程序的数码管显示模块,通过段锁存端口设置来控制显示的挡位数据,通过位锁存端口设置来控制对应的数码管显示,具体程序如图12所示。
3 调试和验证
应用Keil 5软件编制、调试程序,通过编译生成hex文件,然后应用STC-ISP下载软件将hex文件烧写到设计的电路板中进行验证,如图13所示。烧写完成后,将小型直流电机接于图5所示的直流电机接口J2,电路板上电,按下键盘K1或K2,电机转速会相应增大或减小,且数码管能够正确显示设置的速度挡位。另需注意的是,使用STC-ISP软件下载时,需要对单片机型号、对应的串口号、波特率等进行正确配置。
4 结论
本文以宏晶科技的51单片机STC89C52RC為主控芯片,设计一款汽车小型直流电机调速系统的硬件电路和软件程序,应用Keil 5软件进行C语言程序编制调试,应用STC-ISP下载软件将目标程序烧写到设计的电路板中进行验证。结果表明,本设计可实现汽车小型直流电机的调速。另外,在独立按键和数码管显示硬件电路中进行冗余设计,可以通过修改程序代码,进一步拓展按键及显示功能,使其拥有更加丰富的应用。
参考文献:
[1] 吕中正,张兰红,曹克强. 电动汽车增程器用无刷直流电机控制系统设计与研究[J]. 电子器件,2021,44(5):1149-1154.
[2] 赵雅,李洋,袁静兰. 新型航空无刷直流电机调速系统建模与仿真[J]. 电工技术,2021(14):37-40,54.
[3] 令狐昌伟. 基于STM32的汽车外后视镜控制模块设计[J]. 汽车电器,2021(7):69-71.
[4] 朱丹,朱熀秋. 汽车前照灯自适应系统的控制研究设计[J]. 电子设计工程,2020,28(21):125-129,135.
[5] 彭泉,秦旺,杨尚春,等. 基于STC89C52RC的立柱式新能源汽车桩优化设计研究[J].电子元器件与信息技术,2021,5(8):106-108.
[6] 李蒋. 基于51单片机的汽车用LED流水灯仿真设计[J]. 汽车电器,2023(1):28-31,35.
(编辑 凌 波)