【精品博文】2016全国电子设计比赛“简易电子秤”的设计
硬件部分主要焊接4个电阻应变片搭建一个全桥电路,然后经过放大器,将电压信号放大,HX711拥有一个24位 AD 来采集电压值,经过数字量与重量值得转换(拟合方程) ,得到最终的真实重量值。
介绍一下电阻应变片,就是可以发生形变的电阻,电阻值改变电压或者电流就可以改变。(图一)
(图一电阻应变片)
然后就是利用这个电阻应变片搭建电路来测受力后发生的形变量,那为什么搭建全桥电路呢?
应变式传感器常用的测量电路有单臂电桥、差动半桥和差动全桥,其中差动全桥可提高电桥的灵敏度,消除电桥的非线性误差,并可消除温度误差等共模干扰。
一般在测量中都使用4片应变片组成差动全桥,本设计所采用的传感器就是全桥测量电路。 桥式测量电路有四个电阻,其中任何一个都可以是电阻应变片电阻,电桥的一个对角线接入工作电压U,另一个对角线位输出电压U0。当四个桥臂电阻达到相应关系时,电桥输出为零,或则就有电压输出,可用灵敏检流计来测量,所以电桥能够精确地测量微小的电阻变化。应变电阻作为桥臂电阻接在电桥电路中。无压力时,电桥平衡,输出电压为零;有压力时,电桥的桥臂电阻值发生变化,电桥失去平衡。 全桥测量电路中,将受力性质相同的两片应变片接入电桥对边。其输出灵敏度比半桥提高了一倍,非线性误差和温度误差均得到了改善。
(图2 放置位置)
(图 3 全桥电路)
然后将采集信号放大,AD转换,用了HX711.
HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。 所有控制信号由管脚驱动, 输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。通道A的可编程增益为128或64,通道B则为固定的64增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,芯片内的时钟振荡器不需要任何外接部件.
(图4 HX711)
然后对数据的处理采用了一种滤波方式,也算是自己改编的滤波方式,所谓滤波就是求平均值,让数值稳定下来。采用了一种滑动滤波,先进先出的原则,数据比较平滑。
看这个算法,先看看我以前的一道C语言题吧!
就是8个评委打分,去掉一个最低和一个最高分,其余求平均值。aver = (sum - a[max]-a[min])/6
所以就采用了这种思想。然后将最后一个数组元素值赋值给前一个元素值。a[i]=a[i+1]
递推平均滤波法(又称滑动平均滤波法)
把连续取得的N个采样值看成一个队列,队列的长度固定为N,
每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则),
把队列中的N个数据进行算术平均运算,获得新的滤波结果。
N值的选取:流量,N=12;压力,N=4;液面,N=4-12;温度,N=1-4。
优点:
对周期性干扰有良好的抑制作用,平滑度高;
适用于高频振荡的系统。
缺点:
灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差;
不易消除由于脉冲干扰所引起的采样值偏差;
不适用于脉冲干扰比较严重的场合;
比较浪费RAM。
while(1) { float filter_sum = 0; float sum =0 ; int i; sum = Read_HX711(); sum = sum/1000; filter_buf[FILTER_N] = sum;for(i = 0; i < FILTER_N; i++) {filter_buf[i] = filter_buf[i + 1]; if(filter_buf[i]>filter_buf[max]){ max = i;} if(filter_buf[i]<filter_buf[min]){ min = i;}filter_sum += filter_buf[i];} filter_sum = filter_sum - filter_buf[max] - filter_buf[min]; sum = filter_sum / FILTER_N-2 ;
最后是自己做一下拟合方程,将数字量转成重量。
可以用matlab,我们不会就没用(>﹏<)
根据电阻应变片的形变量(数字量)与所放标准砝码存在一定的线性比例关系。当未放任何物品时,电阻应变片的形变数字量为262.5,也就是形变量的漂移差值,然后根据50g、100g、150g所放砝码产生的形变量的差值,得出一元一次方程并呈现上升的趋势,所得线性方程为
sum = (sum*(50/16.3) -((2619*5)/16.3))。
做了滤波数据还是比较稳定的,就是6g左右误差为1左右,50g以上误差0.5以内。
设计照片留念:
可以交流哟~下面留言吧~~~