Датчик нагрузки и 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 и сборе данных в целом, поэтому любые предложения будут оценены по достоинству!
@kmar13, 👍1
1 ответ
В этой строке вы считываете данные и печатаете их:
Serial.print(scale.get_units(), 1);
1 в конце строки определяет, сколько цифр вы отображаете из показаний. У меня похожая настройка, и я установил ее на 5, что показывает до +/-0,00001 кг. (Очевидно, что точность будет отличаться в зависимости от того, какой у вас тензодатчик)
- Как получить данные о весе с датчиков стеклянных электронных весов для ванной?
- Как получить ненулевой выход из HX711 и ячейки загрузки?
- Печатать на serial monitor, когда он обнаруживает изменение значения
- Arduino показывает "avrdude: ser_open(): can't open device ”\\.\COM3" после последней загрузки
- FlySky TH9X с Arduino: невозможно заставить функциюpulsIn() возвращать разумные значения для любого канала
- Код датчика RFID+отпечатков пальцев
- Получить изображение из модуля Fingerprint
- Проблема с подключением датчика сердцебиения и температуры на arduino uno, но работает по отдельности