rtype 0 18 мая, 2017 Опубликовано 18 мая, 2017 (изменено) · Жалоба Hei! Помогите пожалуйста с идеями, как реализовать генератор на STM(8,32 - не важно) с внешним переменным конденсатором. блок схема примерно такая: конденсатором определяется частота генератора, которая, в свою очередь, измеряется таймерами и пр. Сделать RC цепочку - запускать и останавливать таймер или сбрасывать его по прерыванию весьма нестабильный вариант, я уже пробовал. использовать внешние элементы для генератора - оно уже так работает, хочу убрать всю схему внутрь процессора. Спасибо! Изменено 21 ноября, 2022 пользователем haker_fox Уточнил название темы, добавил теги, переместил в нужный раздел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firew0rker 0 19 мая, 2017 Опубликовано 19 мая, 2017 · Жалоба Тактирование системной шины SYSCLK можно настроить от встроенного генератора HSI (8МГц). К генератору HSЕ вместо кварцевого резонатора подключить по схеме замещения внешний переменный конденсатор с индуктивностью. В Clock configuration register (RCC_CFGR) настроить MCO: Microcontroller clock output на HSE clock select. Это будет выход генератора. Его можно соединить со входом таймера, чтобы мерить частоту. Кроме того, RTC может тактироваться от внешнего HSE (с делителем /128) и выдавать частоту делённую на 64 на выход CCO: Calibration clock output. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 19 мая, 2017 Опубликовано 19 мая, 2017 · Жалоба Это лишено практического смысла. Есть вариант внешнего гуна на несколько диапазонов, с классическим управлением через два таймера с накоплением и одновременным сбросом. Вариант имеет право на жизнь в случае использования stm32f105-107 и кварца OXCO. Получится прибор с рыночной стоимостью около 500к рубликов, и запредельной точностью фазы и частоты. Выше только атомный стандарт. Но зачем такое дома? После постановки задачи и условий - можно начинать закупаться детальками. Можно сделать всё то-же самое из подножного хлама, качество будет соответствующим, но программное обеспечение практически инцидентным с дорогим вариантом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 19 мая, 2017 Опубликовано 19 мая, 2017 · Жалоба Есть вариант внешнего гуна на несколько диапазонов, Как я понял - ТС-у нужно просто изучить таймеры своего МК. Для этого есть юзермануал на сайте STM. Плюс - изучить работу PLL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rtype 0 22 мая, 2017 Опубликовано 22 мая, 2017 (изменено) · Жалоба Тактирование системной шины SYSCLK можно настроить от встроенного генератора HSI (8МГц). К генератору HSЕ вместо кварцевого резонатора подключить по схеме замещения внешний переменный конденсатор с индуктивностью. В Clock configuration register (RCC_CFGR) настроить MCO: Microcontroller clock output на HSE clock select. Это будет выход генератора. Его можно соединить со входом таймера, чтобы мерить частоту. Кроме того, RTC может тактироваться от внешнего HSE (с делителем /128) и выдавать частоту делённую на 64 на выход CCO: Calibration clock output. трогать тактовую нет резона - она нужна для измерения измеряемого параметра. Таймер перепускать я пробовал, но, стабильность такого варианта оказалась хуже, чем измерять внешний генератор на двух инверторах: повторяемость результата измерения процентов 70, а с генератором около 95%. Изменение частоты внешнего генератора у меня 10-50kHz. предполагаемый процессор - stm8f003 или stm32f030. Изменено 22 мая, 2017 пользователем rtype Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
firew0rker 0 23 мая, 2017 Опубликовано 23 мая, 2017 · Жалоба трогать тактовую нет резона - она нужна для измерения измеряемого параметра. Вместо внешнего генератора на двух инверторах можно использовать встроенный генератор микроконтроллера. Для частот 10-50kHz подойдёт LSE. Вместо часового кварца между выв. OSC32_IN и OSC32_OUT включить контур с внешним переменным конденсатором и катушкой. Мерить частоту относительно тактовой, как описано в «Calibration of the HSI» Reference manual, только наоборот, частоту HSI принять константой и вычислять частоту LSE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rtype 0 23 мая, 2017 Опубликовано 23 мая, 2017 · Жалоба Вместо внешнего генератора на двух инверторах можно использовать встроенный генератор микроконтроллера. Для частот 10-50kHz подойдёт LSE. Вместо часового кварца между выв. OSC32_IN и OSC32_OUT включить контур с внешним переменным конденсатором и катушкой. Мерить частоту относительно тактовой, как описано в «Calibration of the HSI» Reference manual, только наоборот, частоту HSI принять константой и вычислять частоту LSE. Спасибо! катушки у меня нет за ненадобностью - только RC генератор, где конденсатор (емкость и ESR) зависит от измеряемого параметра. генератор конечно можно сократить до пары транзисторов. Ваш вариант вполне годный для stm32, где RTC есть, но и тогда часы перестанут работать, что тоже плохо, энергопотребление сложнее снизить будет. основной кандидат - stm8s003: я уже пробовал STM8S touch sensing key lib - там интересный алгоритм измерения емкости, но тоже не смог добиться более-менее повторяемых результатов (емкость конденсатора у меня на порядки больше, чем для touch key). как-то модифицировать эту библиотеку сил я в себе не нашел, т.к. результат не понятен, а методика с частотой генератора уже работает. Работасть с таймерами и прерываниями тоже не получилось с годным результатом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
linuxbergi 0 27 мая, 2017 Опубликовано 27 мая, 2017 · Жалоба Timer в STM32 может одновременно генерировать сигнал и измерять частоту. Один канал настраиваете на генерирование, а на другой канал поступают импульсы для измерения пропущенные через RC цепочку. Импульсы пропускаете через RC цепочку, через триггер Шмидта и измеряете длительность импульса. Вообще вариантов может быть много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 27 мая, 2017 Опубликовано 27 мая, 2017 · Жалоба А почему до сих пор не прозвучало заветное ключевое слово "capture"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rtype 0 28 мая, 2017 Опубликовано 28 мая, 2017 · Жалоба Hei! Самогенерация (RC генератор на логических инверторах). Частота изменяется примерно 5..100кГц, рабочий режим примерно 10..50. в этом режиме все работает приемлемо, стабильность генерации достаточная, девиация частоты 5% в в течение минуты меня устраивает. Таже RC цепочка - интегратор, подключенная к генератору - для примера достаточно крайние значения частот. очевидно, что добротность фильтра крайнее низкая. Это собственно и есть один из параметров измерения (меняется емкость и ESR). Поэтому измерение длительности импульса счетчиком получается плохо. при низкой частоте импульсов (примерно 5..10кГц) длительность импульса плавает на 20% между повторными измерениями. при высокой частоте, уровень сигнала низкий, усиливать его - поставить теже внешние элементы. Хочу также пояснить, что я не являюсь программистом или специалистом по однокристальным МК. Как запустить таймер управляемый от RC, желательно без прерываний? Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Помогите пожалуйста с идеями Я что-то не пойму, Вам что измерить надо? Емкость датчика? Так есть более вменяемые методы, чем генератор заводить. И на современных микроконтроллерах очень удобно реализуются, нужен будет только один внешний операционник (правда быстродействующий и с полевиками на входе) плюс пара-тройка резисторов/конденсаторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex2103 0 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Я что-то не пойму, Вам что измерить надо? Емкость датчика? Так есть более вменяемые методы, чем генератор заводить. И на современных микроконтроллерах очень удобно реализуются, нужен будет только один внешний операционник (правда быстродействующий и с полевиками на входе) плюс пара-тройка резисторов/конденсаторов. Покажите пожалуйста, очень интересно! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Покажите пожалуйста, очень интересно! Запросто. На картинке: Cx - собственно датчик. С2 - опорный конденсатор, его емкость для простоты можно выбрать как 2*Cxmax. V2R4 - ну типа ножка порта GPIO, среднепотолочная. Там сигнал возбуждения, для простоты - меандр от таймера. Вывод OUT подключается ко входу АЦП контроллера. Запуск преобразования производится в моменты времени 0.25Т (половина времени нуля на выводе EXC) и 0.75Т (половина времени единицы на выводе EXC) (см. положение курсоров). Потом берем разность между двумя измерениями, результат будет такой: V(0.25T)-V(0.75T)=V(EXC)*Cx/C2 => Cx=C2*(V(0.25T)-V(0.75T))/V(EXC). Усреднения и прочие пироги добавлять по вкусу. Прелести такой схемы в том, что левую по схеме обкладку Cx можно подключать к схеме хоть просто куском МГТФа, а правую - через экранированный кабель почти любой длины, его емкость не влияет на результат измерения. Ну и плюс такой способ измерения нечувствителен к утечкам в конденсаторе (в разумных пределах). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex2103 0 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Rst7, спасибо за развернутый ответ. Непременно на досуге опробую! В реальных применениях какой операционник использовали если не секрет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Rst7, спасибо за развернутый ответ. Непременно на досуге опробую! В реальных применениях какой операционник использовали если не секрет? Очень давно - 574УД3. Потом AD8065 (правда там питание 5В было). Вообще подходящих валом нынче. Я бы выбирал по параметрическому поиску у любого вменяемого производителя с 3.3В Rail-To-Rail I/O, полевики на входе, полоса единичного усиления не меньше 50-100МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться