Arduino结合HX711实现8路信号采集称重

说明:使用两块Arduino实现8路Sensor同时采集,并输出控制信号
写作目的主要是为了作为学习笔记

Arduino & Sensor接线图

1、双机通讯连线图
双机通讯连线图
2、HX711和Sensor的连线图
HX711和Sensor的连线图
3、将8个Sensor的SCK全部接到receive板的D2引脚
4、8个DATA线分别接至receive板的D3-D10引脚
5、将8路继电器模组控制引脚接到Send板的D2-D9
6、Send板的D10和D11作为接受信号引脚
注意Sensor和Arduino进行共地

HX711库文件

1、下载链接
链接:github链接.
2、将下载到的HX711 Master文件夹放入Arduino的libraries文件夹中并加载,所有需要用的函数,如偏差设定,系数设定等都在库文件里有定义,详细请查看库文件对于库函数的定义,当然也可以自己修改库函数,以方便实际使用需求

示例代码

1、send板代码

#include <SoftwareSerial.h>
#include <HX711.h>
HX711 hx1(3, 2);
HX711 hx2(4, 2);
HX711 hx3(5, 2);
HX711 hx4(6, 2);
HX711 hx5(7, 2);
HX711 hx6(8, 2);
HX711 hx7(9, 2);
HX711 hx8(10, 2);

double c1, c2, rs;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  hx1.set_offset(121100);//设置偏移量
  hx2.set_offset(121100);
  hx3.set_offset(121100);
  hx4.set_offset(121100);
  hx5.set_offset(121100);
  hx6.set_offset(121100);
  hx7.set_offset(121100);
  hx8.set_offset(121100);

  hx1.set_scale(2214);//设置修正系数
  hx2.set_scale(2214);
  hx3.set_scale(2214);
  hx4.set_scale(2214);
  hx5.set_scale(2214);
  hx6.set_scale(2214);
  hx7.set_scale(2214);
  hx8.set_scale(2214);

}

void loop() {
  // put your main code here, to run repeatedly:
  double s1 = hx1.get_units(5); //读取5次并计算平均值
  double s2 = hx2.get_units(5);
  double s3 = hx3.get_units(5);
  double s4 = hx4.get_units(5);
  double s5 = hx5.get_units(5);
  double s6 = hx6.get_units(5);
  double s7 = hx7.get_units(5);
  double s8 = hx8.get_units(5);
  
  c1=s1+s2+s3+s4;
  c2=s5+s6+s7+s8;
  rs=c1-c2;

  transmit();//发送经过修正后的数据
}
void transmit(){
        Serial.print('a');
        Serial.print(c1);
        Serial.print('b');
        Serial.print(c2);
        Serial.print('c');
        Serial.print(rs);
        Serial.println('#');
        delay(100);
  }

发送字符中的a,b,c,#是作为标志符,以作为后续receive函数对接收到的数据进行分割处理
2、receive板代码

#include <SoftwareSerial.h>
double c1, c2, rs;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}
void loop() {
  // put your main code here, to run repeatedly:
  receive();//接收到Send板上发出的数据并解析为double类型
  Serial.println(c1);
  Serial.println(c2);
  Serial.println(rs);
  Serial.println();

}
void receive() {

  String comdata = "";
  String buf1 = "";
  String buf2 = "";
  String buf3 = "";

  while (Serial.available() > 0)
  {
    comdata += char(Serial.read());
    delay(2);
  }
  if (comdata.length() > 0)
  {
    int ja, jb, jc, jd;

    for (int i = 0; i < comdata.length(); i++) {

      if (comdata[i] == 'a') {
        ja = i;
      }
      if (comdata[i] == 'b') {
        jb = i;
      }
      if (comdata[i] == 'c') {
        jc = i;
      }
      if (comdata[i] == '#') {
        jd = i;
      }

    }//找到标志符号并记录标志符号的索引位置

    for (int k = ja + 1; k < jb; k++) {
      buf1 += char(comdata[k]);
    }
    for (int k = jb + 1; k < jc; k++) {
      buf2 += char(comdata[k]);
    }
    for (int k = jc + 1; k < jd; k++) {
      buf3 += char(comdata[k]);
    }
    c1 = buf1.toDouble();
    c2 = buf2.toDouble();
    rs = buf3.toDouble();
  }//分割字符并转换为需要的数据类型
}
控制代码的输出

数据的读取和双机通讯功能实现后便可以利用,接收到的数据进行一些其他的控制代码书写

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,基于ArduinoHX711压力传感器的压力实现可以通过以下步骤实现: 1. 首先,将HX711传感器连接到Arduino板上。HX711传感器有四个引脚,分别是DT、SCK、VCC和GND。将DT引脚连接到Arduino板上的数字引脚,SCK引脚连接到数字引脚,VCC引脚连接到5V电源,GND引脚连接到GND。 2. 接下来,将压力传感器连接到HX711传感器上。压力传感器通常有三个引脚,分别是VCC、GND和SIGNAL。将VCC引脚连接到HX711传感器的E+引脚,GND引脚连接到E-引脚,SIGNAL引脚连接到HX711传感器的A-引脚。 3. 然后,在Arduino IDE中编写代码。首先,需要使用HX711库来读取传感器的值。然后,需要将读取到的值转换为实际的压力值。这可以通过校准传感器实现。在校准过程中,需要将已知的重量放在传感器上,并记录读取到的值。然后,可以使用这些值来计算出实际的压力值。 以下是一个简单的代码示例: ```c++ #include "HX711.h" HX711 scale(DT, SCK); void setup() { Serial.begin(9600); scale.set_scale(2280.0); // 设置校准值,需要根据具体传感器进行调整 scale.tare(); // 设置当前重量为0 } void loop() { float weight = scale.get_units(); // 读取当前重量 float pressure = weight / 10.0; // 将重量转换为压力 Serial.print("Pressure: "); Serial.print(pressure); Serial.println(" kPa"); delay(1000); } ``` 在这个示例中,假设校准值为2280.0,即传感器读取到的值除以2280.0得到实际的重量值。然后,将重量值除以10.0得到压力值,因为假设传感器的量程为0-10kPa。最后,将压力值输出到串口监视器中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值