1. 引言
汽车是一个非常复杂的系统,随着行驶距离增加和使用时间的加长,它的实用性能在不断的降低,从而使得汽车的动力性和安全性降低。汽车方向盘是汽车驾驶的关键,很多交通事故都是因为方向盘的转向出现问题导致的 [1]。汽车转向系统已经从普通的机械式转向转变为电子技术控制的转向系统。研发更好的转向系统,不仅可以提升汽车行驶的安全性能和驾驶员的操作舒适度。而且还能延长汽车的使用时间和不必要的行驶路程,对于环保和节能方面有着重要作用。安全的转向系统除了节能和环保之外,还可以减少交通事故的发生。汽车检测技术中最重要的一环就是方向盘转角检测技术,方向盘转角检测出汽车转动角度,上传给控制中心。从而判断汽车的行驶状态。如果没有这一环,汽车的安全性能将大大减少 [2] [3]。
为克服由于机械磨损导致的方向盘转角检测精度降低、采集的数据量少等问题,本文提出基于STM32的汽车方向盘转角检测系统设计。该系统充分利用STM32内置的CAN接口和AD转换器,角度传感器和CAN通讯可以直接和单片机传输信息,无需外接复杂的电路。在角度传感器 [4] [5] 的选择上,选用具备简单且稳定的磁路设计、可编程的线性传输特征曲线、12 bit的角度分辨率等优点MLX90316,它可以通过磁场变化来检测角度,并且它可以克服汽车上的多重干扰,使检测更加准确。
2. 总体方案设计
该系统总体设计框图如图1所示。

Figure 1. Overall system design block diagram
图1. 系统总体设计框图
系统主要分为MLX90316角度检测模块 [6] [7] [8]、STM32处理模块、电源模块、CAN通讯模块、看门狗模块。首先利用角度传感器采集得到方向盘的角度,再根据MLX90316的SPI通讯协议将角度数据发送给STM32微控制器,最后经过CAN通讯进行数据传输。如果在启动时发生故障,看门狗会发出报警提示。其中,MLX90316角度检测模块检测原理概述如下:为实现±600度的检测目的,本文所设计系统采用一主二从动轮结构的角度检测方案。基于主动轮和两个从动轮之间的角度比例关系,从而计算出主动轮的转动角度值,如图2所示。

Figure 2. Schematic diagram of double magnetic wheel angle
图2. 双磁轮转角原理图
图2中最大的齿轮为主动轮S,最小的齿轮为从动轮B,剩下一个为从动轮A。假设主动轮周长为Cs,两个从动轮周长分别为CA和CB,齿轮的每一个齿在主从动轮的周长上占L的长度。则主动齿轮的齿轮数NS:
(1)
从动轮A的齿轮数为NA:
(2)
从动轮B的齿轮数为NB:
(3)
假设主动轮S从某一点到另一点的选择角度为ϕs,则从动轮A旋转角度ϕA:
(4)
从动轮A的实际角度,可以由霍尔传感器检测得到角度θA为:
(5)
式中nA为从动轮A的旋转圈数。
主动轮S的旋转角度为:
(6)
主动轮S的最大旋转角度为:
(7)
3. 系统硬件设计与实现
3.1. STM32处理模块
STM32处理模块 [9] STM32F103C8T6有两个晶振电路,一个是HSE,常用外部高频,常为8 MHz。另一个为外部低频晶振,也称时钟晶振,计时用,或系统待机或低功耗时用,为32.768 kHz,其引脚图如图3。

Figure 3. STM32F103C8T6 pin diagram
图3. STM32F103C8T6引脚图
STM32F103C8T6有48个引脚,第1、9、24、36和48脚VCC是接电源的,可接+3.3 V电源,第8、23、35和47脚VSS用来接地。PA口、PB口、PC口和PD口这4组端口都可以用作普通的输入/输出端口即I/O。STM32F103C6T6自带CAN通讯,可以直接和CAN模块相接。
3.2. 角度传感器电路和EEPROM电路
角度传感器MLX90316可以测量角度在0到360度之间的绝对角度位置,这里选择两个MLX90316,这样就可以满足设计要求的±600度的测量要求,MLX90316外围电路如图4。
STM32处理模块为主设备,角度传感器为从设备。角度传感器要给STM32处理模块输出信息的话,就要通过引脚MISO来实现。角度传感器的时钟信号由STM32处理模块提供,引脚NSS是作为片选引脚,可以使主设备和从设备避免冲突。因为软件设计过程中需要存储采集的角度数据和采集完成后处理的角度数据,所以需要EEPROM电路,其电路如图5所示。

Figure 4. Angle sensor circuit of STM32F103C8T6
图4. STM32F103C8T6的角度传感器电路

Figure 5. EEPROM circuit of STM32F103C8T6
图5. STM32F103C8T6的EEPROM电路
3.3. CAN通讯模块电路
CAN通讯电路如图6。
STM32内部有CAN接口 [10],总线数据的封装可以在单片机的内部进行,而单片机只需要外接CAN总线收发器SN65HVD232即可,CAN模块的CAN_TX和CAN总线收发器的TXD相连接,CAN_RX和CAN总线收发器的RXD相连接。引脚TXD是接收来自微控制器的信号并转发出去。引脚RXD是读出来自总线的数据并发送给微控制器。
3.4. 看门狗电路和LED指示电路
看门狗电路如图7所示。
对于SP706S来说,WDI是输入,那么对于STM32来说,对应连接的STM32引|脚PBO就是输出(推挽输出)。看门狗电路是如果对WDI引脚持续输入高电平或者低电平,那么引脚WDO,就会呈现出持续低电平,而引脚WDO,和引脚MR,连接,RESET,又和STM32连接在一起,最终是由RESET,觉得了STM32的复位效果。
LED指示电路如图8所示。
指示电路是判断传感器测量角度是否出现错误。本设计是为了测量±600度的方向盘转角,如果测量角度在区间内指示绿灯亮,如果超过600度,则指示红灯会亮。
4. 系统软件设计
系统的软件设计使用C语言编程,用Keil作为编译调试平台。软件程序主要包括系统初始化程序、监控程序、角度数据采集及处理程序、CAN通讯4个主要部分。程序流程图如图9所示。
系统运行过程:开关开启后系统先初始化,然后判断电压值是否正常,如果不正常直接结束运行。要是正常的话启动SPI,进行角度数据采集,接着判断采集的角度是否超过测量范围,如果超过红灯亮。如果在测量范围内绿灯亮,然后对采集的角度进行数据处理,再输入给CAN总线。
5. 仿真测试
使用Proteus [11] [12] 作为仿真平台,对本文所设计系统进行仿真验证,其仿真界面如图10所示。
利用滑动变阻器替代角度传感器,通过改变滑动变阻器的阻值来改变角度。再使用虚拟终端显示检测的角度值。仿真调试结果如图11所示,结果显示本文所提系统可及时、精确的实现角度测量。
6. 结束语
汽车的转向系统是汽车不可以缺少的系统之一,它也是决定汽车是否安全的关键因素。本文采用STM32作为主要控制模块完成基于STM32的汽车方向盘转角检测系统设计。STM32内置的CAN接口和AD转换器,角度传感器和CAN通讯可以直接和单片机传输信息,无需外接复杂的电路。在角度传感

Figure 10. Simulation of steering wheel angle detection
图10. 方向盘角度检测仿真图
器的选择上,选用MLX90316,它可以通过磁场变化来检测角度,并且它可以克服汽车上的多重干扰,使检测更加准确。系统仿真结果显示本文所提系统可及时、精确的实现转角角度的测量,具有低成本、易于应用的前景。
参考文献