Сравнить можно с помощью гистограммы. Или сразу вычислить статистические характеристики. Я для сравнения просто анализировал максимальное отклонение выходного значения интерполятора. Большой джиттер будет у больших ПЛИС, сильно загруженных логикой. Небольшая CPLD и внешняя логика по джиттеру сравнимы, хотя, конечно, наилучшие результаты можно получить на внешней логике. Все зависит от требований. Задача согласования уровней стоит здесь не так остро, потому что не требуется получать минимальные задержки. Лишь бы уложиться в период тактового сигнала микроконтроллера. По входам серия 74ACT напрямую совместима с логикой 3.3 В, а выходной сигнал можно согласовать с помощью одногейтового элемента 74LVC. Хотя пойдут даже просто резисторы. С точки зрения минимизации напряжения питания интерполятор с переключателем тока на транзисторах имеет некоторые преимущества. Но надо отдавать себе отчет в том, что снижение напряжения питания ведет к ухудшению линейности интерполятора. Если ничего больше в CPLD помещать не планируется, то ставить ее только ради интерполятора смысла нет. Если же в ней будут еще и счетчики, тогда применение оправдано. Самый простой схемотехнически вариант интерполятора - это как в FC-510. У него шум получился порядка 1 нс, зато очень просто.
Вот смотрю на схему интерполятора от SRS DG645 http://www.thinksrs.com/products/DG645.htm -считается одним из самых крутых приборов по джиттеру <25 ps в зависимости от диапазона. Для управления интерполятором используются дискретные триггера SN74AUC1G74 http://www.ti.com/lit/gpn/sn74auc1g74 хотя большая часть логики упрятана в Xilinx Spartan3. Схема управления несколько отличается от канонической чтобы избежать метастабильностей. Вот думаю, может скопировать для частотомера с интерполяторами?
Если гнаться за рекордными параметрами, то можно что-то подобное скопировать. Но тогда и весь прибор должен соответствовать, иначе нет смысла. Хотя для любительского прибора можно обойтись схемой попроще.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Перед Новым Годом прицепил TCXO от мобилы на 38.400М к F050F4... без PLL... от "нечего было делать"... Показания стоят как вкопаные... ничего не плавает (нет влияния PLL)... Из-за более низкой опорной верхняя измеряемая частота конечно снизилась... но всё равно выше 100МГц... ~120МГц max... На STM8S003 было получено 72МГц max... в реале...
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Как я понимаю основная сложность в применении малоногих контроллеров - отсутствие отдельного вывода ETR и небольшое количество таймеров. Можно кончено входную частоту подавать через вход захвата - но тогда не используется делитель (он стоит дальше), и частоты измерения не превышают половины тактовой. Для stm32f030f4 есть 2 связанных таймера 1 и 3. Если "пробросить" входной сигнал через блок захвата-сравнения, то уже можно использовать входной делитель и измеряемые частоты вырастут в 8 раз. Входной сигнал нужно подавать на вход захвата не того таймера, что считает Fin, а того что считает Fref. Сигнал захвата возможно поделенный на 8 через систему связей таймеров (пульс по захвату) можно уже подать на таймер счета Fin. С него уже отдельные фронты входного сигнала можно подавать обратно на таймер Fref для из захвата. Вот акая идея измерения частот до Fref*4 для stm32f030f4 ( то есть до 32*4МГц). Для stm8 все еще хуже. Там таймеры не связаны. Поэтому связать их можно с помощью внешнего соединения. И тогда обычным способом (таймер Fin формирует шим, фронт которого захватывается таймером Fref) захватывать фронты входного сигнала. Но опять таки все это будет работать до частоты вполовину опорной (16/2 МГц). Для stm8 отсутствует также блок формирования одиночных импульсов по сигналу захвата, поэтому трюк как с stm32 там не проходит. Зато есть режим измерения ШИМ сигнала (сейчас подумал что можно просто использовать режим сброса). В этом режиме по спаду сигнала происходит сброс таймера. То есть таймер будет сбрасываться каждый период сигнала. А это то что надо! Второй модуль сравнения-захвата можно настроить на генерацию единичных импульсов. Эти единичные импульсы будут совпадать по частоте с входным сигналом или с входным сигналом /8. Их уже можно использовать в качестве входного сигнала для обычного способа измерения с помощью 2 таймеров. Загвоздка только в том, что есть только еще только 1 таймер с регистрами захвата (всего их 2 но один из них используется как делитель). Нужно заставить таймер-делитель также и считать входные импульсы. То есть считать количество сбросов. А этим как раз может заняться repetition регистр, который можно использовать в качестве счетчика. После заданного в нем значения выработается update event котрое может использоваться для подсчета входных импульсов и для останова входного таймера через one pulse mode. Таймер делитель запускает таймер опорной частоты. Этим же таймером захватываются фронты (или спады) входной делонной частоты. Захват постоянный. Как только входной таймер остановится, захват прекратится. В регистре захвата будет последнее захваченное значение последнего периода вх частоты. Типа gate режима. Вот такая идея измерения для stm8.
Можно кончено входную частоту подавать через вход захвата - но тогда не используется делитель (он стоит дальше), и частоты измерения не превышают половины тактовой.
Цитата:
Если "пробросить" входной сигнал через блок захвата-сравнения, то уже можно использовать входной делитель и измеряемые частоты вырастут в 8 раз.
Единство противоположностей??? Не удастся "пробросить"... таймер просто не станет считать...
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Не совсем по теме, но может кому пригодится . Полная замена процессора в частотомере HP5370 на самодеьный. Сначала на базе Atmel at91 а вторая версия на базе BeagleBone с эзернетот и прочими штучками. Интересен не только сам проект, но и его исходники. http://www.jks.com/5370/5370.html
Проверил идею с пробросом входного сигнала. Работает. Собственно вот код Reciprocal counter stm32f030c4, lcd - nokia1202, keil 5. Должен мерить до f/2 то есть до 24 мегагерц. Проверял где то до 11 на макете. Если есть заинтересованные в продолжении проекта - пишите. Для готовой конструкции нужно разработать схему входной части, печатную плату всего, ну и дописать всякие сервисные возможности, как то регулировка времени измерения, калибровка, включение делителя ну и т.д. насколько хватит фантазии. Я могу взять на себя программную часть. Возможно потом можно будет приделать аналоговый интерполятор. Я прикидывал, сделать вроде можно (а может и нет, макетирования не проводил).
Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33 Сообщений: 826 Откуда: Уже не город Белых гор
Рейтинг сообщения:0
Всё это очень интересно и занимательно. Использовать таймеры микроконтроллера для частотомера с приличной точностью весьма интересно и востребовано. Однако, я никак не пойму, почему никто не делает правильный двухканальный вариант? По моему опыту, просто частотомер нужен совсем не всегда. Нужно измерять и длительность, время нарастания, отношение частот, фазу, время между импульсами и т.д. Всё это возможно только с применением двух каналов. Можно третий - с делителем ВЧ. Вот на такую штуку с интерполятором на каждый канал я хочу потратить своё время. Я думаю, что без связки МК-CPLD тут не обойдётся. У меня есть опыт программирования и того, и другого, а также опыт создания электронных схем. Свободного времени немного, но найдётся. Наработки по входной части тоже есть. Могу скооперироваться с кем-нибудь для получения рабочего прототипа.
Если есть заинтересованные в продолжении проекта - пишите.
Мне проект интересен. Но практической помощи от меня мало. Я только учусь Можно ли мне скомпилировать под STM32F030F4P6? Можно ли привести схему(таблицу) подключения lcd - nokia1202?
Спасибо откликнувшимся. Я как раз экспериментировал с STM32F030F4P6. Что то заклинило меня написал про С4. Посмотреть подключение индикатора и всего остального можно в файле hw.h LCD_CLK A4 LCD_DA A2 LCD_RESET A3 LCD_CE A1 LCD_PWR A0 - питание индикатора через эту ногу, так было проще подключить к макетке.
Применение одноканального варианта легко объяснимо - оно требует в 2 раза меньше усилий на входной формирователь, в 2 раза меньше деталей, и в несколько раз менее сложную программу. А если еще учесть что все это нужно синхронизировать с высокой точностью то сложность и трудоемкость возрастает на порядок. Идея как раз была сделать частотомер без применения плис, только с одним контроллером и с его аппаратными возможностями. Сейчас я даже не представляю можно ли сделать 2 канала на 1 контроллере, а на 2 - тут уже надо думать как синхрнизироваться. Сейчас уперся в отсутствие DMA на 2 канале 3 таймера. Его собирался использовать для оценки входной частоты, что бы включить делитель. Включаю делитель сигнала на этом канале на 8, включаю dma по захвату. Потом оценивать соседние показания в массиве в памяти и судить по ним о частоте и необходимости включения делителя на точном измерительном канале 1. Но DMA не оказалось на 2 канале 3 таймера. Нужно либо переходить на 1 таймер, либо придумывать другой механизм оценки входной частоты. Пока до проверки интерполятора не добрался совсем. Его симуляцию выложу вечером, если есть необходимость. Собственно идею уже обкатал Леонид Иванович. У него в livejournal есть статья про интерполятор для измерения длительности 1 секундных импульсов gps. Правда он почему то не пошел дальше до частотомера, возможно потому что он уже собрал все на плис, или потому что частотомер не является самым нужным прибором.
Последний раз редактировалось Galizin Ср сен 30, 2015 09:42:39, всего редактировалось 1 раз.
Несомненно проще использовать режим внешнего тактирования через TRG вход. Это уже описал Химера. Я специально проверял идею с пробросом через таймер. На f030f4 TRG не выведен. Что такое накопительный режим я не очень понял. Усреднение по нескольким измерениям? По поводу счета я тоже не понял. Реализованы оба режима счета и прямой и обратный? Или речь идет только о отображении информации частота или время?
да, фактически усреднение - чем дольше меряем, тем выше точность (ессно опора нужна соответствующая). прямой режим - счет по TIM2_ETR, TIM14 - генератор интервалов (0.1сек для быстрой индикации). обратный режим - захват по TIM2_CH2/CH3. Низкая частота из-за программной обработки в прерываниях, если задействовать DMA, можно поднять на порядок.
захват по TIM2_CH2/CH3. Низкая частота из-за программной обработки в прерываниях
Я рекомендую почитать идею Химеры по поводу обратного счета в этой ветке. Можно будет сделать частоту одинаковой, такой же как для прямого счета, то есть до F/2 напрямую или до F*4 с встроенным в контроллер делителем. В вашем случае обратный метод будет счет через TIM2_ETR с одновременным захватом одного из фронтов TIM1 или каким либо другим. Или возможно я недопонял про низкую частоту и с этим все ОК. Дело в том что измерять частоту обратным методом - это одно, а смотреть ШИМ - это несколько совсем другое. Как обещал приаттачил hex. Кварц на 8МГц. По мне он не представляет ценности, там даже кнопок пока нет.
Вложения:
Комментарий к файлу: hex fmeter.rar [4.45 KiB]
Скачиваний: 383
Поменял местами таймер 3 и 1. Это потребовалось потому что у 3 таймера отсутвует связь 2 канала захвата и DMA. Переключил вход на 1 таймер 2 канал (PA9). На T1_CCR1 включется и выключается прескалер в зависимости от входной частоты. На T1_CCR2 прескалер всегда включен на 8. По захвату на CCR2 генерируется запрос к DMA. По запросу сохраняется 6 захваченных значений в массиве. Вычисляем разницу между первым и последним и по этой разнице оцениваем частоту, вернее период. Если частота выше порога - включаем прескалер на 1 канале, ниже - выключаем. Пороги с гистерезисом. Оценка частоты происходит периодически с частотой 48МГц/64K. hex в аттаче.
Проверил идею с пробросом входного сигнала. Работает. Собственно вот код Reciprocal counter stm32f030c4, lcd - nokia1202, keil 5. Должен мерить до f/2 то есть до 24 мегагерц. Проверял где то до 11 на макете.
То есть это максимум и выше 24МГц оно уже не одолеет? Я правильно понял?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения