文献标识码:B
文章编号: 0258-7998(2012)07-0044-04
在汽车日益普及的今天,人们对汽车的安全性要求越来越高,防夹手电动车窗应运而生。目前防夹手电动车窗的设计方案较多,但大多都存在设计结构复杂、开发周期长、成本较高等问题,而且这些方案都需要借助汽车内部各种控制线路传递信息,增加了汽车内部总线布局的复杂性。
针对上述问题,本文设计了一种基于PSoC和CyFi无线通信技术的智能车窗控制系统。该系统在电动车窗关闭时支持智能防夹手功能,同时电动车窗的升降控制采用CyFi无线网络进行通信,取代了传统的有线线路控制方式。
1 系统结构及工作原理
1.1 系统总体结构
本文设计的智能车窗控制系统主要由无线控制器、通信转发器以及车窗控制器组成。系统总体结构如图1所示。
系统中的无线控制器用于发送电动车窗的升降控制指令,通信转发器负责CyFi无线网络的通信数据转发,车窗控制器负责接收遥控指令并根据指令控制车窗升降,同时在关闭车窗时支持防夹手功能。
1.2 系统工作原理
无线控制车窗升降的原理是:无线控制器根据设定的自身ID号以及用户指定的遥控操作,组装遥控指令,并通过CyFi无线网络将指令发送给通信转发器。当通信转发器收到遥控指令后,检查指令的来源和目标的合法性。如果指令合法,则将指令转发给车窗控制器,车窗控制器收到转发的遥控指令后,执行该指令直至完成操作。
电动车窗中的玻璃升降器是一种直流电动机,用于带动车窗玻璃升降。车窗玻璃在上升期间遇到障碍物时,通过玻璃升降器的电流会陡然增大,通过采样玻璃升降器的电流,就能够监测车窗玻璃升降过程中所遇到的阻力情况[1]。本系统的智能防夹手功能就是依据此原理而设计的。系统中的车窗控制器内部设计了一个障碍物探测模块,在车窗玻璃上升期间,该模块通过霍尔元件对玻璃升降器电机的电流进行实时测量。当车窗玻璃在上升期间遇到障碍物时,障碍物探测模块检测到电流的突变情况,由此可判断出当前车窗玻璃是否遇到障碍物,并将探测结果信号传递给车窗控制器核心控制板,核心控制板依据判断结果执行相应的保护措施。
2 系统硬件设计
2.1 硬件平台
整个系统设计所采用的硬件平台包括Cypress公司推出的CY3271入门开发套件和CY3215-DK开发板。
CY3271是Cypress公司针对入门开发者推出的一款带CyFi的低成本USB接口套件,包括PSoC集成开发环境PSoC Designer、用于数据采集的感应控制软件SCD、带RF功能的PC桥FTPC、多功能板FTMF、支持长距离无线应用并带功率放大器的RF扩展板FTRF以及2个电池板[2]。
在本系统中,使用PC桥FTPC作为CyFi无线网络的通信转发器;以RF扩展板FTRF作为CyFi网络的数据收发节点设备;多功能板FTMF中带有CapSense触摸传感器,可作为无线控制器的控制键盘使用。
CY3215-DK开发板是一款用于PSoC开发的通用开发板,可自由选择PSoC芯片以及外围元件。
2.2 车窗控制器硬件结构
车窗控制器以CY8C29466芯片为核心处理器,外接一个FTRF作为CyFi无线通信模块,总体结构如图2所示。障碍物探测模块负责车窗玻璃在上升过程中判定车窗玻璃是否遇到障碍物。车窗控制电路用于转换车窗控制信号。
2.3 障碍物探测模块设计
障碍物探测模块是通过检测车窗升降器电机电流的方式来判断车窗关闭过程中是否遇到障碍物。利用PSoC检测电机电流,只需要一个PSoC芯片CY8C27443,外加一个霍尔元件、一个感应磁环即可。其原理框图如图3所示。
CY8C27443芯片的外部引脚连接图如图4所示,图中,U1为砷化镓霍尔元件TSH119,U2为SPI输出模块,提供系统在电流检测时的数据显示功能,J1、J2与上拉电阻R2、R3构成I2C数据通信接口,向外输出探测结果信号。
3 软件设计
3.1 无线控制器
无线控制器由CY3271套件中的一个RF扩展板(FTRF)、一个多功能扩展板(FTMF)外加一个纽扣电池组成。其中,FTMF板直接采用CY3271套件中提供的MF_CS_SLIDE示例程序,本系统主要用到其中的CapSense触摸传感器作为车窗控制键盘。FTRF板采用RF_I2C_BRIDGE示例程序,这里需要将sendNewTxMsg()函数中消息类型TX_PACKET_TYPE修改为CYFISNP_API_TYPE_CONF_BCDR,然后在调用函数CYFISNP_BindStart时指定参数为DEV_ID_TX,以标示数据包来源,便于中心Hub进行转发。其部分代码如下:
#define TX_PACKET_LENGTH (8+1)//包长度
#define TX_PACKET_TYPE CYFISNP_API_TYPE_
CONF_BCDR//包类型
static void sendNewTxMsg(void)
{
if (CYFISNP_eProtState == CYFISNP_DATA_MODE
//数据模式
&& CYFISNP_TxDataPend() == FALSE) {
//当前没有数据发送
GetI2CData();//从I2C端口获取数据
loadTxData();//将读取到的数据装载到发送缓冲区
txApiPkt.length=TX_PACKET_LENGTH;
//指定数据包长度
txApiPkt.type=TX_PACKET_TYPE;
//指定数据包类型
CYFISNP_TxDataPut(&txApiPkt);
//通过CyFi发送数据
LED_GRN_ON;//指示灯提示
}
}
3.2 通信转发器
通信转发器由带RF功能的PC桥FTPC实现,直接采用RF_HUB示例程序。该示例程序已经具有与各个节点进行数据交互的功能,但不能进行数据转发,因此需要对RF_HUB程序进行一些修改。首先,需要将CYFISNP用户模块中的DeviceIDassignment属性设置为Preas-signedDeviceID,表示自定义通信节点的ID;重新编译RF_HUB工程之后,修改ServeSNPPackets()函数中关于CYFISNP_API_TYPE_SYNC类型消息的处理过程,增加对数据包节点ID的判断,只有当数据包是由遥控节点发送时才进行转发[3]。转发部分代码如下:
case CYFISNP_API_TYPE_SYNC:
……
if (pApiPkt->devId == DEV_ID_TX) {
//判断数据包来源
newPacket.length = pApiPkt->length;
//复制成一个新的数据包用于转发
……
newPacket.payload[length-1] = pApiPkt->devId;
//确保数据包长度没有超出限制并且设备合法
if(newPacket.length <= CYFISNP_BCD_PAYLOAD_
MAX&& (CYFISNP_EEP_DEV_REC_ADR+
newPacket.devId)->devId != 0){
if (CYFISNP_TxDataPend(newPacket.devId) ==
CYFISNP_TX_DATA_EMPTY) {//发送缓冲区为空
CYFISNP_TxDataPut(&newPacket);//转发数据包
}
}
}
3.3 车窗控制器
车窗控制器在完成启动初始化之后,通过CyFi无线网络接收数据。如果收到数据并且确认数据包是发送给自己,则进行指令解析,并执行相应动作;否则丢弃数据包。得到指令之后,根据指令持续时间判断出该指令是自动执行还是手动执行。在执行自动关闭车窗指令时,车窗控制器会接收由障碍物探测模块发来的信号,得到障碍物信号后,立即停止电机并反转一段距离。车窗控制器的程序流程图如图5所示。车窗控制器部分代码如下:
M8C_EnableGInt; //开中断
//初始化I2C
I2C_CFG &= 0xFC;
I2CHW_Start();
I2CHW_EnableSlave();//核心控制板为I2C Slave端
I2CHW_EnableInt();//打开I2C中断
I2CHW_InitRamRead(WriteBuffer,8);
I2CHW_InitWrite(WriteBuffer, 8);
… …
while (1) {
if(I2CHW_bReadI2CStatus()&I2CHW_WR_COMPLETE) {
I2CHW_ClrWrStatus();//清除I2C写完成标志
//重新初始化I2C写缓冲区
I2CHW_InitWrite(WriteBuffer,I2C_PAYLOAD_MAX);
}
if(I2CHW_bReadI2CStatus()&I2CHW_RD_COMPLETE) {
I2CHW_ClrRdStatus();//清除I2C读完成标志
// 重新初始化I2C读缓冲区
I2CHW_InitRamRead(WriteBuffer, I2C_PAYLOAD_
MAX);
}
//切换控制模式(手动控制或者自动控制)
if(Command_Mode == 0 && WriteBuffer[0] != 0) {
Command_Mode = 1;//自动控制模式
}
CheckCommand();//根据控制模式和命令内容,
//执行命令
ShowCommand();//将当前控制模式及
//执行状态显示在LCD屏
}
车窗控制器可实现以下车窗控制模式:
(1)自动升降模式。当较短时间(<600 ms)按下无线控制器的控制键时,指令持续时间会比较短,车窗自动升降直至完成。
(2)手动升降模式。当较长时间(>600 ms)按下无线控制器的控制键时,指令持续时间会比较长,车窗控制器进入手动升降模式,释放控制键则车窗升降立即停止。
3.4 障碍物探测算法
在车窗自动关闭的过程中,障碍物的探测需要区分两种情况:一种情况是车窗在关闭的过程中遇到障碍物;另一种是车窗玻璃已经上升到顶端。这两种情况都会导致玻璃升降器电机的电流增大,因此仅依据电机电流的增幅值是不能进行判定的。但是,这两种情况下电机电流变化的速率不一样,当车窗在上升过程中遇到障碍物时,电机电流迅速增大到一定值,并呈现不稳定状态;而当车窗玻璃上升到顶端时,电机电流急剧增大,并保持峰值电流[1]。
根据上述两种情况的不同特点,设定最大关断电流为IMAX,通过霍尔元件测量一段时间内的电流平均值为I。当I>IMAX时,可判定为上述两种情况之一。计算此时的电流变化率,当变化率出现较大波动时,判定为遇到障碍物并将结果信号传递给车窗控制器。
通过调整最大关断电流IMAX,可设定不同的防夹力阈值。经过反复实验,调整针对电流变化率的判定,可提高防夹手功能的灵敏度。
利用PSoC芯片设计智能车窗系统,硬件电路设计简单,软件开发周期短,避免了复杂的硬件模块设计过程;PSoC所具有的可重构性使得在增加系统功能或者升级系统特性时,只需要对PSoC芯片进行重新配置编译,无需增加额外的芯片或内部资源,从而有效提高了系统的性价比。实验结果表明,使用PSoC作为车窗电机的控制器具有良好的稳定性和反应速度。但是系统对于障碍物探测的灵敏度还有待进一步提高。
将PSoC和CyFi无线解决方案应用于汽车控制领域,是对传统汽车电子的数据传感和有线控制进行的一次开创性的改进尝试,具有重要的参考价值。
参考文献
[1] 孙能勇,王冬雪,马建辉,等.基于PIC18F2580的智能防夹手电动车窗设计[J].山东科学,2010,23(3):74-77.
[2] 俊杰.Cypress推出基于PSoC技术的CyFi低功耗射频解决方案[J].电子设计应用,2008(12):115.
[3] 叶青林,马忠梅.CyFi无线传感器网络组建与通信设计[J].单片机与嵌入式系统应用,2009(9):78-81.