本科组_低功耗应用类_河南工业大学_基于介电原理的润滑油检测(3)

2019-06-05 00:18

4.1 I2C通信原理及程序设计

AD5933与LM3S811微控制器的通讯是通过I2C实现的,作为I2C设备,必需严格遵守I2C通讯协议。当控制器写入到AD5933时没有什么特别说明的,当从AD5933读取数据时,首先要写入B0H到AD5933,然后写入要读出数据的寄存器地址,读出寄存器的值。

I2C总线采用双线制:一根是串行数据线(Serial Data Line,SDA),另一根是串行时钟线(Serial Clock Line,SCL)。I2C 总线是一个多主设备的总线,即可连接多个能控制总线的设备到总线,每个设备都有一个唯一的地址识别,设备在数据传输时可以被看作是主设备或从设备。主设备负责初始化并产生允许传输的时钟信号,此时任何被寻址的设备都被认为是从设备。

C语言编写的LM3S811微控制器往阻抗测量芯片AD5933内部EEPROM写数据的代码如下。函数void WriteEEPROM (unsigned char cAddr,unsigned char cData) 的功能是往AD5933内部指定地址的EEPROM写入数据,cAdd为指定EEPROM的地址,cData要写入的数据。

void WriteEEPROM (unsigned char cAddr,unsigned char cData) {

IIC1C_TXAK = 0; /*发送应答使能*/

IIC1C |= 0x30; /*选择主设备模式,选择发送模式*/

IIC1D = 0xA0; /*EEPROM设备地址,选择写操作*/

while (!IIC1S_IICIF); /*等待传输完成,需要说明的是,虽然此程序并未使能*/

/*IIC中断,但IICIF标志位在传输完成后仍然会置

位 */

IIC1S_IICIF = 1; /*写1清除该标志位*/ while (IIC1S_RXAK); /*等待应答*/

IIC1D = cAddr; /*发送指定的EEPROM地址*/ while (!IIC1S_IICIF); IIC1S_IICIF = 1; while (IIC1S_RXAK);

IIC1D = cData; /*发送要写入的数据*/ while (!IIC1S_IICIF); IIC1S_IICIF = 1; while (IIC1S_RXAK); IIC1S_IICIF = 1;

IIC1C_MST = 0; /*IIC模块变为从设备模式,产生停止信号*/ IICDelay(); }

C语言编写的LM3S811微控制器读取AD5933内部寄存器数据的程序代码如下。函数char ReadEEPROM (unsigned char cAddr)功能是读取AD5933实部、虚部寄存器的数据,cAdd为指定AD5933内部EEPROM地址。

unsigned char ReadEEPROM (unsigned char cAddr)

{

unsigned char cRecvData;

IIC1C_TXAK = 0; /*发送应答使能*/

IIC1C |= 0x30; /*选择主设备模式,选择发送模式*/ IIC1D = 0xB0; /*EEPROM设备地址,选择写操作*/

while (!IIC1S_IICIF); /*等待传输完成,需要说明的是,虽然此程序并未使能*/

/*IIC中断,但IICIF标志位在传输完成后仍然会置

位 */

IIC1S_IICIF = 1; /*写1清除该标志位*/ while (IIC1S_RXAK); /*等待应答*/

IIC1D = cAddr; /*发送指定的EEPROM地址*/ while (!IIC1S_IICIF); IIC1S_IICIF = 1; while (IIC1S_RXAK);

IIC1C_RSTA = 1; /*产生重复START信号 */

IIC1D = 0xA1; /*EEPROM设备地址,选择读操作*/ while (!IIC1S_IICIF); IIC1S_IICIF = 1; while (IIC1S_RXAK);

IIC1C_TX = 0; /*选择接收模式*/ IIC1C_TXAK = 1; /*发送应答不使能*/ cRecvData = IIC1D; /*空读IICD*/ while (!IIC1S_IICIF); IIC1S_IICIF = 1;

IIC1C_MST = 0; /*IIC模块变为从设备模式,产生停止信号*/ cRecvData = IIC1D; /*从IIC1D读收到的数据*/ IICDelay();

return cRecvData; } 4.2 AD5933初始化程序设计

AD5933初始化主要是配置起始频率寄存器、频率增量寄存器、频率点个数寄存器,起始频率和频率分量寄存器的代码的计算方法为要求的起始频率值或者频率增量值除以四分之一的系统时钟再乘以227。当这三个参数都设置好之后,可以通过给控制寄存器写入起始频率扫描命令来实现扫描初始化。AD5933控制寄存器D15-D14位定义表5.1所示,AD5933控制寄存器D10、D9位定义如表5.2所示。

频率扫描的具体过程包括三部分:

(1)进入标准模式,在写入开始频率扫描控制字到控制寄存器之前,首先要写入标准模式控制字到控制寄存器,在这个模式中VOUT和VIN引脚被内部接到地,因此在外部电阻或者电阻和地之间没有直流偏置。

(2)进入初始化模式。在写入开始频率控制字到控制寄存器后将进入初始化模式。在这个模式下,电阻已经被起始频率信号激励,但没有进行测量。用户可

以通过程序设置在写入频率扫描命令到控制寄存器来启动进入频率扫描模式之前的时间。

(3)进入频率扫描模式。用户通过写入频率扫描控制字。在这个模式中,ADC在设定时间周期过去之后开始测量。用户可以通过在每个频率点测量之前设置寄存器8Ah和8Bh的值来控制输出频率信号的周期数。

AD5933初始化的程序代码如下。函数void InitAD5933(void) 功能是实现起始频率寄存器、频率增量寄存器、频率点个数寄存器三个寄存器的配置。本课题设计正弦信号峰峰值为2V,可编程放大器放大倍数选择1倍,测量系统使用AD5933内部时钟。起始频率程序设置为1KHz,频率增量程序设置为100Hz。 void InitAD5933(void) {

WriteEEPROM(0x80,0xB3);

WriteEEPROM(0x81,0x00); /*标准模式、2.0Vp-p 、PGA=1、内部系统时钟*/

WriteEEPROM(0x82,0x00); /*起始频率等于1 KHz*/ WriteEEPROM(0x83,0x83); WriteEEPROM(0x84,0x12); WriteEEPROM(0x85,0x00); WriteEEPROM(0x86,0x0D);

WriteEEPROM(0x87,0x1B); /*频率增量为100Hz*/ WriteEEPROM(0x88,0x01);

WriteEEPROM(0x89,0xFF); /*测量点数*/ WriteEEPROM(0x8A,0x01);

WriteEEPROM(0x8B,0xFF); /*建立等待周期数*/ WriteEEPROM(0x80,0x13); /*起始频率初始化*/ WriteEEPROM(0x80,0x23); /*启动频率扫描,在设定等待时间周期后开始测量*/ }

图4.2中给出了AD5933测量的软件流程图。这是AD5933完成对电容传感器测量的过程。测量的结果以补码的形式存放在实部和虚部寄存器中。按照I2C协议传输到单片机传输进行后续的处理,对同一个频率点重复测量8次,测量8次后测量结束。

程序入口写入频率扫描参数到相应寄存器(1)起始频率寄存器(2)扫描频率点数(3)频率增量设置AD5933进入标准模式写开始频率命令到控制寄存器在足够的等待时间后开始频率扫描NDFT是否完成Y从实部和虚部寄存器中读取数重复当前频率命令到控制寄存器是否达到测量次数NY测量结束

图4.2 AD5933测量流程图 5. 系统创新

本设计应用了AD5933并自己设计制作了传感器,并且考虑到温度的影响,加入了测温电路,软件能根据当前温度计算出正常润滑油的介电参数(还有可能是电导、阻抗角等)从而判断当前测量数据是否超标。具有精度高、功耗低等优点。 6. 评测与结论

评测:本润滑油检测仪通过测试待测润滑油的介电常数ε的大小来判断润滑的品质。经过几个月的努力,完成了基于介电原理的实验型润滑油检测仪的设计以及程序的设计,达到了预期的目标。

本次设计完成的主要工作如下: (1)电容式传感器方案选取与设计;

(2)设计了AD5933与LM3S811微控制器I2C通信电路,3.3V稳压电路,LCD显示电路,报警电路;

(3)设计了AD5933初始化程序、数据处理程序以及显示程序

结论:尽管设计和制作润滑油检测仪花费了大量精力,但最终发现AD5933的测量效果并不十分理想,测量准确率并不高,这有待于今后这几个月的进一步努力。

附录:硬件展示

AD5933属于SSOP贴片式封装,由于管脚非常微小,在电路板制作时不能直接焊接,必须做AD5933的转接板。AD5933阻抗测量系统板如图所示。在系统板上,包含了由LM317组成的3.3稳压电路、报警电路以及反馈电阻网络。反馈电阻的选取是采用拨码开关实现的。

报警灯 AD5933 LM317 反馈电阻网络

AD5933阻抗测量系统板

AD5933阻抗测量系统板在进行测量时,还需要LM3S811微控制进行控制,其实物连接图如图7.1所示。微控制器通过I2C通信对AD5933进行初始化,测量完成后,微控制器读取AD5933实部、虚部寄存器的数据进行处理、运算,最终得到润滑油的介电常数。

参 考 文 献

[1] 张翠凤.润滑液油监测与诊断技术(一).设备管理与维修.2002.(3):42-44 [2] 周文新,周洪澍.机械设备的油液监测技术.石油商技.2005.(1):28-30 [3] Peng,Z:Kessissoglou,N J;Cox,M A study of the effect of contaminant

particlein lubricants using wear debris and vibration condition monitoring techniques,wear,2005(258)II 1651—1662

[4] 巴鹏.润滑系统污染控制与设备车辆润滑技术.沈阳:沈阳出版社

2005.159-175

[5] 徐唐钢.车用润滑油的作用及其选用.咸宁学院学报.2006.(5):201,205 [6] [7] [8] [9]

胡理琳.船用油液检测技术.青岛远洋船员学院学报.2003.(2):42-44 道华,李玲,朱艳.传感器电路分析与设计.武昌:武汉大学出版社,2000.3-216 Analog Devices 公司,AD5933 DataSheet,Rev.B,2005 陈杰,黄湾.传感器与检测技术.第一版.北京:高等教育出版设,2002.77-94

[10] 王爱玲,房亚民.电容传感器寄生电容干扰的产生原因及消除方法.华北科技学院学报2005.(1):93—95

[11] 陈霞,吴春旺.电容传感器在使用中存在的几个问题及处理方法.山西电子

技术.2005.(4):27-28 [12] 陈敏,杨欣荣.测量油品含水量的电容式传感器机理.传感器技术.2002.(7):

15—17,20 [13] 费逸伟,李华强,钟新辉.润滑油液污染的快速测定研究及应用.新技术新

工艺.2005(10):22-23

[14] 赵方,谢友柏,姚志刚.电容传感器用于油品在线监测的实验研究.润滑与

密封.1999.(增刊):20-22

[15] 赵方,谢友柏,姚志刚.一种用于油品在线监测电容传感器设计.润滑与密

封.1999.(5):54—56

[16] 熊葵容,倪德儒.电容传感器的边缘效应.传感器世界.1998.(3):16-19


本科组_低功耗应用类_河南工业大学_基于介电原理的润滑油检测(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数学建模实验拟合

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: