Весы на HX711 в FLPROG

Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

Целую неделю игрался с различными весовыми блоками и скетчами.
В настоящий момент остановился на следующем.
[spoiler]
Компилируем проект и применяя монитор порта получаем scaleFactor. Далее прописываем это значение в блок [HX711] Scale @Ushakov. Удаляем блок Astra, еще раз компилируем и используем уже совместно с "живым" дисплеем. Схема работает, с поргешностями конечно, но работает.

Единственная проблема - это жуткие тормоза ( а иногда вообще какая-то билиберда) при использовании обычной кнопки (есть в проекте). Кнопку убираем - всё работает нормально.
Снимок экрана 2024-02-10 124523.jpg
HX711_AstrA_v.1 + Ushakov.flp
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

Собрал ещё один вариант весов.
Но..... :smile37:
Калибровочное значение опять-таки подбирается методом корреляционно-регрессионного анализа.... (методом тыка).... :smile250:
Capture 013.JPG

Вот как работают эти весы-дозатор.

[bbvideo]https://www.youtube.com/watch?v=GmmBqaDKsJM[/bbvideo]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

В весах работает всего пара типов сигналла (зуммера) - прерывистый и длинный.
Знатоки, подскажите как сделать сигналы типа бип-бип-бииииип, бип-бип-бип-бииииип или типа того.
Может уже есть готовые решения, чтобы не тратить время?!

Или какой-нибудь вредный на слух сигнал.... в качество аварийно - предупреждающего...
Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

Добавил в существующие весы звуковое и визуальное предупреждение о превышении максимального веса 1кг.


WhatsApp Image 2024-02-20 at 16.45.12.jpeg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Вот, давненько, делал весы. Нужен был семисегментный светодиодный дисплей и передача через RS-485. Но, т.к. контроллер ЕСП32, то попробовал и веб интерфейс.
Там на первой плате условие для считывания параметров весов из EEPROM микроконтроллера при включении. Плата выполняется один раз, т.к. после выполнения в переменную записывается единица, и плата больше не активна.
А сохранение в память делается в плате 6, по условию изменения переменной.
Установка масштаба шкалы выполняется, в плате 9 по кнопке (что-то я там так и не доделал) либо по RS-485.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

ValentinK писал(а): 21 фев 2024, 16:21 Вот, давненько, делал весы. Нужен был семисегментный светодиодный дисплей и передача через RS-485. Но, т.к. контроллер ЕСП32, то попробовал и веб интерфейс.
Там на первой плате условие для считывания параметров весов из EEPROM микроконтроллера при включении. Плата выполняется один раз, т.к. после выполнения в переменную записывается единица, и плата больше не активна.
А сохранение в память делается в плате 6, по условию изменения переменной.
Установка масштаба шкалы выполняется, в плате 9 по кнопке (что-то я там так и не доделал) либо по RS-485.
Валентин, спасибо за шикарный проект! Очень интересно! :smile9:
Мне понравилась структуризация проекта, а также то, что каждая плата имеет свое название. Удобно.
Сейчас пытаюсь вникнуть, как это всё работает.
Не могли бы вы дать краткое последовательное описание работы каждой платы. Начиная от первой платы и вниз по порядку.

Например, по первой плате уже есть вопрос. Что это за переменная Int? Как работает?

Можно ли посмотреть работу данного проекта в натуре?
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Astreet писал(а): 22 фев 2024, 10:19 Не могли бы вы дать краткое последовательное описание работы каждой платы. Начиная от первой платы и вниз по порядку.
Могу, но у меня бывает с организацией времени не всё в порядке. По этому по мере возможности.
Astreet писал(а): 22 фев 2024, 10:19 Например, по первой плате уже есть вопрос. Что это за переменная Int? Как работает?
Первая плата выполняется по условию, что int = 0. Это возможно только при запуске программы (т.к. переменная инициализирована нулём), когда эта плата выполняет свою задачу, int присваивается единица и плата больше не работает.
А задача первой платы только считать коэффициенты для блока HX711 из памяти (Scale - масштаб для HX711, а Zero - тара). После восстановления питания значение тары должно восстанавливаться, т.к. ёмкости с гранулами стоят на весах постоянно.
Плата1.jpg
Tag_Int.png
Astreet писал(а): 22 фев 2024, 10:19 Можно ли посмотреть работу данного проекта в натуре?
А вот в натуре проекта больше нет. Задача отменилась, я опытный образец весовой платформы разобрал.

Отправлено спустя 3 минуты 2 секунды:
Плата 2 Работает постоянно. Там просто считывается значение измеренной массы в переменную HX711_Out и в выходной регистр ModBus для удалённого чтения.

Отправлено спустя 13 минут 45 секунд:
Плата 3 и плата 4. Прокомментировал на изображении.
Плата_3_4.jpg
Отправлено спустя 3 минуты 39 секунд:
Забыл указать, что сброс тары происходит по длинному нажатию (три секунды) на кнопку [Btn].
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

Валентин, спасибо за отклик! :smile9:
Надеюсь на ваше дальнейшее содействие в разборе этого интересного проекта.


ValentinK писал(а): 24 фев 2024, 17:14
Первая плата выполняется по условию, что int = 0. Это возможно только при запуске программы (т.к. переменная инициализирована нулём), когда эта плата выполняет свою задачу, int присваивается единица и плата больше не работает.
А задача первой платы только считать коэффициенты для блока HX711 из памяти (Scale - масштаб для HX711, а Zero - тара). После восстановления питания значение тары должно восстанавливаться, т.к. ёмкости с гранулами стоят на весах постоянно.
Ясно. В принципе вопросов нет.
Единственное, что почему-то посчитал, что это знак деления...... Ну и соответсвенно возник вопрос, зачем ноль делить на единицу.....
Capture 34.JPG

Скажите, а без Int плата работать не будет?


ValentinK писал(а): 24 фев 2024, 17:14 Плата 2 Работает постоянно. Там просто считывается значение измеренной массы в переменную HX711_Out и в выходной регистр ModBus для удалённого чтения.
Скажите, откуда берётся (как вычисляется) переменная Scale?
Capture 31.JPG


ValentinK писал(а): 24 фев 2024, 17:14
Плата 3 и плата 4. Прокомментировал на изображении.
Забыл указать, что сброс тары происходит по длинному нажатию (три секунды) на кнопку [Btn].
Подытожу.
Плата: 3. Нажимаем и удерживаем кнопку Btn в течении 3 секунд (TON). На экране в это время высвечивается * (звёздочка). Срабатывает SR триггер. Переменная Set_Zero приобретает "1".

Плата: 4. Показание с весов HX711_Out и Scale перемножаются. Почему именно перемножаются? И где берем Scale (вопрос уже был выше)?
Далее полученное значение складывается с ZERO. В SEEPROM стартовое значение "0".
Переменной Set_Zero (1) даём разрешение на запись нового значения ZERO в SEEPROM.
Переменная Set_Zero передает "1" на переменную Trig_reset, которая в свою очередь обнуляет SR триггер на плате3.
Capture 33.JPG

Т.е. по сути дела кнопка Btn в режиме удержания 3-х секунд обнуляет весы (тарирует). Правильно?
Думаю, в принципе этот цикл можно автоматизировать при включении весов. Как считаете?



Ждём (думаю не я один) разъяснений по следующим платам....
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Astreet писал(а): 26 фев 2024, 09:21 Скажите, а без Int плата работать не будет?
Плата работать будет и без Int. Но в таком случае в каждом цикле выполнения программы ядро контроллера будет обращаться к ППЗУ (EEPROM) для считывания переменных в ОЗУ. А каждый раз читать одни и те-же данные из постоянной памяти в оперативную смысла нет - только потеря процессорного времени (как, если-бы одни и те-же данные на компьютере каждый раз загружались с жёсткого диска в оперативную память).
Вот для однократного считывания коэффициентов из ППЗУ в ОЗУ и сделано однократное выполнение первой платы по условию Int = 0.
Astreet писал(а): 26 фев 2024, 09:21 Плата: 3. Нажимаем и удерживаем кнопку Btn в течении 3 секунд (TON). На экране в это время высвечивается * (звёздочка). Срабатывает SR триггер. Переменная Set_Zero приобретает "1".
Это верно.
Astreet писал(а): 26 фев 2024, 09:21 Плата: 4. Показание с весов HX711_Out и Scale перемножаются. Почему именно перемножаются? И где берем Scale (вопрос уже был выше)?
Плата четыре служит для сброса тары в ноль.
Перемножаются здесь, т.к внутри блока внутренние данные с АЦП микросхемы делятся на Scale для выдачи значения массы на выход. А значение нуля тары хранится в единицах АЦП, а не единицах массы (хотя логичнее и проще было-бы наоборот). Вот для получения значения нуля (тары) в единицах АЦП и приходится делать расчёт.
И плата выполняется по Set_Zero один раз (эта переменная позже сбрасывается).
Scale - масштаб изначально вычисляется по инструкции из блока (автор блока HX711 оставил внутри описание с подробной инструкцией). Вот оттуда выдержка:
"Вход "Zero" - задание нуля или установка тары.
На выходе сигнал Out = Out - Zero.
Тип входа - Long Integer. Можно задавать значения от -2147483648 до 2147483647.
-----------------------------------------------------------------------------------------------------------------------------------------------
Вход "Scale" - задание диапазона измерений или задание коэффициента пропорциональности.
Данные с АЦП делятся на коэффициент Scale, т.е. преобразуются в "удобный вид".
Out = Out / Scale.
Тип входа - Unsigned Long Integer. Можно задавать значения от 0 до: 4294967295"

-----------------------------------------------------------------------------------------------------------------------------------------------
Рекомендуется следующий порядок настройки:
1 - установить следующие параметры: "N_Read_n2" = 1; "Zero" = 0; "Scale" = 1
2 - установкой значения "N_Read_n2" подобрать стабильность показаний и нужную скорость
изменения данных. Лучше ориентироваться на приемлемую скорость изменения, исходя из
того, что чем медленнее - тем стабильней будут показания (после дальнейших преобразований)
3 - установить значение нуля или тары (при ненагруженном тензодатчике) на входе "Zero"
Zero = Out
4 - положить известный груз на тензодатчик и вычислить коэффициент преобразования по формуле:
Scale = Out / m
где:
Scale - коэффициент пропорциональности
Out - показания на выходе блока
m - масса известного груза на тензодатчике

-----------------------------------------------------------------------------------------------------------------------------------------------
Вот по этой инструкции рассчитывается Scale, затем я её сохранил через вэб интерфейс, но можно её жестко зафиксировать в программе, проинициализировав (присвоив ей значение) при объявлении переменной "Scale" в "Тэги -> Переменные". В таком случае её уже не надо будет сохранять и считывать из EEPROM.
Я сделал переменную Scale изменяемую удалённо, т.к. планировалось использовать несколько одинаковых весов, но с разными конструкциями платформ и разными тензодатчиками (от ста-трёхсот килограмм, доя четырёх тонн).
Astreet писал(а): 26 фев 2024, 09:21 Переменной Set_Zero (1) даём разрешение на запись нового значения ZERO в SEEPROM.
Переменная Set_Zero передает "1" на переменную Trig_reset, которая в свою очередь обнуляет SR триггер на плате3.
Astreet писал(а): 26 фев 2024, 09:21 Т.е. по сути дела кнопка Btn в режиме удержания 3-х секунд обнуляет весы (тарирует). Правильно?
- Это верно.
Astreet писал(а): 26 фев 2024, 09:21 Думаю, в принципе этот цикл можно автоматизировать при включении весов. Как считаете?
Вот это зависит от задачи.
В моём случае сбросив тару при включении, ладно снять ящик с сухим льдом, но опустошить бочку с жидким азотом или аргоном для обнуления тары было-бы достаточно проблематично.
Поэтому я сделал сохранение тары в память, что-бы не потерять его при перебоях с электричеством.
А вот если вам не надо хранить значение тары, то можно его обнулять при включении и не сохранять его в EEPROM. Тогда не нужна будет первая плата для считывания и не нужны будут участки с записью в ППЗУ.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Плата 5 работает в каждом цикле. Является дешифратором для семисегментных индикаторов на базе MAX7219. Семисегментный индикатор выбран потому, что можно собрать индикатор любого нужного размера, они яркие и холода не боятся.
Плата_5.png
Переключатель слева сверху нужен для передачи только положительного числа в дешифратор индикатора. Для этой цели служит и чтение бита и умножение на минус один.
Дальше куча одинаковых делений и взятий по модулю организуют из входного числа значения отдельных цифр из которых состоит число. Может быть для этого и стандартный блок есть, но я не стал искать.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Плата 6 выполняется в каждом цикле. Здесь выделена работа с памятью и регистрами ModBus.
Плата_6.png
Тут, я думаю, комментариев достаточно.
Через ModBus планировался сбор данных с нескольких весов на компьютер в офис.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Остальные платы для тестов и отладки.
Если надо будет, объясню для чего.
Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

ValentinK писал(а): 26 фев 2024, 16:53
Плата работать будет и без Int. Но в таком случае в каждом цикле выполнения программы ядро контроллера будет обращаться к ППЗУ (EEPROM) для считывания переменных в ОЗУ. А каждый раз читать одни и те-же данные из постоянной памяти в оперативную смысла нет - только потеря процессорного времени (как, если-бы одни и те-же данные на компьютере каждый раз загружались с жёсткого диска в оперативную память).
Вот для однократного считывания коэффициентов из ППЗУ в ОЗУ и сделано однократное выполнение первой платы по условию Int = 0.
Супер! Это уже тонкости! Я бы не додумался..... :smile37:

ValentinK писал(а): 26 фев 2024, 16:53
Плата четыре служит для сброса тары в ноль.
Перемножаются здесь, т.к внутри блока внутренние данные с АЦП микросхемы делятся на Scale для выдачи значения массы на выход. А значение нуля тары хранится в единицах АЦП, а не единицах массы (хотя логичнее и проще было-бы наоборот). Вот для получения значения нуля (тары) в единицах АЦП и приходится делать расчёт.
И плата выполняется по Set_Zero один раз (эта переменная позже сбрасывается).
Scale - масштаб изначально вычисляется по инструкции из блока (автор блока HX711 оставил внутри описание с подробной инструкцией). Вот оттуда выдержка:
"Вход "Zero" - задание нуля или установка тары.
На выходе сигнал Out = Out - Zero.
Тип входа - Long Integer. Можно задавать значения от -2147483648 до 2147483647.
-----------------------------------------------------------------------------------------------------------------------------------------------
Вход "Scale" - задание диапазона измерений или задание коэффициента пропорциональности.
Данные с АЦП делятся на коэффициент Scale, т.е. преобразуются в "удобный вид".
Out = Out / Scale.
Тип входа - Unsigned Long Integer. Можно задавать значения от 0 до: 4294967295"

-----------------------------------------------------------------------------------------------------------------------------------------------
Рекомендуется следующий порядок настройки:
1 - установить следующие параметры: "N_Read_n2" = 1; "Zero" = 0; "Scale" = 1
2 - установкой значения "N_Read_n2" подобрать стабильность показаний и нужную скорость
изменения данных. Лучше ориентироваться на приемлемую скорость изменения, исходя из
того, что чем медленнее - тем стабильней будут показания (после дальнейших преобразований)
3 - установить значение нуля или тары (при ненагруженном тензодатчике) на входе "Zero"
Zero = Out
4 - положить известный груз на тензодатчик и вычислить коэффициент преобразования по формуле:
Scale = Out / m
где:
Scale - коэффициент пропорциональности
Out - показания на выходе блока
m - масса известного груза на тензодатчике

По сути дела, перемножением вы возвращаете значение, выдаваемое АЦП, в исходный вид. А Zero как раз представлено в формате АЦП.
Да уж... Блин... Это не для советской математической школы... Шутка.... :smile37:



ValentinK писал(а): 26 фев 2024, 16:53
В моём случае сбросив тару при включении, ладно снять ящик с сухим льдом, но опустошить бочку с жидким азотом или аргоном для обнуления тары было-бы достаточно проблематично.
Поэтому я сделал сохранение тары в память, что-бы не потерять его при перебоях с электричеством.
А вот если вам не надо хранить значение тары, то можно его обнулять при включении и не сохранять его в EEPROM. Тогда не нужна будет первая плата для считывания и не нужны будут участки с записью в ППЗУ.
Подождите! А как же Scale? Если первую плату уберём, то вместе с ней и Scale.....


ValentinK писал(а): 26 фев 2024, 17:31 Плата 5 работает в каждом цикле. Является дешифратором для семисегментных индикаторов на базе MAX7219. С
Честно говоря, не пойму, как это всё работает.... В смысле где-то в глубине души что-то есть... но где-то глубоко, глубоко. По-моему в школе этот материал проходили, но очень давно...
Не суть важна! Главное, что работает! :smile9:
Скажите, на какое число рассчитан данный вариант. Сколько кг или может тонн? 10, 100, 1000...


ValentinK писал(а): 26 фев 2024, 17:31
Переключатель слева сверху нужен для передачи только положительного числа в дешифратор индикатора. Для этой цели служит и чтение бита и умножение на минус один.
Здесь вообще тёмный лес.
Capture 36.JPG
Что я понял...
Если на входе неотрицательное число, то оно со входа 0 идет на выход Q.
Если же на входе отрицательное число, то оно перемножается с отрицательным и соотвественно на выходе получаем неотрицательное число.

Вопрос: HX711_Out может быть и отрицательным? Почему?


Далее. Блок BitR отвечает за определение отричательного/неотрицательного числа.
Как? Почему на входе bn константа 31.
Внятного хелпа по данному блоку, я к сожалению, не нашел.


И почему нельзя сигнал HX711_Out (даже если он отрицательный) запустить напрямую на блок дешифратора 7-ми сегментного индикатора? С отрицателными числами делёж пойдёт неправильно?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Astreet писал(а): 27 фев 2024, 11:20 Подождите! А как же Scale? Если первую плату уберём, то вместе с ней и Scale.....
А эта переменная станет постоянной и будет инициализирована при компиляции.
Откомпилировать со Scale = 1, прошить контроллер, поставить эталонную гирьку, посчитать нужное значение Scale.
в FLProg присвоить Scale = "посчитанное значение", откомпилировать, прошить контроллер, проверить гирькой, пользоваться.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

В блоке MAX7219 есть возможность выбрать один вход для всех разрядов и посылать в него переменную целиком. Но не помню, что у меня не заработало, и из-за чего я сделал так, как сделал.
Astreet писал(а): 27 фев 2024, 11:20 Если на входе неотрицательное число, то оно со входа 0 идет на выход Q.
Если же на входе отрицательное число, то оно перемножается с отрицательным и соотвественно на выходе получаем неотрицательное число.
Так и есть.
Astreet писал(а): 27 фев 2024, 11:20 Далее. Блок BitR отвечает за определение отричательного/неотрицательного числа.
Как? Почему на входе bn константа 31.
Представление отрицательных чисел в Компьютере и микроконтроллере одинаковое первый слева бит (или 31, если по компьютерному считать) равен единице. Вот блок BitR и проверяет является-ли число отрицательным и переключает Switch. Но здесь надо обязательно знать какого типа переменная: целая беззнаковая или со знаком. HX711_Out - переменная Long Integer Диапазон -2147483648 до 2147483647.
Astreet писал(а): 27 фев 2024, 11:20 Вопрос: HX711_Out может быть и отрицательным? Почему?
А вот поставил я тарелку на весы (300 грамм), сбросил тару (0 грамм), и снял тарелку с весов ( 0 - 300 = -300 грамм).
Astreet писал(а): 27 фев 2024, 11:20 И почему нельзя сигнал HX711_Out (даже если он отрицательный) запустить напрямую на блок дешифратора 7-ми сегментного индикатора? С отрицателными числами делёж пойдёт неправильно?
Верно, математика в данном случае подобрана для работы с целыми положительными числами.
Astreet писал(а): 27 фев 2024, 11:20 Скажите, на какое число рассчитан данный вариант. Сколько кг или может тонн? 10, 100, 1000...
Индикатор состоит из восьми сегментов, один забрал на показ минуса при отрицательном значении. На отображение цифр остаётся сем сегментов. Я сделал отображение шести цифр.
Точку можно поставить между любыми разрядами. А на панели написать хоть граммы, хоть тонны, в зависимости от потребности.
Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

ValentinK писал(а): 27 фев 2024, 17:00
Astreet писал(а): 27 фев 2024, 11:20 Далее. Блок BitR отвечает за определение отричательного/неотрицательного числа.
Как? Почему на входе bn константа 31.
Представление отрицательных чисел в Компьютере и микроконтроллере одинаковое первый слева бит (или 31, если по компьютерному считать) равен единице. Вот блок BitR и проверяет является-ли число отрицательным и переключает Switch. Но здесь надо обязательно знать какого типа переменная: целая беззнаковая или со знаком. HX711_Out - переменная Long Integer Диапазон -2147483648 до 2147483647.

Валентин, скажите, нижняя часть схемы эквивалентна верхней части?
Снимок экрана 2024-02-29 063316.jpg

ValentinK писал(а): 26 фев 2024, 17:47 Плата 6 выполняется в каждом цикле. Здесь выделена работа с памятью и регистрами ModBus.
Плата_6.png
Тут, я думаю, комментариев достаточно.
Через ModBus планировался сбор данных с нескольких весов на компьютер в офис.
Это пока отложим.... С ModBus ещё не сталкивался и не разбирался с этим.... :smile37:



Что я понял....
Плата 7 и 8 работают совместно.
Дисплей включается на 1 секунду.... И высвечивается следующее...
Z *
S *
Снимок экрана 2024-02-29 064304.jpg
А также T3 / > / TR1 в момент "прилёта" соотвествующих переменных (показаны красным).

Дополните/поправьте, пожалуйста.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Astreet писал(а): 29 фев 2024, 06:35 Валентин, скажите, нижняя часть схемы эквивалентна верхней части?
Должно работать одинаково. Так, даже более понятно.
Astreet писал(а): 29 фев 2024, 06:35 Плата 7 и 8 работают совместно.
Плата 8 дисплей для отладки - использовал только для проверки срабатывания отдельных блоков.
На дисплей отображаются переменные, обведённые красным это я не подчистил отладку платы номер 3.

Плата 7 сделана для включения дисплея один раз в секунду на один цикл выполнения программы. Что-бы освободить процессорное время для других задач. Т.е. дисплей обновляется один раз в секунду - это не совсем хорошо, т.к. можно пропустить короткое изменение отображаемых переменных, но при этом не загружается процессор постоянным обновлением экрана.
Здесь, лучше применить обновление дисплея по отслеживанию изменения переменной в каждом цикле, тогда и дисплей не будет бесполезно обновляться и не пропустить изменение входных переменных.

Отправлено спустя 10 минут 11 секунд:
Astreet писал(а): 29 фев 2024, 06:35 Дисплей включается на 1 секунду.... И высвечивается следующее...
Z *
S *
Вспомнил эти символы - метки, в какой строке какая переменная (Z - Zero, S - Scale).

Отправлено спустя 2 минуты 2 секунды:
Astreet писал(а): 29 фев 2024, 06:35 А также T3 / > / TR1 в момент "прилёта" соотвествующих переменных (показаны красным).
Верно, они показывают, что соответствующие переменные стали единицами.
ValentinK
Рядовой
Сообщения: 22
Зарегистрирован: 16 фев 2024, 17:13
Имя: Валентин

Весы на HX711 в FLPROG

Сообщение ValentinK »

Вот так можно изменить плату 7.
Теперь она будет включать дисплей только при изменении переменных.
Плата_7_Изм.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Astreet
Сержант
Сообщения: 259
Зарегистрирован: 07 дек 2023, 07:35
Имя: Александр
Благодарил (а): 20 раз
Поблагодарили: 11 раз

Весы на HX711 в FLPROG

Сообщение Astreet »

Обратил внимание, что некоторые платы имеют комментарии. Поначалу считал, что они написаны вручную. Оказывается нет, внутри платы можно задать условие на выполнение. Каждый день узнаешь что-то новое... Поневоле вспомнил .... О сколько нам открытий чудных готовят просвещенья дух....
Capture 37.JPG
Capture 38.JPG
Плата 8 имеет зеленую стрелочку, а плата 9 красную. Что это?

Отправлено спустя 5 минут 59 секунд:
Плата 9. Масштаб установка.
Что это такое? Для чего? Как работает? Судя по всему, нажимаем кнопочку и счетчик считает от 1 до 1000, а затем умножается на 100.

Capture 39.JPG

Это, я так понимаю, дешифратор для дисплея.....
Capture 40.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
OLGA
Сержант
Сообщения: 146
Зарегистрирован: 04 авг 2021, 09:21
Имя: Павел
Благодарил (а): 45 раз
Поблагодарили: 8 раз

Весы на HX711 в FLPROG

Сообщение OLGA »

Astreet писал(а): 01 мар 2024, 09:53 Плата 8 имеет зеленую стрелочку, а плата 9 красную. Что это?
не компилировать плату.
Ответить

Вернуться в «Помогите, а то я "нимагу"»

Кто сейчас на конференции

Сейчас этот форум просматривают: tolika и 5 гостей