Напольные весы с отсылкой данных.

Japar
Offline
Зарегистрирован: 28.05.2016

Здравствуйте, прошу вас о помощи, можете подсказать схему подключения ваших весов, а именно 4 тензодатчиков с тремя проводами к HX711, хочу создать такие же весы как у вас)

Araris
Offline
Зарегистрирован: 09.11.2012

1. Схема подключения датчиков присутствует и в этой теме, и в первоисточнике на http://geektimes.ru/post/258592/

2. Если уж Вам недосуг разобраться, то вот, пожалуйста :

Japar
Offline
Зарегистрирован: 28.05.2016

Спасибо, но вопрос, у HX711 есть 6 выходов Е+Е-А+А-В+В-, тензодатчики к каким разьемам подключать, подскажите пожалуйста

Japar
Offline
Зарегистрирован: 28.05.2016

Арарис, да я в этом источнике смотрел, но к сажлению так и не понял как посторить правильную схему(( Благодаря вашей подсказке попробую, еще раз спасибо.

Araris
Offline
Зарегистрирован: 09.11.2012

Japar пишет:

Спасибо, но вопрос, у HX711 есть 6 выходов Е+Е-А+А-В+В-, тензодатчики к каким разьемам подключать, подскажите пожалуйста

В+ и В- не используются, смотрите картинку выше, красные провода идут к Е+ Е- А+ А-.

Japar
Offline
Зарегистрирован: 28.05.2016

Здравствуйте, к сожалению не запускается, уже не знаю в чем может быть проблема. Может дело в скетче:

#include <HX711.h>
 
 
HX711 scale(A0, A1);
 
 
 
void setup() {
  Serial.begin(9600);
}
 
 
void loop() {
  int ves;
  ves=analogRead(A0);
  Serial.print(ves);
  Serial.println(" g");
  delay(1200);
}
Japar
Offline
Зарегистрирован: 28.05.2016

Значения постоянно выходят 148 150 149 грамм, хоть давлю хоть не давлю на датчик, без изменения остаются такие же, результаты.

Araris
Offline
Зарегистрирован: 09.11.2012

Думаю, дело в скетче. Интересно, зачем там объявлено HX711 scale(A0, A1); ?

Japar
Offline
Зарегистрирован: 28.05.2016

на них вроде должны выводится данные? Можете посказать как будет правильнее?

Araris
Offline
Зарегистрирован: 09.11.2012

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

Japar
Offline
Зарегистрирован: 28.05.2016

Как вы думаете, возможно ли это проблема в тензодатчиках? Может стоить поменять крйние провода местами?

Araris
Offline
Зарегистрирован: 09.11.2012

Japar, я - пас. Вы правильно обратились в "Ищу исполнителя".

Del34
Offline
Зарегистрирован: 22.06.2016

Благодарю Вас за скетч, пробовал многие другие, все время бежали какие-то погрешности, а тут все гуд. Подскажите, пожалуйста, как померить вес уже стоящего на весах предмета, используя Ваш скетч. Тоже занимаюсь пчеловодством, мерить будем вес улья.

Araris
Offline
Зарегистрирован: 09.11.2012

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

Уважаемый Voblin_UA вот здесь http://arduino.ru/forum/proekty/kontrolnye-vesy-dlya-paseki-s-otpravkoi-dannykh-v-sms поднимал тему взвешивания ульев, если Вы ещё не читали - рекомендую.

safari
Offline
Зарегистрирован: 02.02.2015

Подскажите, можно ли такими весами (после тарировки) измерять вес постоянно?

Не будут ли со временем датчики "уставать" и требовать перекалибровки?

Мне нужен постоянный мониторинг расхода газа в баллоне, стоящем стационарно на таких весах.

 

 
Araris
Offline
Зарегистрирован: 09.11.2012

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

safari
Offline
Зарегистрирован: 02.02.2015

День добрый еще раз.

купил вот такой комплект: http://www.ebay.com/itm/281925026200?_trksid=p2057872.m2749.l2649&ssPage...

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

PS:  а где брал библиотеку ув. топик стартер?

/* sample for digital weight scale of hx711
 * library design: Weihong Guan (@aguegu)
 * library host on
 *https://github.com/aguegu/ardulibs/tree/3cdb78f3727d9682f7fd22156604fc1e4edd75d1/hx711
 */

// Hx711.DOUT - pin #A1
// Hx711.SCK - pin #A0

#include <hx711.h>
//#include "U8glib.h"

Hx711 scale(A1, A0);
//U8GLIB_SSD1306_128X64 u8g(10, 9, 8);

float G;


}

void setup() {
  
  Serial.begin(9600);

  /*Здесь необходимо подобрать калибровочный коэффиент.
  В моем случае от получился 6500.
  Схема подбора:
  1) ставим на весы груз с известным весом;
  2) загружаем скетч;
  3) подбираем, пока не будет достигнута величина известного груза.*/
  scale.setScale(208.5);
  
}

void loop() {

  G = scale.getGram();

  if(G<0)G=0;
  
  Serial.print(G, 1);
  Serial.println(" g");
  delay(100);
  
}

 

Araris
Offline
Зарегистрирован: 09.11.2012

Да, библиотека у меня была другая, где брал уж не упомню, но она присутствует в архиве https://www.dropbox.com/s/ik2pk27zog4nn7d/AVSmartScales.zip?dl=0

Думаю, проблема не в библиотеке, а в необходимости иного построения скетча.

"Если же груз был сразу на платформе при старте ардуины, то вес так и остается на нуле." - ну да, так и должно быть, ведь при старте весы инициализируются и выставляются на нуль. Как с этим можно бороться ? Вот, что на ум пришло : 

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

1. После каждого взвешивания записываем его результат в EEPROM.

2. При старте читаем этот самый результат из EEPROM.

3. При взвешивании прибавляем его к результату нового взвешивания (который будет нулевым после сбоя питания и рестарта скетча). Насколько я помню, отрицательные результаты взвешивания там вполне допустимы (баллон ведь будет становиться легче с течением времени).

+. Для борьбы с погрешностями и при замене баллона делаем некий режим калибровки, вызываемый либо вручную (кнопкой, например), либо привязанный к датчику наличия груза на весах. Снимаем груз - выставляем нуль - возвращаем груз - взвешиваем - пункт 1.

Извините, мысли сумбурные и до конца не додуманные, но может чем поможет...

Хорошо бы, конечно, иметь датчик наличия груза на весах.

 
zalias7
Offline
Зарегистрирован: 18.03.2015

Пустые весы: берём
zero=  scale.read_average(50); EEPROM.writeLong(adrZero,zero);

при старте весов :
unsigned long zero=EEPROM.readLong(adrZero);

При измерений :
result=scale.read_average(50)-zero;
 

safari
Offline
Зарегистрирован: 02.02.2015

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

scale.tare();                        // reset the scale to 0

Поставил на ночь, вес 7,5кг уплыл (потяжелел) на 6 гр., буду дальше смотреть на предмет живучести дадчика при постоянном замере.

 

safari
Offline
Зарегистрирован: 02.02.2015

К стати, кому интересно, нормально всё вроде. Пару месяцев весы фурычат 24/7 nonstop. Около 7 кг баллон измеряют.

Так что, для ульев подойдет, наверное тоже.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну делись кодом схемами.  чтобы ничего не потерялось как у меня когда яндекс диск заглючил и почти все удалил. мне конечно дали тогда в компенсацию 200Гб, но данные это не вернет

safari
Offline
Зарегистрирован: 02.02.2015
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну гитхаб врядли отвалится, арзве что заблокируют,  а вот что товар на ебее пропадет легко. и на гитхабе это либа. я говорил про конкретную схему и код. короче ты меня не понял

safari
Offline
Зарегистрирован: 02.02.2015

извиняюсь за долгий ответ.

У меня схема из двух ардуин и двух ESP-шек с кучей датчиков и исполнительных устройств и несколько тыщ строк кода. Публиковать я его пока не готов. Может когда-нибудь, почищу, оптимизирую, уберу лишнее и тогда...

Весы там занимают от силы 10 строк кода, причем 100% скопипащены из примера из библиотеки.

Про схему согласен, опубликую ка я её сюда:.

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

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

safari
Offline
Зарегистрирован: 02.02.2015

смотри сообщение №70

bwn
Offline
Зарегистрирован: 25.08.2014

Qaazaaq пишет:

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

А не проще для такого случая резервный аккумулятор поставить?

safari
Offline
Зарегистрирован: 02.02.2015

не надо гадать. был вопрос и был исчерпывающий ответ как раз для его случая.

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

bwn пишет:

А не проще для такого случая резервный аккумулятор поставить?

Неужели это проще? Safari же разобрался, тем более 10 строчек.

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

safari пишет:

не надо гадать. был вопрос и был исчерпывающий ответ как раз для его случая.

ООО, вот человек который мне нужен))) Подскажите пожалуйста как сделать это?

