图1 硬件结构图数字温度传感器采用DALLAS 公司的单总线器件DS18B20 ,用于补偿环境温度对粮食内部水分的影响,环境温度直接以“一线总线”的数字方式传输,省去了温度传感器的放大处理等环节,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。同时它只占用单片机的一个端口,节约了系统的硬件资源,因此具有较高的性价比。 粮食水分的测试通常采用电阻法和电容法,由于非金属干燥物质的电阻很大,通常能达到几十到几百兆欧,要使这样大的电阻流过电流必须在检测电极两端加上高电压,即使这样获得的电流也只是微安级的,必须要经过放大等处理措施,因此用电阻法检测获得的测量信号微弱,影响测量精度。本电路采用电容法进行测量,经过实验的反复验证,水分传感器采用圆柱形容器测量粮食的含水量比平板式容器要准确些,操作也较方便,测量值受边缘效应影响较小。信号调理电路采用555芯片构成的非重复触发的单稳触发电路,如图2 所示:
图2 信号调理电路粮食中的水分含量越大,粮食的介电常数就越大,电容值就越大。电容与水分存在一定的函数关系,同时在单稳触发电路中,输出的脉冲宽度Tpo= RCln3 ,其中C就是要测的电容值,因此水分与脉冲宽度存在函数关系,只要测出脉冲宽度就可获得粮食水分的含量。信号的采样波形如图3所示。脉宽的测量由单片机的外中断和定时中断来完成,由于SPCE061A 的EXT1 和EXT2 均为负跳沿触发中断, 因此在555的输出端加**反相器,EXT1 中断采样输出信号的上跳沿,然后再经过**反相器,EXT2采样输出信号的下跳沿。两者采样的时间差就是脉冲宽度。时间差的计算可由单片机的定时中断来实现,在EXT1的中断程序里开启定时中断,在EXT2的中断程序里关闭定时中断。电路中的同步触发信号来自单片机的输出控制端口使采样和计时保持同步,提高系统的测量精度。
图3 信号采样波形为了降低功耗,系统采用图形点阵式LCD显示。相应的数据线和控制线与SPCE061A 的16 位并行A口连接,用来显示测量的粮食的种类、每次测量的数值、次数、平均值,以及测量的修正值。整个人机界面清晰、明确。 按键输入部分由品种选择键、修正值输入键、保存键、测试键、平均键、**键等组成,根据需要,可测量大米、小麦、高粱等不同种类的粮食。 SPCE061A 的音频输出采用双通道的DAC 方式,即数字信号通过10 位DAC 转换成3mA驱动电流的模拟输出,语音提示信号输出经过驱动放大以后,通过扬声器输出。 3. 2 系统软件设计 粮食水分测试仪是具有区域特色的产品,它对不同地区的粮食作物具有不同的测量基准值,因此在测试之前,需要根据不同的粮食种类,在不同的状态下建立起标准的数据库,这些数据可以预先存入系统中,也可以由用户根据标准现场设定。这样在测试时就与标准值进行比较,判断是否合乎标准。 软件采用模块化设计,包括初始化程序、键盘扫描、温度采样、水分采样中断处理、测量数据线性化和温度漂移的补偿的数据处理、语音提示等模块。主程序负责整个系统的协调与控制工作,通过调用不同的模块完成相应的工作。本测试仪以每个品种10次随机采样的算术平均值作为测量结果,有效地提高了测量的准确性和重复性。在测试完成后就输出语音提示,判断所测试的水分为多少并且是否合格。主程序的流程图如图4所示:
图4 主程序流程图4 语音提示系统工作原理 SPCE061A的音频输出有两种方式,一种是音调输出方式,另一种是语音输出方式,两者的区别在于输出的控制机理不同。前者是通过控制定时器溢出所产生的不同频率来决定声波振动次数的多少,从而决定发出的声音音调的高低;后者是用与声音数据采样率相同的速率将声音数据通过数模转换通道还原成音频电压或电流输出,其中声音数据采样率决定了声音音质的好坏,并决定了声音数据所需要占据的存储空间[3] 。提示语音的输入可以采用两种方式:一是通过PC 机的声卡,用麦克风采集语音的3 .wav 文件;二是用SPCE061A系统采集语音信号,通过通信模块将语音信号传送到PC机上保存。**种方式*好,因为它能保证语音特征的一致性,从而减少硬件系统不一致带来的误差。不管采用哪种方式, 3 . wav文件占用的存储空间很大,对于微控制器来说想要存储大量的语音信息显然是不可能的,必须将音频文件压缩。为了方便用户使用,凌阳公司的SPCE061A 提供了各种音频压缩编码的算法和API 函数库,即SACM-LIB。用户只须了解每个模块所要实现的功能及参数的内容,然后调用该API函数即可实现该功能。凌阳科技公司提供三种不同压缩率的语音提示的算法,表1 是各种压缩算法名称及编码率类型。
表1 SPCE061A的语音压缩算法及编码率类型 这三种压缩算法的区别在于压缩率不同、音质也不同。SACM A2000 压缩率相对较小,音质较好,相应的资源占用较多。SACM S240 的压缩率*大,音质相对较差。SACM S480介于这两者之间。本系统在没有扩展存储器的情况下,采用SACM S240 方式,它可容纳210 秒的语音数据。语音播放子程序包括语音播放程序和服务中断程序,语音播放程序主要完成D/ A 转换器、TIMERA 定时器和音量的初始化,从ROM里取出预先压缩好的语音数据,解压缩后存放在播放队列中,中断服务程序定时地从播放队列中读取数据,从D/ A 转换器转换后送扬声器发出声音。播放程序如下: Sound :_proc ; r1 = 1 ; call F_SACM_S240_Initial ; r1 = 8 ; call F_SACM_S240_Volume ; r1 = [ Speech_1 ] ; r2 = dac1 ; r3 = Ramp_UpDn_On ; call F_SACM_S240_Play ; LOOP; call F_SACM_S240_ServiceLoop[ syg1 ] ; call F_SACM_S240_Status ; test r1 ,0x0001 ; jz Sound_End ; jmp LOOP; Sound_End ; retf ; endp ; 5 实验测试结果 本测试仪采用浮动三点定标法对各种不同种类的粮食预先定标,用户在使用时可直接测量,以小麦为例,在不同的水分情况下,实测值与标准值的数据比对如表2所示:
表2实测值与标准值的比对 经过非线性补偿和误差修正,本测试仪的测量误差≤±0.5 % ,测量的水分范围为3~35 % ,重复误差≤0. 1 % ,使用的温度范围为0~40 ℃。基本上达到国内外同类先进产品的技术指标。可适用于多种种类的粮食水分测量,具有比较广阔的市场前景。 参考文献 [1 ] 薛钧义,等. 凌阳十六位单片机原理及应用[M] . 北京:北京航空航天大学出版社,2003 ,2 [2 ] 张永林,等. 粮食水分在线测量技术评述[J ] . 武汉工业学院学报,2003 , (12) :36 - 40 [3 ] 李晶姣. 嵌入式语音技术及凌阳16 位单片机应用[M] . 北京:北京航空航天大学出版社,2003 ,11