答案家

 找回密码
 立即注册
查看: 478|回复: 0

2018基于STM32的汽车空调调速模块信号发生器的设计

[复制链接]

1

主题

1

帖子

41

积分

幼儿园

Rank: 1

积分
41
发表于 2018-8-22 20:15:51 | 显示全部楼层 |阅读模式
  摘要:适应汽车电子技术的发展,根据汽车空调调速模块生产中的测试需要,设计了一种支持多类型信号输出的汽车空调调速模块信号发生器。可支持OV-10V分辨率O.1V的直流输出;频率10Hz-lOOOHz,占空比O%-lOO%的PWM输出;LIN-BUS总线输出。涵盖了目前主流的三种类型信号,具有输出精度高、输出稳定、使用简单的特点。根据实际需要,设计了测试和老化两种工作模式,测试模式用于人工测试产品使用,老化模式用于产品老化实验阶段自动循环扫描输出。
  关键词:DC;LIN;PWM
  引言
  近年来,随着汽车电子技术的发展,汽车已经深入人们的生活。汽车空调作为汽车舒适系统的重要部分,也越来越引起驾驶者的关注。汽车空调调速模块主要用于控制空调鼓风机的转速,进而改变空调出风量的大小,是汽车空调系统里的重要组成部分也是最容易损坏的部件。从过去简单的纯电阻分压换挡到现在的电子开关式调速模块的无级调速,集成度越来越高,功能也越来越丰富。汽车空调控制器ECU发出的调速信号类型也从DC直流、PWM占空比等模拟信号向LIN通信的数字化方向发展。以往测试模块往往需要借助直流电源、DDS函数信号发生器,带LIN通信的模块测试时,甚至需要购买整套空调控制系统才可进行测试,成本高、操作复杂。本文设计的汽车空调调速模块信号发生器则将上述几种信号集成在了一个信号发生器里,并根据产品实际研发和生产需要,设计了简洁的人机界面,大大降低了对操作工人的技术水平要求。同时增加了老化模式,方便产品老化需要。
  本文提出的汽车空调调速模块信号发生器设计方案支持OV~10V直流电压信号输出,分辨率O.lV,数字步进输出;频率范围10Hz~1000Hz,0%~100%占空比下的PWM信号输出:支持LIN2.0标准LIN-BUS总线通信输出,数据帧内容可根据新增模块进行升级扩展。
  一、硬件设计
  图1为系统硬件框图,硬件由MCU系统电路、DC输出电路、PWM输出电路、LIN通信电路、人机界面、系统工作电源等几部分组成。三种类型信号通过继电器切换选择,最终在BNC公共端子上输出。
  1.1 MCU及相关电路
  MCU选用当前主流ARMCortex-M3芯片,ST公司的STM32F103C8T6,其具有极高的性价比。它是一款TQFP48封装的微控制器,系统工作时钟最高可达72MHz,64KB flash、20K RAM,丰富的内存空间为以后的升级提供了保障。同时内部集成了硬件PWM、USART、I?C总线、内置复位、及看门狗电路等外设,适用很多高集成度、低成本的应用场合。通过外接一个8MHz的石英晶体振荡器,保证了系统时钟的准确性,将PWM输出频率和LIN-BUS总线的波特率误差降到最低。外接了一片EEPROM芯片FM24CL16用于系统参数及用户当前设置操作的掉电存储,下次开机可以直接调用历史设置。
  1.2 DC输出电路
  DC信号由PWM滤波得到,如图2。STM32F103C8T6的硬件PWM定时器为16位,足够满足直流OV~10V量程下步进O.lV的分辨率。使用其TIME1的CH1通道输出频率为lkHz的PWM,输出为推挽方式。PWM输出的高电平经过基准芯片LM385BZ-2.5稳压到2.5V,然后再经由LM358构成的二阶低通滤波放大电路输出,为保证输出直流信号的平滑度,又加了一级RC滤波:二阶低通滤波器的截止频率取16Hz。C23、C24直接取1F,由f=1/2RC计算可得R16、R17阻值为lOkQ;PWM的VPP为2.5V,为满足DC最大10V输出,至少需放大4倍,考虑预留余量取G=R18+R19/R18=4.3,同时为了使集成运放两个输入端对地的电阻平衡,取R18=lOk, R19=33k。输出再经过一级跟随器,可保证输出信号的低阻抗副。另为防止输出被短路,输出串联了lk输出限流保护电阻R22,并使用二极管1N4148做了反向保护。D3、D4两个钳位二极管和D5反向二极管用于防止输出被误接其它外部信号时对电路造成损坏。
  1.3 PWM输出电路
  使用TIME1的CH2通道输出频率范围10Hz―lOOOHz,占空比O%~l00%的PWM信号。信号的幅值固定为SVVpp。为了提高PWM信号的驱动能力,输出采用三极管构建了一个图腾柱驱动电路。当PWM输出低电平时,Q2截止,Q3导通,Q4截止,最终PWM OUT输出为高电平:当PWM输出高电平时,Q2导通,Q3截止,Q4导通,最终PWM~OUT输出为低电平。为防止输出被短路,在输出端串联了一个lOOmA的自恢复保险丝Fl,限制其最大输出能力为lOOmA;D7的1N5819可防止与模块连接时被误反接进而可能对本电路的损伤。PWM输出电路见图3。
  1.4 LIN通信电路
  目前LIN总线技术正被越来越广泛的应用到车身电子中,它是面向汽车低端分布式应用的低成本、低速率、串行通信总线。LIN接口由两部分组成:协议控制器、线路接口。协议控制器可在MCU的一个标准UART上实现,MCU软件负责管理LIN协议并实现以下功能,发送/接收8位字节、构成请求帧(接收为应帧)、发送帧。线路接口,负责将LIN总线的信号翻译成无干扰的RX信号传入LIN协议控制器:或将协议控制器的RX信号进行翻译传人LIN总线。物理层采用单线连接,两个电控单元间的最大传输距离为40m,低传输速率小于20kb/s,采用NRZ编码。在总线上发送的信息,有长度可选的固定格式。每个报文帧都包括2、4或8个字节的数据以及3个字节的控制、安全信息(同步场、标识符场和校验场)。
  STM32F103C8T6用作协议控制器,其内部的USART支持LIN模式。LIN接口则采用NXP公司的TJA1020,它是目前主流LIN物理接口芯片。信号发生器只向电子调速模块发送调速指令的数据帧,故工作在master主机模式下。如图4所示,LIN收发器的睡眠控制输入NSLP引脚直接接到MCU工作电源3.3V上,使其一直处理唤醒状态。本地唤醒NWAKE引脚则加限流电阻接到地上。TJA1020在主机应用下,需要增加一个额外的主机端电阻,通过在LIN和BAT引脚之间串联一个反向电流二极管D12和电阻R35实现,为了提高EMC以及降低EMI,对地连接了一个电容负载C28。同样为防止外部短路和反接,在输出端还增加了一个loQ的限流电阻R36和lOOmA的自恢复保险丝F2,有效保护自身电路。
  1.5 人机界面
  人机界面用于输出信号类型、输出模式、输出值等状态的设定和显示,电路见图5。采用上下两行4联共阴数码管显示数值,上行数码管Ul用于显示LIN通信类型模块的型号和PWM下的频率值,下行数码管U2则显示DC信号下的输出电压值:PWM下的占空比:LIN下的输出档位等。数码管驱动电路采用一种集成化的串行输入/输出共阴极显示驱动器MAX7219,它连接微处理器与2个4联共阴8段数码管,具有自动扫描、数字的译码与非译码选择、模拟和数字亮度控制功能。并外接了8个LED灯用于当前选择的信号类型、测试/老化模式、输出开启/关闭等状态指示。
  设计了4个独立按键和一个旋钮式编码开关做为用户操作设置按键,使操作尽量简单化。分别为Sl信号类型切换键、S2测试/老化模式切换键、S3输出开/关键、编码开关S4实现+/一及设置确定功能。
  1.6 系统电源电路
  系统直接采用220V市电供电,输入首先经过一个lOOmAl250V的自恢复保险丝,确保内部发生意外短路故障时能快速有效地保护系统。再通过Ll共模电感和Cl安规电容构成的EMI电路,提高系统受外部电网波动或电源噪声等EMI干扰。再使用15V/5W的工频变压器将电压降到15V,并通过整流、滤波转换成直流电压输出。系统需要较多种类电源电压,首先通过高效率的降压型DC-DC芯片LM2576-ADJ将电压稳压到SV供PWM电路和切换信号输出通道的继电器使用:MCU及其外围电路工作需要的3.3V电源则由一片LDO芯片LD1117-3.3将SV进一步稳压到3.3V得到。另外通过使用一片LDO芯片HT7550对地串联一个6.8V稳压管可直接将15V电源稳压到12V,来为LIN通信电路提供工作电源。图6为系统电源电路。
  电路中还设计了一个掉电检测电路,当系统发生断电情况时可迅速通知MCU将用户当前的操作设定存入EEPROM中,下次开机上电时再将数据读取出来使用。将15V电源经30k Q和lOk Q电阻分压后接到比较器LM311的同相端,反相端接到由LM38582-2.5基准电路输出的2.5V参考电压上。当断电瞬间电源电压从15V跌到10V时比较器迅速反转产生一个下降沿输出,触发MCU的外部中断,通知其进行掉电保护操作。
  二、软件设计
  系统软件采用C语言编写,主程序包含了DC输出及校准、PWM输出、LIN通信帧编码及输出、显示及按键扫描、掉电保护等几个功能函数。
  系统校准是厂家出厂前使用的校准程序,用于信号发生器首次上电开机时,DC通道的输出值校准.校准采用上/下限两点式线性校准方式,分别校准1V和10V输出点,校准公式为y=x*(y2-yl)/(x2-xl)+yl。只需校准一次,校准值存入EEPROM,断电不丢失。
  系统使用MCU内部锁相环将系统8M外部主时钟倍频到72MHz,保证在PWM输出时可通过分档改变TIME1的时钟预分频系数,实现频率1Hz~lkHz,占空比O%~100%范围内1%的分辨率和准确度。DC输出时则需要根据输出设定值,结合两点式线性校准公式调整输出PWM的占空比,从而改变输出的电压值。
  LIN通信则按照LIN 2.O总线标准,使MCU的USART工作在LIN模式下,并编写了一个LIN数据帧编码及发送函数,波特率为9600,数据位8位,停止位1位,无校验位。报文帧由报文头和响应内容组成,见图7:报文头包括13位长度的同步间隔,同步域Ox55,标识符场Ox61;响应内容为5个字节,包括datal(给定速度0~255间任意值)、data2、data3、data4分别为固定值Ox02、Ox20、Ox00。校验和域是数据域所有字节的和的反码。
  系统采用一个外部中断用于掉电检测,当中断事件发生时,立即将用户当前设定的参数写入EEPROM。等待下次开机时再从EEPROM中读取方便用户继续使用上次设定。存储的主要参数有当前信号类型、DC输出值、PWM输出频率和占气空比、LIN模块型号和档位、测试/老化模式等。测试模式下,用户可手工设置当前输出具体值,并作出任意调整。老化模式下,用户则只需选择信号类型和模块型号,信号发生器将定时每间隔5分钟自动每次按满量程的10%步进循环输出。
  三、结论
  采用本方法设计的汽车空调调速模块信号发生器已经达到了设计要求,并已形成产品在汽车空调调速模块产品的测试、老化等生产检测环节中使用,并取得了良好的使用效果。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

CopyRight(c)2016 www.daanjia.com All Rights Reserved. 本站部份资源由网友发布上传提供,如果侵犯了您的版权,请来信告知,我们将在5个工作日内处理。
快速回复 返回顶部 返回列表