【雕爷学编程】Arduino动手做(72)---HX711 人体称重模块

2023-11-13

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)

实验七十二:人体秤50kg称重传感器模块(电阻应变半桥式)

在这里插入图片描述

在这里插入图片描述
应变片
是由敏感栅等构成用于测量应变的元件。电阻应变片的工作原理是基于应变效应制作的,即导体或半导体材料在外界力的作用下产生机械变形时,其电阻值相应的发生变化,这种现象称为“应变效应”。

在这里插入图片描述
为了系列实验和了解应变片,我特意去网上买了一片,就是其体积挺惊人,在包装盒里面好不容易才找到
在这里插入图片描述
应变效应
金属导体的电阻值,随着它受力所产生机械变形(拉伸或压缩)的大小而发生变化的现象,称之为金属的电阻应变效应。电阻值将发生变化这种现象称为“应变效应”。根据应变效应将应变片粘贴于被测材料上被测材料受到外界作用产生的应变就会传送到应变片上使应变片的电阻值发生变化通过测量应变片电阻值的变化就可得知被测机械量的大小。

应变效应应用范围十分广泛,可测量应变、应力、力矩、位移、加速度、扭矩等物理参量。电阻式应变片应用模式有两种,一是将应变片粘贴于弹性刚体上组成平衡电桥,然后接到转换电路,构成专用应变传感器;二是将应变片粘贴于被测物体上,然后接到专用应变仪直接读取应变量。

在这里插入图片描述
电阻应变片
电阻应变片的工作原理是基于应变效应制作的,即导体或半导体材料在外界力的作用下产生机械变形时,其电阻值相应的发生变化,这种现象称为“应变效应”。半导体应变片是用半导体材料制成的,其工作原理是基于半导体材料的压阻效应。压阻效应是指当半导体材料某一轴向受外力作用时,其电阻率发生变化的现象。应变片是由敏感栅等构成用于测量应变的元件,使用时将其牢固地粘贴在构件的测点上,构件受力后由于测点发生应变,敏感栅也随之变形而使其电阻发生变化,再由专用仪器测得其电阻变化大小,并转换为测点的应变值。金属电阻应变片品种繁多,形式多样,常见的有丝式电阻应变片和箔式电阻 应变片。箔式电阻应变片是一种基于应变——电阻效应制成的,用金属箔作为敏感栅的,能把被测试件的应变量转换成电阻变化量的敏感元件。

在这里插入图片描述
称重传感器工作原理
称重传感器是用来将重量信号或压力信号转换成电量信号的转换装置。称重传感器采用金属电阻应变片组成测量桥路,利用金属电阻丝在张力作用下伸长变细,电阻增加的原理,即金属电阻随所受应变而变化的效应而制成的。金属电阻具有阻碍电流流动的性质,同一种金属丝,一般来讲,越是细长,其电阻值就越大。当金属电阻丝受外力作用而伸缩时,其电阻值就会在某一范围内增减。因此,将金属丝(或膜)紧贴在被测物体上,当被测物体受外力而伸缩时,金属电阻丝(膜)也会按比例伸缩,其阻值也会相应变化。称重传感器就是将金属电阻应变片粘贴在金属称重梁上进行测量重量信号的。

在这里插入图片描述
桥式测量电路
电阻应变式称重传感器包括两个主要部分,一个是弹性敏感元件:利用它将被测的重量转换为弹性体的应变值;另一个是电阻应变计:它作为传感元件将弹性体电阻应变式称重传感器。 当传感器不受载荷时,弹性敏感元件不产生应变,粘贴在其上的应变片不发生变形,阻值不变,电桥平衡,输出电压为零;当传感器受力时,即弹性敏感元件受载荷P时,应变片就会发生形变,阻值发生变化,电桥失去平衡,有输出电压。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
内部为1000欧半桥应变片,量程为50kg称重传感器,半桥结构。
测量时,外侧边正确施加外力,E字形传感器的应变梁部分(即中间贴应变片的,有白色覆胶的梁臂)和外侧边要形成一个方向相反的剪切力,即中间的应变梁在受力下必需可以发生弯曲变化,应变梁受力面另一侧不可有阻挡物。
在这里插入图片描述
传感器内部是一组半桥应变片,使用方法可以有以下三种:
1、使用一只传感器配合外接电阻组成全桥测量,量程为一个传感器的量程:50kg。对外接电阻要求较高。
2、使用二只传感器组成全桥测量,量程为两只传感器的量程之和:50kgx2=100kg。
3、使用四只传感器组成全桥测量,量程为四只传感器的量程之和:50kgx4=200k。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
HX711 24位精度AD称重模块
在这里插入图片描述
HX711
是一款专为高精度电子秤而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B 则为固定的32 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主要参数
满额度差分输入范围 V(inp)-V(inn) ±0.5(AVDD/GAIN) V
输入共模电压范围 AGND+0.6 AVDD-0.6 V
使用片内振荡器,RATE = 0 10
使用片内振荡器,RATE = DVDD 80
外部时钟或晶振,RATE = 0 fclk/1,105,920
输出数据速率
外部时钟或晶振,RATE = DVDD fclk/138,240 Hz
输出数据编码 二进制补码 800000 7FFFFF(HEX) RATE = 0 400
输出参考电压(VBG) 1.25 V
外部时钟或晶振频率 1 11.0592 30 MHz
模拟电源电流(含稳压电路) 1600μA 断电 0.3 μA
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
模块采用24位高精度的A/D转换器芯片hx711,是一款专为高精度电子称而设计的, 具有两路模拟通道输入, 内部集成128倍增益可编程放大器。输入电路可配置为 提供桥压的电桥式(如压力、称重)传感器模式 是一款理想的高精度低成本采样前端模块。采样hx711 24位ad芯片,双通道 差分输入。全贴片 机器焊接,带金属屏蔽,配送直、弯两种插针,满足各种安装焊接方式,板上使用了2个47uF的胆电容,用料很足,内置上拉电阻,且预留CPU焊接位置,很适合自己二次开发各种各样的传感器相关应用。
在这里插入图片描述
模块电原理图
在这里插入图片描述
模块主要特点
● 带金属屏蔽,强抗干扰,预留cpu(STC15F104)位置,可自行升级二次开发。
● 两路可选择差分输入
● 片内低噪声可编程放大器,可选增益为32、64 和128
● 片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源
● 片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟
● 上电自动复位电路
● 简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程
● 可选择10Hz 或80Hz 的输出数据速率
● 同步抑制50Hz 和60Hz 的电源干扰
● 耗电量(含稳压电源电路):
典型工作电流:< 1.7mA, 断电电流:< 1μA
● 工作电压范围:2.6 ~ 5.5V
● 工作温度范围:-20 ~ +85℃

在这里插入图片描述
模块检测方法
1,初步快速判断:断开模块所有连线,仅仅给模块供电5v(就是vcc接+5v,gnd接地),然后把模块的ck端口对地短接,然后再去测 out+对地电压,应该4.5v左右,接着测DO/RX端口对地电压,应该0v左右,如果电压都符合,说明模块99%正常。
2,完整测试判断:使用测试电路图搭个电路,给单片机烧入测试程序,然后用串口线连接电脑,在电脑上运行串口助手,就可以接收到测试电路发出来的读数报告,读数正常,表明模块正常。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实验准备接线时,才发现收来的四个称重传感器中,有一个只有二根线(其它3个都是3根接线),看来要搞不定了
在这里插入图片描述
HX711.h头文件

#ifndef HX711_h

#define HX711_h

#include "Arduino.h"

class Hx711

{

private:

    int DOUT;//定义数据引脚

    int SCK;//定义时钟引脚

    float scale;//定义比例系数

    long offset;//定义补偿值

public:

    Hx711(int IO_DOUT,int IO_SCK);//构造函数

    void setScale(float IO_scale);//设置比例系数

    void setOffset(long IO_offset);//设置补偿值

    long getValue();//采集一次ADC值

    long getAverageValue(char IO_times);//采集ADC平均值

    float getWeight(char IO_times);//得出重量值

};

#endif

HX711.cpp 文件

#include "HX711.h"

#include "Arduino.h"

//int DOUT;//定义数据引脚

//int SCK;//定义时钟引脚

//float scale;//定义比例系数

//long offset;//定义补偿值

//int times;//定义采集次数

Hx711::Hx711(int IO_DOUT,int IO_SCK)//构造函数

{

    DOUT = IO_DOUT;

    SCK = IO_SCK;

    pinMode(SCK, OUTPUT);//设置IO口工作方式

    pinMode(DOUT, INPUT);

}

void Hx711::setScale(float IO_scale)//设置比例系数

{

    scale = IO_scale;

}

void Hx711::setOffset(long IO_offset)//设置补偿值

{

    offset = IO_offset;

}

long Hx711::getValue()//采集一次ADC值

