Датчик нагрузки и HX711 выводят только нули

Я использую Arduino Uno и усилитель HX711 для сбора данных с датчика нагрузки. Ранее датчик нагрузки был откалиброван и работал, но теперь он не считывает никаких значений; выводятся только нули, даже когда я прикладываю небольшую нагрузку к датчику. Я перепаял и заменил соединительные провода. Есть ли какие-либо предложения по получению показаний с моего датчика?

Я тестировал с двумя разными тензодатчиками: тензодатчиком Sparkfun TAL220 Straight Bar 10 кг и тензодатчиком LFS 210-300 от Cooper Instruments (последний я хочу использовать в долгосрочной перспективе). Мой тензодатчик подключен так же, как HX711 Breakout Guide (с Arduino Uno вместо RedBoard и USB-подключением):

Я использовал эскиз калибровки HX711 Breakout Guide для тестирования своего тензодатчика:

#include <HX711.h>

#define DOUT 3
#define CLK 2

HX711 scale(DOUT, CLK);

float calibration_factor = 282650; //-7050 сработало для моих весов с максимальным пределом 440 фунтов

void setup() {
  Serial.begin(9600);
  Serial.println("HX711 calibration sketch");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press + or a to increase calibration factor");
  Serial.println("Press - or z to decrease calibration factor");

  scale.set_scale();
  scale.tare(); //Сбросить масштаб на 0

  long zero_factor = scale.read_average(); //Получить базовое значение
  Serial.print("Zero factor: "); //Это можно использовать для устранения необходимости тарирования весов. Полезно в проектах с постоянными весами.
  Serial.println(zero_factor);
}

void loop() {

  scale.set_scale(calibration_factor); //Настроить на этот коэффициент калибровки

  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 1);
  Serial.print(" kgs"); //Измените это на кг и заново настройте коэффициент калибровки, если вы следите за единицами СИ, как здравомыслящий человек
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();

  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 10;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 10;
  }
}

Я все еще новичок в Arduino и сборе данных в целом, поэтому любые предложения будут оценены по достоинству!

, 👍1


1 ответ


3

В этой строке вы считываете данные и печатаете их:

Serial.print(scale.get_units(), 1);

1 в конце строки определяет, сколько цифр вы отображаете из показаний. У меня похожая настройка, и я установил ее на 5, что показывает до +/-0,00001 кг. (Очевидно, что точность будет отличаться в зависимости от того, какой у вас тензодатчик)

,