bwn
Offline
Зарегистрирован: 25.08.2014

Не спорю, у каждого свой вкус.)))

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

safari пишет:

не надо гадать. был вопрос и был исчерпывающий ответ как раз для его случая.

Уважаемый SAFARI, пожалуйста не молчите. 

safari
Offline
Зарегистрирован: 02.02.2015

вы библиотеку то скачайте по ссылке и пример оттуда запустите. потом посмотрите внимательно пост 70 и уже потом вопросы задавайте.

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

safari пишет:

вы библиотеку то скачайте по ссылке и пример оттуда запустите. потом посмотрите внимательно пост 70 и уже потом вопросы задавайте.

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

safari
Offline
Зарегистрирован: 02.02.2015

в чем проблема?

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

safari пишет:

в чем проблема?

запустил пример, вычитывает, вес показывает правильно. Вес остается на весах, отключил питание, подключил - вес сбрасывает на ноль. 

Как же сделать что бы вес оставался?

safari
Offline
Зарегистрирован: 02.02.2015

//  scale.tare();                        // reset the scale to 0

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

safari пишет:

//  scale.tare();                        // reset the scale to 0

закомментировал, теперь на пустых весах показывает 42 кг. Что я не так сделал?

safari
Offline
Зарегистрирован: 02.02.2015

