极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: eagler8

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

[复制链接]
 楼主| 发表于 2019-7-29 12:05:28 | 显示全部楼层
模块采用24位高精度的A/D转换器芯片hx711,是一款专为高精度电子称而设计的, 具有两路模拟通道输入, 内部集成128倍增益可编程放大器。输入电路可配置为 提供桥压的电桥式(如压力、称重)传感器模式 是一款理想的高精度低成本采样前端模块。采样hx711 24位ad芯片,双通道 差分输入。全贴片 机器焊接,带金属屏蔽,配送直、弯两种插针,满足各种安装焊接方式,板上使用了2个47uF的胆电容,用料很足,内置上拉电阻,且预留CPU焊接位置,很适合自己二次开发各种各样的传感器相关应用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-29 12:08:20 | 显示全部楼层
模块电原理图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-29 13:10:01 | 显示全部楼层
模块主要特点
● 带金属屏蔽,强抗干扰,预留cpu(STC15F104)位置,可自行升级二次开发。
● 两路可选择差分输入
● 片内低噪声可编程放大器,可选增益为32、64 和128
● 片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源
● 片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟
● 上电自动复位电路
● 简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程
● 可选择10Hz 或80Hz 的输出数据速率
● 同步抑制50Hz 和60Hz 的电源干扰
● 耗电量(含稳压电源电路):
典型工作电流:< 1.7mA, 断电电流:< 1μA
● 工作电压范围:2.6 ~ 5.5V
● 工作温度范围:-20 ~ +85℃

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-29 19:46:42 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-29 19:55:45 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-29 19:57:29 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-30 12:56:24 | 显示全部楼层
实验准备接线时,才发现收来的四个称重传感器中,有一个只有二根线(其它3个都是3根接线),看来要搞不定了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-30 12:57:42 | 显示全部楼层
HX711.h头文件

  1. #ifndef HX711_h
  2. #define HX711_h

  3. #include "Arduino.h"

  4. class Hx711
  5. {
  6. private:
  7.         int DOUT;//定义数据引脚
  8.         int SCK;//定义时钟引脚

  9.         float scale;//定义比例系数
  10.         long offset;//定义补偿值
  11. public:
  12.         Hx711(int IO_DOUT,int IO_SCK);//构造函数
  13.         void setScale(float IO_scale);//设置比例系数
  14.         void setOffset(long IO_offset);//设置补偿值

  15.         long getValue();//采集一次ADC值
  16.         long getAverageValue(char IO_times);//采集ADC平均值
  17.         float getWeight(char IO_times);//得出重量值
  18. };

  19. #endif
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-30 13:00:16 | 显示全部楼层
HX711.cpp 文件

  1. #include "HX711.h"

  2. #include "Arduino.h"

  3. //int DOUT;//定义数据引脚
  4. //int SCK;//定义时钟引脚

  5. //float scale;//定义比例系数
  6. //long offset;//定义补偿值
  7. //int times;//定义采集次数

  8. Hx711::Hx711(int IO_DOUT,int IO_SCK)//构造函数
  9. {
  10.         DOUT = IO_DOUT;
  11.         SCK = IO_SCK;
  12.         pinMode(SCK, OUTPUT);//设置IO口工作方式
  13.         pinMode(DOUT, INPUT);

  14. }

  15. void Hx711::setScale(float IO_scale)//设置比例系数
  16. {
  17.         scale = IO_scale;
  18. }

  19. void Hx711::setOffset(long IO_offset)//设置补偿值
  20. {
  21.         offset = IO_offset;
  22. }

  23. long Hx711::getValue()//采集一次ADC值
  24. {
  25.         unsigned long Count;
  26.         unsigned char i;
  27.         digitalWrite(SCK,LOW);
  28.         Count = 0;
  29.         while(digitalRead(DOUT) == 1);//低电平时数据可以输出
  30.         for(i=0;i<24;i++)//循环读取数据
  31.         {
  32.                 digitalWrite(SCK,HIGH);
  33.                 Count = Count<<1;
  34.                 digitalWrite(SCK,LOW);
  35.                 if(digitalRead(DOUT) == 1) Count++;//最低位置1
  36.         }
  37.         digitalWrite(SCK,HIGH);
  38.         Count = Count^0x800000;//最高位置0
  39.         digitalWrite(SCK,LOW);//128增益
  40.         return Count;
  41. }

  42. long Hx711::getAverageValue(char IO_times)//采集ADC平均值
  43. {
  44.         long sum=0;
  45.         char i;
  46.         for(i=0;i<IO_times;i++)
  47.         {
  48.                 sum += getValue();
  49.         }
  50.         return sum/IO_times;

  51. }

  52. float Hx711::getWeight(char IO_times)//得出重量值
  53. {
  54.         long temp;
  55.         temp = getAverageValue(IO_times) - offset;
  56.         return (float)temp/scale;
  57. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-30 13:11:04 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-30 13:15:49 | 显示全部楼层

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-30 14:13:49 | 显示全部楼层
  1. /*
  2. 【Arduino】66种传感器模块系列实验(73)
  3. 实验七十三:人体秤50kg称重传感器模块(电阻应变半桥式)
  4. */

  5. #include <HX711.h>

  6. HX711 hx(9, 10);

  7. void setup() {
  8. Serial.begin(9600);
  9. }

  10. void loop()
  11. {
  12. double sum = 0;
  13. for (int i = 0; i < 10; i++)
  14. sum += hx.read();
  15. Serial.println(sum/10);
  16. delay(3000);
  17. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-30 14:16:06 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-30 14:30:52 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 14:52 , Processed in 0.037634 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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