весы hx711

Использование прочих датчиков и энкодеров и пользовательских блоков к ним
Аватара пользователя
ДедОк
Рядовой
Сообщения: 23
Зарегистрирован: 31.10.2016{, 13:48}
Репутация: 3
Откуда: Славута

весы hx711

#21

Сообщение ДедОк » 31.10.2016{, 15:11}


При использовании блоков НХ711 следует учесть, что если в программе, используются критичные по времени выполнения задачи, то могут возникнуть проблемы с этими задачами, т.к. пока происходит ожидание ответа от НХ711 (появление лог. «0» на выходе DOUT, после окончания преобразования), контроллер занят и основной цикл не выполняется. Для уменьшения влияния на ход выполнения других задач, желательно блок включать по таймеру (вход «En»).
Да, задержка ответа по modbus составляет более 100 ms/цикл. Для моих задач это чрезвычайно много. Есть и другая проблема. Если по какой-то причине плата перестала отвечать - виснет все, а мне на контроллер приходит добрый десяток дискретных и аналоговых сигналов, мне не критично потерять канал, но завесить всю плату - перебор Ну и данные мне нужны в  виде Integer, а не Float. Поэтому я чуть подправил код. Теперь данные подаются в виде Long Integer по одному выходу, а в виде Float - по другому. Блок не ждет жестко появления готовности данных, а опрашивает готовность в порядке прохождения программного цикла, обновляя данные по мере готовности. Задержка менее 1 ms/цикл. В проект можно вставить несколько блоков, у меня на плате 2 штуки стоят. ну, и не виснет, если нет связи с АЦП.
Вложения
HX711_2-CODE-.ubi
(69.83 КБ) 221 скачивание
Последний раз редактировалось ДедОк 31.10.2016{, 15:15}, всего редактировалось 1 раз.

arisov77
Рядовой
Сообщения: 54
Зарегистрирован: 11.06.2016{, 12:42}
Репутация: 8
Откуда: Инза

весы hx711

#22

Сообщение arisov77 » 04.11.2016{, 07:24}

Добавлено (03.11.2016, 21:04)
------------------------------------------------------
ДедОк , проверил Ваш блок – всё работает, спасибо за доработку. Блочёк для НХ711 с переключением каналом модернизируете?
Когда я начинал делать блок, опрос готовности НХ711 я также делал через
«if (digitalRead(DOUT) == 0)», но у меня почему то такая конструкция не пошла, получилось только через «while», тем более в оригинале https://github.com/bogde/HX711/blob/master/HX711.cpp наподобие было. Я только начинаю осваивать Си, наверное какие то ещё другие ошибки были, поэтому и не получилось через оператор if.

а мне на контроллер приходит добрый десяток дискретных и аналоговых сигналов,
Кстати у меня тоже на Arduino Nano приходит: 2 x НХ711 (проверял пока только с одной), 16 дискретных входов (2 х 74НС165), 16 выходов (2 х НС595), 1 аналоговый вход, фазовый регулятор – всё это туда-суда передаётся по Модбасу. Сейчас около 10 тегов использую – «на столе» всё пока работает.

Добавлено (04.11.2016, 07:24)
---------------------------------------------
Сегодня ночью эксперементировал со своим контроллером и обратил внимание, что при некоторых положениях задатчика фазового регулятора http://flprog.ru/publ....2-1-0-2 наблюдаются "вплески" сигнала с НХ711. В результате дальнейших эксперементов, пришёл к выводу, что на данные от НХ711 влияют внешнее прерывание (Int0/Int1) и прерывание от Таймера используемые в блоке фазового регулятора.
Добавил пару строчек сюда:
noInterrupts(); // запретить все прерывания
// подать 24 импульса на SCK и считать состояние с OUT
data[2] = shiftIn(DOUT, PD_SCK, MSBFIRST);
data[1] = shiftIn(DOUT, PD_SCK, MSBFIRST);
data[0] = shiftIn(DOUT, PD_SCK, MSBFIRST);
// установить канал и коэф. усиления для следующего опроса АЦП
for (byte i = 0; i < Ch_Gain; i++)
{
digitalWrite(PD_SCK, HIGH);
digitalWrite(PD_SCK, LOW);
}
interrupts(); // разрешить все прерывания
.
Стало значительно лучше, но не 100%.

Буду пробовать делать новый блок на НХ711 на внешнем прерывание с выхода DOUT.
Последний раз редактировалось arisov77 04.11.2016{, 07:26}, всего редактировалось 1 раз.

segsm
Рядовой
Сообщения: 5
Зарегистрирован: 13.11.2016{, 16:50}
Репутация: 0

весы hx711

#23

Сообщение segsm » 13.11.2016{, 16:56}

"Дискретный вход "Sleep" - перевод АЦП в "спящий" режим (режим пониженного энергопотребления).
0 - нормальная работа АЦП, 1 - режим "сна"."
 Все наоборот. Либо "Sleep" надо назвать "RUN", либо исправить описание.

arisov77
Рядовой
Сообщения: 54
Зарегистрирован: 11.06.2016{, 12:42}
Репутация: 8
Откуда: Инза

весы hx711

#24

Сообщение arisov77 » 13.11.2016{, 21:31}

Да, в описании есть такая ошибка, спасибо за замечание.

Сейчас, не спеша делаю новый блок на "внешнем прерывании", там этот вход я совсем исключил, т.к. блок из-за такой универсальности получается немного "утяжелённым".
Ведь для того, чтобы блок (или НХ711) корректно работал(а) врежиме Sleep надо после просыпания выждать некоторое время или сделать 3-4 "пустых" считывания АЦП, затем считать "нормальные" данные, после усреднения выдать результат и потом снова "заснуть" (для максимальной экономичности).
Также для экономичности желательно будет добавить в блок дополнительный выход, сигнализирующий о том, что блок "занят" преобразованием в режиме Sleep (или наоборот, что это преобразование законченно) - это нужно будет для того, что была точка отсчёта для старта таймера, по истечении времени которого снова запустить преобразования АЦП. Или надо будет сделать отдельный вход задания времени «пробуждения»НХ711.
Без задания времени «просыпания» АЦП, на мой взгляд, смысла в энергосбережении нет.

Кстати, segsm у Вас блок НХ711 работает?
Последний раз редактировалось arisov77 13.11.2016{, 21:35}, всего редактировалось 1 раз.

segsm
Рядовой
Сообщения: 5
Зарегистрирован: 13.11.2016{, 16:50}
Репутация: 0

весы hx711

#25

Сообщение segsm » 14.11.2016{, 18:01}

"Кстати, segsm у Вас блок НХ711 работает?"
Пока только  в режиме "RANDOM".

arisov77
Рядовой
Сообщения: 54
Зарегистрирован: 11.06.2016{, 12:42}
Репутация: 8
Откуда: Инза

весы hx711

#26

Сообщение arisov77 » 04.12.2016{, 10:35}

Немного изменил «старые» блоки и добавил два новых блока, работающих по внешнему прерыванию (которое возникает по завершению окончания преобразования данных в HX711).
arisov77 писал(а):эксперементировал со своим контроллером и обратил внимание, что при некоторых положениях задатчика фазового регулятора http://flprog.ru/publ....2-1-0-2 наблюдаются "вплески" сигнала с НХ711.
Проверил «модернизированные» блоки (без прерываний) в том же контроллере и при тех же условиях, вроде бы «всплесков» не обнаружил, даже при использовании «двухканального» режима НХ711 (у меня один канал (А) измеряет температуру в печи, другой (В) - в блоке управления (с более низкой точностью и с меньшим диапазоном).
Если вдруг, у кого-то проявиться какие-нибудь всплески, то можете самостоятельно попробовать запретить все прерывания во время считывания данных с НХ711. Для этого в режиме редактирования блока в разделе “FunctionSection” надо удалить в начале двух строк «две косых палочки» //
……………….
// noInterrupts(); // запретить все прерывания
………….
// interrupts(); // разрешить все прерывания
………………………..
и сохранить эти изменения (желательно «Обновить только в проекте»).
Вложения
HX711_2ch_intpt.flp
(350.29 КБ) 201 скачивание
HX711_1ch.flp
(200.03 КБ) 195 скачиваний

segsm
Рядовой
Сообщения: 5
Зарегистрирован: 13.11.2016{, 16:50}
Репутация: 0

весы hx711

#27

Сообщение segsm » 05.12.2016{, 15:04}

Всплески. Причина не в разрешении или запрете прерываний, а в ложных "DOUT". Проверять надо как минимум 3 раза в разных вызовах блока. Для этого организовать счетчик на дополнительной переменной.
Последний раз редактировалось segsm 05.12.2016{, 22:09}, всего редактировалось 1 раз.

arisov77
Рядовой
Сообщения: 54
Зарегистрирован: 11.06.2016{, 12:42}
Репутация: 8
Откуда: Инза

весы hx711

#28

Сообщение arisov77 » 05.12.2016{, 20:36}

segsm, спасибо, за замечания.
Если можете, то сделайте эти изменения и выложите свои блоки для НХ711, я в программировании на Си не "силён" - только учусь.
Я прежде чем выложить блоки, протестировал их несколько раз - всё вроде бы работает, в том числе и с отрицательными числами. Т.е. я подавал на входа АЦП +/- 20/40/80мВ - во всём диапазоне, все показания были адекватными.
Так, что - у кого есть возможность, то протестируйте блоки и сообщите результаты - будем вместе разбираться, если что не так.

segsm
Рядовой
Сообщения: 5
Зарегистрирован: 13.11.2016{, 16:50}
Репутация: 0

весы hx711

#29

Сообщение segsm » 05.12.2016{, 22:23}

Откорректировал предыдущее сообщение. Ваш код правильный.  А по поводу всплесков, то устранить их получилось только повторным  опросом "DOUT". Если  за три последовательных опроса он низкий - можно запускать цикл чтения. За трое суток, ни одного выброса. До этого три-четыре выброса в 10мин. Контроллер и HX711 соединены кабелем длиной 2м.

romanf
Рядовой
Сообщения: 2
Зарегистрирован: 31.01.2017{, 16:23}
Репутация: 0

весы hx711

#30

Сообщение romanf » 31.01.2017{, 16:55}

Знатоки,тыкните пожалуста начинающему,что сделать чтоб UNO+HX711+тензодатчик заработал с блоками FLProg,а то мои попытки выводят чистые 000.
Спасибо.

Murad
Рядовой
Сообщения: 5
Зарегистрирован: 18.01.2017{, 10:10}
Репутация: 0
Откуда: Махачкала

весы hx711

#31

Сообщение Murad » 15.02.2017{, 10:35}

У меня тот же результат с этими блоками. Подключил тензодатчик давления к Модулю HX711, Модуль к Меге 2560, Мегу - к компу через ModBus. На компе данные смотрю в OPC сервере. Показывает нули. Вопрос к разработчику блоков, какой именно мне использовать?

Добавлено (15.02.2017, 10:35)
---------------------------------------------
Спасибо за молчание.
Удалось разобраться самому. Разработчикам модуля небольшая рекомендация. Для новичков в описании блока хорошо было бы написать, что к разным контроллерам выходы модуля HX711 SCK и DT подключаются к разным пинам. Например, к Меге - к 21 и 20 соответственно.
Мурад

romanf
Рядовой
Сообщения: 2
Зарегистрирован: 31.01.2017{, 16:23}
Репутация: 0

весы hx711

#32

Сообщение romanf » 15.02.2017{, 12:53}

Спасибо Murad .У меня заработало.Блоки для HX711 под UNO
c входами А0...не работает.Нужно подключать через DIGITAL 
входа.

CraCk
Лейтенант
Сообщения: 632
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 10

весы hx711

#33

Сообщение CraCk » 03.07.2017{, 06:31}

Столько hx711можно подключить к одной ардуине?

VadimZ
Рядовой
Сообщения: 1
Зарегистрирован: 20.09.2017{, 20:30}
Репутация: 0

весы hx711

#34

Сообщение VadimZ » 20.09.2017{, 21:24}

arisov77, Добрый день . Хотелось бы повторить ваш проект · HX711_10.2016.flp(167Kb) там всё удачно компилируется но не работает на моей Arduino Pro mini может быть это из за того что в проекте используется только один вход пин 7 и один выход сигнала пин 4.? Хотелось бы эти данные передавать в комп по модбасу но с  ним вообще беда.

Добавлено (20.09.2017, 21:24)
---------------------------------------------
Murad, подскажите к каким входам на Arduino Pro mini надо подключать hx 711 ? если по аналогии с мегой то получаются А4 А5  ?

Reabus
Рядовой
Сообщения: 3
Зарегистрирован: 14.06.2018{, 18:55}
Репутация: 0
Откуда: Ижевск
Имя: Oleg

весы hx711

#35

Сообщение Reabus » 17.07.2018{, 20:51}

Добрый день. Модуль работает. Но почему когда на входе EN логический ноль, сам модуль не засыпает? Очень не хочеться заниматься коммутацией питания. Лучше чтоб модуль сам засыпал.
И еще на красной модуле пришлось 15 ножку сажать на землю, для получения стабильных показаний.

Revenger
Рядовой
Сообщения: 21
Зарегистрирован: 04.02.2016{, 02:22}
Репутация: 0
Откуда: Ставрополь
Контактная информация:

весы hx711

#36

Сообщение Revenger » 12.03.2019{, 22:55}

Приветствую мастера!
Скажите пожалуйста, как откалибровать или правильно настроить модуль? Компилируется проект http://flprog.ru/_fr/13/HX711_10.2016.flp из темы нормально (на меге), но показывает огромные значения (правда я пока кроме "скейл" не менял никакие параметры примера, т.к. не особо соображаю).
тензодатчик подключен только к Е+ Е- и А+ А- (по схеме из гугла).
Пример из ардуино библиотек как-то проще чтоли в настройке (пока не понял куда что именно здесь, а там всё нормально взвешивает) :smile44:
Собтсвенно почему я пытаюсь в флпрог - хочу дисплей сам прилепить, а не программист ни разу. С флпрог получается, но конечно с вашей помощью всегда. :smile390:

п.с. ну и вопрос к авторам скетча вышеназванного - для чего там вход 7 и выход 4 ?

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

весы hx711

#37

Сообщение vovka1973 » 28.09.2019{, 17:54}

Revenger писал(а):
12.03.2019{, 22:55}
Скажите пожалуйста, как откалибровать или правильно настроить модуль?
вот делал для себя блоки .один для калибровки другой выводит в граммах.
hx711.ubl
(202.78 КБ) 206 скачиваний
hx711_(CODE)+en.ubi
(122.67 КБ) 202 скачивания
Изображение

MaksVish
Рядовой
Сообщения: 91
Зарегистрирован: 14.07.2018{, 19:09}
Репутация: 1
Имя: Максим

весы hx711

#38

Сообщение MaksVish » 10.11.2021{, 01:32}

Здравствуйте! Я так и не понял, получилось подключить датчик PT100 !? По какой схеме и с каким блоком заработало?

arisov77
Рядовой
Сообщения: 54
Зарегистрирован: 11.06.2016{, 12:42}
Репутация: 8
Откуда: Инза

весы hx711

#39

Сообщение arisov77 » 18.11.2021{, 20:44}

MaksVish писал(а):
10.11.2021{, 01:32}
...получилось подключить датчик PT100...
viewtopic.php?f=43&t=1379&p=13518#p13518
На макетке всё работало нормально.

Ответить

Вернуться в «Прочие датчики и энкодеры»