Плавают показания весов на HX711

neoblack2
Offline
Зарегистрирован: 15.04.2017

Здравствуйте, вот такой вопрос -  есть весы на HX711 c датчиком на 350 kg. Понятно датчик недорогой, имеет свой класс точности, в результат когда я меряю с усреднениями показания весов плавают. Например 10 килограмм показывает ну например скачет 9.709 - потом 9.820 - потом 9.630  - потом 9.976 и т.д. Тоесть плавает ну 300-400 грамм железно, если не более. Логично что фильтра и т.д. можна городить, ограничить до сотых кг -  но в любом случае будет плавать.

Задача программно сделать такие же весы как и заводские, а точнее с таким измерением

Вот поставили на заводские 350 кг весы  - 102.1 кг, они за секунду две показали 102.1 и не плавают. Сняли 12 кг, показало через секунду 90.1 и не плавают. Меня устраивает эти 0.1 кг точность, но вот мне фильтром или как вот чтобы оно определило и стало по плывучке? Ну скажите наверно бери максимальное. Но тут не факт, а что будет если я сниму весь тот же 100 кг и назад поставлю, не факт что по максимуму будет теже 100 кг.

rkit
Offline
Зарегистрирован: 23.11.2016

В заводских весах реализованы фильтры, и температурная компенсация, и поверка, и еще куча всего. И сделано это очень умными дядьками, которые годами этому учились в университетах. А потом еще несколько месяцев в реальной лаборатории разрабатывали весы. Ожидать, что сейчас за полчаса на ардуине в 10 раз дешевле сделаешь не хуже - смехотворно.

Если же хочется более конкретных советов по улучшению, то нужно выкладывать полные характеристики оборудования, свои расчеты, схемы, код, и фото сборки.

neoblack2
Offline
Зарегистрирован: 15.04.2017

Ну на 5 кг дешевом датчике плавает в районе 1 грамма. на той же ардуине и на той же HX711, тоесть електроника та же.

Код абсолютно стандартен из примера библиотеки HX711 Bogdan Necula, простое тупое измерение веса периодически командой scale.get_units(3).

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

Попробовал в зависимости от веса устранять "левые" скачки веса, потом уже накопительно изучать последовательно измеряемый вес, и если он несколько раз подряд или растет или падает, то только тогда его учитывать.

        before_weight = weight_now;
        before_weight_now = scale.get_units(3) / 1000; 

        if (before_weight_now<1) { if (before_weight_now<before_weight+0.05 and before_weight_now>before_weight-0.05) before_weight_now = before_weight;}        
        else if (before_weight_now<10) { if (before_weight_now<before_weight+0.075 and before_weight_now>before_weight-0.075) before_weight_now = before_weight;}    
        else if (before_weight_now<100) { if (before_weight_now<before_weight+0.1 and before_weight_now>before_weight-0.1) before_weight_now = before_weight;} 
        else if (before_weight_now<before_weight+0.2 and before_weight_now>before_weight-0.2) {before_weight_now = before_weight;}                         
        
        if (before_weight_now>before_weight) {if (data_max<255) data_max++;} else data_max=0;
        if (before_weight_now<before_weight) {if (data_min<255) data_min++;} else data_min=0;
        
        if (data_max>=4 or data_min>=4) {
          data_max = 0;
          data_min = 0;
          weight_now = before_weight_now;
        }    

rkit
Offline
Зарегистрирован: 23.11.2016

Ну это черти что. По фильтрам есть огромное количество литературы и теории. Колесо изобретать нет никакой нужды.

Вот откопал реализацию простейшего ФНЧ.

class IIR_filter {
    float Y, alpha;
    public:
    /***
     * @param cuttoff Частота отсечки ФНЧ.
     * @param dt Интервал семплирования входа в c.
     * @param init Начальное значение
     */
    IIR_filter(float cutoff, float dt, float init) { 
        alpha = dt / ((1/cutoff) + dt);
        Y = init * alpha;
    }

    void sample(float X) {
        Y = alpha * X + (1-alpha) * Y;
    }

    float read() {
        return Y;
    }
};

 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

neoblack2 пишет:

 

Я что-то не понял - стоит только один тензодатчик? Для платформенных весов нужно 4 что бы нормально вес измерять. Иначе никакие фильтры не помогут.

5N62V
Offline
Зарегистрирован: 25.02.2016

на HX711 не сильно-то и отфильтруешь: период поступления новых данных около 80мсек. Не, ну можно, конечно, если время измерения не играет рояля. 

svm
Offline
Зарегистрирован: 06.11.2016

asam пишет:

neoblack2 пишет:

 

Я что-то не понял - стоит только один тензодатчик? Для платформенных весов нужно 4 что бы нормально вес измерять. Иначе никакие фильтры не помогут.

