Страница 1 из 2
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 14:15
Di123
допустим в меню пусть будет 5 сек - это время за которое лампочка должна загореться плавно
принцып такой что эти 5 сек а далее 5000 мс подаются на задержку в течении которой происходит работа генератора
а также в щетчик как подщет 5000 импульсов
а так же в маштабирование как 5000 ступенек на шим
так как они все взаимосвзяны одной настройкой
но при подаче сигнала лампа загорается гораздо дольше чем 5 сек
освещение кухни - 1,0.flp
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 17:51
SSSergeich
Di123 писал(а): 16 авг 2020, 14:15принцып
Di123 писал(а): 16 авг 2020, 14:15
щетчик как подщет
Неужели Вам самому не противно?
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 19:52
Naladchik
Di123 писал(а): 16 авг 2020, 14:15
но при подаче сигнала лампа загорается гораздо дольше чем 5 сек
Подавать значения типа float туда, где должны быть значения типа int, это, как минимум, аморально.
Для начала на 5-й плате после блока умножения поставьте блок преобразования float в int.
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 19:55
aidar_i
Di123 писал(а): 16 авг 2020, 14:15
Неужели Вам самому не противно?
Может он не из России.
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 20:01
Di123
[ref]Naladchik[/ref], попробовал ничего не поменялось
шим как и раньше за 5 сек успевает добежать только до 80
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 20:44
SSSergeich
aidar_i писал(а): 16 авг 2020, 19:55
Di123 писал(а): 16 авг 2020, 14:15
Неужели Вам самому не противно?
Может он не из России.
Может... Профиль то не настроен... Возможно из братской Молдавской ССР, но это не значит что можно проявлять такое неуважение к русскому языку.
В названии темы какими-то потугами смог написать "счетчик"...
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 21:08
Ingwar
Di123 писал(а): 16 авг 2020, 20:01
попробовал ничего не поменялось
Вы можете сами ответить на многие вопросы по временным интервалам в своих программах, если разберетесь хотя бы с двумя темами - c циклом выполнения программы и с функцией millis().
Но если Вам лениво... попробую как понимаю сам, "на пальцах".
Допустим в программе, помимо прочих функций, мы хотим генерировать сигналы с периодом 1мс и считать их. Как только подсчитанное кол-во будет равно заданному, выполнить некое действие. ̶Е̶с̶л̶и̶ ̶В̶ы̶ ̶п̶о̶с̶м̶о̶т̶р̶и̶т̶е̶ ̶п̶о̶ ̶р̶е̶з̶у̶л̶ь̶т̶а̶т̶у̶ ̶п̶е̶р̶е̶в̶о̶д̶а̶ ̶В̶а̶ш̶е̶й̶ ̶п̶р̶о̶г̶р̶а̶м̶м̶ы̶ ̶в̶ ̶I̶D̶E̶,̶ ̶к̶а̶к̶ ̶р̶е̶а̶л̶и̶з̶о̶в̶а̶н̶а̶ ̶ф̶у̶н̶к̶ц̶и̶я̶ ̶_̶i̶s̶T̶i̶m̶e̶r̶, хотя о чем это я...
И тут оказывается (внезапно так), что время выполнения ВСЕЙ программы за один цикл, составляет допустим 50мс (экраны, энкодеры, сложная математика и прочая "неторопливая" хотелка). В итоге - генератор "генерит" с реальным периодом в лучшем случае 100мс (цикл на 1 + цикл на 0)...
P.S.Темой не владею. Чисто выводы из "накуренного"

счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 21:16
SSSergeich
[ref]Ingwar[/ref], Человеку некогда вникать в это, нет времени использовать поиск и читать темы, хватает времени только на создание тем по своим вопросам и писать что базовые блоки не работают. Увы, но скорее всего, Ваш пост ему бесполезен...
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 16 авг 2020, 21:54
Dryundel
Di123 писал(а): 16 авг 2020, 20:01
счетчик не досчитывает количество импульсов за промежуток времени
---------
но при подаче сигнала лампа загорается гораздо дольше чем 5 сек
----------
Naladchik, попробовал ничего не поменялось
шим как и раньше за 5 сек успевает добежать только до 80
Все это звенья одной цепочки.
И Вы снова столкнулись с проблемой длительности цикла контроллера.
Однажды я уже обращал ваше внимание на подобный факт.
Начнем с того, что генератор не может работать с частотой превышающей частоту циклов контроллера при выполнении программы.
Прочитайте эту фразу несколько раз для осмысления.
От того и проблема.
Таймер который Вы настраиваете на 5000 мс справляется с задачей т.к. основан на millis и не зависит от длительности цикла программы.
А генератор может выдавать максимум одну операцию за цикл, один переход из 1 в 0 или наоборот.
Соответственно если у вас время цикла к примеру 1мс то и длину импульса симметричный мультивибратор выдаст 1мс. Столько же будет и промежуток. А это в два раза больше чем вами задано.
Поищите информацию о тайминге операций и может быть, все будет более понятно.
Отправлено спустя 18 минут 31 секунду:
Как выход из ситуации, могу предложить следующее:
1. Секунды из меню умножайте не на 1000, а на 100
2. Длительность импульса генератора увеличьте в 10 раз не 500мкс а 5мс
Есть вероятность что заработает.
Отправлено спустя 4 минуты 17 секунд:
И еще. Хотите плавного включения/выключения - посмотрите
вот эти блоки
Отправлено спустя 6 минут 46 секунд:
И очень Вас прошу, пользуйтесь хотя бы проверкой орфографии. Ну правда, обидно за великий и могучий.
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 17 авг 2020, 00:03
ingener
а зачем использовать два отдельных генератора на счетчик? Не рациональнее ли использовать один + переключать направление счета
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 17 авг 2020, 04:31
Di123
Dryundel писал(а): 16 авг 2020, 21:54
А генератор может выдавать максимум одну операцию за цикл
значит даже если я поставлю вместо генератора внешний модуль часов который будет использовать свои независимые ресурсы то ардуина будет принимать уже стабильный готовый результат в момент прихода цикла работы счетчика но все равно не будет успевать вести подсчет их из за длинного цикла программы
Dryundel писал(а): 16 авг 2020, 21:54
А генератор может выдавать максимум одну операцию за цикл, один переход из 1 в 0 или наоборот.
почему тогда таймер задержки основан на других принципах
ведь на него не влияют циклы программы
ему сказано через 5 сек отключится и он отключается
тогда можно было и генератор по такому принципу сделать что бы он брал данные из ардуино как таймер
а не выдавал их по мере прихода цикла разрешения работы для него
Dryundel писал(а): 16 авг 2020, 21:54
Соответственно если у вас время цикла к примеру 1мс то и длину импульса симметричный мультивибратор выдаст 1мс. Столько же будет и промежуток. А это в два раза больше чем вами задано.
это я там учол изначально 0,5мкс + 0,5мкс
[ref]ingener[/ref], я предположил что раз они работают в противофазе то и влияние на загруженность у него нету раз один не работает
но оказывается что работает генератор что не работает ресурсы в цикле программы он забирает одинаковые
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 17 авг 2020, 07:32
Ingwar
Di123 писал(а): 17 авг 2020, 04:31
почему тогда таймер задержки основан на других принципах
ведь на него не влияют циклы программы
Походу диалог Вам вести гораздо легче, чем изучить вопрос...

счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 17 авг 2020, 07:49
Di123
переделал по новой
сделал что бы счетчик и генератор автоматически подстраивались сами под выставленное значение в меню
но все это выходит на заданный режим только после 38 сек
2020-08-17_114518.png
но стоит убрать компиляцию всех дисплеев как все работает идеально даже при 1 сек в меню плавно достигает 1023
но без дисплея значения не выставить и там потом еще будут значение другие на выставления
в общем дисплей нужен
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 17 авг 2020, 11:58
Dryundel
Ingwar писал(а): 17 авг 2020, 07:32
Походу диалог Вам вести гораздо легче, чем изучить вопрос...
Не надо так нервничать, коллега.
Вариантов два. Или придет понимание, или же все это не на долго.
Di123 писал(а): 17 авг 2020, 07:49
переделал по новой
сделал что бы счетчик и генератор автоматически подстраивались сами под выставленное значение в меню...
---------
но без дисплея значения не выставить и там потом еще будут значение другие на выставления
в общем дисплей нужен
Творчество, это конечно хорошо. Но велосипед давно уже изобретен. Крутить педали ушами, по меньшей мере не удобно.
Научить Вас - задачка еще та.
Поэтому предлагаю пойти коротким путем. Опишите задачу - нарисуем Вам схему. Так всем проще будет.
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 18 авг 2020, 09:00
Dryundel
Di123 писал(а): 17 авг 2020, 04:31
Dryundel писал(а): ↑
16.08.2020{, 21:54}
А генератор может выдавать максимум одну операцию за цикл, один переход из 1 в 0 или наоборот.
почему тогда таймер задержки основан на других принципах
ведь на него не влияют циклы программы
ему сказано через 5 сек отключится и он отключается
И генератор и таймер основаны на одних и тех же принципах. Можно даже сказать что таймер задержки это тот же генератор-одновибратор. Есть некоторые различия, но это уже тонкости.
Суть в том, что и тот и другой ориентируются на независимый временной таймер контроллера, который отсчитывает время от начала запуска (подачи питания).
Логика работы такая:
Таймер задержки запоминает время его запуска опираясь на независимый таймер и каждый цикл выполнения программы сравнивает это запомненное время с текущим. Когда разница между текущим временем и запомненным превысит заданные 5000мс, таймер задержки и срабатывает. Однако таймер задержки может сработать только тогда, когда очередь на его выполнении в цикле программы дойдет до него. Поэтому нельзя однозначно сказать, что он сработал четко через 5000мс. Если время цикла составляет к примеру 1мс, то сработка может превысить заданное время на время выполнения цикла, т.е. 5000+1мс. В данном случае это не сильно заметно, т.к. погрешность ничтожна по сравнению с заданным временем.
Генератор работает точно так же, опираясь на время независимого таймера. Соответственно если время импульса в генераторе задано 0,5мс (500мкс), а погрешность из-за времени выполнения цикла составляет ту же 1мс, то и время импульса может превысить заданное на 1мс, а значит может быть в пределах от 500 до 1500 мкс. В среднем получается что генератор будет выдавать импульсы в 1000мкс т.е. один раз за цикл программы.
Поэтому в случае с генератором и могут возникать такие проблемы, т.к. погрешность относительно велика по сравнению с заданным временем импульса.
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 18 авг 2020, 09:49
Dryundel
[ref]Di123[/ref], следующая Ваша ошибка в проекте в том, что Вы пытаетесь подать на 8-битный ШИМ (0-255) 10-битное значение (0-1023). Не думаю, что в Ардуино НАНО Вы используете не стандартные настройки ШИМ.
На сколько я понимаю, Вы хотите добиться плавного включения освещения и минимальное настраиваемое время этой плавности 1 секунда. А значит максимально для изменения значения подаваемого на ШИМ потребуется 255 "ступенек" за 1 секунду, а это примерно 4мс на ступеньку и оперировать длительностью импульса в 500мкс не имеет смысла.
Кроме того, в предыдущих постах я давал вам ссылку на
эти блоки.
С использованием их схема может выглядеть примерно так:
.
2020-08-17_140737.jpg
.
Плавное включение.flp
Отправлено спустя 6 минут 20 секунд:
Кроме того, для правильного видимого увеличения яркости освещения, можно использовать блок вот из
этой темы.
Вот так:
.
2020-08-17_143542.jpg
.
Плавное включение2.flp
Отправлено спустя 12 минут 34 секунды:
Можно пойти и еще дальше, расширив функционал кнопки блоком из
этой темы.
В этом случае по одинарному клику будет происходить плавное включение или выключение, а по двойному клику - остановка (заморозка) яркости освещения в текущий момент. Т.е. по первому одиночному клику началось плавное включение. В середине нарастания яркости кликаем дважды и нарастание останавливается. (освещение в половину мощности) Если дальше кликнуть один раз начнется плавное выключение с текущей яркости.
Схема будет такая:
.
2020-08-18_093616.jpg
.
Плавное включение3.flp
Отправлено спустя 2 минуты 57 секунд:
Как видно, при использовании соответствующих блоков, при не значительном усложнении схемы, функционал заметно возрастает.
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 18 авг 2020, 11:49
Di123
да на примерах более проще разобраться
ясно почему плотер мне не рисовал идеально одинаковые графики при маленьких значениях у него макушки были немного разные
я вот закончил свой проект
освещение кухни - 1,0.flp
сравнил на плотере время все чотко
только пришлось индикатор отдать чисто под меню и не трогать его более да и собственно он посути то для него и нужен был
там блок шима на 10 бит как заявлял его писатель что он якобы все проверил и так и есть
поэтому и выбирал 1023
а так да при таких значениях и 255 достаточно
но стоит при 255 поставить 4 минуты на плавное загорание как 1 ступенька будет равна почти 1 сек
но зато теперь есть срабатывание по датчику движения плавное загорание и угасание
и так же продублировано включение кнопкой
и можно менять временные интервалы на удержание во включенном состоянии
и время на плавное вкл/выкл
и режим ночника с выбором яркости
мне только не понятно как соотносятся битность и ступеньки
допустим пишут в характеристиках 12 бит это 4096
10 бит 1024
8 бит 256
пробовал высчитать константу но она всегда разная почему то и ее нельзя применить допустим что бы посчитать 16 бит градацию
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 18 авг 2020, 12:22
Dryundel
Di123 писал(а): 18 авг 2020, 11:49
мне только не понятно как соотносятся битность и ступеньки
допустим пишут в характеристиках 12 бит это 4096
10 бит 1024
8 бит 256
пробовал высчитать константу но она всегда разная почему то и ее нельзя применить допустим что бы посчитать 16 бит градацию
Ну если простым языком - Битность это количество знаков в двоичной системе.
К примеру 4 бита это в двоичной системе числа от 0000 до 1111 что соответствует десятичной от 0 до 15 всего 16 комбинаций, 16 вариантов, 16 ступенек, 16 градаций. Это уж как удобней воспринимать.
Соответственно 16 бит это от 0000000000000000 до 1111111111111111 в двоичной системе. Если перевести в десятичную, получите и количество возможных комбинаций.
Отправлено спустя 5 минут 14 секунд:
[ref]Di123[/ref], Вам сколько лет и где учились, если не секрет?
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 18 авг 2020, 12:30
Di123
36 лет
заканчивал железнодорожный техникум
счетчик не досчитывает количество импульсов за промежуток времени
Добавлено: 18 авг 2020, 14:15
nalnik
Dryundel писал(а): 18 авг 2020, 12:22
Соответственно 16 бит это от 0000000000000000 до 1111111111111111 в двоичной системе. Если перевести в десятичную, получите и количество возможных комбинаций.
Di123 писал(а): 18 авг 2020, 12:30
заканчивал железнодорожный техникум
11011000000001101100000000
перевод:
тыдык тыдык ------------------ тыдык тыдык -------------
Не обижайтесь, простите - просто не удержался.
