基于C8051F单片机的数字倾角传感器设计
1 引言
随着市场需求和科技的发展,人们对工程、机械、航空、航海设备的可靠性和稳定性提出了更高的要求,其中姿态测量是一项重要的指标。倾角传感器是测量关于某一基准面的倾斜角或者是姿态的装置。目前,市场上已有单轴、双轴、三轴的倾角传感器,但大多都价格昂贵或者体积较大。本文提出以双轴传感器SCA100t 和C8051F 单片机实现的设计,可大大降低系统成本,不但可以构成一个单独的数字输出传感器,也可以作为一个测量模块,嵌入到测量控制系统中,广泛应用于机器人控制、平台姿态(俯仰和滚转)测量、双轴加速度测量等系统中。
2 硬件电路设计
整个系统结构如图1 所示。可分为供电电路、角度测量和数据采集与输出等。系统采用宽电源供电,经电源变换后电源分为两路,一路是由精密稳压芯片REF195,输出高稳定的5v 电压,专为传感器供电,以提高传感器的输出稳定性;另一路是由LM2937输出的3.3v 电源,为单片机系统提供工作电源。
![](../img/eep/emb/emb-15191dnlm54o4dwo.jpg)
图1 系统总体框图
角度测量使用了VTI 公司生产的硅基加速度传感器SCA100T,其主要性能指标:1)双轴向倾角测量:SCA100T 测量X-Y 方向;2) 测量范围 1.7g;3) 测量灵敏度1.2V/g;4)+5V单电源供电,两个比例电压输出(模拟),内置11 位AD 转换器;5)兼容SPI 的数字输出;6)通过SPI 接口,可以访问内部温度传感器。
SCA100T 为12 脚表贴封装,设计时要水平安装芯片,并注意芯片上面箭头所指方向为正方向。输出使用SPI 接口,周期为19 个时钟,虽然C8051F 单片机具有片上SPI 资源,与SCA100T 的SPI 时序不符,因此采用软件模拟SPI 总线读写SCA100T 数据。
传感器同时还有模拟输出接口,设计时把这两路信号引出,满足用户的使用要求。
数据采集处理采用了Silicon 公司的高性能C8051F005 单片机作为主处理器,它采用了CHP-51TM 微处理器内核,与8051 完全兼容,并在片上扩展了SPI、IIC AD 等多种外设,采用单指令周期,具有JTAG 接口,可直接进行调试与编程。工业上小型传感器输出接口一般采用RS-232C 或RS-485 接口。在设计时将这两种接口电路都进行了设计,用户可以选择其中的一种接口来输出数据。
3 系统软件设计
整个系统使用C51 进行程序设计,使用模块化结构,条理清楚。主要功能有控制SCA100T,读取双轴测量数据和内部温度值;完成电压值-角度的变换;输出数据的修正;数据输出的软件滤波;接收串口命令,输出测量数据。软件流程如图2 所示。
根据器件手册可以看到,SCA100t 输出的电压值与角度有以下关系:
α=arcsin((Dout-1024)/Sens)
![](../img/eep/emb/emb-15192x4qmcrdazwh.jpg)
图2 系统软件流程图
Dout 为传感器的数字量输出;
Sens 是传感器的灵敏度,根据测量范围不同,分别为819(4V/g)或 1638(2V/g)。单片机通过SPI 口读取SCA100T 内的两路传感器的A/D 转换结果,在单片机机内进行处理后,通过串行口输出。同时利用SPI 接口读出内部温度传感器,进行测量值的温度补偿。
4 提高精度措施
SCA100T 非常敏感,电源的波动或是器件的振动对输出值的精度都有很大的影响;温度对输出值也有一定的影响;在焊接时可能焊接面不平,安装在机壳内或嵌入在其它系统中时也可能与基准面存在一定的角度,这些都会造成测量值的零点偏差。经过实验和分析,主要通过以下方法来提高它的稳定性和可靠性:
4.1 供电电路设计
供电电压不稳定可直接造成输出的比例误差,最大值可达到2%。如果电源过载则使传感器供电不足而造成输出波动。系统加了电源输入保护电路,防止电源输入过载。采用高精度电压源REF195 单独给传感器供电,有效地减小电源的波动对输出的影响。在电路板设计时,传感器的电源和地之间加上10nF 的滤波电容,在模拟输出端加上10uF 滤波电容,也可以减小了纹波,从而减小了输出误差;工作在嵌入系统中时,给这一部分电路加上铁壳进行电磁屏蔽,减小其它工作电路或周围环境对它的影响。
4.2 软件滤波
在单片机片内RAM 中设定一个数组,用来存贮解算后的角度值。利用堆栈的原理将数组中新的测量值更新,对数据的数据进行加权求和平均后输出。这样可以减小输出波动,但输出有一定的滞后,通过实验最终选用5 个数据处理满足了系统的设计要求。
4.3 温度补偿
传感器的输出值同样受到温度的影响。它的内部带有温度传感器,在大多数情况下不需要进行温度补偿。当传感器工作在极限温度附近时,可由MCU 根据其内温进行补偿。温度的实际值由下式算出:
Treal=(Counts-197)/(-1.083)
式中Counts 为传感器的输出值。
4.4 模拟量输出
Sca100t 还带有模拟量输出,其精度要比SPI 输出的11BitAD 转换结果高。可以用12Bit或16Bit 的AD
- SCA100t和MCU在数字倾角传感器中的应用(12-05)
- 基于C8051F340驱动与采集的CCD光电遥测垂线仪(02-01)
- 基于单片机C8051F060的智能功率柜的设计应用(01-12)
- 基于单片机的存储设备转储器(05-03)
- 基于单片机设设计的智能无线网络汽车测试系统(12-02)
- 基于C8051F的18B20程序(12-01)