счетчик не досчитывает количество импульсов за промежуток времени

Вопросы от новичков
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение Di123 »

допустим в меню пусть будет 5 сек - это время за которое лампочка должна загореться плавно
принцып такой что эти 5 сек а далее 5000 мс подаются на задержку в течении которой происходит работа генератора
а также в щетчик как подщет 5000 импульсов
а так же в маштабирование как 5000 ступенек на шим
так как они все взаимосвзяны одной настройкой

но при подаче сигнала лампа загорается гораздо дольше чем 5 сек
освещение кухни - 1,0.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение SSSergeich »

Di123 писал(а): 16 авг 2020, 14:15принцып
Di123 писал(а): 16 авг 2020, 14:15 щетчик как подщет
Неужели Вам самому не противно?
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение Naladchik »

Di123 писал(а): 16 авг 2020, 14:15 но при подаче сигнала лампа загорается гораздо дольше чем 5 сек
Подавать значения типа float туда, где должны быть значения типа int, это, как минимум, аморально.
Для начала на 5-й плате после блока умножения поставьте блок преобразования float в int.
Win10-64. FLProg Portable.
Изображение
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение aidar_i »

Di123 писал(а): 16 авг 2020, 14:15 Неужели Вам самому не противно?
Может он не из России.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение Di123 »

[ref]Naladchik[/ref], попробовал ничего не поменялось
шим как и раньше за 5 сек успевает добежать только до 80
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение SSSergeich »

aidar_i писал(а): 16 авг 2020, 19:55
Di123 писал(а): 16 авг 2020, 14:15 Неужели Вам самому не противно?
Может он не из России.
Может... Профиль то не настроен... Возможно из братской Молдавской ССР, но это не значит что можно проявлять такое неуважение к русскому языку.
В названии темы какими-то потугами смог написать "счетчик"...
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение 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.Темой не владею. Чисто выводы из "накуренного" :smile44:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение SSSergeich »

[ref]Ingwar[/ref], Человеку некогда вникать в это, нет времени использовать поиск и читать темы, хватает времени только на создание тем по своим вопросам и писать что базовые блоки не работают. Увы, но скорее всего, Ваш пост ему бесполезен...
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение 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 секунд:
И очень Вас прошу, пользуйтесь хотя бы проверкой орфографии. Ну правда, обидно за великий и могучий.
Аватара пользователя
ingener
Лейтенант
Сообщения: 580
Зарегистрирован: 14 окт 2018, 00:26
Имя: Андрей
Благодарил (а): 2 раза
Поблагодарили: 3 раза

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение ingener »

а зачем использовать два отдельных генератора на счетчик? Не рациональнее ли использовать один + переключать направление счета
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение 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], я предположил что раз они работают в противофазе то и влияние на загруженность у него нету раз один не работает
но оказывается что работает генератор что не работает ресурсы в цикле программы он забирает одинаковые
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение Ingwar »

Di123 писал(а): 17 авг 2020, 04:31 почему тогда таймер задержки основан на других принципах
ведь на него не влияют циклы программы
Походу диалог Вам вести гораздо легче, чем изучить вопрос... :smile390: :smile390: :smile390:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение Di123 »

переделал по новой
сделал что бы счетчик и генератор автоматически подстраивались сами под выставленное значение в меню
но все это выходит на заданный режим только после 38 сек
2020-08-17_114518.png
но стоит убрать компиляцию всех дисплеев как все работает идеально даже при 1 сек в меню плавно достигает 1023

но без дисплея значения не выставить и там потом еще будут значение другие на выставления
в общем дисплей нужен
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение Dryundel »

Ingwar писал(а): 17 авг 2020, 07:32 Походу диалог Вам вести гораздо легче, чем изучить вопрос... :smile390: :smile390:
Не надо так нервничать, коллега. :)
Вариантов два. Или придет понимание, или же все это не на долго.
Di123 писал(а): 17 авг 2020, 07:49 переделал по новой
сделал что бы счетчик и генератор автоматически подстраивались сами под выставленное значение в меню...
---------
но без дисплея значения не выставить и там потом еще будут значение другие на выставления
в общем дисплей нужен
Творчество, это конечно хорошо. Но велосипед давно уже изобретен. Крутить педали ушами, по меньшей мере не удобно.

Научить Вас - задачка еще та.
Поэтому предлагаю пойти коротким путем. Опишите задачу - нарисуем Вам схему. Так всем проще будет.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение 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мкс т.е. один раз за цикл программы.

Поэтому в случае с генератором и могут возникать такие проблемы, т.к. погрешность относительно велика по сравнению с заданным временем импульса.
Последний раз редактировалось Dryundel 18 авг 2020, 09:53, всего редактировалось 1 раз.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение 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 секунд:
Как видно, при использовании соответствующих блоков, при не значительном усложнении схемы, функционал заметно возрастает.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение Di123 »

да на примерах более проще разобраться
ясно почему плотер мне не рисовал идеально одинаковые графики при маленьких значениях у него макушки были немного разные

я вот закончил свой проект
освещение кухни - 1,0.flp
сравнил на плотере время все чотко
только пришлось индикатор отдать чисто под меню и не трогать его более да и собственно он посути то для него и нужен был

там блок шима на 10 бит как заявлял его писатель что он якобы все проверил и так и есть
поэтому и выбирал 1023
а так да при таких значениях и 255 достаточно
но стоит при 255 поставить 4 минуты на плавное загорание как 1 ступенька будет равна почти 1 сек

но зато теперь есть срабатывание по датчику движения плавное загорание и угасание
и так же продублировано включение кнопкой
и можно менять временные интервалы на удержание во включенном состоянии
и время на плавное вкл/выкл
и режим ночника с выбором яркости

мне только не понятно как соотносятся битность и ступеньки
допустим пишут в характеристиках 12 бит это 4096
10 бит 1024
8 бит 256
пробовал высчитать константу но она всегда разная почему то и ее нельзя применить допустим что бы посчитать 16 бит градацию
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2451
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение 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], Вам сколько лет и где учились, если не секрет?
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение Di123 »

36 лет
заканчивал железнодорожный техникум
Аватара пользователя
nalnik
Подполковник
Сообщения: 1320
Зарегистрирован: 14 май 2016, 17:12
Откуда: Кисловодск
Имя: Александр

счетчик не досчитывает количество импульсов за промежуток времени

Сообщение nalnik »

Dryundel писал(а): 18 авг 2020, 12:22 Соответственно 16 бит это от 0000000000000000 до 1111111111111111 в двоичной системе. Если перевести в десятичную, получите и количество возможных комбинаций.
Di123 писал(а): 18 авг 2020, 12:30 заканчивал железнодорожный техникум
11011000000001101100000000
перевод:
тыдык тыдык ------------------ тыдык тыдык -------------
Не обижайтесь, простите - просто не удержался. :smile44:
Я хочу быть добрее, но люди сами нарываются.
Ответить

Вернуться в «Начинающим»

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей