Jump to content
Marksheider

Весы на тензодатчике, как убрать ненужные цифры???

Recommended Posts

Сижу собираю электронные весы и вроде как все работает даже.

DSC00793.thumb.JPG.9e4365cab352ea5514fe89b80bfaf4f7.JPG

При надавливании число которое показывает граммы увеличивается в числе значащих разрядов вот так.

DSC00794.thumb.JPG.a4444dde67b403fba5c2304829d3ac07.JPG

И когда отпускаешь нагрузку чтоб значения вернулись обратно к нулю получается вот такая засада. как погасить ненужные цифры???

DSC00795.thumb.JPG.68ca2bc18f2e0c4f1fe9d40af6787a62.JPG

то бишь 3 последних знака это вторая точка четыре и ноль последний??? Я с arduino пока на ВЫ потому не могу понять что нужно сделать в коде для этого. Эти цифры просто стоят и не меняются.
 

#include "HX711.h" // библиотека тензодатчика
#include <Wire.h> 
#include <LiquidCrystal_I2C.h> // Библиотека дисплея
HX711 scale(A1, A0);                          

float calibration_factor = -14.4;// калибровочная константа тензодатчика
float units;
float ounces;

LiquidCrystal_I2C lcd(0x3F,16,2);  // Устанавливаем дисплей

void setup() 
{
  scale.set_scale();
  scale.tare();                              //Сбрасываем на 0
  scale.set_scale(calibration_factor);       //Применяем калибровку

  lcd.init();  // инициализация ЖК дисплея                   
  lcd.backlight();// Включаем подсветку дисплея
  
  lcd.setCursor(5, 0);// перевод курсора на строку 1, символ 5
  lcd.print("Thrust");// Пишем Тяга
  lcd.setCursor(11, 1);// перевод курсора на строку 2, символ 11
  lcd.print("Gramm");//пишем Грамм
}

void loop() 
{ 
  for(int i = 0;i < 10; i ++) units =+ scale.get_units(), 10;   // усредняем показания считав 10 раз 
  units / 10;                                                   // делим на 10
   
  ounces = units * 0.035274;                                    // переводим унции в граммы              
  
  // Устанавливаем курсор на вторую строку и нулевой символ.
  lcd.setCursor(3, 1);
  // Выводим на экран вес в граммах
  lcd.print(ounces);
  }

 

 

Share this post


Link to post
Share on other sites
1 час назад, Marksheider сказал:

что нужно сделать в коде

Нужно перед выводом результата очистить место на экране для нового значения. Для этого выводим просто 8 пробелов на вторую строчку.

// Устанавливаем курсор на вторую строку на место выводе результата
lcd.setCursor(3, 1); 

// Выводим на экран 8 пробелов 
lcd.print("        ");

// Снова устанавливаем курсор на вторую строку в то же место.
lcd.setCursor(3, 1);

// Выводим на экран вес в граммах 
lcd.print(ounces);

 

Share this post


Link to post
Share on other sites

Спасибо, есче один вариант от вас, я просто попробовал в конце дописывать один пробел и все, он как раз затирает те цифры. Но все равно кажется это как то не правильно.

// Устанавливаем курсор на вторую строку и второй символ.
  lcd.setCursor(2, 1);
  // Выводим на экран вес в граммах
  lcd.print(ounces);
  lcd.print(" ");

А как избавиться от сотых грамма чтоб целые числа показывал в граммах.

Нужно как то преобразовать float в int16_t и выводить  его но че то не доходит как???

Edited by Marksheider

Share this post


Link to post
Share on other sites

Металл-композит как альтернатива ферриту: дроссели Panasonic семейства ETQP

Современные электронные устройства требуют все более компактных и эффективных компонентов. Новые металл-композитные дроссели обладают рядом преимуществ перед дросселями с ферритовым сердечником. Они не имеют ярко выраженного насыщения, обладают отличными частотными свойствами и способны работать при температурах до 150°C и выше. Все это делает их альтернативой стандартным дросселям с ферритовым сердечником в широком спектре автомобильных и промышленных приложений.

Подробнее

Во спасибо, работает. добавил условие чтоб ноль не скакал и с вашей последней строчкой все заработало.

void loop() 
{ 
  for(int i = 0;i < 10; i ++) units += scale.get_units(), 10; // усредняем показания считав 10 раз 
  units /= 10; // делим на 10

  ounces = units * 0.035274;// переводим унции в граммы  
              
  if (ounces > 0.5) //если вес не ничтожно мал
  {
  lcd.setCursor(2, 1);// Устанавливаем курсор на вторую строку и второй символ.
  lcd.print((int)ounces);// Выводим на экран вес в целых граммах
  lcd.print(" ");//затираем последний знак пробелом
  }
  else //или
  {
  lcd.setCursor(2, 1);// Выставляем курсор...
  lcd.print(0);// Выводим ноль
  }
}

 

Share this post


Link to post
Share on other sites
                     

Новые литиевые ХИТы Fanso работают даже при +150ºС!

Когда приходится учитывать работу в экстремальных условиях, к выбору электронных компонентов подходишь с особой тщательностью. Высокие температуры, большие перепады давления, труднодоступность – все это требует специальной продукции. Склад КОМПЭЛ пополнился новыми литиевыми ХИТами Fanso, стабильно работающими даже при температуре до 150 ºС. Батарейки имеют номинальное напряжение 3,6 В, обладают ёмкостью от 700 до 14000 мАч, работоспособны в широком температурном диапазоне -20…150ºС и имеют низкий саморазряд (не более 3% в год в нормальных условиях хранения).

Подробнее о высокотемпературной линейке

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

Подскажите как вольтметр написать.

