Весы на HX711 в FLPROG
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
Целую неделю игрался с различными весовыми блоками и скетчами.
В настоящий момент остановился на следующем.
[spoiler]
Компилируем проект и применяя монитор порта получаем scaleFactor. Далее прописываем это значение в блок [HX711] Scale @Ushakov. Удаляем блок Astra, еще раз компилируем и используем уже совместно с "живым" дисплеем. Схема работает, с поргешностями конечно, но работает.
Единственная проблема - это жуткие тормоза ( а иногда вообще какая-то билиберда) при использовании обычной кнопки (есть в проекте). Кнопку убираем - всё работает нормально.
[/spoiler]
В настоящий момент остановился на следующем.
[spoiler]
Компилируем проект и применяя монитор порта получаем scaleFactor. Далее прописываем это значение в блок [HX711] Scale @Ushakov. Удаляем блок Astra, еще раз компилируем и используем уже совместно с "живым" дисплеем. Схема работает, с поргешностями конечно, но работает.
Единственная проблема - это жуткие тормоза ( а иногда вообще какая-то билиберда) при использовании обычной кнопки (есть в проекте). Кнопку убираем - всё работает нормально.
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
Собрал ещё один вариант весов.
Но.....
Калибровочное значение опять-таки подбирается методом корреляционно-регрессионного анализа.... (методом тыка)....
Вот как работают эти весы-дозатор.
[bbvideo]https://www.youtube.com/watch?v=GmmBqaDKsJM[/bbvideo]
Но.....

Калибровочное значение опять-таки подбирается методом корреляционно-регрессионного анализа.... (методом тыка)....

Вот как работают эти весы-дозатор.
[bbvideo]https://www.youtube.com/watch?v=GmmBqaDKsJM[/bbvideo]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
В весах работает всего пара типов сигналла (зуммера) - прерывистый и длинный.
Знатоки, подскажите как сделать сигналы типа бип-бип-бииииип, бип-бип-бип-бииииип или типа того.
Может уже есть готовые решения, чтобы не тратить время?!
Или какой-нибудь вредный на слух сигнал.... в качество аварийно - предупреждающего...
Знатоки, подскажите как сделать сигналы типа бип-бип-бииииип, бип-бип-бип-бииииип или типа того.
Может уже есть готовые решения, чтобы не тратить время?!
Или какой-нибудь вредный на слух сигнал.... в качество аварийно - предупреждающего...
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
Добавил в существующие весы звуковое и визуальное предупреждение о превышении максимального веса 1кг.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Весы на HX711 в FLPROG
Вот, давненько, делал весы. Нужен был семисегментный светодиодный дисплей и передача через RS-485. Но, т.к. контроллер ЕСП32, то попробовал и веб интерфейс.
Там на первой плате условие для считывания параметров весов из EEPROM микроконтроллера при включении. Плата выполняется один раз, т.к. после выполнения в переменную записывается единица, и плата больше не активна.
А сохранение в память делается в плате 6, по условию изменения переменной.
Установка масштаба шкалы выполняется, в плате 9 по кнопке (что-то я там так и не доделал) либо по RS-485.
Там на первой плате условие для считывания параметров весов из EEPROM микроконтроллера при включении. Плата выполняется один раз, т.к. после выполнения в переменную записывается единица, и плата больше не активна.
А сохранение в память делается в плате 6, по условию изменения переменной.
Установка масштаба шкалы выполняется, в плате 9 по кнопке (что-то я там так и не доделал) либо по RS-485.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
Валентин, спасибо за шикарный проект! Очень интересно!ValentinK писал(а): 21 фев 2024, 16:21 Вот, давненько, делал весы. Нужен был семисегментный светодиодный дисплей и передача через RS-485. Но, т.к. контроллер ЕСП32, то попробовал и веб интерфейс.
Там на первой плате условие для считывания параметров весов из EEPROM микроконтроллера при включении. Плата выполняется один раз, т.к. после выполнения в переменную записывается единица, и плата больше не активна.
А сохранение в память делается в плате 6, по условию изменения переменной.
Установка масштаба шкалы выполняется, в плате 9 по кнопке (что-то я там так и не доделал) либо по RS-485.

Мне понравилась структуризация проекта, а также то, что каждая плата имеет свое название. Удобно.
Сейчас пытаюсь вникнуть, как это всё работает.
Не могли бы вы дать краткое последовательное описание работы каждой платы. Начиная от первой платы и вниз по порядку.
Например, по первой плате уже есть вопрос. Что это за переменная Int? Как работает?
Можно ли посмотреть работу данного проекта в натуре?
Весы на HX711 в FLPROG
Могу, но у меня бывает с организацией времени не всё в порядке. По этому по мере возможности.Astreet писал(а): 22 фев 2024, 10:19 Не могли бы вы дать краткое последовательное описание работы каждой платы. Начиная от первой платы и вниз по порядку.
Первая плата выполняется по условию, что int = 0. Это возможно только при запуске программы (т.к. переменная инициализирована нулём), когда эта плата выполняет свою задачу, int присваивается единица и плата больше не работает.Astreet писал(а): 22 фев 2024, 10:19 Например, по первой плате уже есть вопрос. Что это за переменная Int? Как работает?
А задача первой платы только считать коэффициенты для блока HX711 из памяти (Scale - масштаб для HX711, а Zero - тара). После восстановления питания значение тары должно восстанавливаться, т.к. ёмкости с гранулами стоят на весах постоянно.
А вот в натуре проекта больше нет. Задача отменилась, я опытный образец весовой платформы разобрал.
Отправлено спустя 3 минуты 2 секунды:
Плата 2 Работает постоянно. Там просто считывается значение измеренной массы в переменную HX711_Out и в выходной регистр ModBus для удалённого чтения.
Отправлено спустя 13 минут 45 секунд:
Плата 3 и плата 4. Прокомментировал на изображении. Отправлено спустя 3 минуты 39 секунд:
Забыл указать, что сброс тары происходит по длинному нажатию (три секунды) на кнопку [Btn].
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
Валентин, спасибо за отклик!
Надеюсь на ваше дальнейшее содействие в разборе этого интересного проекта.
Единственное, что почему-то посчитал, что это знак деления...... Ну и соответсвенно возник вопрос, зачем ноль делить на единицу.....
Скажите, а без Int плата работать не будет?
Плата: 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.
Т.е. по сути дела кнопка Btn в режиме удержания 3-х секунд обнуляет весы (тарирует). Правильно?
Думаю, в принципе этот цикл можно автоматизировать при включении весов. Как считаете?
Ждём (думаю не я один) разъяснений по следующим платам....

Надеюсь на ваше дальнейшее содействие в разборе этого интересного проекта.
Ясно. В принципе вопросов нет.ValentinK писал(а): 24 фев 2024, 17:14
Первая плата выполняется по условию, что int = 0. Это возможно только при запуске программы (т.к. переменная инициализирована нулём), когда эта плата выполняет свою задачу, int присваивается единица и плата больше не работает.
А задача первой платы только считать коэффициенты для блока HX711 из памяти (Scale - масштаб для HX711, а Zero - тара). После восстановления питания значение тары должно восстанавливаться, т.к. ёмкости с гранулами стоят на весах постоянно.
Единственное, что почему-то посчитал, что это знак деления...... Ну и соответсвенно возник вопрос, зачем ноль делить на единицу.....
Скажите, а без Int плата работать не будет?
Скажите, откуда берётся (как вычисляется) переменная Scale?ValentinK писал(а): 24 фев 2024, 17:14 Плата 2 Работает постоянно. Там просто считывается значение измеренной массы в переменную HX711_Out и в выходной регистр ModBus для удалённого чтения.
Подытожу.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.
Т.е. по сути дела кнопка Btn в режиме удержания 3-х секунд обнуляет весы (тарирует). Правильно?
Думаю, в принципе этот цикл можно автоматизировать при включении весов. Как считаете?
Ждём (думаю не я один) разъяснений по следующим платам....
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Весы на HX711 в FLPROG
Плата работать будет и без 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. Тогда не нужна будет первая плата для считывания и не нужны будут участки с записью в ППЗУ.
Весы на HX711 в FLPROG
Плата 5 работает в каждом цикле. Является дешифратором для семисегментных индикаторов на базе MAX7219. Семисегментный индикатор выбран потому, что можно собрать индикатор любого нужного размера, они яркие и холода не боятся.
Дальше куча одинаковых делений и взятий по модулю организуют из входного числа значения отдельных цифр из которых состоит число. Может быть для этого и стандартный блок есть, но я не стал искать.
Переключатель слева сверху нужен для передачи только положительного числа в дешифратор индикатора. Для этой цели служит и чтение бита и умножение на минус один.Дальше куча одинаковых делений и взятий по модулю организуют из входного числа значения отдельных цифр из которых состоит число. Может быть для этого и стандартный блок есть, но я не стал искать.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Весы на HX711 в FLPROG
Плата 6 выполняется в каждом цикле. Здесь выделена работа с памятью и регистрами ModBus.
Через ModBus планировался сбор данных с нескольких весов на компьютер в офис.
Тут, я думаю, комментариев достаточно.Через ModBus планировался сбор данных с нескольких весов на компьютер в офис.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
Супер! Это уже тонкости! Я бы не додумался.....ValentinK писал(а): 26 фев 2024, 16:53
Плата работать будет и без Int. Но в таком случае в каждом цикле выполнения программы ядро контроллера будет обращаться к ППЗУ (EEPROM) для считывания переменных в ОЗУ. А каждый раз читать одни и те-же данные из постоянной памяти в оперативную смысла нет - только потеря процессорного времени (как, если-бы одни и те-же данные на компьютере каждый раз загружались с жёсткого диска в оперативную память).
Вот для однократного считывания коэффициентов из ППЗУ в ОЗУ и сделано однократное выполнение первой платы по условию Int = 0.

По сути дела, перемножением вы возвращаете значение, выдаваемое АЦП, в исходный вид. А Zero как раз представлено в формате АЦП.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 - масса известного груза на тензодатчике
Да уж... Блин... Это не для советской математической школы... Шутка....

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

Скажите, на какое число рассчитан данный вариант. Сколько кг или может тонн? 10, 100, 1000...
Здесь вообще тёмный лес. Что я понял...ValentinK писал(а): 26 фев 2024, 17:31
Переключатель слева сверху нужен для передачи только положительного числа в дешифратор индикатора. Для этой цели служит и чтение бита и умножение на минус один.
Если на входе неотрицательное число, то оно со входа 0 идет на выход Q.
Если же на входе отрицательное число, то оно перемножается с отрицательным и соотвественно на выходе получаем неотрицательное число.
Вопрос: HX711_Out может быть и отрицательным? Почему?
Далее. Блок BitR отвечает за определение отричательного/неотрицательного числа.
Как? Почему на входе bn константа 31.
Внятного хелпа по данному блоку, я к сожалению, не нашел.
И почему нельзя сигнал HX711_Out (даже если он отрицательный) запустить напрямую на блок дешифратора 7-ми сегментного индикатора? С отрицателными числами делёж пойдёт неправильно?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Весы на HX711 в FLPROG
А эта переменная станет постоянной и будет инициализирована при компиляции.Astreet писал(а): 27 фев 2024, 11:20 Подождите! А как же Scale? Если первую плату уберём, то вместе с ней и Scale.....
Откомпилировать со Scale = 1, прошить контроллер, поставить эталонную гирьку, посчитать нужное значение Scale.
в FLProg присвоить Scale = "посчитанное значение", откомпилировать, прошить контроллер, проверить гирькой, пользоваться.
Весы на HX711 в FLPROG
В блоке MAX7219 есть возможность выбрать один вход для всех разрядов и посылать в него переменную целиком. Но не помню, что у меня не заработало, и из-за чего я сделал так, как сделал.
Точку можно поставить между любыми разрядами. А на панели написать хоть граммы, хоть тонны, в зависимости от потребности.
Так и есть.Astreet писал(а): 27 фев 2024, 11:20 Если на входе неотрицательное число, то оно со входа 0 идет на выход Q.
Если же на входе отрицательное число, то оно перемножается с отрицательным и соотвественно на выходе получаем неотрицательное число.
Представление отрицательных чисел в Компьютере и микроконтроллере одинаковое первый слева бит (или 31, если по компьютерному считать) равен единице. Вот блок BitR и проверяет является-ли число отрицательным и переключает Switch. Но здесь надо обязательно знать какого типа переменная: целая беззнаковая или со знаком. HX711_Out - переменная Long Integer Диапазон -2147483648 до 2147483647.Astreet писал(а): 27 фев 2024, 11:20 Далее. Блок BitR отвечает за определение отричательного/неотрицательного числа.
Как? Почему на входе bn константа 31.
А вот поставил я тарелку на весы (300 грамм), сбросил тару (0 грамм), и снял тарелку с весов ( 0 - 300 = -300 грамм).
Верно, математика в данном случае подобрана для работы с целыми положительными числами.Astreet писал(а): 27 фев 2024, 11:20 И почему нельзя сигнал HX711_Out (даже если он отрицательный) запустить напрямую на блок дешифратора 7-ми сегментного индикатора? С отрицателными числами делёж пойдёт неправильно?
Индикатор состоит из восьми сегментов, один забрал на показ минуса при отрицательном значении. На отображение цифр остаётся сем сегментов. Я сделал отображение шести цифр.Astreet писал(а): 27 фев 2024, 11:20 Скажите, на какое число рассчитан данный вариант. Сколько кг или может тонн? 10, 100, 1000...
Точку можно поставить между любыми разрядами. А на панели написать хоть граммы, хоть тонны, в зависимости от потребности.
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
Валентин, скажите, нижняя часть схемы эквивалентна верхней части?ValentinK писал(а): 27 фев 2024, 17:00Представление отрицательных чисел в Компьютере и микроконтроллере одинаковое первый слева бит (или 31, если по компьютерному считать) равен единице. Вот блок BitR и проверяет является-ли число отрицательным и переключает Switch. Но здесь надо обязательно знать какого типа переменная: целая беззнаковая или со знаком. HX711_Out - переменная Long Integer Диапазон -2147483648 до 2147483647.Astreet писал(а): 27 фев 2024, 11:20 Далее. Блок BitR отвечает за определение отричательного/неотрицательного числа.
Как? Почему на входе bn константа 31.
Это пока отложим.... С ModBus ещё не сталкивался и не разбирался с этим....ValentinK писал(а): 26 фев 2024, 17:47 Плата 6 выполняется в каждом цикле. Здесь выделена работа с памятью и регистрами ModBus.
Плата_6.png
Тут, я думаю, комментариев достаточно.
Через ModBus планировался сбор данных с нескольких весов на компьютер в офис.

