APP下载

电子风扇控制系统软件开发

2021-09-09张世强苏士斌马晓龙纪少波

汽车实用技术 2021年16期
关键词:寄存器时钟风扇

张世强,苏士斌,郭 兴,马晓龙,纪少波*,程 勇

(1.山东大学 能源与动力工程学院,山东 济南 250061;2.青岛海信网络科技股份有限公司,山东 青岛 256000; 3.龙口龙泵柴油喷射高科有限公司,山东 龙口 265701)

前言

冷却系统是保证汽车发动机在正常温度下工作的重要部分,主要包括水泵、散热器、冷却风扇、节温器等部件;其中冷却风扇可以保证汽车在低速行驶或发动机温度过高时及时散热,维持正常工作温度。电子风扇是冷却风扇的一种,能够起到很好的节能作用,并且由于其独立运行、调节能力平滑等优势得到了大量应用,国内外有很多学者对其进行了研究。相对来说,国外研究起步较早,早在20世纪80年代就已有学者在专利中提到电子风扇,之后,在八十年代末期,Roger Clemente[1]提出将电子风扇装在载货汽车上。在国内,上世纪90年代才开始对电子风扇的相关研究。其中,张鹏飞[2]对电子风扇的标定匹配问题开展研究,使用CATIA建立了电子风扇的三维结构模型,并且在电子风扇的匹配设计过程中,提出了一种根据风扇结构参数计算其散热性能的可行方法。

一般来说,电子风扇控制器需要硬件与软件相互配合,二者相辅相成,硬件用以支持电子风扇控制器的运行,软件用以控制硬件,保证电子风扇控制器各个模块协调有序地工作。周碧[3]介绍了一种以AT89C52单片机为控制核心的车用发动机电控冷却系统的设计,并据此绘制出了系统电路图,设计出了可行的硬件和电路。完成电子风扇控制系统的硬件设计之后,还需要设计相应的软件代码,软件代码包括总体框架程序和各功能模块的底层驱动程序,前者用于管理整个控制过程,后者通过配置微处理器的寄存器,令其按照设定的工作模式工作。两种程序都是通过Freescale单片机专用单片机编译环境CodeWarrior[4]实现的。下面对两种程序的设计进行详细介绍。

1 功能分析

目前电子风扇控制系统具有采集传感器信号、输入开关量信号、PWM输出控制、风扇状态诊断等功能[5-6],实现以上功能,需要合理设计电路等硬件,并进行相关的测试与优化[7],还需要软件代码对相关模块进行控制。因此需要针对各个模块设计程序,主要包括晶振配置程序、传感器信号采集及处理程序、PWM输出控制程序、风扇状态诊断程序、开关量信号读入程序、CAN总线通讯程序、状态显示程序等程序;此外,电子风扇控制器工作时需要处理多个任务,为了各个任务能够有序执行,基于多任务时间规划机制,设计了系统总体框架程序。

2 程序代码设计

2.1 系统总体框架程序

多任务时间规划机制是根据处理任务的重要性不同,将不同任务分配以不同的优先级,并按照优先级高低依次执行程序;当较高优先级的程序执行完毕时,便降至最低优先级,并根据各程序执行所需要的时间,将各程序的优先级及时恢复,从而保证程序工作持续进行。

程序中的实时时钟模块保证了优先级恢复的正常进行:通过该模块配置最小时间片段,各个程序段依据其运行所需要的时间间隔,结合当前的时间片段,经过累加得到一个变量,当该变量达到一定值时,将程序段优先级的恢复,进入下一次的运行。

系统总体框架程序实现了系统中各个程序的有序进行,下面对各底层驱动程序模块进行介绍。

2.2 晶振配置程序

控制器是基于S9S08DZ60单片机设计的,该单片机中含有多功能时钟发生器(MCG)模块,模块中包含1个锁频环(FLL)和一个锁相环(PLL),并且可以选择其中任一个作为单片机的系统时钟,也可选用外部参考时钟作为MCU系统时钟。在单片机的时钟源配置中,主要用到了MCGSC、MCGC1、MCGC2及MCGC3这4个特殊功能寄存器,本系统中时钟配置步骤如下:

单片机复位会使时钟模块处于FEI模式,因此首先需要通过寄存器配置将FEI模式转换为FBE模式;这个步骤中需要完成外部振荡器的配置,选择外部参考时钟为系统时钟源等。将FBE模式转为BLPE模式,进而转为PBE模式,在这个步骤中需要选择PLL模式。之后,将PBE模式转为PEE模式,完成时钟频率的设置。

2.3 传感器信号采集及处理程序

传感器信号是控制器通过模数转换模块实现的,使用模数转换模块时,首先应配置工作模式,即配置采样精度、采样速度、采样模式及采样通道,该过程涉及到ADCCFG、ADCSC1、ADCSC2、APCTL1、APCTL2及APCTL3等特殊功能寄存器。通过寄存器配置设定数模转换单元采用低功耗模式,转换精度为12位,以总线频率作为时钟,模数转化速度为总线频率的一半;通过配置,在使能数据转换完成后进入中断功能,配置用到的引脚为模数转换功能,屏蔽IO功能。

完成上述配置,便可控制单片机模数转换功能,采集后续数据时,可通过ADCSC1指定采样通道,并启动单次采样工作模式,采集相应通道的数据,完成采集后进入模数转换中断函数,并将采样结果暂存,置位相关变量,告知有新的数据到来。

采集完成后,需要通过标度变换将采集到的数字量转化为对应的物理量,此处通过查表实现。在此,建立不同的数组,用来存储数字量与实际温度值的对应关系,模数转换完成后,对数组中的数据进行查表及线性插值处理,得到对应的物理量。针对不同温度区间数据的使用频率,设置不同的温度步长,不常用的温度区间采取较大的步长,常用的温度区间则采用较小的步长,这可以减少数组的规模,提高查表速度以及插值的精度。

2.4 PWM输出控制程序

PWM输出是通过单片机的定时器脉冲宽度调节器实现的,该模块支持边缘对齐及中央对齐PWM模式,此处选择边缘对齐模式。该定时器脉冲宽度调节器包含TPM0和TPM1两个模块,其中TPM1模块在此用于边缘对齐PWM输出,TPM0模块用于其他功能。在PWM输出功能中,需涉及到TPMnSC、TPMnMOD、TPMnCxSC、TPMnCNT及TPMnCxV等特殊功能寄存器,通过配置这些寄存器,控制TPM1定时器溢出中断使能、采用非中央对齐PEM输出功能、功能模块的时钟总线为总线速率时钟、总线速率时钟二分频后得到TPM1的时钟源。然后设定计数终点,即TPM1定时器的模值,定时器在达到该值后计入溢出中断,该寄存器的值可指定PWM信号的频率。TPM2C0SC寄存器可设置及改变TPM1模块中第0通道的功能模式,在此设置为普通IO口,TPM1模块其他通道的初始化也如此设置。最后,将TPM1计数寄存器清0,计数寄存器复位。

上述特殊寄存器设置完成后,才可进入正常工作模式,现以TPM1的第0通道为例,对PWM信号输出的代码进行说明。

首先需要根据PWM输出占空比,对TPM2C0SC进行初始化设置。当占空比为0%时,需要PWM输出引脚保持输出低电平,此时将该引脚设置为普通IO口,然后通过代码控制引脚输出低电平。当PWM输出占空比不为0%时,则需将该通道设置为边缘对齐PWM模式,此时使配置TPM2 -C0SC寄存器,并设置PWM相应的输出电平模式,从而使该通道为边缘对齐PWM模式。然后根据该模式中当前的时钟频率、TPM1的模值以及当前占空比计算出对应的计数值,并赋值给通道值寄存器TPM2C0V,当TPM1的计数值与TPM2C0V的值相等时,便控制相应的引脚动作,实现PWM信号的输出。图1为通过TPM1模块发出的不同占空比的PWM信号。

图1 不同占空比的PWM信号对比

2.5 风扇状态诊断程序

该程序主要读取风扇故障状态及风扇转速,研究的电子风扇内部具有故障诊断功能,当电子风扇出现温度、压力过高等故障时,相应的引脚便输出高电平,可据此判断电子风扇是否有故障。该电平信号是在控制器给电子风扇发出的PWM信号为低电平时输出,且PWM信号的占空比是实时变化的,即PWM信号为低电平的情况也是一直在变化的,因此便需要一个模块来捕捉风扇电平信号,此处采用TPM0模块的输出比较功能来捕捉PWM信号为低的时刻。

