设计基于串行A/D转换器ADS1100、低功耗单片机AT89S52和LCD显示器的高精度电子秤。该高精度电子秤作用于传 感器的力转换成电压值,经A/D转换后用单片机进行处理,结果通过LCD显示。核心器件ADS1100是16位A/D转换器,在 使用中读数准确、反应灵敏,具有低功耗、超量程报警等功能。
物品称量是市场交易中最基本的活动,使用的衡具多种多样,如杆称、弹簧秤、电子秤等。传统的量具是 杆称或盘称,20世纪70年代开始出现了电子称。早期的电子称多通过模拟电路实现,随着电子技术的不断 发展,数字芯片的价格逐渐下降,模拟控制已逐步被数字控制替代,电子称的设计模式大都以微处理器为核 心,精度和可靠性有了明显提高,但市场上广泛使用的各式电子秤都采用8位A / D转换器和LED显示,具 有精度低和无法显示汉字等缺点[1]。采用16位A / D转换器ADS1100和LCD显示,设计一个读数准确、反应 灵敏,具有低功耗、超量程报警的电子秤。
1.系统结构设计及工作原理
高精度电子秤采用的压力传感器为电阻应变式压 力(称重)传感器,可用于测拉力和压力,它将作用于传 感器的拉力或压力转换为电压值,经过放大器放大后, 送人A/D转换器ADS1100,经A/D转换后用AT89X52单片机进行处理,结果通过LCD显示。系统结构框图如图1。
整个高精度电子秤具有超量程报警功能以及采用具有I2C串行接口的A/D转换器ADS1100,利用I2C总线协议,只需2根数据线和相应的控制线就可以工作, 大大减少了印刷电路板的布线数目和CPU的I/O 口利用数目。
2.高精度电子秤的硬件电路设计
基本框架包含电阻应变式称重传感器、模拟信号处理模块、A/D转换、超量程报警、LCD显示模块等,重 点给出各分电路的设计图和说明。
2.1电阻应变式称重传感器
电阻应变式称重传感器的原理:弹性体(弹性元件,敏感梁)在外力作用下产生弹性变形,使粘贴在它表 面的电阻应变片(转换元件)随同产生变形,电阻应变 片变形后,它的阻值发生变化(增多或减少),经相应的 测量电路把这一电阻变化转换为电信号(电压或电 流),完成将外力变换为电信号的过程' 电阻应变式 称重传感器有多种形式,使用最多的为桥路形式,如图 2。H为电阻应变式片;尽为10 kD多圈调零电 位器;R)为温度补偿电阻;五为传感器桥压;AV为传 感器输出。
当桥路中的某臂电阻发生变化时,桥路不平衡,桥路输出的变化量反映了压力的变化量。
2.2模拟信号处理模块
桥路输出的变化量通过模拟信号处理模块,经过二级放大,将微弱信号放大到A/D转换器可以分辨的 模拟信号,如图3。RW1为模拟信号处理零点调节器,可以利用该电位器调节零点,RW2为模拟信号处理放 大倍数调节器'.
2.3A/D转换
A/D转换部分采用ADS1100,ADS1100每秒可采样8,16,32或128次以进行A/D转换,并提供I2C端口与外部通信。片内可编程增益放大器能提供高达8倍的增益,允许对小信号进行测量。ADS1100有2种工作方式:单周期转换方式和连续周期转换方式。在单周期转换方式中,ADS 1100进行一次A/D转换后将自动掉 电以减少电流消耗。
2.3.1ADS1100引脚功能 引脚(VIN+)为差分信 号正输人端;引脚2(GND)为地线;引脚3 (SCL)为串 行时钟输人端;引脚4(SDA)为串行数据输人/输出端;
引脚5 (VDD)为+5 V电压输人端;引脚6(VIN-)为差 分信号负输人端。
2.3.2A/D转换电路 A/D转换电路如图4。
2.4ADS1100的内部寄存器
2.4.1输出寄存器 16位输出寄存器中含有上一次A/D转换的结果,该结果采取二进制的补码格式。在复 位或上电之后,输出寄存器被清零,并保持为0直到第一次A/D转换完成。输出寄存器的格式如表1。
2.4.2配置寄存器 8位配置寄存器用来控制ADS1100的工作方式、数据速率和可编程增益放大器设置如表2,配置寄存器的默认设置是8CH。
ST/BSY位表示它是被写人还是被读出。在连续 表3 DR位
方式中,ADS1100将忽略ST/BSY的值。位6和位5为 保留位,必须被置为“0”。SC位用于控制ADS1100的 工作方式。当SC为“ 1”时,ADS1100以单周期转换方 式工作;当SC为“0”时,ADS1100以连续转换方式工 作。该位的默认设置为0。位3和位2(DR位)用于控 制ADS1100的数据速率,其控制方式如表3。位1和0 (PGA位)用于控制ADS1100的增益设置,控制方式如 表 4。
2.5 ADS1100读写操作
ADS1100的读操作 从ADS1100中读出输出寄存器和配置寄存器的内容。为此要对ADS1100寻 址,并从器件中读出3个字节。前面的2个字节是输出寄存器的内容,第三个字节是配置寄存器的内容。从AD1100中读取多于3个字节的值是无效的。从第四个 字节开始的所有字节将为FFH。ADS1100的读操作时序如图5。
2.5.2 ADS1100的写操作 写新的内容至配置寄存器(但不能更改输出寄存器的内容),要对ADS1100寻 址,并对ADS1100配置寄存器写人一个字节。对ADS1100的写操作时序如图6。
2.6超量程报警
在测量过程中,当压力超过容限后,通过电压比较器开通硬件报警电路报警。如图7,当压力超出量程 后,输入A/D的模拟信号也有过压保护,不会损坏A/D转换器。
2.7 LCD显示模块
LCD显示模块采用RT12864图形点阵型液晶显 示模块,主要由行驱动器与列驱动器组成。可显示 128(列)64(行)点阵,可完成图形显示,也可显示84个 (16x16点阵)汉字。7条控制指与CPU接口采用8位 数据总线并口输人输出方式,RT12864液晶显示模块 电路如图8。
接口引脚说明:VSS为电源负端(0V);VDD为电 源正端(+5.0 V);V0为LCD驱动电压(外接可调电阻,可调节对比度)。RS =1表示无论单片机读/写操作,均 指向数据寄存器;RS =0表示当单片机进行读模块操 作,指向地址计数器。当单片机进行写模块操作,指向 地址寄存器。R/W=1读操作;R/W=0写操作。E为使 能信号,当R/W =H,E为高电平时读操作有效;当R/ W = L,E为下降沿时写操作有效。DB0?DB7为数据 总线;CS1为片选信号,左半屏64列选中(高电平有 效);CS2为片选信号,右半屏64列选中(高电平有 效);REST为复位控制信号(低电平有效);VOUT为 LCD驱动负电压输出端,RT12864液晶显示运行效果如图9。
3.高精度电子秤的软件设计
采用C语言编程,程序流程图如图10,图10为主 函数main()流程图。重点是ADS1100进行初始化 Init_ads 1100(0x8C)函数和读取ADS1100转换结果 Rd_ads1100()函数。
Init_ads1100(0x8C)函数
Init_ads1100(0x8C)函数代码如下: void Init_ads 1100(0x8C)
{ Start();
writebyte(0x90); /*写命令*/ writebyte(0x8C);Stop。;}
Start()函数、Stop() Start()函数的功能是使I2C总线开始工作,Stop()函数的功能是使I2C总线停止工 作,I2C总线的起始和停止条件如图11。
writebyte()函数 writebyte(0x90)函数向 ADS1100 发出写操作命令 90H,使 R/W=0;然后 writebyte(0x8C)函数向ADS1100的配置寄存器写人一个字节8CH,如图6。
Rd_ads1100()函数
Rd_ads1100()函数的功能是读取A/D转换结果,代码如下: unsigned int Rd_ads1100(void)
{ unsigned char H_AD; //H_AD用于存储高8位A/D转换结果 unsigned char L_AD; //L_AD用于存储低8位A/D转换结果 unsigned int T_AD; //T_AD用于存储总的A/D转换结果 Start();
writebyte(0x91); /*读命令*/
H_AD=Readbyte();
WriteACK(0);
L_AD=Readbyte();
WriteACK(1);
Stop();
T_AD=(0x00ff&H_AD)<<8|L_AD;// 高 8 位和低 8 位合并 return T_AD; }
3.2.1读转换结果 writebyte(0x91)函数向ADS1100发出读操作命令91H,使R/W=1;然后Readbyte()函数
从ADS1100的输出寄存器读出2个字节,2个字节分别为转换结果的高8位H_AD和低8位L_AD,如图5。
WriteACK()函数 根据I2C总线协议,读出高8位H_AD即一个字节数据后,在I2C总线上的第9个 时钟脉冲发送应答位为低电平ACK=0,表示字节传输完成;读出最后一个字节数据低8位L_AD,发送应答 位为高电平ACK=1,表示结束读数据,如图5,12。
4.结 论
(1)高精度电子秤的核心器件ADS1100是贴片封装,采用I2C串行总线,只需2根数据线和相应的控制换器供电,能够实现高精度电子秤的便携化。
(2)高精度电子秤的ADS1100是一种连续自校准ADC,可提供差分输人和16位无丢失码精度,达到16位 A/D转换的高精度,在使用中读数准确,反应灵敏,采用低功耗LCD显示,具有超量程报警功能。在同类产 品中具有很大优势,达到了预期的设计目标。