微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 通俗易懂之电子称开发软件篇

通俗易懂之电子称开发软件篇

时间:10-02 整理:3721RD 点击:
通俗易懂之电子称开发软件篇 :程序才是一个项目的灵魂,就像心于人一样。
前两篇链接:
通俗易懂之电子称开发立项篇
http://bbs.elecfans.com/jishu_919726_1_1.html

通俗易懂之电子称开发硬件篇
http://bbs.elecfans.com/jishu_919727_1_1.html

这里我们重点讲解下HX711AD采集这块:
unsigned long HX711_Read(void)  
{
        unsigned long val = 0;
        unsigned char i = 0;
       
        GPIO_SetBits(ADIO,DATA);
        GPIO_ResetBits(ADIO,CLK);
        while(GPIO_ReadInputDataBit(ADIO,DATA));
        delay_us(1);
        for(i=0;i<24;i++)
        {
                GPIO_SetBits(ADIO,CLK);
                val=val<<1;
                delay_us(1);
                GPIO_ResetBits(ADIO,CLK);
                if(GPIO_ReadInputDataBit(ADIO,DATA))
                val++;
                delay_us(1);
        }
        GPIO_SetBits(ADIO,CLK);
        val = val^0x800000;
        delay_us(1);
        GPIO_ResetBits(ADIO,CLK);
        delay_us(1);
        return val;                
}

简单的128增益采集AD值函数;
***********************************
void Get_Maopi()
{
        HX711_Buffer = HX711_Read();
        Weight_Maopi = HX711_Buffer/100;               
}
***********************************
void Get_Weight(void)
{
        unsigned int g;
        HX711_Buffer = HX711_Read();
        HX711_Buffer = HX711_Buffer/100;
        if(HX711_Buffer > Weight_Maopi)                       
        {
                Weight_Shiwu = HX711_Buffer;
                Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                                       
               
                Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.22+0.05);        
                                                                                                                                               
        }
       
}
***********************************
简单的去皮和称重函数

下面讲解下重量转换:
基本原理讲解
1. 5kg 传感器
满量程输出电压=激励电压*灵敏度1.0mv/v
例如:供电电压是5v 乘以灵敏度1.0mv/v=满量程5mv。
相当于有5Kg 重力产生时候产生5mV 的电压。
2. 711模块对产生的5mV 电压进行采样。
概述:711模块 A 通道带有128倍信号增益,可以将5mV 的电压放大128倍,然
后采样输出24bit AD 转换的值,单片机通过指定时序将24bit 数据读出。
详细讲解程序计算原理:
小强电子设计
步骤1 :如何计算传感器供电电压
HX711可以在产生 VAVDD 和 AGND 电压,即711模块上的 E+和 E-电压。
该电压通过 VAVDD=VBG(R1 +R2 )/R2计算。
VBG 为模块儿基准电压1.25v
R1 = 20K,R2 = 8.2K
因此得出 VAVDD = 4.3V
(为了降低功耗,该电压只在采样时刻才有输出, 因此用万用表读取的值可能低
于4.3v,因为万用表测量的是有效值。 )
步骤2 :如何计算 AD  输出最大值
在4.3V 的供电电压下5Kg 的传感器最大输出电压是4.3v*1mv/V = 4.3mV
经过128倍放大后,最大电压为4.3mV*128 = 550.4mV
经过 AD 转换后输出的24bit 数字值最大为:
550.4mV*2 24 /4.3V ≈ 2147483
步骤3 :程序中数据如何转换
小强电子设计
程序中通过
HX711_Buffer = HX711_Read();
获取当前采样的 AD 值,最大2147483,存放在 long 型变量 HX711_Buffer 中,
因 long 型变量计算速率和存放空间占用资源太多,固除以100,缩放为 int 型,
便于后续计算。
Weight_Shiwu = HX711_Buffer/100;
Weight_Shiwu 最大为21474。
步骤4 :如何将 AD  值反向转换为重力值 。
假设重力为 A Kg, (x<5Kg),测量出来的 AD 值为 y
5Kg 传感器输出,发送给 AD 模块儿的电压为 A Kg * 4.3mV / 5Kg= 0.86A mV
经过128倍增益后为 128 * 0.86A= 110.08AmV
转换为24bit 数字信号为 110.08AmV * 2 24  / 4.3V = 429496.7296A
所以 y = 429496.7296A /100 = 4294.967296 A
因此得出 A = y / 4294.967296 Kg≈ y / 4.30 g
所以得出程序中计算公式
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.30+0.05);
//+0.05是为了四舍五入百分位
特别注意:
因为不同的传感器斜率特性曲线不一样,因此,每一个传感器需要矫正这里

其实最最简单的办法就是 找几个砝码 标定出这个系数,简单实用!

原理及封装定义,一看就懂了!


看一下  虽然看不懂  但是也要略微了解一下

单片机

又多了解了点知识。

感觉用MSP430可能更好,但价格比较高啊。

仪表放大器是不错啊

有参考价值,学习了。

低功耗的话 推荐430

跟小编学习一下,,

学习经验,,,,,,

感谢分享!

谢谢,学习了。

给力

xx

顶顶顶顶顶顶

非常好哈哈哈

刚毕业的时候 我就用这个 。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top