Работа генератора в FLProg.
Работа генератора в FLProg.
Подскажите, почему генератор сигналов спешит. Симметричный мультивибратор с частотой 500мс. Светодиод на Nano моргает с интервалом
1с. Через каждые 60 секунд идет сигнал на запуск ШД, и тот делает один
оборот. За 12 часов происходит постепенный сдвиг времени запуска ШД на +5..10 секунд, то есть в
не в 0 сек, а в 05сек. Через сутки до +20 секунд достигает.
Питается NANO через VIN +12В стабилизированных.
Как это лечится?
1с. Через каждые 60 секунд идет сигнал на запуск ШД, и тот делает один
оборот. За 12 часов происходит постепенный сдвиг времени запуска ШД на +5..10 секунд, то есть в
не в 0 сек, а в 05сек. Через сутки до +20 секунд достигает.
Питается NANO через VIN +12В стабилизированных.
Как это лечится?
- support
- Супермодератор
- Сообщения: 1917
- Зарегистрирован: 03 янв 2018, 11:45
- Откуда: Астрахань
- Имя: Сергей
- Поблагодарили: 23 раза
- Контактная информация:
Работа генератора в FLProg.
В китайских ардуинках стоят не самые лучшие кварцы. Частота может плавать. Как вариант могу посоветовать подключить к контроллеру либо более менее точный осцилограф (или частотомер) если есть и с помощью параметров блока генератора выставить точное значение длительности периода (частоты). Ну и конечно эти параметры будут разные для каждого экземпляра ардуинки.
Автор программы FLProg.
Работа генератора в FLProg.
Извините за мою некомпетентность и вопрос который давно меня интересует. Генератор использует один из хардовых таймеров процессора? Это в свете линейности выполнения программы, отвлечения на применяемые дилеи в программе и использования ресурсов МК. Спасибо.support писал(а):Частота может плавать
P.S. Прочитал себя и понял что изъясняюсь не слишком понятно. Что лучше в плане экономии ресурсов МК и скорости выполнения программы: применить несколько генераторов; один генератор (тактовой частоты)+ несколько счётчиков; один генератор + один счётчик+ многовходовый переключатель (делитель частоты), как делалось в доМК эру в цифровой технике (паралельные процессы в отличии от линейности в МК)?
Последний раз редактировалось Labu55 21 сен 2017, 09:50, всего редактировалось 1 раз.
- grin-mpx
- Лейтенант
- Сообщения: 477
- Зарегистрирован: 17 июл 2017, 18:39
- Откуда: Днепр. UA
- Имя: Григорий
Работа генератора в FLProg.
Поставить часы реального времени, например DS3231 и запускать ШД при каждой новой минуте. Правда не знаю как это повлияет на стабильность программы в Вашем случае. А часы вроде точные.
Работа генератора в FLProg.
Отличное предложение. Буду пробовать.support писал(а):Как вариант могу посоветовать подключить к контроллеру либо более менее точный осцилограф (или частотомер) если есть и с помощью параметров блока генератора выставить точное значение длительности периода (частоты).
Как раз и хочу убрать DS3231 с проекта, так как нет смысла использовать их если есть генератор...grin-mpx писал(а):Поставить часы реального времени, например DS3231
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа генератора в FLProg.
Меняй на 500000мкс, актуально при сравнении в генераторе с системным временем, и подгоняй +/- 1,2,3...Sevast писал(а):Симметричный мультивибратор с частотой 500мс
Проверено при работе с PCF8593 в режиме частотомер - замер количества импульсов за 1 сек.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Работа генератора в FLProg.
Вообще то есть еще проблема логики работы самого генератора.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;}}
Можно свести накопления ошибки к минимуму.
Так как, это сделает программу тяжелея, а это точность часто избыточна, можно в настройках блока генератор добавить галочку "Повышенная точность".
-
- Лейтенант
- Сообщения: 674
- Зарегистрирован: 10 сен 2015, 21:51
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
Работа генератора в FLProg.
И добавить для мультивибраторов галочку "Использовать прерывания" как раз здействовать код из блока Слимплера.Слимпер писал(а):Вообще мне кажется, что можно немого доработать код программы
-
- Рядовой
- Сообщения: 69
- Зарегистрирован: 12 янв 2018, 11:42
Работа генератора в FLProg.
Генератор секунд хорошая штука, а по точнее есть что нибудь ,при эмуляции в протеусе и в натуре есть нестабильность нужны стабильные пачки импульсов
Работа генератора в FLProg.
Может независимый генератор собрать, на 555 например?
Последний раз редактировалось Fuji1604 09 фев 2018, 17:21, всего редактировалось 1 раз.
когда мастерю обычно подсматриваю,
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
не рыли ли окоп в том же направлении,
не изобретали ли велосипед с такими-же квадратными как у меня колёсами,
а уже потом - не торопясь, торю свою лыжню
-
- Рядовой
- Сообщения: 69
- Зарегистрирован: 12 янв 2018, 11:42
Работа генератора в FLProg.
генератор делал на максимальную частоту какую возможно в настройках далее на Т тригере меандр 50% далее на счетчиках нужные на счетчиках нужные пачки импульсов ,так не стабильность идет с генератора микросекунд(секунд) даже без счетчиков .Хотя по началу думал из за их (счетчиков) специально даже полностью убирал их ,оставил один генератор микросекунд.
Отправлено спустя 5 минут 30 секунд:
Отправлено спустя 5 минут 30 секунд:
по точнее можно ? ,блок готовый у вас есть
Работа генератора в FLProg.
нафига? вы же Т триггером частоту пополам делите.arduin162370 писал(а): 09 фев 2018, 21:16ратор делал на максимальную частоту какую возможно в настройках далее на Т тригере
-
- Рядовой
- Сообщения: 69
- Зарегистрирован: 12 янв 2018, 11:42
Работа генератора в FLProg.
суть дела не в том как я делил тригером или счетчиками (управляемые по входу) а в не стабильности импульсов надо что то постабильнее
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей