В той версии к которому относится сообщение так оно и было. В последней версии потенциально до F/2*8 = 192. Только вот я этого не проверял. Не на чем. Если вдруг соберетесь проверять, пишите, вышлю ссылку на схему.
Не. Спасибо. До F/2 мне не интересно. Последний вариант в виде HEX тоже. А из вашего описания вообще ничего не понятно что там куда пробрасывается и как. Зачем там ДМА что оно делает?
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Вероятно я не сделаю частотомер с интерполятором на stm32. Поэтому изложу основную идею, вдруг кому понадобится. Идея в общем не моя и лежит здесь http://leoniv.livejournal.com/129151.html То есть использовать интерполятор на простых триггерах. Измерить напряжение на конденсаторе интерполятора до разряда и после разряда. По разнице судить о величине отставания фронта сигнала от фронта образцового генератора. Два таких измерения дадут две временные метки между фронтами измерительного сигнала. Временные метки определяются с помощью интерполятора с высокой точностью, так в 100-1000 превышающей период образцовой частоты. Собственно после этого остается подсчитать количество периодов измеряемой частоты между этими двумя метками - и дело в шляпе. остается разделить одно на другое и получить требуемую частоту. Вот тут то и заключена основная идея. Прямой подсчет вполне возможен, но при попадании фронта сигнала где то близко к фронту образцового возможна неточность в подсчете +-1 единица, связано с неопределенными задержками в контроллере и неизвестностью точного времени когда в каком такте контроллера будет точно захвачен фронт. Кроме того если сигнал измеряется с делением, то прямой подсчет вообще невозможен так как измерительная частота больше образцовой. Поэтому предлагаю подсчитывать количество импульсов косвенно. Сначала подсчитать с помощью описанного здесь метода частоту приблизительно с достаточной степенью точности. Потом на основании подсчитанной частоты и временных меток путем расчета (деления) получаем количество периодов измерительного сигнала. Количество периодов округляется до целого (по смыслу это целое число), а потом уже на основании этого количества рассчитываем точное значение частоты или периода. Точность измерения частоты цифровым способом должна быть такой что бы подсчет количества давал бы точность лучше чем +-0.5 периода частоты входного сигнала. Для сокращения времени измерения можно также применить регрессию по нескольким точкам. По моим прикидкам получалось что вполне можно измерять частоты до 100 мегагерц в течение примерно 100 микросекунд или даже лучше. Основная задержка была в необходимости перезарядки ищмерительного конденсатора в течение этого времени, ну и в мощности вычислителя, что бы успеть сделать все прикидки. С другой стороны можно сделать измерение всех значений, а расчет уже производить потом, вне измерительного интервала. Данный принцип применим не только к stm32, но и к любому другому, который реализует обратный частотомер. Просто на stm32 это можно сделать без каких либо внешних компонент. Также можно увеличивать точность делая регрессию по нескольким точкам измерения уже периода. То есть делать накопление данных как цифрового измерителя так и аналогового с последующим их обсчетом (или на лету если позволит мощность вычислителя). Была даже идея калибровки нелинейности интерполятора. Нелинейность возникает из-за нелинейности зависимости емкости от напряжения на p-n переходах. Для этого нужно было использовать 2 близко настроенных кварцевых генератора, один как образцовый а второй как измерительный. Разность частот установить герц в 1-3. После измерить интерполятором расстояние от фронта измерительного сигнала до фронта образцового. Это расстояние нарастает линейно от измерения к измерению. Отсюда можно сделать выводы о линейности интерполятора и при необходимости скорректировать ее на основании таблицы или формулы полученной при калибровке и таким образом увеличить точность.
Проверил идею с пробросом входного сигнала. Работает. Собственно вот код Reciprocal counter stm32f030c4, lcd - nokia1202, keil 5. Должен мерить до f/2 то есть до 24 мегагерц. Проверял где то до 11 на макете. Если есть заинтересованные в продолжении проекта - пишите. Для готовой конструкции нужно разработать схему входной части, печатную плату всего, ну и дописать всякие сервисные возможности, как то регулировка времени измерения, калибровка, включение делителя ну и т.д. насколько хватит фантазии. Я могу взять на себя программную часть. Возможно потом можно будет приделать аналоговый интерполятор. Я прикидывал, сделать вроде можно (а может и нет, макетирования не проводил).
Нашел проблему, в 16 битный регистр пишем 32битное значение
Код:
TIM3->CCR3 = MeasureInterval; // в 16 битный счетчик пишем 48000000????? по факту 27648 RefNextCheck = MeasureInterval;
Извините за глупые вопросы, есть уже период входного сигнала в тиках тактирующего , можно ведь сразу перевести его в частоту. Зачем ещё gate вычислять. По одному периоду входящей , что нельзя считать частоту. Точность , изменение частоты, что мешает?
Добавлено after 6 minutes 21 second:
От количества измеренных периодов входной частоты, точность не изменится. Погрешность возникает от несовпадения фронтов тактируемой и входной частоты. Так это пол периода тактируемой и от неё не избавится никак по принципу Reciprocal counter.
Добавлено after 2 hours 18 minutes:
"В Reciprocal counting увеличение точности достигается накоплением измерительных импульсов за некоторое количество периодов входной частоты." Кто обоснует это формулами ,графиками, поподробнее. Какая разница в точности между одним периодом и несколькими периодами. Частота может убежать в любой момент, хоть одна хоть другая
Спасибо.Формулы красивые. Погрешность квантования входит в формулу(50) в знаменателе, чем больше период измерения, тем меньше погрешность.Появление этой формулы для меня не очевидно. По временным графикам для таймеров это не очень очевидно.Если частота входящая кратна опорной , так погрешность буде одна не зависимо от колличества периодов. Что то формула эта меня не убедилаПОгрешность квантования это у нас погрешность из-за ресинхронизации таймеров, я так понял. У нас берётся системная частота,она от кварца внешнего умножается делится(вообщем в Кубе там хорошо видно-больше куб не на что не годится, а ещё ножки сразу все видны и усё). Вот этот кварц , чтобы точно мерить нужно поместить в герметичный сосуд всунуть туда печку на градусов 40С . Это получатся термостат. Так делал частотомеры Бирюков при Союзе. А так просто от кварца на плате мерить частоту, это так, что один период возьмём входящей что 10 периодов. Эту погрешность потом какими то программными манипуляциями надо вычислять. Я так понял. Как железом поймать вот эту разность в фронтах между тактовой и входной?Ведь входная может немножко плавать.И погрешность будет плавать. За 10 периодов она конечно сильно не уплывёт. Вообщем я прямой счёт на 176 ещё в 1984 делал. Часовой кварц. 176ие12 опорная секунда, АЛС324Б индикация. Шото мерял. Разобрал. А жаль память о молодости.... На STM32 не пойму как за счёт увеличения периодов улучшается точность..... Пример с цифрами ппостенький кто то кинет. Допустим входящая 9000 герц опорная 100мгц для примера. И разность в одном периоде и в 10 периодах входящей
Последний раз редактировалось shalfey Ср окт 21, 2020 13:52:33, всего редактировалось 1 раз.
Один период 100'000'000*1/11'111=9000,09Гц при погрешности квантования ±0,81Гц 10 периодов 100'000'000*10/111'111=9000,009Гц при погрешности квантования ±0,081Гц
Если брать формулу 50 за чистую монету то правильно.Но меня смущает сама эта формула.Ладно надо пробовать кодить, а то это пустая трата времени.Есть f4 discоvery ухожу кодить
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения