Работа генератора в FLProg.

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
Sevast
Сержант
Сообщения: 131
Зарегистрирован: 21.06.2017{, 15:57}
Репутация: 1

Работа генератора в FLProg.

#1

Сообщение Sevast » 20.09.2017{, 19:16}

Подскажите, почему генератор сигналов спешит. Симметричный мультивибратор с частотой 500мс. Светодиод на Nano моргает с интервалом
1с. Через каждые 60 секунд идет сигнал на запуск  ШД, и тот делает один
оборот. За 12 часов происходит постепенный сдвиг времени запуска ШД на +5..10 секунд, то есть в
не в 0 сек, а в 05сек. Через сутки до +20 секунд достигает.
Питается NANO через VIN +12В стабилизированных.
Как это лечится?

Аватара пользователя
Phazz
Полковник
Сообщения: 2137
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 271
Откуда: Сургут
Имя: Анатолий

Работа генератора в FLProg.

#2

Сообщение Phazz » 20.09.2017{, 19:29}

Не лечится

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Работа генератора в FLProg.

#3

Сообщение support » 20.09.2017{, 19:51}

В китайских ардуинках стоят не самые лучшие кварцы. Частота может плавать. Как вариант могу посоветовать подключить к контроллеру либо более менее точный осцилограф (или частотомер) если есть и с помощью параметров блока генератора выставить точное значение длительности периода (частоты). Ну и конечно эти параметры будут разные для каждого экземпляра ардуинки.
Автор программы FLProg.

Labu55
Сержант
Сообщения: 130
Зарегистрирован: 30.07.2017{, 12:22}
Репутация: 0

Работа генератора в FLProg.

#4

Сообщение Labu55 » 21.09.2017{, 09:29}

support писал(а):Частота может плавать
Извините за мою некомпетентность и вопрос который давно меня интересует. Генератор использует один из хардовых таймеров процессора? Это в свете линейности выполнения программы, отвлечения на применяемые дилеи в программе и использования ресурсов МК.  Спасибо.
P.S. Прочитал себя и понял что изъясняюсь не слишком понятно. Что лучше в плане экономии ресурсов МК и скорости выполнения программы: применить несколько генераторов; один генератор (тактовой частоты)+ несколько счётчиков; один генератор + один счётчик+ многовходовый переключатель (делитель частоты), как делалось в доМК эру  в цифровой технике (паралельные процессы в отличии от линейности в МК)?
Последний раз редактировалось Labu55 21.09.2017{, 09:50}, всего редактировалось 1 раз.

Аватара пользователя
grin-mpx
Лейтенант
Сообщения: 477
Зарегистрирован: 17.07.2017{, 18:39}
Репутация: 55
Откуда: Днепр.UA
Имя: Григорий
Контактная информация:

Работа генератора в FLProg.

#5

Сообщение grin-mpx » 21.09.2017{, 11:19}

Поставить часы реального времени, например DS3231 и запускать ШД  при каждой новой минуте. Правда не знаю как это повлияет на стабильность программы в Вашем случае. А часы вроде точные.

Аватара пользователя
Sevast
Сержант
Сообщения: 131
Зарегистрирован: 21.06.2017{, 15:57}
Репутация: 1

Работа генератора в FLProg.

#6

Сообщение Sevast » 21.09.2017{, 13:47}

support писал(а):Как вариант могу посоветовать подключить к контроллеру либо более менее точный осцилограф (или частотомер) если есть и с помощью параметров блока генератора выставить точное значение длительности периода (частоты).
Отличное предложение. Буду пробовать.
grin-mpx писал(а):Поставить часы реального времени, например DS3231
Как раз и хочу убрать DS3231 с проекта, так как нет смысла использовать их если есть генератор...

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа генератора в FLProg.

#7

Сообщение Sancho » 25.09.2017{, 11:16}

Sevast писал(а):Симметричный мультивибратор с частотой 500мс
Меняй на 500000мкс, актуально при сравнении в генераторе с системным временем, и подгоняй +/- 1,2,3...
Проверено при работе с PCF8593  в  режиме частотомер - замер количества импульсов за 1 сек.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Работа генератора в FLProg.

#8

Сообщение Слимпер » 25.09.2017{, 14:36}

support писал(а):В китайских ардуинках стоят не самые лучшие кварцы. Частота может плавать. Как вариант могу посоветовать подключить к контроллеру либо более менее точный осцилограф (или частотомер) если есть и с помощью параметров блока генератора выставить точное значение длительности периода (частоты). Ну и конечно эти параметры будут разные для каждого экземпляра ардуинки.
Вообще то есть еще проблема логики работы самого генератора.
Сейчас если выставить скажем 1 секунду, то импульс будет генерироваться не через секунду ровна, а через 1сек + плюс время программного цикла. Т.е. всегда есть небольшое расхождение и при том его величина может плавать.
Пока программа меленькая, эффект мало заметен, а если программа становится медленной (время программного цикла 10 и 100 млсек), ситуация становится уже сильно заметна.
 
Уже довольна давно делал блок Генератор секунд  , он работает на основе прерываний аппаратного таймера Timer1. Тестировал результат значительно более стабильный. Но из-за использования аппаратного таймера есть свои ограничения, могут быть конфликты с тем где он тоже используется

Добавлено (25.09.2017, 14:36)
---------------------------------------------
support, Вообще мне кажется, что можно немого доработать код программы.
Сейчас код семерично генератора с периодом 500мс такой (только кусок):

 if (_gen1I) {  if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis(); _gen1O = ! _gen1O;}}

Переделать так 

if (_gen1I) {  if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis()-_gen1P+500; _gen1O = ! _gen1O;}}

Можно свести накопления ошибки к минимуму.

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

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

Работа генератора в FLProg.

#9

Сообщение CraCk » 25.09.2017{, 15:17}

Слимпер писал(а):Вообще мне кажется, что можно немого доработать код программы
И добавить для мультивибраторов галочку "Использовать прерывания" как раз здействовать код из блока Слимплера.

arduin162370
Рядовой
Сообщения: 63
Зарегистрирован: 12.01.2018{, 11:42}
Репутация: 0

Работа генератора в FLProg.

#10

Сообщение arduin162370 » 09.02.2018{, 14:40}

Генератор секунд хорошая штука, а по точнее есть что нибудь ,при эмуляции в протеусе и в натуре есть нестабильность нужны стабильные пачки импульсов

Аватара пользователя
Fuji1604
Сержант
Сообщения: 282
Зарегистрирован: 19.01.2016{, 06:09}
Репутация: 39
Откуда: Березники
Имя: Сергей

Работа генератора в FLProg.

#11

Сообщение Fuji1604 » 09.02.2018{, 16:13}

Может независимый генератор собрать, на 555 например?
Последний раз редактировалось Fuji1604 09.02.2018{, 17:21}, всего редактировалось 1 раз.
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Работа генератора в FLProg.

#12

Сообщение pan » 09.02.2018{, 16:43}

точнее нужно делать на прерываниях хард. таймера

arduin162370
Рядовой
Сообщения: 63
Зарегистрирован: 12.01.2018{, 11:42}
Репутация: 0

Работа генератора в FLProg.

#13

Сообщение arduin162370 » 09.02.2018{, 21:10}

генератор делал на максимальную частоту какую возможно в настройках далее на Т тригере меандр 50% далее на счетчиках нужные на счетчиках нужные пачки импульсов ,так не стабильность идет с генератора микросекунд(секунд) даже без счетчиков .Хотя по началу думал из за их (счетчиков) специально даже полностью убирал их ,оставил один генератор микросекунд.

Отправлено спустя 5 минут 30 секунд:
pan писал(а):
09.02.2018{, 16:43}
точнее нужно делать на прерываниях хард. таймера
по точнее можно ? ,блок готовый у вас есть

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Работа генератора в FLProg.

#14

Сообщение pan » 09.02.2018{, 21:29}

arduin162370 писал(а):
09.02.2018{, 21:16}
ратор делал на максимальную частоту какую возможно в настройках далее на Т тригере
нафига? вы же Т триггером частоту пополам делите.

arduin162370
Рядовой
Сообщения: 63
Зарегистрирован: 12.01.2018{, 11:42}
Репутация: 0

Работа генератора в FLProg.

#15

Сообщение arduin162370 » 09.02.2018{, 21:33}

суть дела не в том как я делил тригером или счетчиками (управляемые по входу) а в не стабильности импульсов надо что то постабильнее

Аватара пользователя
slavas
Лейтенант
Сообщения: 587
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 0
Откуда: Санкт-Петербург

Работа генератора в FLProg.

#16

Сообщение slavas » 12.02.2018{, 14:49}

Только подбором значения генератора.

Ответить

Вернуться в «Спросить у знатоков»