реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> RC генератор на STM (генератор с переменным конденсатором)
rtype
сообщение May 18 2017, 20:07
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 23-11-14
Пользователь №: 83 801



Hei!

Помогите пожалуйста с идеями, как реализовать генератор на STM(8,32 - не важно) с внешним переменным конденсатором.

блок схема примерно такая:



конденсатором определяется частота генератора, которая, в свою очередь, измеряется таймерами и пр.
Сделать RC цепочку - запускать и останавливать таймер или сбрасывать его по прерыванию весьма нестабильный вариант, я уже пробовал.
использовать внешние элементы для генератора - оно уже так работает, хочу убрать всю схему внутрь процессора.
Спасибо!

Сообщение отредактировал rtype - May 18 2017, 20:09
Go to the top of the page
 
+Quote Post
firew0rker
сообщение May 19 2017, 03:08
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 190
Регистрация: 11-07-12
Из: Новосибирск
Пользователь №: 72 716



Тактирование системной шины SYSCLK можно настроить от встроенного генератора HSI (8МГц). К генератору HSЕ вместо кварцевого резонатора подключить по схеме замещения внешний переменный конденсатор с индуктивностью.

В Clock configuration register (RCC_CFGR) настроить MCO: Microcontroller clock output на HSE clock select. Это будет выход генератора. Его можно соединить со входом таймера, чтобы мерить частоту.

Кроме того, RTC может тактироваться от внешнего HSE (с делителем /128) и выдавать частоту делённую на 64 на выход CCO: Calibration clock output.
Go to the top of the page
 
+Quote Post
AVI-crak
сообщение May 19 2017, 03:18
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 16-10-15
Пользователь №: 88 894



Это лишено практического смысла.

Есть вариант внешнего гуна на несколько диапазонов, с классическим управлением через два таймера с накоплением и одновременным сбросом. Вариант имеет право на жизнь в случае использования stm32f105-107 и кварца OXCO. Получится прибор с рыночной стоимостью около 500к рубликов, и запредельной точностью фазы и частоты. Выше только атомный стандарт.
Но зачем такое дома? После постановки задачи и условий - можно начинать закупаться детальками.
Можно сделать всё то-же самое из подножного хлама, качество будет соответствующим, но программное обеспечение практически инцидентным с дорогим вариантом.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 19 2017, 06:55
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 776
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AVI-crak @ May 19 2017, 05:18) *
Есть вариант внешнего гуна на несколько диапазонов,

Как я понял - ТС-у нужно просто изучить таймеры своего МК. Для этого есть юзермануал на сайте STM.
Плюс - изучить работу PLL.
Go to the top of the page
 
+Quote Post
rtype
сообщение May 22 2017, 17:09
Сообщение #5





Группа: Участник
Сообщений: 14
Регистрация: 23-11-14
Пользователь №: 83 801



Цитата(firew0rker @ May 19 2017, 06:08) *
Тактирование системной шины 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.

Сообщение отредактировал rtype - May 22 2017, 17:09
Go to the top of the page
 
+Quote Post
firew0rker
сообщение May 23 2017, 09:35
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 190
Регистрация: 11-07-12
Из: Новосибирск
Пользователь №: 72 716



Цитата(rtype @ May 23 2017, 00:09) *
трогать тактовую нет резона - она нужна для измерения измеряемого параметра.

Вместо внешнего генератора на двух инверторах можно использовать встроенный генератор микроконтроллера. Для частот 10-50kHz подойдёт LSE. Вместо часового кварца между выв. OSC32_IN и OSC32_OUT включить контур с внешним переменным конденсатором и катушкой. Мерить частоту относительно тактовой, как описано в «Calibration of the HSI» Reference manual, только наоборот, частоту HSI принять константой и вычислять частоту LSE.
Go to the top of the page
 
+Quote Post
rtype
сообщение May 23 2017, 19:05
Сообщение #7





Группа: Участник
Сообщений: 14
Регистрация: 23-11-14
Пользователь №: 83 801



Цитата(firew0rker @ May 23 2017, 12:35) *
Вместо внешнего генератора на двух инверторах можно использовать встроенный генератор микроконтроллера. Для частот 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). как-то модифицировать эту библиотеку сил я в себе не нашел, т.к. результат не понятен, а методика с частотой генератора уже работает.
Работасть с таймерами и прерываниями тоже не получилось с годным результатом.
Go to the top of the page
 
