系统软件设计
1 采样和数据处理
①AD7705的读写时序
AD7705通过四线SPI与单片机通信,其读写时序图如图5(a)、(b)所示,读写过程中串行数据高位在前,低位在后。DRDY为低电平说明A/D已经转换完毕,数据已准备好,可以启动读写指令。任何时候要对AD7705进行读写操作都须检查DRDY是否为低。
图5 AD7705读写时序图
②AD7705的寄存器
第一个是通信寄存器(communication Register),选择采集通道、下一次操作是读还是写,以及下一次读写哪一个寄存器。
第二个是设置寄存器(Setup Register),决定校准模式、增益设置、极性设置以及缓冲模式。
第三个是时钟寄存器(CLOCK Register),设置滤波器记忆时钟控制位。
软件编程思路也是按这个顺序写的,先设置通信寄存器,其次写设置寄存器,最后设置时钟寄存器。设置完之后,只要检测到DRDY为低电平,就可以启动时钟来读取AD7705数据寄存器中已转换好的数据。
2 数据处理算法思路
数据处理主要是将电压信号转换成压力值,将采集来的数据进行转换。已知:传感器的参数为10mV对应的是30kN,A/D的满量程电压为1.5V,设采集的A/D值为K,设换算后的压力为X,10mV对应的A/D值为D,增益为64,则由以上参数可求出:
(1)
(2)
式(2)就是转换后的压力值和采集的A/D值的关系。
因为单片机不支持浮点运算,为了能精确的显示结果,用软件模拟浮点除法运算,其主要思想是:定义一整型变量INTD,将除的结果存入INTD中,因为是整型变量,所以除法的结果只取了整数部分,例如5/4=1,模拟除法的算法主要依据这一特性。
第一步,如果采集来的值K大于932,K/932存入整型变量中即可得到整数部分。
第二步,用K对932取余得到R,显然R小于932,然后得到小数点后第一位,再用R×10对932取余得到R1,小数点后第二位,以此类推,得到小数点后第三位dec3。
第三步,如果采集来的值K小于932,直接进行第二步操作。
第四步,与逻辑零点进行比较,得到理论压力值,并进行BCD转换在数码管上显示。
图6 软件流程图
3 程序编程思路及流程图
系统软件编程采用状态机机制,上电之后进行各个模块的初始化,包括I/O口初始化、定时器初始化、SPI初始化等。初始化完后进入系统循环,在循环体中根据任务标志位进行任务处理,主要任务有:欠压处理、数据采集、睡眠、关机等。在数据处理时,先采集通道2的值,然后采集通道1,如果传感器未接,则采集来的值为零或者近似零,系统报警等待。如果采集来的值大于零,则参与运算。求出理论值显示。