Стабилизация HX711 и более быстрая выборка. Улучшения кода
Привет,
В своем исследовательском проекте я использую тензодатчики. У меня есть 4 тензодатчика, я подключил 4 модуля HX711 (по одному к каждому тензодатчику) и подключил их к Arduino Uno.
Я взял пример кода, приведенный для двух датчиков веса, и изменил его для четырех датчиков веса. Мой полный код доступен здесь. Исходный пример кода библиотеки тензодатчиков HX711 2 доступен здесь.
Я отправил исходный код, но у меня остались следующие вопросы:
Q1) Следующая часть кода:
boolean _tare = false; //установите значение false, если вы не хотите, чтобы тарирование выполнялось на следующем шаге
byte loadcell_1_rdy = 0;
byte loadcell_2_rdy = 0;
byte loadcell_3_rdy = 0;
byte loadcell_4_rdy = 0;
while ((loadcell_1_rdy + loadcell_2_rdy + loadcell_3_rdy + loadcell_4_rdy) < 4) { //запускаем запуск, стабилизацию и тарирование, оба модуля одновременно
if (!loadcell_1_rdy) loadcell_1_rdy = LoadCell_1.startMultiple(stabilizingtime, _tare);
if (!loadcell_2_rdy) loadcell_2_rdy = LoadCell_2.startMultiple(stabilizingtime, _tare);
if (!loadcell_3_rdy) loadcell_3_rdy = LoadCell_3.startMultiple(stabilizingtime, _tare);
if (!loadcell_4_rdy) loadcell_4_rdy = LoadCell_4.startMultiple(stabilizingtime, _tare);
}
Правильно ли написано? Можно ли это убрать или эта деталь необходима?
В2) Я хочу увеличить частоту дискретизации, поэтому собираюсь увеличить скорость передачи данных до 115200 бод или выше. Влияет ли это на предыдущий вопрос? Так как исходный код похоже был написан для 10SPS.
@Atharva, 👍0
Обсуждение1 ответ
Лучше использовать микросхему от Analog Device AD7799. Он имеет относительно высокую точность и отсутствие плавания по сравнению с HX711. При подключении 2 тензодатчиков по 50 кг на асфальте схема имеет точность 10 грамм. Я использую библиотеку AD779x.h и пример программы, которая появляется в меню примеров файлов в Arduino после установки библиотеки. Когда hx-711 подключен к тому же точность моих датчиков составила 30 грамм, точность обоих АЦП я измерял в течение 10 минут. Заказал AD7799 на Али за 2-3$. Брать нужно вместе с переходником на чип ssop16 c расстояние между выводами переходника – 0,65 мм. Еще нужно взять «паяльную пасту с припоем», так как выводы слишком маленькие и расположены близко друг к другу. SMD конденсаторы взял с поврежденной матплаты, замерил. емкость тестером. При прогреве тензодатчика феном данные сильно изменяются. Возможно нужно поставить на термодатчик на термочасах цифровой термодатчик ds18b20. Даже в краткосрочной перспективе при прикосновении пальцем к тензодатчику показания также сильно изменяются из-за нагрева датчика от тепла тела. Если прикоснуться к сложенной бумаге в несколько слоев, датчик не нагреется и показания не меняются. Тем, кто будет проверять тензодатчики, нажимая на них пальцем, следует помнить, что через несколько секунд после прикосновения пальцем к тензодатчику тепло достигнет чувствительный элемент датчика вдоль его металлического корпуса и значения будут плавать вверх или вниз на десятки грамм, в зависимости от схемы подключения, типа датчика, продолжительности работы трогательно. Нажимайте на датчики любыми предметами, а не непосредственно рукой. L Индуктивность может быть установлена или нет. Возможно подключение без источника опорного напряжения. TL431, и напрямую от ардуино 5в с фильтром из 2-х конденсаторов (как показано на схеме). Я первый раз подключался без него и показания были вполне нормальные. Надо попробовать... Используемый источник питания из Hi-link.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Вам не нужны 4 АЦП для измерения 4 тензодатчиков, вам нужно настроить 4 тензодатчика как [мост Уитстона](https://en.wikipedia.org/wiki/Wheatstone_bridge) и измерять их с помощью одного АЦП HX711. В SparkFun есть хорошее введение в [Начало работы с тензодатчиком](https://learn.sparkfun.com/tutorials/getting-started-with-load-cells/all), в котором объясняются детали., @hcheung
Кроме того, чем выше частота дискретизации, тем более зашумленными становятся данные. Для весов точность важнее скорости, в чем смысл увеличения частоты дискретизации. Кстати, частота дискретизации HX711 требует изменения конфигурации оборудования. Прочтите README библиотеки Olkal HX711, чтобы получить дополнительную информацию и узнать, почему выбран 10SPS., @hcheung
@hcheung Я не говорю о четырех тензодатчиках в пшеничном камне на одном тензодатчике. Мне нужно измерить 4 разные силы, поэтому я использую 4 разных тензодатчика., @Atharva