找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2209|回复: 4
收起左侧

想问一下基于51单片机智能体重秤的大体制作方法

[复制链接]
ID:503198 发表于 2019-4-2 14:06 | 显示全部楼层 |阅读模式
2黑币
求问硬件需要买什么以及大体做法(不需要软件程序)
要求是
1、重量检测范围:10-100kg
2、检测精度: 10g
我现在大体知道需要hx711模块了,还需要什么

回复

使用道具 举报

ID:490574 发表于 2019-4-12 14:30 | 显示全部楼层
CAD画出传感器的托盘,把压片电阻放进去放大后然后连上hx711
回复

使用道具 举报

ID:924572 发表于 2022-2-5 13:22 | 显示全部楼层
晶振 、 1602、 89c51、 按键......
回复

使用道具 举报

ID:587810 发表于 2022-2-5 21:05 | 显示全部楼层
你可以购买三方传感器,比如电信号传输,或者直接带通讯的,通过串口协议对带通讯的传感器采集数据,或者AD转换模块对电信号的传感器,这样方便又可靠,而且设备对环境的适应程度取决于你的传感器
回复

使用道具 举报

ID:1004151 发表于 2022-2-5 21:32 | 显示全部楼层
1. 100kg 传感器
满量程输出电压=激励电压*灵敏度2.0mv/v
例如:供电电压是5v 乘以灵敏度2.0mv/v=满量程10mv。
相当于有100Kg 重力产生时候产生10mV 的电压。
2. 711模块对产生的10mV 电压进行采样。
概述:711模块 A 通道带有128倍信号增益,可以将10mV 的电压放大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 的供电电压下100Kg 的传感器最大输出电压是4.3v*2mv/V = 8.6mV
经过128倍放大后,最大电压为8.6mV*128 = 1100.8mV
经过 AD 转换后输出的24bit 数字值最大为:
1100.8mV*(2^24) /4.3V ≈ 4294967
步骤3 :程序中数据如何转换 程序中通过
HX711_Buffer = HX711_Read();
获取当前采样的 AD 值,最大4294967,存放在 long 型变量 HX711_Buffer 中,
因 long 型变量计算速率和存放空间占用资源太多,固除以100,缩放为 int 型,
便于后续计算。
Weight_Shiwu = HX711_Buffer/100;
Weight_Shiwu 最大为42949。
步骤4 :如何将 AD  值反向转换为重力值 。
假设重力为 A Kg, (x<100Kg),测量出来的 AD 值为 y
100Kg 传感器输出,发送给 AD 模块儿的电压为 A Kg * 8.6mV / 100Kg = 0.086A mV
经过128倍增益后为 128 * 0.086A = 11.008AmV
转换为24bit 数字信号为 11.008A mV * 2^24  /4.3V = 42949.67296A
所以 y = 429496.7296A /100 = 429.4967296 A
因此得出 A = y / 429.4967296 Kg  
特别注意:  
因为不同的传感器斜率特性曲线不一样,因此,每一个传感器需要软件校正调零。
每个传感器都要校准。
unsigned long ReadCount(void)
{undefined
    unsigned long Count;
    unsigned char i;
    SCL=0;      //使能AD(PD_SCL 置低)
    Count=0;
  while(SDA); //AD转换未结束则等待,否则开始读取
    for (i = 0; i < 24; i++)
    {undefined
        SCL = 1;        //PD_SCL 置高(发送脉冲)
        Count=Count<<1; //下降沿来时变量Count左移一位,右侧补零
        SCL=0;          //PD_SCL 置低
        if(SDA) Count++;
    }
    SCL=1;
    Count=Count^0x800000;//第25个脉冲下降沿来时,转换数据
    SCL=0;
    return(Count);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表