Как получить ненулевой выход из HX711 и ячейки загрузки?

Пытаюсь настроить ячейку загрузки с помощью усилителя HX711. Всякий раз, когда я загружаю свой скетч, сериал монитор считывает только нули независимо от нагрузки, приложенной к датчику (кажется, что сигнал не передается от моей ячейки загрузки).

Вот моя проводка, с Arduino Uno, подключенным к COM-порту. Я использую Arduino Uno, HX711 и Sparkfun's TAL220 Straight Bar 10kg load cell.

Вот скетч калибровки, который я использую (из руководства по подключению HX711):

#include <HX711.h>

#define DOUT 9
#define CLK 8

HX711 scale(DOUT, CLK);

float calibration_factor = 282650; //-7050 работал для моей установки шкалы 440lb max

void setup() {
  Serial.begin(9600);
  Serial.println("Калибровочный скетч HX711");
  Serial.println("Снять весь вес со шкал");
  Serial.println("После начала показаний поместите известный вес на весы");
  Serial.println("Нажмите + или a, чтобы увеличить калибровочный коэффициент");
  Serial.println("Нажмите - или z, чтобы уменьшить калибровочный коэффициент");

  scale.set_scale();
  scale.tare(); //Reset the scale to 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;
  }
}

И вот типичный выход из последовательного монитора (у меня раньше эта ячейка нагрузки работала правильно, поэтому мой калибровочный коэффициент так отличается).

Замечания:

  • Всякий раз, когда я загружаю скетч и открываю последовательный монитор, индикатор TX на Arduino Uno будет мигать, но индикатор RX остается выключенным.
  • Удаление шага scale.tare() выведет постоянное ненулевое значение, но ячейка загрузки не подвержена никаким нагрузкам:

image description

  • Я попробовал добавить внешний источник питания к сборке подключения (я не знаю, нужно ли это вообще, но я знаю, что ячейка загрузки требует возбуждения для работы, поэтому я решил попробовать). До сих пор это никак не меняло результат.
  • Я также попытался настроить калибровочный коэффициент, который только компенсирует выводимое постоянное значение.
  • Я снова припаял соединительные провода к тензодатчику и заменил оставшиеся провода, а также попробовал несколько плат Uno и новый USB-шнур. Я также проверил свою проводку и попросил своего лаборанта тоже проверить ее (хотя я определенно не исключаю, что это какая-то небольшая ошибка в проводке/аппаратном обеспечении с моей стороны, так как я все еще новичок в Arduino).

Спасибо вам за любые предложения!

, 👍2

Обсуждение

похоже у вас нет никакого кода который считывает тензодатчик, @jsotola

Это калибровочный скетч, у меня также есть отдельный скетч, который считывает тензодатчик после завершения калибровки - вы это имеете в виду?, @kmar13

итак, если я использую калибровочный коэффициент 8388607 и t считывает ноль, то мой hx711 сломан? я попробовал, и там написано -0,5 кг, @Joe Magee


1 ответ


1

Нулевой коэффициент 8388607 появился в аналогичном вопросе на другом форуме и связан с диапазоном усилителя HX711. Это указывало на то, что мой усилитель был сломан; с тех пор я заменил его и теперь получаю сигнал от тензодатчика.

,