void loop()
{ 
  ounces = scale.get_units(10);              //усреднение 10 значений
  dtostrf(ounces, 5, 0, myStr);              //Подготовка 5 знакомест
  lcd.setCursor(5, 1);                       //Переводим курсор
  lcd.print(myStr);                          //выводим значение грамм
}

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By LodestaRgr
      Доброго времени суток, форумчане. У меня мало опыта в микроэлектронике, прошу знающих помочь и подсказать?
      Идея сделать из обычных весов, wi-fi IP весы по аналогу CAS для подключения с торговому оборудованию по средствам локальной сети.
      За базу взял весы ГАРАНТ ВПС-40М




      http://www.datasheet-pdf.com/PDF/SDI5209T-Datasheet-SOLIDIC-1238977
      Подключение к локальной сети через Wi-Fi пытаюсь реализовать при помощи платформы NodeMCU на основе модуля ESP8266 (аналог Arduino c модулем wifi)

      Проблем с подключением по WiFi к торговому оборудованию (выбираю модель IP весы производства CAS) не возникло, программа получает вес который я указываю.
      Не могу разобраться как получить нужный сигна (сам вес от весом) от контроллера SDI5209T.
      На сколько я понял он использует интерфейс I2C на ножках 3 и 5. (опыта в работе с I2C еще не было)
      Подключаю его к NodeMCU (ножки GPIO 0, GPIO 4 - напряжения просто включаю весы), запускаю скетч сканера I2C портов
      https://www.instructables.com/id/ESP8266-I2C-PORT-and-Address-Scanner/
      и каждый раз получает разные адреса устройств по 26 по 4, 5 и т.д. т.е.
      Помогите, может советом, как мне словить сигнал веса с данного контроллера?
       
    • By Magnitofonych
      Доброго времени суток, форумчане. Я - студент, малоопытный, прошу знающих ГОСТ помочь (подсказать), правильно ли я изобразил на схеме  тензодатчик и его подключение?
      P.S. пытаюсь сделать схему электрическую принципиальную некого устройства, что будет считать количество пассажиров в автобусе.
      Буду рад любым замечаниям:
      По оформлению схемы электрической принципиальной По "правильности" подключения элементов согласно ГОСТ Вообще любой информации (Прошу только ведро с помоями на голову не сыпать) Схема прилагается:

      Сама схема весов:
       
       
       
       

    • By Chip.im
      Уважаемые знатоки, помогите, пожалуйста, подобрать модуль усилителя сигнала тензодатчика.
      Задача – усилить сигнал тензодатчика и отображать его на дисплее (вольтметре) в непрерывном режиме длительное время. Полномостовой тензодатчик на 50 кг взят из цифрового безмена. Схему из самого безмена, судя по всему,  использовать  не получится: она отключается через минуту (схема на in1706). Техданных на датчик нет, но аналоги имеют сигнал около 1 мВ/В на полную  шкалу. У меня полезный интервал измерений будет от 1 до 30 кг, т.е. при питающем напряжении 5 В нужно будет усиливать сигнал от 100 мкв до 3 мВ. Требуется усиление в 1000 раз. Вопрос такой:
      Тензодатчик, скорее всего, имеет некоторый фоновый сигнал в отсутствии давления на него.  А мне нужно иметь на экране ноль, когда вес нулевой, т.е. отображать только ту часть сигнала, которая идет от воздействия - калиброванный сигнал. Как этого достичь? Я нашел, например, вот такой модуль на ad620:https://ru.aliexpress.com/item/AD620-Microvolt-MV-Voltage-Amplifier-Signal-Instrumentation-Module-Board-3-12VDC-New-Arrival/32826236739.html?spm=a2g0v.10010108.1000014.2.4c3c00a2TPq2GH&traffic_analysisId=recommend_3035_null_null_null&scm=1007.13338.80878.000000000000000&pvid=8bfebda3-6f14-48c8-a8b4-344c683a2d15&tpp=1, у которого 2 подстроечных резистора, один из которых как раз выставляет ноль. Но для меня важны размеры модуля, поэтому мне более симпатичен, например, вот такой, гораздо более компактный, на ina129: https://ru.aliexpress.com/item/1PC-CJMCU-29-INA129-HT-High-Precision-Low-Power-Instrumentation-Amplifier-Module-Board-Best-Promotion/32821370296.html?ws_ab_test=searchweb0_0,searchweb201602_5_10065_10344_10068_10342_10343_10340_10341_10543_10084_10083_10618_10307_10301_10313_10059_10534_100031_10103_441_442_10624_520_10623_10622_10621_10620_10142_10125,searchweb201603_40,ppcSwitch_2&algo_expid=d14251b6-2ef6-4a90-96e1-ec5b8c6b7aad-1&algo_pvid=d14251b6-2ef6-4a90-96e1-ec5b8c6b7aad&priceBeautifyAB=0. Но у последнего только один подстроечный резистор, который, как я понимаю, задает усиление. Вроде микросхема имеет автоподстройку нуля, но это нужно для устранения собственного смещения, а не для вычитания паразитного сигнала. Можно ли с помощью такого модуля получить правильно откалиброванные показания на вольтметре? Или стоит взять все-таки модуль на ad620 с калибровочным резистором? Может, есть другие подходящие варианты модулей? Спасибо!
    • By Илья Юрьевич
      Товарищи, всем доброго времени суток!
      Расскажу ситуацию вкратце: Работаю в фирме, которая отчасти занималась обслуживание банкоматов, ремонтом и продажей запчастей для них. Ещё одно из направлений, это обслуживание кассовой техники и торгового оборудования. Если вкратце, то банкоматами перестали заниматься совсем, а на кассовую технику клиенты обновили парк оборудования. В сязи с этим, на складе пылится валяется куча банкоматского и торгового оборудования. От начальства поступил приказ, до конца года избавиться от всего ненужного. Если с банкоматскими железками я быстро нашёл разговор, подготовил их на сдачу в чермет, то с остальным оборудованием случилась беда. Жаба душит меня и всё, не могу такие вещи выбросить. Дело не в том, чтобы навариться, а в том, что наверняка кому-то что-то да нужно, а черметчики без разбора всё попилят и под пресс.
      По цене пишите, обязательно договоримся. Находится всё добро в Москве, территориально метро Нагатинская.
      Итак, ниже импровизированный список того, что примерно имеется на складе.
      1. Мониторы от банкоматов, 12" . Монитор специфически, по партномеру на фото без труда найдёте полное описание. В наличии наверно штук 20-30. По состоянию, после двух переездов, стали не очень, на многих имеются царапины, различных размеров, но есть и в идеальном состоянии, замотанные в стрейч.

      2. Осциллограф с1-112а . Даже не представляю как у нас очутился.

      3. Источники бесперебойного питания. По работоспособности не уверен, скорее всего нерабочие. По складу думаю штук 10 наковыряю.

      4. Сканер весы NCR. Вприниципе, там ломаться особо нечему, так что должны быть рабочими. На складе достаточное количество.

      5. Сканер штрихкодов стационарный, Даталоджик.

      6. Куча двигателей от банкоматов на 220в.

      7. Денежные ящики от касс.

×
×
  • Create New...