На бруске стоят 4 тензодатчика. Но судя по фото брусок БУ (видны следы коррозии). Добиться стабильности показаний от него не удастся. Бруски со следами коррозии или имеющие остаточные деформации вследствии перегрузки или удара, калибровке не поддаются. Возможно откалибровать только для одного веса, установленного  строго в одном месте платформы. Никакие фильтра не помогут. Выходной сигнал с тензодатчиков при фиксированной нагрузке очень стабилен и фильтровать его бессмысленно.

astwo
Offline
Зарегистрирован: 10.07.2019

Разумеется надо 4. Так как на одном помимо сжатия идёт ещё изгиб, если центр груза не совпадает с тензодатчиком. Вот изгиб уже датчик не меряет. Опять же величина маленькие. Так что добляют помехи по проводам и паршивые контакты в местах соединения.

neoblack2
Offline
Зарегистрирован: 15.04.2017

Ну вот заводские весы у человека. 1 датчик по центру. Поставил 101.1 кг к примеру, показало 101.1 кг и застыло. Опять снял поставил - так же само показало.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

neoblack2,так посмотрите как устроена рычажная схема заводских часов и ваша. Там тоже датчик по центру, но за счет рычагов усилие передается с краев. 

https://studopedia.info/1-57411.html

neoblack2
Offline
Зарегистрирован: 15.04.2017

И из-за такой рычажной системы стает более-менее точно мерять?

Ну вот у меня такая же конструкция на 5 кг - как на фото что я выслал. с точностью до 1 грамма меряет.

neoblack2
Offline
Зарегистрирован: 15.04.2017

rkit пишет:

Ну это черти что. По фильтрам есть огромное количество литературы и теории. Колесо изобретать нет никакой нужды.

Вот откопал реализацию простейшего ФНЧ.

Частота отсечки ФНЧ, Интервал семплирования входа в c., Начальное значение - можна пример если не тяжело готовый? К примеру показания приходят через scale.get_units(3) / 1000 - тут у нас в кг и с частотой 80 Гц меряю.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

neoblack2 пишет:

И из-за такой рычажной системы стает более-менее точно мерять?

Ну вот у меня такая же конструкция на 5 кг - как на фото что я выслал. с точностью до 1 грамма меряет.

Почитайте вы сопромат. Похоже эта дисциплина мимо вас прошла. Когда все измерения сводились к измерению длины пружины под нагрузкой, то да приходилось организовывать механическое суммирование усилий из 4-х точек с помощью системы рычагов. Сейчас уже дешевле поставить 4 измерительные системы и суммировать уже с помощью вычислительных ресурсов.

neoblack2
Offline
Зарегистрирован: 15.04.2017

qwone пишет:

neoblack2 пишет:

И из-за такой рычажной системы стает более-менее точно мерять?

Ну вот у меня такая же конструкция на 5 кг - как на фото что я выслал. с точностью до 1 грамма меряет.

Почитайте вы сопромат. Похоже эта дисциплина мимо вас прошла. Когда все измерения сводились к измерению длины пружины под нагрузкой, то да приходилось организовывать механическое суммирование усилий из 4-х точек с помощью системы рычагов. Сейчас уже дешевле поставить 4 измерительные системы и суммировать уже с помощью вычислительных ресурсов.

Я просто к тому что у меня на таком как на фото что я выслал (правда просто чуть менее по размеру) стоит 5 кг датчик. Меряет с точностью до 1 гр (тоесть плывучка в районе 1 грамма, просто округляю до грамма и все, показания стабильные). Зачем мне всякие рычажные суммирования если меряет все намного лучше чем на таком же только на 350 кг?

Вот что имею ввиду. Два аналогичных примера и две аналогичные конструкции.

svm
Offline
Зарегистрирован: 06.11.2016

neoblack2 пишет:

И из-за такой рычажной системы стает более-менее точно мерять?

Ну вот у меня такая же конструкция на 5 кг - как на фото что я выслал. с точностью до 1 грамма меряет.

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

neoblack2
Offline
Зарегистрирован: 15.04.2017

svm пишет:

neoblack2 пишет:

И из-за такой рычажной системы стает более-менее точно мерять?

Ну вот у меня такая же конструкция на 5 кг - как на фото что я выслал. с точностью до 1 грамма меряет.

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

Тоесть если я поменяю на другой датчик, например https://aliexpress.ru/item/4000545705300.html то такой плывучки не будет?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

neoblack2 пишет:
Вот что имею ввиду. Два аналогичных примера и две аналогичные конструкции.

Ну да, только разница в масштабах. Дети лепят из песочка паску и пирамида Хеопса. Но почему-то подходы и технологии разные. Но ведь аналогичные конструкции. Радует что вы не делаете весы для взвешивания грузовиков с грузом и без груза. Там тоже различные масштабы.

neoblack2
Offline
Зарегистрирован: 15.04.2017

qwone пишет:

neoblack2 пишет:
Вот что имею ввиду. Два аналогичных примера и две аналогичные конструкции.

Ну да, только разница в масштабах. Дети лепят из песочка паску и пирамида Хеопса. Но почему-то подходы и технологии разные. Но ведь аналогичные конструкции. Радует что вы не делаете весы для взвешивания грузовиков с грузом и без груза. Там тоже различные масштабы.

Ну технология одна и тоже, и конструкция практически одна и тоже и даже размеры датчиков одни и тоже )))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

neoblack2 пишет:
Ну технология одна и тоже, и конструкция практически одна и тоже и даже размеры датчиков одни и тоже )))

Вот только цены датчиков разные. Чем на большие грузы расчитаны, тем дороже. И если маленьшем сдвиге груза датчики начнет перекашавать и скручивать, то проблемы возникнут не только с плывучими показаниями, но и замене на новый исправный датчик. Считай потеря времени и денег на замену на новый датчик.

svm
Offline
Зарегистрирован: 06.11.2016

При ремонте весов, мы чаще ориентируемся на материал бруска (сталь или дюраль) и совпадение крепежных отверстий, чем на маркировку датчика. Сопротивление практически никакой роли не играет. Датчики с Али ничем не хуже "Российских" только в цене выигрывают. 

neoblack2
Offline
Зарегистрирован: 15.04.2017

Какие могут быть прогнозы в плывучке вот с тем датчиком с али и его точностью? Будет менее плавать чем на 300-400 грамм на текущем и при положенном весе?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

neoblack2 пишет:

Какие могут быть прогнозы в плывучке вот с тем датчиком с али и его точностью? Будет менее плавать чем на 300-400 грамм на текущем и при положенном весе?

При такой конструкции плывучка неизбежна и чем больше груз тем больше косяки.

svm
Offline
Зарегистрирован: 06.11.2016

На 300 килограммовых весах дискрета обычно 0,1 Кг, и если при калибровке грузом 300 Кг добавляем гирьку 100 г. в любую точку платформы,а они покажут 300,2 то весы не пройдут поверку. Это при условии, что датчик работает с платформой для которой гарантируются его параметры. Платформу меньше использовать можно.

neoblack2
Offline
Зарегистрирован: 15.04.2017

qwone пишет:

neoblack2 пишет:

Какие могут быть прогнозы в плывучке вот с тем датчиком с али и его точностью? Будет менее плавать чем на 300-400 грамм на текущем и при положенном весе?

При такой конструкции плывучка неизбежна и чем больше груз тем больше косяки.

Тогда смысла того что с али ставить по центру нету, будет тоже самое?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

neoblack2 пишет:

 

Тогда смысла того что с али ставить по центру нету, будет тоже самое?

Для конструкции по центру у измерительного элемента не хватает жесткости. Если вы понимаете чем отличается жесткость от прочности. Для малых грузов этого хватает, а вот с грузами потяжелее уже все.

svm
Offline
Зарегистрирован: 06.11.2016

neoblack2 пишет:

qwone пишет:

neoblack2 пишет:

Какие могут быть прогнозы в плывучке вот с тем датчиком с али и его точностью? Будет менее плавать чем на 300-400 грамм на текущем и при положенном весе?

При такой конструкции плывучка неизбежна и чем больше груз тем больше косяки.

Тогда смысла того что с али ставить по центру нету, будет тоже самое?

Все весы до 600 Кг имеют такую конструкцию. Дальше идут на тонну и выше. У них уже 4 датчика по углам, и калибровка достаточно гемморойная. Приходится гирьки 0,7 от максимального веса пару раз загружать. Да еще и углы отдельно калибровать и все это на идеально горизонтальной поверхности и с учетом географического положения. Правда это обычно никто не делает т.к. такие весы в основном используют для металлоприемки и им высокая точность не нужна.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

svm, повторю жесткость конструкции датчика. Упрощено говоря длина,ширина,высота. Прочность материала тоже повышает жесткость. По факту переход с алюминия на стали. Опять же датчик может быть коробчатым. Но теперь вопрос: сколько этот датчик стоит. То что китайцы это могут сделать не вопрос. Но точно это уже не покупается на Али.

svm
Offline
Зарегистрирован: 06.11.2016

qwone пишет:

svm, повторю жесткость конструкции датчика. Упрощено говоря длина,ширина,высота. Прочность материала тоже повышает жесткость. По факту переход с алюминия на стали. Опять же датчик может быть коробчатым. Но теперь вопрос: сколько этот датчик стоит. То что китайцы это могут сделать не вопрос. Но точно это уже не покупается на Али.

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