+Quote Post
linuxbergi
сообщение May 27 2017, 05:45
Сообщение #8





Группа: Участник
Сообщений: 12
Регистрация: 15-05-17
Пользователь №: 97 085



Timer в STM32 может одновременно генерировать сигнал и измерять частоту. Один канал настраиваете на генерирование, а на другой
канал поступают импульсы для измерения пропущенные через RC цепочку. Импульсы пропускаете через RC цепочку, через триггер Шмидта и измеряете длительность импульса. Вообще вариантов может быть много.
Go to the top of the page
 
+Quote Post
Obam
сообщение May 27 2017, 10:02
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 659
Регистрация: 14-11-14
Пользователь №: 83 663



А почему до сих пор не прозвучало заветное ключевое слово "capture"?


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
rtype
сообщение May 28 2017, 20:38
Сообщение #10





Группа: Участник
Сообщений: 14
Регистрация: 23-11-14
Пользователь №: 83 801



Hei!

Самогенерация (RC генератор на логических инверторах). Частота изменяется примерно 5..100кГц, рабочий режим примерно 10..50.

в этом режиме все работает приемлемо, стабильность генерации достаточная, девиация частоты 5% в в течение минуты меня устраивает.

Таже RC цепочка - интегратор, подключенная к генератору - для примера достаточно крайние значения частот.



очевидно, что добротность фильтра крайнее низкая. Это собственно и есть один из параметров измерения (меняется емкость и ESR).
Поэтому измерение длительности импульса счетчиком получается плохо.
при низкой частоте импульсов (примерно 5..10кГц) длительность импульса плавает на 20% между повторными измерениями.
при высокой частоте, уровень сигнала низкий, усиливать его - поставить теже внешние элементы.
Хочу также пояснить, что я не являюсь программистом или специалистом по однокристальным МК.
Как запустить таймер управляемый от RC, желательно без прерываний?
Спасибо!


Go to the top of the page
 
+Quote Post
Rst7
сообщение May 29 2017, 09:54
Сообщение #11


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 260
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Помогите пожалуйста с идеями


Я что-то не пойму, Вам что измерить надо? Емкость датчика? Так есть более вменяемые методы, чем генератор заводить. И на современных микроконтроллерах очень удобно реализуются, нужен будет только один внешний операционник (правда быстродействующий и с полевиками на входе) плюс пара-тройка резисторов/конденсаторов.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
alex2103
сообщение May 29 2017, 10:45
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 115
Регистрация: 7-03-07
Из: г. Запорожье
Пользователь №: 25 945



Цитата(Rst7 @ May 29 2017, 12:54) *
Я что-то не пойму, Вам что измерить надо? Емкость датчика? Так есть более вменяемые методы, чем генератор заводить. И на современных микроконтроллерах очень удобно реализуются, нужен будет только один внешний операционник (правда быстродействующий и с полевиками на входе) плюс пара-тройка резисторов/конденсаторов.

Покажите пожалуйста, очень интересно!
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 29 2017, 11:26
Сообщение #13


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 260
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE (alex2103 @ May 29 2017, 13:45) *
Покажите пожалуйста, очень интересно!


Запросто.
Прикрепленное изображение


На картинке:

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 можно подключать к схеме хоть просто куском МГТФа, а правую - через экранированный кабель почти любой длины, его емкость не влияет на результат измерения.

Ну и плюс такой способ измерения нечувствителен к утечкам в конденсаторе (в разумных пределах).




--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
alex2103
сообщение May 29 2017, 11:47
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 115
Регистрация: 7-03-07
Из: г. Запорожье
Пользователь №: 25 945



Rst7, спасибо за развернутый ответ. Непременно на досуге опробую! В реальных применениях какой операционник использовали если не секрет?
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 29 2017, 12:13
Сообщение #15


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 260
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE (alex2103 @ May 29 2017, 14:47) *
Rst7, спасибо за развернутый ответ. Непременно на досуге опробую! В реальных применениях какой операционник использовали если не секрет?


Очень давно - 574УД3.

Потом AD8065 (правда там питание 5В было).

Вообще подходящих валом нынче. Я бы выбирал по параметрическому поиску у любого вменяемого производителя с 3.3В Rail-To-Rail I/O, полевики на входе, полоса единичного усиления не меньше 50-100МГц.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd November 2017 - 02:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016