Marksheider

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

6 сообщений в этой теме

Marksheider    16

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

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);
  }

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    297
1 час назад, Marksheider сказал:

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

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

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Marksheider    16

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

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

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

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

Изменено пользователем Marksheider

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Marksheider    16

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

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);// Выводим ноль
  }
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Marksheider    16

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: 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 с калибровочным резистором? Может, есть другие подходящие варианты модулей? Спасибо!
    • Автор: Илья Юрьевич
      Товарищи, всем доброго времени суток!
      Расскажу ситуацию вкратце: Работаю в фирме, которая отчасти занималась обслуживание банкоматов, ремонтом и продажей запчастей для них. Ещё одно из направлений, это обслуживание кассовой техники и торгового оборудования. Если вкратце, то банкоматами перестали заниматься совсем, а на кассовую технику клиенты обновили парк оборудования. В сязи с этим, на складе пылится валяется куча банкоматского и торгового оборудования. От начальства поступил приказ, до конца года избавиться от всего ненужного. Если с банкоматскими железками я быстро нашёл разговор, подготовил их на сдачу в чермет, то с остальным оборудованием случилась беда. Жаба душит меня и всё, не могу такие вещи выбросить. Дело не в том, чтобы навариться, а в том, что наверняка кому-то что-то да нужно, а черметчики без разбора всё попилят и под пресс.
      По цене пишите, обязательно договоримся. Находится всё добро в Москве, территориально метро Нагатинская.
      Итак, ниже импровизированный список того, что примерно имеется на складе.
      1. Мониторы от банкоматов, 12" . Монитор специфически, по партномеру на фото без труда найдёте полное описание. В наличии наверно штук 20-30. По состоянию, после двух переездов, стали не очень, на многих имеются царапины, различных размеров, но есть и в идеальном состоянии, замотанные в стрейч.

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

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

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

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

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

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

    • Автор: Макcим
      Привет, прошу помощи что и как сделать.
      Кратко, есть пасека с пчелами небольшая.
      Нужно сделать
      1) Под улей поставить 4 тензодатчика каждый на 50кг (как у напольных электронных весов) через модуль АЦП HX711 
       
      2) Во внутрь улья, датчик влажности и температуры DHT11 (неважно какой) 
       
      Пока всё, есть ещё идея сделать "Частотный анализатор"  что-бы отслеживать состояние семьи ( возбужденное или спокойное) но как это сделать пока понятия не имею, в дальнейшем добавить датчик детонации, когда будет gsm модуль. 
      Не знаю как делать, чтоб Arduino опрашивал датчики с интервалом раз в 2 часа и отправлял результат на rasbery pi 3 а он чтоб составлял хронологию (график изменения) на apache сервере. А я мог подключиться к нему к примеру прямо там в поле через wi-fi с телефона и всё посмотреть.(в дальнейшем добавить gsm модуль и отправлял в инет всю информацию.) Или делать сразу всё на Rasbery pi 3. Но ведь мне так не хватит одного Rasbery pi 3 что бы за питать все датчики от всех ульев. Прошу помощи, совета что и как сделать лучше. Делаю для себя.
    • Автор: Анатолий Чуйко
      Нужна помощь. Есть необходимость считывать показания с тензодатчика на частоте больше 1кГц. Сейчас на стенде трудится готовый усилитель (коробка на фото), с которого читает ардуинка своим 10битным АЦП. В итоге вся конструкция подходит максимум для демонстрации принципа, но не для точных измерений. Кроме того данные в виде массива хранятся в памяти МК перед отправкой в сериал, а в ардуино нано влазит этих самых данных достаточно мало(, так что в планах переход на стм32. Посоветуйте пожалуйста связку из усилителя и ацп от 12 бит, способных работать на частоте около 1,5-2 кГц (около 2000 семплов в секунду), по возможности с минимальной внешней обвязкой и простой настройкой. Заранее благодарен.

    • Автор: evgeniy__p
      Доброго времени суток!
      Объясните пожалуйста (как можно примитивнее) отличие тензодатчика от тензометра? Если оно имеется.
      Внешне они отличаются. Оба измеряют деформацию, а в чем разница между ними не разберусь.
      Заранее спасибо!
  • Сообщения

    • Запуск восстановления коммерческая тайна. Я связывался с заводом напрямую, следуя регламенту нужно заменить устройство на новое. Можете подсказать точнее что перед выпаиванием от меня требуется.
    • 2кВт это ампер 9. Даже 10А диоды будут работать на пределе и греться. Как-то так получается, что на них (для нормальной работы светодиода) должно падать 3В, что при токе 10А даст 30Вт выделяемой мощности. Поэтому эта схема неудачная для такой нагрузки. Тут скорее нужно что-то подобное  Чем больше ток нагрузки — тем ярче свечение светодиода.
       Трансформатор Т1 может быть намотан на ферритовом кольце диаметром 30...40 мм марки 2000НН. Его токовая обмотка (включена в разрыв цепи нагрузки) содержит 20...25 витков толстого провода (диаметр 2,5 мм). Вторичная обмотка имеет 1500 витков тонкого провода (0,08...0,1 мм). Для уменьшения потерь в схеме выпрямителя использованы германиевые диоды. Светодиод лучше сверхяркий. Резистор R1 необходимо подобрать так, чтобы при максимальной нагрузке ток через светодиод не превышал допустимого (обычно 20-25 мА). Взято отсюда (по поиску в гугле - "индикация  мощной нагрузки") http://forum.homedistiller.ru/index.php?topic=36141.40 Или вот так http://radiostorage.net/1283-skhemy-prostyh-indikatorov-potreblyaemoj-moshchnosti-k176la7.html  Конструкция трансформатора тока и его вольт-амперная характеристика показаны на рис. 2. Его магнитопровод — ферритовое кольцо 2000 НМ типоразмера К20Х10Х5, которое аккуратно разламывают на две части и на одну из них наматывают 1500 витков провода ПЭВ-2 0,08 - это вторичная обмотка 3. Затем, надев вторую часть кольца 2 ,на сетевой провод 1, обе половины оклеивают клеем БФ-2 или эпоксидным клеем.
    • Тогда ищите вот такой:  RT-8B7WA-A19, развивает на валу аж 420Вт (питание 30А*18В), момент до 15,3 кГ*см . или такой  RZ-735VA-9517 на валу 280Вт (20А*18В), до 12,9 кГ*см Двух-трех пар ключей должно хватить, если до Stall'a не доводить  Жаль, высокооборотистые.
    • Собрал прибор при включении постоянно слышен звук динамика. Подключался без катушки. Вопрос где собака закрыта и второе какая индуктивность для катушки нужна для этого прибора. Спасибо
    • Нашёл ошибку подключении индикатора, еще вопрос при подключении прибора без катушки постоянно слышно зум динамика и на индикаторе положение сигнала находится в предпоследнем положении (14). Или потому, что без катушки или что?
    • SRAM + баратейка часто использовалась как енергонезависимая память, для хранения каких-либо параметров. В копирах такие связки от одной CR2032 работали порядка 10 лет, сейчас используется FRAM.  В устройстве скорее всего должен бьіть предусмотрен режим инициализации SRAM после сбоя питания, просто ТС не вкурсе как его запустить