Что я понял....
Плата 7 и 8 работают совместно.
Дисплей включается на 1 секунду.... И высвечивается следующее...
Z *
S * А также T3 / > / TR1 в момент "прилёта" соотвествующих переменных (показаны красным).
Дополните/поправьте, пожалуйста.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Весы на HX711 в FLPROG
Должно работать одинаково. Так, даже более понятно.Astreet писал(а): 29 фев 2024, 06:35 Валентин, скажите, нижняя часть схемы эквивалентна верхней части?
Плата 8 дисплей для отладки - использовал только для проверки срабатывания отдельных блоков.
На дисплей отображаются переменные, обведённые красным это я не подчистил отладку платы номер 3.
Плата 7 сделана для включения дисплея один раз в секунду на один цикл выполнения программы. Что-бы освободить процессорное время для других задач. Т.е. дисплей обновляется один раз в секунду - это не совсем хорошо, т.к. можно пропустить короткое изменение отображаемых переменных, но при этом не загружается процессор постоянным обновлением экрана.
Здесь, лучше применить обновление дисплея по отслеживанию изменения переменной в каждом цикле, тогда и дисплей не будет бесполезно обновляться и не пропустить изменение входных переменных.
Отправлено спустя 10 минут 11 секунд:
Вспомнил эти символы - метки, в какой строке какая переменная (Z - Zero, S - Scale).Astreet писал(а): 29 фев 2024, 06:35 Дисплей включается на 1 секунду.... И высвечивается следующее...
Z *
S *
Отправлено спустя 2 минуты 2 секунды:
Верно, они показывают, что соответствующие переменные стали единицами.Astreet писал(а): 29 фев 2024, 06:35 А также T3 / > / TR1 в момент "прилёта" соотвествующих переменных (показаны красным).
Весы на HX711 в FLPROG
Вот так можно изменить плату 7.
Теперь она будет включать дисплей только при изменении переменных.
Теперь она будет включать дисплей только при изменении переменных.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сержант
- Сообщения: 259
- Зарегистрирован: 07 дек 2023, 07:35
- Имя: Александр
- Благодарил (а): 20 раз
- Поблагодарили: 11 раз
Весы на HX711 в FLPROG
Обратил внимание, что некоторые платы имеют комментарии. Поначалу считал, что они написаны вручную. Оказывается нет, внутри платы можно задать условие на выполнение. Каждый день узнаешь что-то новое... Поневоле вспомнил .... О сколько нам открытий чудных готовят просвещенья дух....
Плата 8 имеет зеленую стрелочку, а плата 9 красную. Что это?
Отправлено спустя 5 минут 59 секунд:
Плата 9. Масштаб установка.
Что это такое? Для чего? Как работает? Судя по всему, нажимаем кнопочку и счетчик считает от 1 до 1000, а затем умножается на 100.
Это, я так понимаю, дешифратор для дисплея.....
Плата 8 имеет зеленую стрелочку, а плата 9 красную. Что это?
Отправлено спустя 5 минут 59 секунд:
Плата 9. Масштаб установка.
Что это такое? Для чего? Как работает? Судя по всему, нажимаем кнопочку и счетчик считает от 1 до 1000, а затем умножается на 100.
Это, я так понимаю, дешифратор для дисплея.....
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сержант
- Сообщения: 146
- Зарегистрирован: 04 авг 2021, 09:21
- Имя: Павел
- Благодарил (а): 45 раз
- Поблагодарили: 8 раз
Кто сейчас на конференции
Сейчас этот форум просматривают: tolika и 5 гостей