Как подключить 2 тензодатчика через одну плату hx711?

Тема в разделе "Arduino & Shields", создана пользователем Fiskars500, 15 дек 2023.

  1. Fiskars500

    Fiskars500 Нерд

    Всем привет! Есть два 4 проводных тензодатчика на 5кг каждый в виде аллюминиевых брусочков и зелёненькая стандартная платка HX711 к ним. В плате есть E+ E- A+ A- B+ и B- вроде как поддерживает два канала, то есть два датчика? подключил так - питание датчиков к E+ и E-, ну а сигнальные проводки зелёный и белый от одного датчика к A+ и A-, а от другого к B+ и B-. Ну и как бы один то датчик работает со стандартным кодом из примеров c youtube и библиотекой hx711.h, а вот как заставить одновременно работать второй - не понимаю. Цель - грубо нужно весы с двумя этими датчиками, с одной стороны платформы один датчик, с другой второй. Ну и показания как-то суммироваться. Нужно просто определять превышает ли груз на платформе 500 граммов или нет, даже точный вес то не нужен во всём диапазоне, только это значение - больше на весах или меньше. Уже думал, может их вообще параллельно запаять на канал А на плату. Не понимаю.
     
  2. Fiskars500

    Fiskars500 Нерд

    Неужели никто не знает? :((
     
  3. User248

    User248 Гик

  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Согласно даташиту (стр.4) - В интерфейсе присутствуют две информационные линии. Линия данных (выход) и линия тактирования (вход). Количество тактов за один цикл (от 25 до 27) выводит данные текущего измерения и задает номер канала и усиление для следующего измерения. Так что ОДНОВРЕМЕННО поиметь ДВА измерения невозможно в принципе. Только по-отдельности. В библиотеке должны быть команды для этого. Не знаю какая библа лучше. Но их много. Например GyverHX711.
    https://robotchip.ru/download/datasheet/hx711.pdf
     
    Последнее редактирование: 16 дек 2023
  5. Fiskars500

    Fiskars500 Нерд

    Спасибо большое за помощь! Ну пусть не одновременно, да, но по очереди быстро как-то. Я именно с библиотекой и не понял, как обратиться к датчику, который подключен к линии B.
     
  6. Fiskars500

    Fiskars500 Нерд

    Это видел, к сожалению вообще не похоже. Или показывают как один датчик как у меня подключать, или 2 датчика совершенно других трёхпроводных. И тот и тот вариант к одному входу, 2 входа не используют
     
  7. Fiskars500

    Fiskars500 Нерд

    Это всё то же видел, библиотеки пробовал, работают только с одним датчиком. Второй выход не могут задействовать. Неужели никто в мире не пробовал подключать 2 тензодатчика к ардуино? ))
     
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Какой-такой ВТОРОЙ ВЫХОД не могут задействовать ? На плате контроллера датчиков - ДВА ВХОДА и ОДИН ВЫХОД !!!. Не понятно, что вы там мудрите. Выложьте ваш скетч и схему подключения. Тут, по-моему, как в трех соснах - чтобы заблудиться - надо постараться. Вот тупо изменил пример из Гайверовской библиотеки. Попробуйте. Мне проверить не на чем.
    #include <GyverHX711.h>

    GyverHX711 sensor(3, 2, HX_GAIN64_A);

    // HX_GAIN128_A - канал А усиление 128
    // HX_GAIN32_B - канал B усиление 32
    // HX_GAIN64_A - канал А усиление 64
    //===================================
    void setup() {
    Serial.begin(9600);
    Serial.println(F("Hello World"));

    // если тарирование при первом запуске -
    // нужно выждать готовность датчика
    delay(500);
    // sensor.tare(); // калибровка нуля

    //sensor.sleepMode(true); // выключить датчик
    sensor.sleepMode(false); // включить датчик
    }
    //===================================
    void loop() {

    // чтение только по доступности! if available
    if (sensor.available()) {
    Serial.print(F("Sensor A = "));
    Serial.println(sensor.read());
    }
    sensor.setChannel(HX_GAIN32_B);
    delay(1000);

    // чтение только по доступности! if available
    if (sensor.available()) {
    Serial.print(F("Sensor B = "));
    Serial.println(sensor.read());
    }
    sensor.setChannel(HX_GAIN64_A);
    delay(1000);
    }
    //===================================
     
    Последнее редактирование: 19 дек 2023
  9. Fiskars500

    Fiskars500 Нерд

    Да, я имел ввиду конечно два входа - А и B. Один работает, а со входа B ничего не считывается. Попробую с Гайверовской библиотекой, спасибо
     
  10. parovoZZ

    parovoZZ Гуру

    hx711 включается в плечи моста, образованного 4-мя тензодатчиками. Если 2 тензодатчика, то ещё 2 меняются на обычные сопротивления. У автора поста как включено?
    Плата и, я так подозреваю, библиотека рассчитаны именно под такое включение.
     
  11. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Плата это АЦП конвертор, селектор входов и стабилизатор напряжения в одном флаконе. Ей (и библиотеке тоже) совершенно до лампочки что там за цепи на входе. Можете подключать что угодно, лишь бы оно давало дифференциальный сигнал на входах. Например мост из фото- или термо- резисторов.
     
  12. parovoZZ

    parovoZZ Гуру

    на плате только один Аналого-Цифровой Преобразователь HX711. Никакого конвертора там нет.

    это всё внутри АЦП.

    Ой ле? Если весы опираются на 4 тензодатчика, то входа кто будет переключать?
     
  13. a1000

    a1000 Гуру

    QUOTE="parovoZZ, post: 311720, member: 13077"]hx711 включается в плечи моста, образованного 4-мя тензодатчиками. Если 2 тензодатчика, то ещё 2 меняются на обычные сопротивления. У автора поста как включено?[/QUOTE]
    Автор применяет готовый модуль в котором уже собрана мостовая схема. Ну что-то типа такого
    https://iarduino.ru/shop/Sensory-Datchiki/tenzodatchik-dlya-vesov-i-nh711-na-10-kg.html
    Такой модуль просто подключается к плате по такой схеме
    [​IMG]
    Очевидно библиотеки и заточены под такое подключение. С каналом "В" видимо не хотят заморачиваться так как там разные коэфициенты усиления. У канала "А" - 128 и 64, а у канала "В" - 32.
    Ну а если есть желание получать данные с обоих каналов, то реализуется это таким образом.
    Выходом микросхемы являются вывода PD_SCK и DOUT, на плате это SCK и DT соответственно. АЦП 24 битное. Пока оно отсчитывает результат на DT логическая 1. Как только данные готовы DT падает в ноль. Для извлечение данных начинаем подавать на SCK импульсы. С каждым импульсом на DT выдвигается 1 бит результата начиная со старшего. На 25 импульсе DT снова становится в 1, и в следующем отсчёте мы опять получим данные с канала "А" с коэфициентом усиления 128. Если подать 26 импульсов, то в следующий раз мы получим данные с канала "В" с коэфициентом усиления 32, ну а если импульсов будет 27 то в следующий раз мы получим данные с канала "А" с коэфициентом усиления 64.
    Вот такая реализация. Хотите правьте библиотеку, хотите пишите вручную.
     
  14. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Судя по даташиту, если НХ711-му подать внешний такт 20 МГц (допустимо) - он будет выдавать оцифровки 144 семпл/сек. Вроде бы уже достаточно чтоб забубенить сейсмограф или что-то подобное.
     
  15. Fiskars500

    Fiskars500 Нерд

    Автор применяет готовый модуль в котором уже собрана мостовая схема. Ну что-то типа такого
    https://iarduino.ru/shop/Sensory-Datchiki/tenzodatchik-dlya-vesov-i-nh711-na-10-kg.html
    Такой модуль просто подключается к плате по такой схеме
    [​IMG]
    Очевидно библиотеки и заточены под такое подключение. С каналом "В" видимо не хотят заморачиваться так как там разные коэфициенты усиления. У канала "А" - 128 и 64, а у канала "В" - 32.
    Ну а если есть желание получать данные с обоих каналов, то реализуется это таким образом.
    Выходом микросхемы являются вывода PD_SCK и DOUT, на плате это SCK и DT соответственно. АЦП 24 битное. Пока оно отсчитывает результат на DT логическая 1. Как только данные готовы DT падает в ноль. Для извлечение данных начинаем подавать на SCK импульсы. С каждым импульсом на DT выдвигается 1 бит результата начиная со старшего. На 25 импульсе DT снова становится в 1, и в следующем отсчёте мы опять получим данные с канала "А" с коэфициентом усиления 128. Если подать 26 импульсов, то в следующий раз мы получим данные с канала "В" с коэфициентом усиления 32, ну а если импульсов будет 27 то в следующий раз мы получим данные с канала "А" с коэфициентом усиления 64.
    Вот такая реализация. Хотите правьте библиотеку, хотите пишите вручную.[/QUOTE]

    Вы всё верно поняли, у меня готовые датчики с мостовой схемой. Нужно подключить 2 шт на одну плату. Платформа "весов" будет опираться на 2 датчика. Строго говоря, это вообще не весы, нужно только отсеивать груз, который весит больше 500 граммов и всё. Сколько конкретно он весит - вообще не важно, 305 или 758 - главное больше или меньше 500 - да или нет. Точность тоже великая не нужна. Даже до 10-20 граммов точность достаточно. Может можно как-то 2 таких датчика к одному входу A- A+ подключить? как? параллельно? Смогу определять больше или меньше 500 граммов груз? ведь груз может встать ближе к одному или к другому датчику. Тестовый грузик 500г есть :)
     
  16. parovoZZ

    parovoZZ Гуру

    так тут и обычная ардуина справится.
     
  17. Fiskars500

    Fiskars500 Нерд

    Имеете ввиду без HX711? Подключить к аналоговым входам ардуины? Главное, чтобы не пришлось слишком сложный софт писать - я не осилю. А для чего нужен HX711 тогда вообще?
     
  18. a1000

    a1000 Гуру

    Немного полистал интернет. Из того, что увидел только библиотека от Гайвера позволяет переключать каналы.
    https://github.com/GyverLibs/GyverHX711
    Почитайте README там описан метод. Но имейте ввиду, что вы будете получать данные в сыром виде и с разными коэфициентами усиления.
     
  19. parovoZZ

    parovoZZ Гуру

    Но сперва необходимо вольтметром измерить разницу с грузом и без. Возможно, что потребуется усилитель.
     
  20. parovoZZ

    parovoZZ Гуру

    Сперва измерить напряжение в одном плече, затем во втором. После одно из другого вычесть и по получившейся разнице принимать решения. Если поставить усилитель, то даже и вычитать не придётся - с выхода усилителя будет всего один сигнал.