传感器与检测技术课程设计说明书
称重传感器设计
专 业:
班 级:
完成时间: 2012年11月
称重传感器设计
一、设计方案:
方案一:选用电阻应变片式传感器,它是一种利用金属的应变效应,将各种力或与力相关的非电量转化成电量的结构型传感器。电阻应变式是电阻应变式传
感器的核心元件,其工作原理是基于材料的电阻应变效应,电阻应变片作为敏感元件结合弹性元件构成力学量传感器,有温度误差小、灵敏度高、测量精度高、性能稳定等优点,是市面上常见的元件,但有一定的横向效应和要用黏结剂而使灵敏系数下降,且价格也相对较高。
方案二:选用压阻式传感器,它是用半导体应变片制作的传感器,其工作原理是基于半导体材料的压阻效应,其灵敏系数比金属电阻应变片约高50倍,但这种传感器的测量准确度受到非线性和温度的影响,因此要对其进行零点温度补偿和灵敏度温度补偿,其价格也相对较便宜。
通过比较,我们选用应变片式传感器。
二、设计原理:
压阻式传感器是将集成在硅片上的4个等值电阻连成平衡电桥,通过直流电源给电桥和放大电路提供电源,是电路处于运行状态,当被测量作用于硅片上时,电阻值发生变化,电桥失去平衡,产生电压输出,由于产生的电压变化很小,所以就要经过放大电路进行电压放大,为以后的转换电路有一定的转换电压。
我们取力的变化与电压的输出接近线性的区域作为传感的有效范围,并只能在这个范围内,这个传感器所测的数据才可能误差较小,才具有可行性,因此我们可以通过观察电压的输出来判断所加力的大小,从而达到测量力大小的效果,并具有一定的可靠性。
三、电路图设计:
电桥电路:
图1
如图1为电桥电路模拟图,输出端14、17接至放大电路的两个同向输入端。R8、R9、R10、R11分别为半导体应变片的阻值,由于是半导体材料,所以就要进行温度补偿来提高灵敏度,电位器R12是用来调零的,R17是采用负温度系数且阻值较大的热敏电阻,主要起补偿作用,适当选择他们的阻值,可以使电桥失调为零,而且温度变化原则上不会引起零点漂移。在电源回路中串联二极管是用来补偿灵敏度温漂的。温度升高时,灵敏度降低,这时如果提高电源的电压,使电桥的输出适当增大,便可达到补偿的目的;反之,温度降低时,灵敏度升高,如果使电源电压降低,电桥的输出适当减小,同样可达到补偿的目的,由于二极管PN 结的温度特性为负值,温度每升高1℃时,正向压降减少1.9~2.4mV,适当数量的二极管串联在电桥的电源电路中,可达到补偿的目的。
电桥处于平衡时,输出电压为U0=0,若个桥臂均有相应的电阻增加△R8、△R9、△R10、△R11,则有: U 0=U (R 8+∆R 8)(R 9+∆R 9) -(R 10+∆R 10)(R 11+∆R 11) (R 8+∆R 8+R 10+∆R 10)(R 9+∆R 9+R 11+∆R 11)
由于采用等臂电桥,即R 8=R 9=R 10=R 11=R , 则 U 0=U R (∆R 8-∆R 10-∆R 11+∆R 9) +∆R 8∆R 9-∆R 10∆R 11 (2R +∆R 8+∆R 10)(2R +∆R 9+∆R 11)
当∆R ≈(7~3) R 时,略去上式中的高阶微分小量,有 U 0=4(R -R -R +R ) (和差特性)
即:U 0=(ε8-ε10-ε11+ε9)
四、放大电路的设计:
仪用放大器电路:
图2
仪用放大器电路如图2所示,它是由运放U1、U2按同相输入接法组成第一级差分放大电路,运放U3组成第二级差分放大电路。在第一级电路中,U1、U3同向输入端接电桥输出电压,R1和两个R2组成的反馈网络,引入了负反馈,两运放U1、U2的两输入端形成虚短虚断,因而有输入电阻无穷大,且有V R 7=v 2-v 1(下标为图2中的数字和标号,下同)和V R /R 7=(v 3-v 4) /(2R 1+R 7) 7
则:v 3-v 4=(2R 1+R 7) V R 7/R
V 7=-R 5(v 3-v 4) /R 3=-R 5(1+2R 1/R 7)(v 2-v 1) /R 3
故得:A v =V 7/(v 2-v 1) =-R 5(1+2R 1/R 7) /R 3
通常R1、R3、R5为给定值,R7为可变电阻,调节R7的值,即可改变电压增益Av ,在这里给R1、R3、R5适当的电阻值,可得适合的增益,此电路的增益为114左右,确保了运放没处在饱和状态。
A/D转化器选取方案
方案一:ICL7107A/D转化器
ICL7106和ICL7107是高性能,低功耗三位半数字A/D转电路。它包含七段译码器,显示驱动器,参考源和时钟系统。ICl7107可直接驱动数码管,具有低于10µV 自动校零功能,零漂小于1µV/°C 低于10pA 的输入电流,极性转换误差小于一个字。由于两个输入端最大承受电压为200mV 因此要实现最大值为2000mV 的显示可以用以下分压形式(本设计所采用的)如图5所示:ICl7107
型A/D转换器是把模拟电路与数字电路集成在一块芯片上的大规模的CMOS 集成电路,它具有功耗低、输入阻抗高、噪声低,能直接驱动共阳极LED 显示器,不需另加驱动器件,使转换电路简化等特点。由于所选用的芯片ICl7107已经具有译码功能,故在显示时只需要接上数码显示器即可用于显示。
将放大的电压值输入芯片ICL7107,通过芯片将数值显示在数码管上,其连接电路如图3所示:
图3、 ICL7107与数码管连接电路图
数码管显示电路
由于ICL7107的输出电压可直接供给七段显示器的输入,因此可直接将七段显示器接到ICL7107的输出端口上。ICL7107支持3段半的输出,因此需要用到四个七段显示器,其中3个可用到七个二极管显示段,另外1个只需要用到b 、c 两段,4个七段显示器都不需要用到小数点显示位,即DP 显示位。
ICL 的输出时正电压,因此本次课程设计使用的是共阴极的七段显示器,其引脚分布图为
显示部分由四个一位共阳数码管组成,其管脚、原理图如图3所示:
图3 数码管管脚、原理图
由于所选用的芯片ICL7107已经具有译码功能,故在显示时只需要接上数码显示器即可用于显示。
方案二:HX711称重传感器专用模拟/数字(A/D)转换器芯片 HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A 或通道B ,与其内部的低噪声可编程放大器相连。通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV 或±40mV 。通道B 则为固定的64 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。
模拟输入
通道A 模拟差分输入可直接与桥式传感器的差分输出相接。由于桥式传感器输出的信号较小,为了充分利用A/D 转换器的输入动态范围,该通道的可编程增益较大,为128 或64。这些增益所对应的满量程差分输入电压分别±20mV 或
±40mV 。通道B 为固定的64 增益,所对应的满量程差分输入电压为±40mV 。通道B 应用于包括电池在内的系统参数检测。
供电电源
数字电源(DVDD) 应使用与MCU 芯片相同的的数字供电电源。HX711 芯片内的稳压电路可同时向A/D 转换器和外部传感器提供模拟电源。稳压电源的供电电压(VSUP) 可与数字电源(DVDD) 相同。稳压电源的输出电压值(V A VDD )由外部分压电阻R1 、R2 和芯片的输出参考电压VBG 决定(图1),V A VDD=VBG(R1+R2 )/R2。应选择该输出电压比稳压电源的输入电压(VSUP)低至少100mV 。如果不使用芯片内的稳压电路,管脚VSUP 和管脚A VDD 应相连,并接到电压为2.6~ 5.5V 的低噪声模拟电源。管脚VBG 上不需要外接电容,管脚VFB 应接地,管脚BASE 为无连接。
时钟选择
如果将管脚XI 接地,HX711 将自动选择使用内部时钟振荡器,并自动关闭外部时钟输入和晶振的相关电路。这种情况下,典型输出数据速率为10Hz 或80Hz 。如果需要准确的输出数据速率,可将外部输入时钟通过一个20pF 的隔直电容连接到XI 管脚上,或将晶振连接到XI 和XO 管脚上。这种情况下,芯片内的时钟振荡器电路会自动关闭,晶振时钟或外部输入时钟电路被采用。此时,若晶振频率为11.0592MHz, 输出数据速率为准确的10Hz 或80Hz 。输出数据速率与晶振频率以上述关系按比例增加或减少。使用外部输入时钟时,外部时钟信号不一定需要为方波。可将MCU 芯片的晶振输出管脚上的时钟信号通过20pF 的隔直电容连接到XI 管脚上,作为外部时钟输入。外部时钟输入信号的幅值可低至150mV 。
串口通讯
串口通讯线由管脚PD_SCK 和DOUT 组成,用来输出数据,选择输入通道和增益。当数据输出管脚DOUT 为高电平时,表明A/D 转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK 应为低电平。当DOUT 从高电平变低电平后,PD_SCK 应输入25 至27 个不等的时钟脉冲(图二)。其中第一个时钟脉冲的上升沿将读出输出24 位数据的最高位(MSB ),直至第24 个时钟脉冲完成,24 位输出数据从最高位至最低位逐位输出完成。第25至27 个时钟脉冲
用来选择下一次A/D 转换的输入通道和增益,参见表1。
表1、输入通道和增益选择
PD_SCK 的输入时钟脉冲数不应少于25 或多于27,否则会造成串口通讯错误。当A/D 转换器的输入通道或增益改变时,A/D 转换器需要4 个数据输出周期才能稳定。DOUT 在4 个数据输出周期后才会从高电平变低电平,输出有效数据。 复位和断电
当芯片上电时,芯片内的上电自动复位电路会使芯片自动复位。管脚PD_SCK 输入用来控制HX711 的断电。当PD_SCK 为低电平时,芯片处于正常工作状态。
如果PD_SCK 从低电平变高电平并保持在高电平超过60μs ,HX711 即进入断电状态如使用片内稳压电源电路,断电时,外部传感器和片内A/D 转换器会被同时断电。当PD_SCK 重新回到低电平时,芯片会自动复位后进入正常工作状态。芯片从复位或断电状态进入正常工作状态后,通道A 和增益128 会被自动选择作为第一次A/D 转换的输入通道和增益。随后的输入通道和增益选择由PD_SCK 的脉冲数决定,参见串口通讯一节。芯片从复位或断电状态进入正常工作状态后,A/D 转换器需要4 个数据输出周期才能稳定。DOUT 在4 个数据输出周期后才会从高电平变低电平,输出有效数据。
综合比较,我们选用HX711称重传感器专用模拟/数字(A/D)转换器芯片。 传感转化电路图
PCB 图
电路的安装与调试:
方案一电桥调零时放大电路输出结果
电桥的调零,通过电位器R12即可,观察万用表的读数是否为0或接近0为止。图6为电桥调零是的输出电压,图7为经过仪用放大器第一级放大的输出电压,图8为反向放大器的输出电压。
图5 图6 图7 方案二实物测试结果图
图
8
图9
LM324集成运放的功能及其参数说明:
图10 LM324管脚图
LM324内部包括有四个独立的、高增益、内部频率补偿的运算防盗器,
适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关,它的适用范围包括传感器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
它的特点是:内部频率补偿;直流电压增益高(约100dB );单位增益频率宽(约1MHz );电源电压范围宽(单电源3-15V ,双电源±1.5V-±16V ),低功耗电流,适合于电池供电;低输入偏流;低输入失调电压和失调电流;共模输入电压范围宽。
ICL7107A/D转化芯片说明
表3、 ICl7107管脚说明
图11 ICL7107管脚图
称重程序设计 #include
#include
#define uchar unsigned char #define uint unsigned int
extern void lcdSet();
extern void display(uchar , uchar , uchar *); extern void writeCommand(uchar); extern void writeData(uchar); extern bit lcdBusy(); extern void delay(uint);
sbit ADDO=P1^0; sbit ADSK=P1^1; sbit FMQ=P3^0;
uchar discode[7]; unsigned int ad_data; float temp_data; static uint k=6986; uchar num=0; bit jg_flag=0;
unsigned int ReadCount(); void ad_data_op(); void adjust_data();
void main() { lcdSet(); lcdBusy(); delay(10);
display(1,3,"电子秤");
display(2,1,"作者:吴畏");
display(3,1,"将志强,曾马龙"); display(4,1,"鲁梦臣,赵慧龙");
for(num=0;num
}
writeCommand(0x01);
while(1)
{ display(1,3,"电子秤"); display(2,6,"Kg"); ad_data_op(); if(temp_data>=2000) { display(2,2,"警告:超出压限"); FMQ=0; jg_flag=1; } else { FMQ=1; if(jg_flag==1) { jg_flag=0; ad_data=0; writeCommand(0x01); } } display(2,3,discode); delay(500); } }
unsigned int ReadCount() {
unsigned long Count; unsigned int ADval; unsigned char i;
ADSK=0; Count=0;
while(ADDO); for(i=0;i
ADSK=1;
Count=Count^0x800000; ADSK=0; ADval = (uint)(Count>>8); //取高十六位有效值 return(ADval); }
void ad_data_op()
{ ad_data=ReadCount(); temp_data=(float)ad_data*0.0059; temp_data*=21; temp_data-=k;
ad_data=(uint)temp_data; discode[0]=ad_data/10000+'0'; discode[1]=(ad_data%10000)/1000+'0'; discode[2]='.'; discode[3]=(ad_data%1000)/100+'0'; discode[4]= (ad_data%100)/10+'0'; discode[5]= ad_data%10+'0'; discode[6]='\0'; }
void adjust_data() { if(temp_data>0) { k++; } if(temp_data
传感器与检测技术课程设计说明书
称重传感器设计
专 业:
班 级:
完成时间: 2012年11月
称重传感器设计
一、设计方案:
方案一:选用电阻应变片式传感器,它是一种利用金属的应变效应,将各种力或与力相关的非电量转化成电量的结构型传感器。电阻应变式是电阻应变式传
感器的核心元件,其工作原理是基于材料的电阻应变效应,电阻应变片作为敏感元件结合弹性元件构成力学量传感器,有温度误差小、灵敏度高、测量精度高、性能稳定等优点,是市面上常见的元件,但有一定的横向效应和要用黏结剂而使灵敏系数下降,且价格也相对较高。
方案二:选用压阻式传感器,它是用半导体应变片制作的传感器,其工作原理是基于半导体材料的压阻效应,其灵敏系数比金属电阻应变片约高50倍,但这种传感器的测量准确度受到非线性和温度的影响,因此要对其进行零点温度补偿和灵敏度温度补偿,其价格也相对较便宜。
通过比较,我们选用应变片式传感器。
二、设计原理:
压阻式传感器是将集成在硅片上的4个等值电阻连成平衡电桥,通过直流电源给电桥和放大电路提供电源,是电路处于运行状态,当被测量作用于硅片上时,电阻值发生变化,电桥失去平衡,产生电压输出,由于产生的电压变化很小,所以就要经过放大电路进行电压放大,为以后的转换电路有一定的转换电压。
我们取力的变化与电压的输出接近线性的区域作为传感的有效范围,并只能在这个范围内,这个传感器所测的数据才可能误差较小,才具有可行性,因此我们可以通过观察电压的输出来判断所加力的大小,从而达到测量力大小的效果,并具有一定的可靠性。
三、电路图设计:
电桥电路:
图1
如图1为电桥电路模拟图,输出端14、17接至放大电路的两个同向输入端。R8、R9、R10、R11分别为半导体应变片的阻值,由于是半导体材料,所以就要进行温度补偿来提高灵敏度,电位器R12是用来调零的,R17是采用负温度系数且阻值较大的热敏电阻,主要起补偿作用,适当选择他们的阻值,可以使电桥失调为零,而且温度变化原则上不会引起零点漂移。在电源回路中串联二极管是用来补偿灵敏度温漂的。温度升高时,灵敏度降低,这时如果提高电源的电压,使电桥的输出适当增大,便可达到补偿的目的;反之,温度降低时,灵敏度升高,如果使电源电压降低,电桥的输出适当减小,同样可达到补偿的目的,由于二极管PN 结的温度特性为负值,温度每升高1℃时,正向压降减少1.9~2.4mV,适当数量的二极管串联在电桥的电源电路中,可达到补偿的目的。
电桥处于平衡时,输出电压为U0=0,若个桥臂均有相应的电阻增加△R8、△R9、△R10、△R11,则有: U 0=U (R 8+∆R 8)(R 9+∆R 9) -(R 10+∆R 10)(R 11+∆R 11) (R 8+∆R 8+R 10+∆R 10)(R 9+∆R 9+R 11+∆R 11)
由于采用等臂电桥,即R 8=R 9=R 10=R 11=R , 则 U 0=U R (∆R 8-∆R 10-∆R 11+∆R 9) +∆R 8∆R 9-∆R 10∆R 11 (2R +∆R 8+∆R 10)(2R +∆R 9+∆R 11)
当∆R ≈(7~3) R 时,略去上式中的高阶微分小量,有 U 0=4(R -R -R +R ) (和差特性)
即:U 0=(ε8-ε10-ε11+ε9)
四、放大电路的设计:
仪用放大器电路:
图2
仪用放大器电路如图2所示,它是由运放U1、U2按同相输入接法组成第一级差分放大电路,运放U3组成第二级差分放大电路。在第一级电路中,U1、U3同向输入端接电桥输出电压,R1和两个R2组成的反馈网络,引入了负反馈,两运放U1、U2的两输入端形成虚短虚断,因而有输入电阻无穷大,且有V R 7=v 2-v 1(下标为图2中的数字和标号,下同)和V R /R 7=(v 3-v 4) /(2R 1+R 7) 7
则:v 3-v 4=(2R 1+R 7) V R 7/R
V 7=-R 5(v 3-v 4) /R 3=-R 5(1+2R 1/R 7)(v 2-v 1) /R 3
故得:A v =V 7/(v 2-v 1) =-R 5(1+2R 1/R 7) /R 3
通常R1、R3、R5为给定值,R7为可变电阻,调节R7的值,即可改变电压增益Av ,在这里给R1、R3、R5适当的电阻值,可得适合的增益,此电路的增益为114左右,确保了运放没处在饱和状态。
A/D转化器选取方案
方案一:ICL7107A/D转化器
ICL7106和ICL7107是高性能,低功耗三位半数字A/D转电路。它包含七段译码器,显示驱动器,参考源和时钟系统。ICl7107可直接驱动数码管,具有低于10µV 自动校零功能,零漂小于1µV/°C 低于10pA 的输入电流,极性转换误差小于一个字。由于两个输入端最大承受电压为200mV 因此要实现最大值为2000mV 的显示可以用以下分压形式(本设计所采用的)如图5所示:ICl7107
型A/D转换器是把模拟电路与数字电路集成在一块芯片上的大规模的CMOS 集成电路,它具有功耗低、输入阻抗高、噪声低,能直接驱动共阳极LED 显示器,不需另加驱动器件,使转换电路简化等特点。由于所选用的芯片ICl7107已经具有译码功能,故在显示时只需要接上数码显示器即可用于显示。
将放大的电压值输入芯片ICL7107,通过芯片将数值显示在数码管上,其连接电路如图3所示:
图3、 ICL7107与数码管连接电路图
数码管显示电路
由于ICL7107的输出电压可直接供给七段显示器的输入,因此可直接将七段显示器接到ICL7107的输出端口上。ICL7107支持3段半的输出,因此需要用到四个七段显示器,其中3个可用到七个二极管显示段,另外1个只需要用到b 、c 两段,4个七段显示器都不需要用到小数点显示位,即DP 显示位。
ICL 的输出时正电压,因此本次课程设计使用的是共阴极的七段显示器,其引脚分布图为
显示部分由四个一位共阳数码管组成,其管脚、原理图如图3所示:
图3 数码管管脚、原理图
由于所选用的芯片ICL7107已经具有译码功能,故在显示时只需要接上数码显示器即可用于显示。
方案二:HX711称重传感器专用模拟/数字(A/D)转换器芯片 HX711 是一款专为高精度称重传感器而设计的24位A/D 转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A 或通道B ,与其内部的低噪声可编程放大器相连。通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV 或±40mV 。通道B 则为固定的64 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。
模拟输入
通道A 模拟差分输入可直接与桥式传感器的差分输出相接。由于桥式传感器输出的信号较小,为了充分利用A/D 转换器的输入动态范围,该通道的可编程增益较大,为128 或64。这些增益所对应的满量程差分输入电压分别±20mV 或
±40mV 。通道B 为固定的64 增益,所对应的满量程差分输入电压为±40mV 。通道B 应用于包括电池在内的系统参数检测。
供电电源
数字电源(DVDD) 应使用与MCU 芯片相同的的数字供电电源。HX711 芯片内的稳压电路可同时向A/D 转换器和外部传感器提供模拟电源。稳压电源的供电电压(VSUP) 可与数字电源(DVDD) 相同。稳压电源的输出电压值(V A VDD )由外部分压电阻R1 、R2 和芯片的输出参考电压VBG 决定(图1),V A VDD=VBG(R1+R2 )/R2。应选择该输出电压比稳压电源的输入电压(VSUP)低至少100mV 。如果不使用芯片内的稳压电路,管脚VSUP 和管脚A VDD 应相连,并接到电压为2.6~ 5.5V 的低噪声模拟电源。管脚VBG 上不需要外接电容,管脚VFB 应接地,管脚BASE 为无连接。
时钟选择
如果将管脚XI 接地,HX711 将自动选择使用内部时钟振荡器,并自动关闭外部时钟输入和晶振的相关电路。这种情况下,典型输出数据速率为10Hz 或80Hz 。如果需要准确的输出数据速率,可将外部输入时钟通过一个20pF 的隔直电容连接到XI 管脚上,或将晶振连接到XI 和XO 管脚上。这种情况下,芯片内的时钟振荡器电路会自动关闭,晶振时钟或外部输入时钟电路被采用。此时,若晶振频率为11.0592MHz, 输出数据速率为准确的10Hz 或80Hz 。输出数据速率与晶振频率以上述关系按比例增加或减少。使用外部输入时钟时,外部时钟信号不一定需要为方波。可将MCU 芯片的晶振输出管脚上的时钟信号通过20pF 的隔直电容连接到XI 管脚上,作为外部时钟输入。外部时钟输入信号的幅值可低至150mV 。
串口通讯
串口通讯线由管脚PD_SCK 和DOUT 组成,用来输出数据,选择输入通道和增益。当数据输出管脚DOUT 为高电平时,表明A/D 转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK 应为低电平。当DOUT 从高电平变低电平后,PD_SCK 应输入25 至27 个不等的时钟脉冲(图二)。其中第一个时钟脉冲的上升沿将读出输出24 位数据的最高位(MSB ),直至第24 个时钟脉冲完成,24 位输出数据从最高位至最低位逐位输出完成。第25至27 个时钟脉冲
用来选择下一次A/D 转换的输入通道和增益,参见表1。
表1、输入通道和增益选择
PD_SCK 的输入时钟脉冲数不应少于25 或多于27,否则会造成串口通讯错误。当A/D 转换器的输入通道或增益改变时,A/D 转换器需要4 个数据输出周期才能稳定。DOUT 在4 个数据输出周期后才会从高电平变低电平,输出有效数据。 复位和断电
当芯片上电时,芯片内的上电自动复位电路会使芯片自动复位。管脚PD_SCK 输入用来控制HX711 的断电。当PD_SCK 为低电平时,芯片处于正常工作状态。
如果PD_SCK 从低电平变高电平并保持在高电平超过60μs ,HX711 即进入断电状态如使用片内稳压电源电路,断电时,外部传感器和片内A/D 转换器会被同时断电。当PD_SCK 重新回到低电平时,芯片会自动复位后进入正常工作状态。芯片从复位或断电状态进入正常工作状态后,通道A 和增益128 会被自动选择作为第一次A/D 转换的输入通道和增益。随后的输入通道和增益选择由PD_SCK 的脉冲数决定,参见串口通讯一节。芯片从复位或断电状态进入正常工作状态后,A/D 转换器需要4 个数据输出周期才能稳定。DOUT 在4 个数据输出周期后才会从高电平变低电平,输出有效数据。
综合比较,我们选用HX711称重传感器专用模拟/数字(A/D)转换器芯片。 传感转化电路图
PCB 图
电路的安装与调试:
方案一电桥调零时放大电路输出结果
电桥的调零,通过电位器R12即可,观察万用表的读数是否为0或接近0为止。图6为电桥调零是的输出电压,图7为经过仪用放大器第一级放大的输出电压,图8为反向放大器的输出电压。
图5 图6 图7 方案二实物测试结果图
图
8
图9
LM324集成运放的功能及其参数说明:
图10 LM324管脚图
LM324内部包括有四个独立的、高增益、内部频率补偿的运算防盗器,
适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关,它的适用范围包括传感器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
它的特点是:内部频率补偿;直流电压增益高(约100dB );单位增益频率宽(约1MHz );电源电压范围宽(单电源3-15V ,双电源±1.5V-±16V ),低功耗电流,适合于电池供电;低输入偏流;低输入失调电压和失调电流;共模输入电压范围宽。
ICL7107A/D转化芯片说明
表3、 ICl7107管脚说明
图11 ICL7107管脚图
称重程序设计 #include
#include
#define uchar unsigned char #define uint unsigned int
extern void lcdSet();
extern void display(uchar , uchar , uchar *); extern void writeCommand(uchar); extern void writeData(uchar); extern bit lcdBusy(); extern void delay(uint);
sbit ADDO=P1^0; sbit ADSK=P1^1; sbit FMQ=P3^0;
uchar discode[7]; unsigned int ad_data; float temp_data; static uint k=6986; uchar num=0; bit jg_flag=0;
unsigned int ReadCount(); void ad_data_op(); void adjust_data();
void main() { lcdSet(); lcdBusy(); delay(10);
display(1,3,"电子秤");
display(2,1,"作者:吴畏");
display(3,1,"将志强,曾马龙"); display(4,1,"鲁梦臣,赵慧龙");
for(num=0;num
}
writeCommand(0x01);
while(1)
{ display(1,3,"电子秤"); display(2,6,"Kg"); ad_data_op(); if(temp_data>=2000) { display(2,2,"警告:超出压限"); FMQ=0; jg_flag=1; } else { FMQ=1; if(jg_flag==1) { jg_flag=0; ad_data=0; writeCommand(0x01); } } display(2,3,discode); delay(500); } }
unsigned int ReadCount() {
unsigned long Count; unsigned int ADval; unsigned char i;
ADSK=0; Count=0;
while(ADDO); for(i=0;i
ADSK=1;
Count=Count^0x800000; ADSK=0; ADval = (uint)(Count>>8); //取高十六位有效值 return(ADval); }
void ad_data_op()
{ ad_data=ReadCount(); temp_data=(float)ad_data*0.0059; temp_data*=21; temp_data-=k;
ad_data=(uint)temp_data; discode[0]=ad_data/10000+'0'; discode[1]=(ad_data%10000)/1000+'0'; discode[2]='.'; discode[3]=(ad_data%1000)/100+'0'; discode[4]= (ad_data%100)/10+'0'; discode[5]= ad_data%10+'0'; discode[6]='\0'; }
void adjust_data() { if(temp_data>0) { k++; } if(temp_data