По поводу старения кварца да, тут не предусмотришь. А температурный дрейф можно компенсировать в какой-то степени сняв функцию зависимости частоты от температуры и учитывая ее при вычислениях. Точность более трех знаков после запятой не знаю где может пригодиться.
В общем это можно сделать и без D триггера, только на таймерах. Я использовал STM32F429, TIM2 (32 битный) работает в режиме input capture для записи длительности захвата, таймер TIM3 работает в режиме слейва и тактируется при срабатывании input capture. Таймер 16 битный, поэтому либо ограничивать точность на высоких частотах, либо в качестве слейва к нему подключить ещё один таймер TIM4 для получения 32 битного кол-ва импульсов. При запуске надо ждать восходящего/нисходящего фронта, что бы input capture не глючил с 1 периодом, при низкой частоте это очень сильно влияет, э сделал это настройкой таймера TIM3 в режиме output compare, просто при первом фронте срабатывает прерывание и обнуляет TIM2, костыльно, можно наверное и проще. В итоге получилась макс частота входного сигнала 90 МГц, при при периоде опроса 1 с, точность +-0.000001% на любой частоте (измерял частоту своего же MCO и посчитал отклонения), естественно без качественного высокостабильного опорного источника такая точность избыточна.
Спасибо, кварцы все плавают по температуре, в даташитах это указано. Что бы получить стабильную частоту в домашних условиях их термостатируют, коробка из пенопласта и обогрев. А вот от старения его это не спасет.
я бы сделал так: на входе 220 предохранитель, диодный мост и токоограничительный резистор на 2 вт. Все это идет на оптопару PC817. Ну а с опропары мы будем иметь всплески с двойной частотой. Я бы этот сигнал прокинул через триггер шмитта. И уже полученный сигнал с нормальными фронтами кинул на вход замера. Рассчитанную частоту делим на 2.
@@Solderingironspb Заметил, что в наше время не так дорого купить частотомер и осциллограф. Получится гораздо точнее быстрее и комфортней работать. Изобретать изобретенное это трата времен,купив готовое ты быстрей шагнешь к чему то новому!
@@ciklomat А точно ли точнее не так дорого? И сколько там бит в осциллографе? У меня 6 бит. Или может атмега намерит точнее через RC-резонатор? Или за 900 р с зеленым экраном, который с точностью до 100 Гц?
Да, но к частотомеру же, как к отдельному устройству, логику не приделаешь) хороший частотомер стоит дорого, как и осциллограф. Плюс есть датчики на основе кварцев, где нужно подсчитать частоту, а потом по рассчитанному полиному вычислить значение величины
@@ciklomat а чтобы сделать высокоточный датчик температуры, который построен на температурном изменении частоты 32.768 кварца в доли Гц, тоже осциллограф встроить надо?
Кажется есть возможность использовать один таймер в режиме ведущего. Вырабатывать им 1 сек интервал измерения и через сигнал синхронизации (TRG0) использовать второй (ведомый) таймер в режиме захвата. Не рассматривали такую возможность? В этом случае не нужна внешняя схема
Добрый день! Можно. Нужно использовать термостабильный опорный кварцевый генератор. Так же нужно очень точно знать его частоту, т.к. с завода не факт, что она будет до 1 Гц верна, собственно в видео это видно. Кварц моего генератора не совсем совпадает с кварцем платы, от чего мне пришлось подбирать частоту не 8000000 Гц, а 8000040 Гц. Для хороших, высокоточных замеров можно делать время замера не 1 секунду, а 10 секунд или 100. Тогда очень сильно возрастет точность. По поводу полной схемы подключения: * PA12(External clock TIM1) - замеряемый сигнал * PC14 - сигнал старт/стоп замера (идет на D-триггер) * PA8 - внешний триггер от Gate(D-триггера)(Таймер 1) * PB6 - внешний триггер от Gate(D-триггера)(Таймер 4) На плате D-триггера: * +3.3v и gnd - питание. * start/stop - это сигнал с ножки PC14 * signal - замеряемый сигнал. Он же на PA12 идет. * gate - выход D-триггера. Подключается к PA8 и PB6.
Ну тут от потребностей уже) допустим мне с такой высокой точность нужно до 100 кгц замеры делать, во всем остальном хватит олдскула с +/- 1 Гц) в крайнем случае можно и на 5 в переделать схему) главное чтоб задержек не было сигнала gate после прохода его через преобразователь уровня
Пока тем под мк нет интересных. А так я никуда не пропал. В вк выкладываю свою прогу под пк. Уже 5 версия. Там много мини-программ, которые облегчат жизнь разработчику.
Спасибо большое за твой труд друг!
Супер! Начинаю понимать)
По поводу старения кварца да, тут не предусмотришь. А температурный дрейф можно компенсировать в какой-то степени сняв функцию зависимости частоты от температуры и учитывая ее при вычислениях. Точность более трех знаков после запятой не знаю где может пригодиться.
Привет, Олег! Лайк за проделанную работу!!! На ГитХаб исходники выкладываешь?
Привет) да. В описании есть ссылка на материалы из видео
В общем это можно сделать и без D триггера, только на таймерах. Я использовал STM32F429, TIM2 (32 битный) работает в режиме input capture для записи длительности захвата, таймер TIM3 работает в режиме слейва и тактируется при срабатывании input capture. Таймер 16 битный, поэтому либо ограничивать точность на высоких частотах, либо в качестве слейва к нему подключить ещё один таймер TIM4 для получения 32 битного кол-ва импульсов. При запуске надо ждать восходящего/нисходящего фронта, что бы input capture не глючил с 1 периодом, при низкой частоте это очень сильно влияет, э сделал это настройкой таймера TIM3 в режиме output compare, просто при первом фронте срабатывает прерывание и обнуляет TIM2, костыльно, можно наверное и проще. В итоге получилась макс частота входного сигнала 90 МГц, при при периоде опроса 1 с, точность +-0.000001% на любой частоте (измерял частоту своего же MCO и посчитал отклонения), естественно без качественного высокостабильного опорного источника такая точность избыточна.
Спасибо, кварцы все плавают по температуре, в даташитах это указано. Что бы получить стабильную частоту в домашних условиях их термостатируют, коробка из пенопласта и обогрев. А вот от старения его это не спасет.
здравия желаю. как программировать Приемопередающий чип ключа автомобиля
Подскажите пожалуйста, как замерять из сети 220 частоту? Этим методом. Спасибо.
я бы сделал так: на входе 220 предохранитель, диодный мост и токоограничительный резистор на 2 вт. Все это идет на оптопару PC817. Ну а с опропары мы будем иметь всплески с двойной частотой. Я бы этот сигнал прокинул через триггер шмитта. И уже полученный сигнал с нормальными фронтами кинул на вход замера. Рассчитанную частоту делим на 2.
@@Solderingironspb Огромное спасибо.
@@Solderingironspb Может Zero Crossing Detector поможет?
Я про это и говорил по сути) вот тут последняя схема circuitdigest.com/electronic-circuits/zero-crossing-detector-circuit-diagram
@@Solderingironspb Спасибо.
По сути,уровень бесполезности такого устройства, на высоте. Но такой контент очень познавательный и необходим для развития. Спасибо учитель!
Почему бесполезно?)
@@Solderingironspb Заметил, что в наше время не так дорого купить частотомер и осциллограф. Получится гораздо точнее быстрее и комфортней работать. Изобретать изобретенное это трата времен,купив готовое ты быстрей шагнешь к чему то новому!
@@ciklomat А точно ли точнее не так дорого? И сколько там бит в осциллографе? У меня 6 бит. Или может атмега намерит точнее через RC-резонатор? Или за 900 р с зеленым экраном, который с точностью до 100 Гц?
Да, но к частотомеру же, как к отдельному устройству, логику не приделаешь) хороший частотомер стоит дорого, как и осциллограф. Плюс есть датчики на основе кварцев, где нужно подсчитать частоту, а потом по рассчитанному полиному вычислить значение величины
@@ciklomat а чтобы сделать высокоточный датчик температуры, который построен на температурном изменении частоты 32.768 кварца в доли Гц, тоже осциллограф встроить надо?
Кажется есть возможность использовать один таймер в режиме ведущего. Вырабатывать им 1 сек интервал измерения и через сигнал синхронизации (TRG0) использовать второй (ведомый) таймер в режиме захвата. Не рассматривали такую возможность?
В этом случае не нужна внешняя схема
Пока не совсем понимаю, как будете ловить целые периоды в таком случае…попробуйте) если получится - то вообще хорошо
Перечитал реф.мануал, вник в алгоритм измерения частоты. Таки нельзя всё реализовать на периферии контроллера🤝
Можно ли точно измерить частоту 32768, вплоть до долей герц? Где взять полную схему подключения?
Добрый день! Можно. Нужно использовать термостабильный опорный кварцевый генератор. Так же нужно очень точно знать его частоту, т.к. с завода не факт, что она будет до 1 Гц верна, собственно в видео это видно. Кварц моего генератора не совсем совпадает с кварцем платы, от чего мне пришлось подбирать частоту не 8000000 Гц, а 8000040 Гц. Для хороших, высокоточных замеров можно делать время замера не 1 секунду, а 10 секунд или 100. Тогда очень сильно возрастет точность.
По поводу полной схемы подключения:
* PA12(External clock TIM1) - замеряемый сигнал
* PC14 - сигнал старт/стоп замера (идет на D-триггер)
* PA8 - внешний триггер от Gate(D-триггера)(Таймер 1)
* PB6 - внешний триггер от Gate(D-триггера)(Таймер 4)
На плате D-триггера:
* +3.3v и gnd - питание.
* start/stop - это сигнал с ножки PC14
* signal - замеряемый сигнал. Он же на PA12 идет.
* gate - выход D-триггера. Подключается к PA8 и PB6.
Спасибо за ответ. Есть высокоточный генератор. Буду пробовать.
Там 5 или 6МГц по-моему потолок у микрухи, при питании от 3 вольт
Ну тут от потребностей уже) допустим мне с такой высокой точность нужно до 100 кгц замеры делать, во всем остальном хватит олдскула с +/- 1 Гц) в крайнем случае можно и на 5 в переделать схему) главное чтоб задержек не было сигнала gate после прохода его через преобразователь уровня
Что то ролики все реже выходят(
Пока тем под мк нет интересных. А так я никуда не пропал. В вк выкладываю свою прогу под пк. Уже 5 версия. Там много мини-программ, которые облегчат жизнь разработчику.