{

    unsigned long Count;

    unsigned char i;

    digitalWrite(SCK,LOW);

    Count = 0;

    while(digitalRead(DOUT) == 1);//低电平时数据可以输出

    for(i=0;i<24;i++)//循环读取数据

    {

        digitalWrite(SCK,HIGH);

        Count = Count<<1;

        digitalWrite(SCK,LOW);

        if(digitalRead(DOUT) == 1) Count++;//最低位置1

    }

    digitalWrite(SCK,HIGH);

    Count = Count^0x800000;//最高位置0

    digitalWrite(SCK,LOW);//128增益

    return Count;

}

long Hx711::getAverageValue(char IO_times)//采集ADC平均值

{

    long sum=0;

    char i;

    for(i=0;i<IO_times;i++)

    {

        sum += getValue();

    }

    return sum/IO_times;

}

float Hx711::getWeight(char IO_times)//得出重量值

{

    long temp;

    temp = getAverageValue(IO_times) - offset;

    return (float)temp/scale;

}

实验没有通过,一直卡在HX711库上,编译无法通过…

在这里插入图片描述
在这里插入图片描述

/*

 【Arduino】66种传感器模块系列实验(73)

 实验七十三:人体秤50kg称重传感器模块(电阻应变半桥式)

 */

 

 #include <HX711.h> 

 

 HX711 hx(9, 10); 

 

 void setup() { 

 Serial.begin(9600); 

 } 

 

 void loop() 

 { 

 double sum = 0; 

 for (int i = 0; i < 10; i++) 

 sum += hx.read(); 

 Serial.println(sum/10); 

 delay(3000);

 }


在这里插入图片描述
实验开源图形编程(Mind+、编玩边学)
在这里插入图片描述
实验开源仿真编程(linkboy V4.1)
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【雕爷学编程】Arduino动手做(72)---HX711 人体称重模块 的相关文章

  • 太阳诱电 | 陶瓷电容器的静电容量相关

    陶瓷电容器的静电容量会因温度而变化吗 电容器的静电容量的温度特性是什么 陶瓷电容器的静电容量随周围的温度而变化 静电容量因温度而变化的现象 称为静电容量的温度特性 这是由于陶瓷电容器使用的材料造成的 也是所有陶瓷电容的常有现象 以下是本公司
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • Fedora 中的 Arduino 上传错误“stk500_recv(): 程序员没有响应”

    我正在尝试上传库存Blink在 Fedora Core 15 Linux 中使用 Arduino IDE 绘制草图 我收到此错误 avrdude stk500 recv 程序员没有响应 要重现该问题 通过 USB 线插入 Arduino U
  • printf 的包装

    我在Arduino下编码 我想开发串行打印格式化功能 所以我尝试使用sprintf未知大小的缓冲区 基本上 我们可以避免谈论 Arduino 及其串行输出 并考虑将文本写入缓冲区 然后使用printf 我试过这个 include
  • Mac OS 10.9 不显示 Arduino 的 USB 调制解调器

    我正在尝试选择 dev tty usbmodem on my Arduino Lenardo设备 操作系统是Mac OSX 10 9 问题是它没有显示 我什至尝试安装FTDI http www ftdichip com Drivers VC
  • 读取串行端口 - 忽略在一定时间内写入串行端口的部分数据

    我想定期读取串行端口上的数据和Arduino 所以本质上是这样的 读一读 Wait 读一读 Wait Take etc 我面临的问题是端口将缓冲其信息 因此一旦我调用等待函数 串行端口上的数据就会开始缓冲 等待函数完成后 我尝试再次读取数据
  • PySerial 从 Arduino 读取线路的延迟

    我正在使用带有基本 DigitalReadSerial 设置的 arduino uno 如下所述 http arduino cc en Tutorial DigitalReadSerial http arduino cc en Tutori
  • Android 和 Arduino 都通过蓝牙接收奇怪的值

    我正在 Android 端使用 BluetoothChat 代码使用聊天框向 Arduino UNO 发送开 关信号 我发送 110 119 或下面定义的其他情况 但是当我显示接收到的值时 它显示奇怪的Arduino 串行监视器中的值 即
  • 如何将值从 Arduino 发送到 Python,然后使用该值

    我正在构建一个使用 Python 进行远程控制的机器人 通过简单的 GUI 通过互联网发送控制消息 我的部分代码 GUI 和控制系统 运行得很好 但我陷入了困境 我正在尝试使用视差平传感器来获取与物体的距离信息Arduino Mega ht
  • Java RXTX 库不加载本机库

    基本上我想使用 Arduino 编写一个简单的通信工具java 的 RXTX 库 http rxtx qbang org wiki index php Main Page并且在加载动态库时严重失败 我的系统规格 操作系统 OS X 优胜美地
  • sim800L GPRS 发布请求

    我一直在研究 LoNet 迷你 GSM 模块 SIM800L 并将其与 Arduino 连接 我已插入 SIM 移动卡并且可以连接互联网 通过串行监视器 我可以毫无问题地与它通信 但是当向网络服务器页面发出 GET 或 POST 请求时 它
  • C-如何使用PROGMEM存储和读取char数组

    我有三个字符数组 我不希望 Arduino 将它们存储在SRAM http en wikipedia org wiki Static random access memory 所以我想使用PROGMEM来存储和读入flash http en
  • HM10 ble改变特征值AT命令Arduino

    谁能帮我用AT命令写入特征值 或者如何使用Hm10模块将数据从arduino发送到另一个ble设备 HM10发送AT START后 会通告数据包 并且可以检测服务和特征 但特征值是默认的0x00 如何更改 多次检查数据表 但找不到能够执行相
  • ESP8266 I2C从机不确认数据

    我有一个 TM4C123 处理器作为 I2C 主处理器 一个 ESP8266 作为从处理器 对于 ESP 我使用的是 Arduino IDE 并在 2 5 2 版安装了 ESP8266 支持 它应该支持 I2C 从模式 但是 我无法让它工作
  • 使用 Java 控制 Arduino

    我正在寻找一个LED http en wikipedia org wiki Light emitting diode用Java程序打开和关闭 我用 C 完成了这个项目大约 5 分钟 但用 Java 似乎更具挑战性 我让 Arduino 等待
  • 如何使用GSM模块SIM800和Arduino Uno发送短信?

    我正在尝试通过 SIM800 GSM 模块从 Arduino 发送短信 消息到达给定号码 但格式不正确 它显示 消息格式不支持 我在这里添加了我的代码 非常感谢您的快速回复 include
  • 如何在 Windows 上获取 Arduino 草图的汇编语言列表?

    我希望能够看到我的 Arduino 草图的汇编语言列表 我怎样才能实现这个目标 Update 我正在 Windows 机器上运行 Arduino 软件 一种方法是使用avr objdump on the elf构建创建的文件 例如 在 OS
  • 在 Arduino 上将整数/小数转换为十六进制?

    如何将整数或小数变量转换为十六进制字符串 我可以做相反的事情 将十六进制转换为整数 但我无法找出其他方法 这是为了Serial print 数组中的十六进制值 查看 Arduino 字符串教程here http arduino cc en
  • 使用 Ardulink 命令 Arduino Uno

    我试图在我的 JAVA 应用程序中使用 Ardulink 库来命令我的 Arduino Uno 但没有成功 我不知道我错过了什么 这是我的代码 Link link Link getDefaultInstance boolean connec
  • 如何使用基于HM-10蓝牙模块的BLE Shield?

    我是 arduino 项目的新手 我想请你帮忙 我从 http imall iteadstudio com development platform arduino shields im130704001 html http imall i

