CAN总线节点的软件设计主要包括三大部分:CAN节点初始化,报文发送和报文接收。初始化程序设计主要包括工作方式的设置,时钟输出寄存器的设置,接收屏蔽寄存器和接收代码寄存器的设置,总线定时器的设置,输出控制寄存器的设置和中断允许寄存器的设置。
这里的加速度传感器智能节点的软件运行的主要任务是:C8051F040单片机通过3线主从SPI通信方式,控制AD转换芯片AD7705将加速度传感器输出的模拟测量信号进行数模转换,并读取转换得到的数字信号结果。在单片机中,对测量得到的数字信号进行数字滤波。同时,单片机控制其CAN总线接口工作,与CAN总线网络中的上位机节点和其它下位机节点实现CAN通信。单片机可以将得到的加速度传感器测量结果发送到其它CAN节点,也可以接受上位机发送过来的控制数据,并根据数据做出相应的处理和设置。由此可知,此节点的CAN通信主要包括系统初始化程序、SPI发送程序、SPI接收程序、数字滤波、CAN发送程序、CAN接收程序等。软件部分设计的好坏将直接决定系统能否正常工作,对于CAN总线系统的设计来说是一个难点,也是一个重点。图4为加速度传感器CAN节点的程序流程图。

图4传感器CAN节点的程序流程图
5线性化软件处理方法
本系统中如果输出D1时对应的角度为-45°,输出D2时表示角度45°,其输出值和角度对应关系可以由式(5.1)表示为:
D=a°*(D2-D1)/90°+D1(5.1)
其中,D表示角度对应的标准输出值,a为此时的标准角度。则测量值误差为:
ΔD=D-d(5.2)
其中,D表示角度对应的标准输出值,d表示实际的测量值。
因此我们用测量值误差值ΔD对实际测量输出值进行查表修正。修正子程序如下:
voiddeline(void)
{
if(temp>=line_point[0])temp=temp-ΔD1;//减去误差值
elseif(temp>=line_point[1])temp=temp-ΔD2;
elseif(temp>=line_point[2])temp=temp-ΔD3;
…
…
…
elseif(temp>=line_point[17])temp=temp-ΔD18;
elseif(temp>=line_point[18])temp=temp-ΔD19;
elsetemp=temp-ΔD20;
}
6结语
本文应用内部集成CAN控制器的C8051F040单片机和CAN收发器SN65HVD230设计一种基于CAN总线的倾斜角传感器,使其从一个独立的电器单元成为CAN网络的一部分。
本文中涉及到的主要工作有硬件设计和软件设计两方面。硬件上,主要是设计MEMS传感器外围电路,包括低通滤波、AD转换、稳压等模块,单片机的CAN接口及其外围电路等。软件上,主要是AD芯片的SPI通信、数字滤波、非线性补偿、CAN接口驱动等程序。另外,本文中还对上位机CAN/RS-232转接点的软硬件进行了设计。最后,本文还测试了传感器的非线性误差,并进行了非线性补偿和误差分析工作。
参考文献
1 葛运健,王国泰,朱永亮.航天机器人用六维力传感器信号处理系统研究.仪器
2 沙占友.集成传感器应用.北京:中国电力出版社,2005.
3 MEMSIC.加速度传感器原理.MEMSIC,2003.
4 余瑞芬.传感器原理(第一版).北京:航空工业出版社,1995.
5 毛强.基于MEMS技术的倾角传感器的研制.计算机测量与控制,2006,
6 童诗白.模拟电子技术基础.北京:高等教育出版社,2000.
7 饶运涛,周继军,郑勇芸.现场总线CAN原理与应用技术.北京:北京航空航
8 杨瑞江,于秀丽.CAN的特点及应用.甘肃科技,2004,20(5):89~97
9 易军.基于CAN总线技术的一类节点开发及应用.测控技术,2003,7(22): 2/2 首页 上一页 1 2 |