весы калибровать надо.

https://github.com/bogde/HX711

How to Calibrate Your Scale

  1. Call set_scale() with no parameter.
  2. Call tare() with no parameter.
  3. Place a known weight on the scale and call get_units(10).
  4. Divide the result in step 3 to your known weight. You should get about the parameter you need to pass to set_scale.
  5. Adjust the parameter in step 4 until you get an accurate reading.
Qaazaaq
Offline
Зарегистрирован: 30.11.2016

safari пишет:

весы калибровать надо.

Спасибо большое за ответы. А проше никак нельзя сделать? Известны же параметры начальные 926620. Просто математикой нельзя их отнимать каждый раз. А это число в EEPROM записать. Или не правильно получиться?

safari
Offline
Зарегистрирован: 02.02.2015

Не помню сколько раз и как я свои калибровал, но помню, что довольно долго возился. Зачем что-то писать в eeprom вообще не понял. Один раз коэффицент пишется в скетч и всё работает месяцами...

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

safari пишет:

Не помню сколько раз и как я свои калибровал, но помню, что довольно долго возился. Зачем что-то писать в eeprom вообще не понял. Один раз коэффицент пишется в скетч и всё работает месяцами...

Ок, буду пытаться калибровать.

safari
Offline
Зарегистрирован: 02.02.2015

  выкладываю по просьбам трудящихся куски моего кода, связанного с весами

#include "HX711.h"
  HX711 scale(11, 10);        // parameter "gain" is ommited; the default value 128 is used by the library
  float TARE = 233.5;           // вес моей грузовой платформы, на которую ставится груз
  float ScaleCalibration = 208.5;  // основной гемор как раз рассчитать этот калибровочный коэффицент, читайте
readme 
  unsigned long HXloopTime = 0;

setup()

{
  scale.set_scale(ScaleCalibration);       // this value is obtained by calibrating the scale with known weights; see the README for details
#ifdef LCD_ON
  myGLCD.print(String(int (scale.get_units(10)-TARE))+" g", 175,140);  // у кого нет LCD везде заменить функцию на Serial.println();
#endif  
}

loop()
{
unsigned long currentTime = millis();
if(currentTime >= (HXloopTime + 60000))  // каждые 60 секунд
   {     
//      scale.power_up();  // режим энергосбережения у меня не заработал, у кого заработаел, отпишитесь
      HXloopTime = currentTime;              // Updates floopTime
      Serial.print("one reading:\t");
      Serial.print(scale.get_units()-TARE, 1);
      Serial.print("\t| average:\t");
      Serial.println(scale.get_units(10)-TARE, 1);
//      scale.power_down();                    // put the ADC in sleep mode
      #ifdef LCD_ON
          myGLCD.print(String(int (scale.get_units(10)-TARE))+" g", 175,140);  
      #endif  
   } 

 }

 

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

Короче не смог разобраться в калибровке и написал вот такой скетч, элементарный. 

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

#include <HX711.h>

//Инициализируем библиотеку для считывания данных с входов A0 и A1
HX711 hx711(A1, A0);
float BASE = 969131; // Изначальные параметры весов, без груза.
float KF = 22.81; // Коэфицент перевода в граммы
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  //Пишем в порт число, считанное с HX711
  Serial.println((hx711.read()-BASE)/KF); // вывод значений в граммах
  delay(1000);
}

Может, что то не правильно? Будут ли проблемы с таким скетчем?

safari
Offline
Зарегистрирован: 02.02.2015

Работает, и ладушки. А то я уже было хотел согласиться насчет ИБП :)

bwn
Offline
Зарегистрирован: 25.08.2014

safari пишет:

Работает, и ладушки. А то я уже было хотел согласиться насчет ИБП :)

Та ладно уж батарею от старой нокии+4056 с ИБП сравнивать. Загордятся.))))

Qaazaaq
Offline
Зарегистрирован: 30.11.2016

Возник еще вопрос как сделать так чтобы через веб интерейс просматривать вес? В наличии esp-01. Выручайте.

 

kirill.starodubov
Offline
Зарегистрирован: 22.03.2017

Araris добрый день,

Случайно наткнулся на пост - вопрос: вы можете на базе весов/тензодатчиков собрать аналоговый датчик крутящего момента?

очень надо на малые усилия 0-5НМ 

 

спсб!

Araris
Offline
Зарегистрирован: 09.11.2012

kirill.starodubov, добрый день. Извините, но я вряд ли смогу быть Вам полезен. Либо сами (советами, думаю,  помогут), либо обратитесь в раздел "Ищу исполнителя" этого форума.