Страница 1 из 1
Работа генератора в FLProg.
Добавлено: 20 сен 2017, 19:16
Sevast
Подскажите, почему генератор сигналов спешит. Симметричный мультивибратор с частотой 500мс. Светодиод на Nano моргает с интервалом
1с. Через каждые 60 секунд идет сигнал на запуск ШД, и тот делает один
оборот. За 12 часов происходит постепенный сдвиг времени запуска ШД на +5..10 секунд, то есть в
не в 0 сек, а в 05сек. Через сутки до +20 секунд достигает.
Питается NANO через VIN +12В стабилизированных.
Как это лечится?
Работа генератора в FLProg.
Добавлено: 20 сен 2017, 19:29
Phazz
Не лечится
Работа генератора в FLProg.
Добавлено: 20 сен 2017, 19:51
support
В китайских ардуинках стоят не самые лучшие кварцы. Частота может плавать. Как вариант могу посоветовать подключить к контроллеру либо более менее точный осцилограф (или частотомер) если есть и с помощью параметров блока генератора выставить точное значение длительности периода (частоты). Ну и конечно эти параметры будут разные для каждого экземпляра ардуинки.
Работа генератора в FLProg.
Добавлено: 21 сен 2017, 09:29
Labu55
support писал(а):Частота может плавать
Извините за мою некомпетентность и вопрос который давно меня интересует. Генератор использует один из хардовых таймеров процессора? Это в свете линейности выполнения программы, отвлечения на применяемые дилеи в программе и использования ресурсов МК. Спасибо.
P.S. Прочитал себя и понял что изъясняюсь не слишком понятно. Что лучше в плане экономии ресурсов МК и скорости выполнения программы: применить несколько генераторов; один генератор (тактовой частоты)+ несколько счётчиков; один генератор + один счётчик+ многовходовый переключатель (делитель частоты), как делалось в доМК эру в цифровой технике (паралельные процессы в отличии от линейности в МК)?
Работа генератора в FLProg.
Добавлено: 21 сен 2017, 11:19
grin-mpx
Поставить часы реального времени, например DS3231 и запускать ШД при каждой новой минуте. Правда не знаю как это повлияет на стабильность программы в Вашем случае. А часы вроде точные.
Работа генератора в FLProg.
Добавлено: 21 сен 2017, 13:47
Sevast
support писал(а):Как вариант могу посоветовать подключить к контроллеру либо более менее точный осцилограф (или частотомер) если есть и с помощью параметров блока генератора выставить точное значение длительности периода (частоты).
Отличное предложение. Буду пробовать.
grin-mpx писал(а):Поставить часы реального времени, например DS3231
Как раз и хочу убрать DS3231 с проекта, так как нет смысла использовать их если есть генератор...
Работа генератора в FLProg.
Добавлено: 25 сен 2017, 11:16
Sancho
Sevast писал(а):Симметричный мультивибратор с частотой 500мс
Меняй на 500000мкс, актуально при сравнении в генераторе с системным временем, и подгоняй +/- 1,2,3...
Проверено при работе с PCF8593 в режиме частотомер - замер количества импульсов за 1 сек.
Работа генератора в FLProg.
Добавлено: 25 сен 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;}}
Можно свести накопления ошибки к минимуму.
Так как, это сделает программу тяжелея, а это точность часто избыточна, можно в настройках блока генератор добавить галочку "Повышенная точность".
Работа генератора в FLProg.
Добавлено: 25 сен 2017, 15:17
CraCk
Слимпер писал(а):Вообще мне кажется, что можно немого доработать код программы
И добавить для мультивибраторов галочку "Использовать прерывания" как раз здействовать код из блока Слимплера.
Работа генератора в FLProg.
Добавлено: 09 фев 2018, 14:40
arduin162370
Генератор секунд хорошая штука, а по точнее есть что нибудь ,при эмуляции в протеусе и в натуре есть нестабильность нужны стабильные пачки импульсов
Работа генератора в FLProg.
Добавлено: 09 фев 2018, 16:13
Fuji1604
Может независимый генератор собрать, на 555 например?
Работа генератора в FLProg.
Добавлено: 09 фев 2018, 16:43
pan
точнее нужно делать на прерываниях хард. таймера
Работа генератора в FLProg.
Добавлено: 09 фев 2018, 21:16
arduin162370
генератор делал на максимальную частоту какую возможно в настройках далее на Т тригере меандр 50% далее на счетчиках нужные на счетчиках нужные пачки импульсов ,так не стабильность идет с генератора микросекунд(секунд) даже без счетчиков .Хотя по началу думал из за их (счетчиков) специально даже полностью убирал их ,оставил один генератор микросекунд.
Отправлено спустя 5 минут 30 секунд:
pan писал(а): 09 фев 2018, 16:43точнее нужно делать на прерываниях хард. таймера
по точнее можно ? ,блок готовый у вас есть
Работа генератора в FLProg.
Добавлено: 09 фев 2018, 21:29
pan
arduin162370 писал(а): 09 фев 2018, 21:16ратор делал на максимальную частоту какую возможно в настройках далее на Т тригере
нафига? вы же Т триггером частоту пополам делите.
Работа генератора в FLProg.
Добавлено: 09 фев 2018, 21:33
arduin162370
суть дела не в том как я делил тригером или счетчиками (управляемые по входу) а в не стабильности импульсов надо что то постабильнее
Работа генератора в FLProg.
Добавлено: 12 фев 2018, 14:49
slavas
Только подбором значения генератора.