首先,需要对TPM0模块进行初始化配置,包括时钟源、时钟频率以及计数寄存器等,其配置过程与上文中TPM1模块相似,每次通过TPM1进行PWM占空比配置时,同步对TPM0进行配置,实现输出比较功能。这需要通过对通道状态控制寄存器进行配置,该寄存器允许中断使能,将引脚功能配置为输出比较模式。为了能够准确捕捉风扇状态电平,将输出比较的中断时刻设定在PWM信号低电平的中间位置,这里通过对通道值寄存器的配置实现,此时信号的状态稳定,更容易获取准确的状态。图2为不同占空比下,读取风扇状态电平的时刻示意图,其中黄线是输出的PWM信号,绿色线表征另外一根引脚的反转时刻,以便观察中断时刻。由以下三个图可知,在这三种占空比状态下,都可以在PWM信号的低电平位置出现中断,这也是读取风扇状态电平的最佳时刻。

图2 不同占空比下风扇状态电平读取时刻示意图

其次,要获取风扇的转速信息,了解风扇运转状态,但是电子风扇在实际应用中,转速信号难以直接测量,因此需要用其他参数来间接获取,而风扇转速与PWM信号的占空比又是一一对应的,因此可以通过确定两者之间的关系,依据PWM占空比来获取电子风扇的转速。在不用电压下,PWM占空比与风扇转速的对应曲线如图3所示。由图可知,工作电压在24 V以上时,工作电压对风扇转速的影响不大;当占空比不变时,随着工作电压的下降,对应的风扇转速也随之降低。

图3 占空比与风扇转速对应关系

2.6 开关量信号读入程序

开关量信号读入包括风扇故障状态、启动开关信号及驾驶员发来的反转控制信号三部分,在上文中已经介绍风扇故障状态信号的读取,其他两个开关量信号的读取方法与之相同。在读取前需要对单片机的IO口初始化配置,并且需要指定IO口的方向,这一功能通过PTnDD特殊功能寄存器实现;而后通过PTAD_PTAD3的状态来确定PA3引脚电平的高低,其值为1时PA3收到的是高电平,反之为低电平。该方法可获取各开关输入信号的状态。

2.7 CAN总线通讯程序

该程序包含了CAN模块的初始化、CAN数据的发送和接收等过程,实现该程序的功能需要利用Freescale单片机的局域网通信控制器MSCAN,MSCAN具有监听模式、MSCAN睡眠模式、MSCAN初始化模式、MSCAN关机模式及环回自测模式五个工作模式,使用时首先需要进行初始化,配置工作模式、传送波特率、数据帧类型及中断功能。在正常使用过程中,主要使用发送和接收两个功能,接收时可以采用查询方式或中断方式,在此采用中断方式以提高程序的运行效率。

在CAN模块的初始化中,首先判断CAN模块是否启动,若未启动,则直接开始系统初始化;若已启动,则在MSCAN没有等待发送数据帧的前提下,设置模块进入初始化状态,在模块进入初始化状态后,再向下运行后面的程序。CAN模块进入初始化状态后,需要对CAN通讯的波特率进行配置,这里通过CANBTR0和CANBTR1两个特殊功能寄存器实现。前者用来配置CAN计时参数,包括同步跳转宽度和波特率的预分频值;后者根据传输速率的高低,设定数据传输时的样本数量,可选择1个或者3个。且该寄存器也可以设定每个位时间的时钟周期数和采样点的位置。

此外,在数据接收过程中,需要对不需要接收的数据进行过滤,这一过程可通过配置标识符掩码寄存器CANID- MRn、接收寄存器CANIDARn及标识符验收控制寄存器CANIDAC实现。其中,掩码寄存器用于配置需要比较的位,接收寄存器则代表比较的地址值。针对不同标识符需要应用不同的寄存器,扩展标识符需要应用四个接收和掩码寄存器,标准标识符只应用前两个寄存器,即CANIDAR0/1和CANI- DMR0/1。

当上述寄存器配置完成后,通过判断CANCTL0和CAN- CTL1寄存器中的标志位,回到正常工作模式,且与总线时钟进行同步,开始进行数据的收发。为了提高系统的执行效率,将数据的接收配置为中断模式,这里通过CANRIER寄存器中的RXFIE位进行配置。

上述过程完成了CAN模块的初始化,之后便可进行数据的发送和接收。首先,需要将发送过程封装为一个函数,以便进行数据的发送操作,该函数需判断发送的数据类型及个数是否正确,且在发送过程中,还需通过发送器标志寄存器来确定当前为空的发送缓冲器。确定好发送缓冲器后,再通过选择寄存器来选定该缓冲器进行数据发送。

发送的CAN报文包含标识符和数据两部分,在发送时,标识符需装载在CANTIDRn寄存器中,单片机的CAN模块具备CANTIDR0~CANTIDR3共计4组标识符寄存器,用于满足标准帧和扩展帧的标识符加载的需要。对于扩展帧而言,标识符由29位组成,4组标识符寄存器中还有3位特殊的标志位(SRR、IDE及RTR)。在进行标识符加载时,需要通过移位或者与或处理等将地址标识符及3位特殊的标志位加载到CANTIDRn的4组寄存器中。

同理,发送的数据也需要通过数据段寄存器CANTDSRn加载相应的数据实现。此外,在发送数据前还需要通过寄存器CANTDLR指定发送的数据帧中的字节数量;通过CANTTBPR指定数据帧的优先级;通过CANTFLG指定前述确定的发送缓冲器;最终由CAN模块自动实现数据的发送。

对于CAN数据的接收,需要采用中断模式,一旦接收的数据通过了接收滤波器的校验,即可触发CAN模块的中断,并进入中断函数中。在进入CAN中断函数中后,首先需要判断接收的CAN数据的类型是否正确,进而确定当前数据帧中的数据字节数量;由于标识符寄存器中3个特殊标志位的存在,需要对接收的标识符寄存器通过变换,得到真正的地址标识符;最后需要将CAN数据帧的各字节数据依次取出,完成整个数据接收过程。

2.8 状态显示程序

状态显示是通过数码管完成的,在此采用16通道等电流数码管驱动芯片MBI5024。状态显示程序包括底层驱动程序和显示内容控制程序两个方面。

显示装置使用了2位数码管,共16个码段,MBI5024底层驱动程序包含对数码管各码段的控制引脚的规划。MBI5024通过串行通讯传递显示信息,在此需要两个字节数据,即16位数据来控制16个码段,图16为2位数码管各码段与控制字节的对应关系,在工作时,发送的第一个字节数对应右边的数码管,用于控制a->h各码段的数据;发送的第2个字节是左边的数码管,即A->H的数据。确定好数码管的各码段与字节数据之间的关系后,便建立了数码管显示内容的真值表,将真值存入数组中,在使用时根据需要显示的内容查表便可确定需要发出的字节数据的内容。

显示程序包括四部分,分别是总体控制程序、数字显示控制程序、特殊字符显示控制程序以及MBI5024通讯程序,通过这四部分,可以控制数码管显示各种信息,包括控制器当前工作状态、传感器测试信号、风扇点击的故障状态等信息。其中总体控制程序可根据控制器当前的状态确定显示内容,显示内容包括数字和特殊字符,数字和特殊字符的显示控制分别由各自的显示控制程序实现,此外,还需要控制器将数据发送到MBI5024,即需要通讯程序,将数字显示及特殊字符显示程序确定的字节内容向外发送,并且可在通讯程序中通过优化的发送机制实现发送速度的调整。

3 实车测试

在设计完成后,需要检测其功能是否完善,各个模块能否有序协调的工作,是否满足使用要求。因此,将总体框架程序、各底层驱动程序与电子风扇控制器硬件相结合,在实验场对电子风扇控制器进行实车测试,对电磁离合器风扇及电子风扇系统的油耗进行了对比分析,对其使用效果进行相关评价,实验结果表明采用电子风扇后,在各测试工况下都具有明显的节油效果。

图4 定远试验场地部分实验路段

实验在空车、中载和重载三种不同载荷下进行,装有电磁离合器风扇的车辆和同种装有电子风扇的车辆分别在各种载荷下采取不同速度测试四到五次,记录各自的油耗进行对比,如图5。

图5 不同装载下两种油耗对比

实验结果可知,不同载荷下节油率稍有变化,但整体电子风扇能够起到很好的节油作用,设计出的软件可以很好地控制各个硬件模块有序协调地进行,具有很好的实用性。

4 结论

(1)本文分析了电子风扇控制系统在工作时的功能需求,提出了相应的软件代码设计方案。

(2)基于Freescale单片机专用编译环境CodeWarrior对各功能模块的底层驱动程序进行设计,包括晶振配置程序、传感器信号采集及处理程序、PWM输出控制程序、风扇状态诊断程序、开关量信号读入程序、CAN总线通讯程序、状态显示程序等,能够控制电子风扇控制系统有序工作。

(3)进行了总体框架的的设计,设计了多任务时间规划机制实现了上述多种功能的协调工作。

猜你喜欢

寄存器时钟风扇
夏日说“扇”
AirFan手持小风扇
这个时钟一根针
飞思卡尔单片机脉宽调制模块用法研究
移位寄存器及算术运算应用
电风扇
数字电路环境下汽车控制电路信号设计
有趣的时钟
时钟会开“花”
设计 创意风扇带来夏日凉风