随机推荐

  • pip安装pytorch 清华镜像

    每次要搭配环境的时候就头大 资源基本是国外 下载起来特别慢 有些连服务器都访问不了 不用镜像 按照书上或者网上的正常流程搭配环境 基本上都是以超时告终 然后就在网上疯狂找资源 网上有人说是个程序员都会翻墙 我可能是个假的程序员吧 什么都不会
  • Arthas watch命令使用

    目录 属性遍历深度 1 watch 类全限定名 方法名 遍历深度为1的入参 对象 返回信息 2 watch 类全限定名 方法名 x n 观察遍历深度为n的入参 对象 返回信息 观察事件点 1 watch 类全限定名 方法名 params x
  • Python爬虫从入门到精通:(39)增量式爬虫_Python涛哥

    概念 检测网络数据更新的情况 以便于爬取到最新更新出来的数据 实现核心 去重 实战中去重的方式 记录表 记录表需要记录什么 记录的一定是爬取过的相关信息 例如某电影网 爬取过的相关信息 每一部电影详情页的url 只需要使用某一组数据 该组数
  • 一个产品的商业目标应该从哪些方面制定?

    产品面向社区治理相关服务 比如信息发布 事件调解 活动发布 数据统计等等 但感觉缺少合理的商业策略和商务模式 文心一言 一个产品的商业目标应该从以下几个方面制定 市场定位 确定你的产品的目标客户是谁 这可以是你的社区治理服务所面向的人群 也
  • 【数学公式】Mathpix和MathType等等

    MathML MathML指 数学标记语言 是XML语言的一个子集 用来在web网页 甚至部分软件中显示数学公式 简言之 就是使用特殊的类似HTML的标记在网页中显示数学公式 MathType公式编辑器 MathType是一个强大的数学公式
  • JSP的原理

    Tomcat的lib目录下的jasper jar包 这个包里面有一个HttpJspBase类 这个类我们看一下源码 Source code recreated from a class file by IntelliJ IDEA power
  • CC++ 标头和源文件:它们如何工作?

    本文将向您展示将程序划分为C中的组件部分或正确使用标头和源文件C 诀窍 介绍 我主要是为我的一个朋友写这篇文章的 但是 如果我不与大家分享这一点 我会对社区造成伤害 所以就在这里 我们将探索标头和源文件以及它们的作用 这些代码的大部分在 C
  • SSH框架简介篇

    文章目录 概述 目录结构 struts Spring Hibernate 总结 概述 SSH框架 Struts Spring Hibernate 是一种广泛应用的Java企业级开发框架组合 它将Struts Spring和Hibernate
  • LVM原理及配置

    1 简介 1 1 什么是LVM LVM是 Logical Volume Manager 逻辑卷管理 的简写 它由Heinz Mauelshagen在Linux 2 4内核上实现 目前最新版本为 稳定版1 0 5 开发版 1 1 0 rc2
  • 中国天气网接口

    中国天气weather com http m weather com cn data 101110101 html 六天预报 http www weather com cn data sk 101110101 html 实时天气信息 其中1
  • RSA pkcs1与pkcs8 java获取私钥

    RSA pkcs1与pkcs8 java获取私钥 目录 RSA pkcs1与pkcs8 java获取私钥 获取秘钥 获取pkcs1 格式秘钥 获取pkcs8格式秘钥 读取秘钥信息 解密 获取秘钥 maven依赖
  • 【网络】几种常见的协议

    几种常见的协议 DNS Domain Name System 域名解析协议 端口号 53 通过域名解析获得域名所对应的IP FTP File Transfer Protocol 文件传输协议 端口号 21 用户可通过客户机程序向远程主机上传
  • el-input正则限制

    el input限制只能输入1 9且只保留一位小数 return rules deductionPrice required true message 请输入折扣力度 trigger blur validator this valuePri
  • 栈溢出学习

    前言 跟着ctfwiki学习 所有题目都在ctfwiki上可以找到 加油加油 栈溢出原理 栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数 因而导致与其相邻的栈中的变量的值被改变 看一个简单的程序 include
  • 【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16--枚举)

    目录 枚举的定义 枚举变量的定义 枚举变量的初始化与赋值 使用枚举类型 可以提高程序代码的健壮性和可读性 并且枚举成员属于常量 甚至可以使用枚举成员名作为维的大小 来进行数组的定义 枚举的定义 定义枚举的格式为 enum 枚举名 枚举成员1
  • Muduo网络库核心梳理

    Muduo网络库 Muduo网络库本身并不复杂 是一个新手入门C 面向对象网络编程的经典实战项目 但是 新手在刚刚上手读代码的时候 非常容易陷入代码的汪洋大海 迷失方向 本文旨在简要梳理Muduo网络库的核心内容 帮助初学者快速上手源码阅读
  • DES算法简单介绍及用法

    大家好 今天给大家分享一下DES加密 一 DES介绍 加密一般分为可逆加密和不可逆加密 其中可逆加密一般又分为对称加密和非对称加密 前者是我们使用公用密钥加密之后可以使用公用密钥再解密出来 而后者则是使用公用密钥加密之后必须使用私用密钥来解
  • MySQL这一章就够了(一)

    前言 呕心沥血5个月淦出本文 整理所有MySQL知识 我愿称之为地表最强MySQL MySql笔记 MySQL是关系型数据库 基于SQL查询的开源跨平台数据库管理系统 它最初是由瑞典MySQL AB公司开发的 现在它是Oracle Corp
  • 手把手教你区块链java开发智能合约nft(第四篇)-如何动态获取gasPrice和gasLimit?

    手把手教你区块链java开发智能合约nft 第三篇 如何动态获取gasPrice和gasLimit 初学区块链 那真叫一个痛苦并无助 如果没有人带你的话 今天写的这篇是在前面文章基础上写的 初学区块链的朋友建议先看我前面写的文章 手把手教你
  • 【雕爷学编程】Arduino动手做(72)---HX711 人体称重模块

    37款传感器与执行器的提法 在网络上广泛流传 其实Arduino能够兼容的传感器模块肯定是不止这37种的 鉴于本人手头积累了一些传感器和执行器模块 依照实践出真知 一定要动手做 的理念 以学习和交流为目的 这里准备逐一动手尝试系列实验 不管