Jump to content

    

ядро спит, а АЦП бдит и помнит

Здравствуйте!

Стоит задача разработать очень энерго-эффективный регистратор "аналоговых" событий с батарейным питанием. Суть:

есть сигнал (напряжение) с датчика, очень редко возникает бросок напряжения (крутой передний фронт, длительность импульса - единицы миллисекунд). Необходимо записать в микросхему флеш-памяти осциллограмму этого импульса, причем: хотя бы 1мс до события и 20мс после.

Хотелось бы сделать это встроенным АЦП микроконтроллера.

Разрядность АЦП не менее 10 бит, частота выборки не менее 100 ksps (точность частоты +/- 10%).

Вопрос: есть ли в природе микроконтроллер, который можно настроить в следующий режим для ожидания события:

1. ядро остановлено;

2. АЦП выполняет конвертацию с частотой 200 ksps, результаты записывает в кольцевой буфер (или FIFO) (собственный буфер блока АЦП либо же по DMA в ОЗУ);

3. модуль АЦП имеет настраиваемые пороги, при превышении которых пробуждается ядро микроконтроллера;

4. потребление в этом режиме - десятки микроампер.

 

Основной подвох задачи - требование записать 1 мс сигнала (а это 200 отсчетов) до превышения порога, т.е. аналоговым компаратором и быстрым пробуждением тут не обойтись.

Существование АЦП ADS7042, потребляющей 23 мкА (при 100 ksps), подсказывает, что задача не из области фантастики.

Прошу помощи с выбором микроконтроллера, который имеет АЦП с аппаратным цифровым компаратором и большим буфером (или мало потребляющую связку АЦП->DMA->ОЗУ). Не хотелось бы задействовать процессорное ядро для опроса АЦП и сравнения с порогом отсчетов.

Или же существует малопотребляющая микросхема АЦП с большим буфером отсчетов и цифровым компаратором?

 

 

Share this post


Link to post
Share on other sites

>Основной подвох задачи - требование записать 1 мс сигнала (а это 200 отсчетов) до превышения порога

раздвоить аналоговый сигнал на компаратор для пробуждения и на ультразвуковую линию задержки перед АЦП ?

Share this post


Link to post
Share on other sites

> раздвоить аналоговый сигнал на компаратор для пробуждения и на ультразвуковую линию задержки перед АЦП ?

Что-то мне подсказывает, что затраты энергии на вкачивание сигнала в линию задержки и на приём из неё намного превзойдут потребление микроконтроллера в даже в самом активном режиме работы.

Может быть я плохо искал, но найти линию задержки аналогового сигнала на миллисекундные времена мне не удалось. Может быть Вы подскажите модель?

Share this post


Link to post
Share on other sites
8 часов назад, sysel сказал:

Основной подвох задачи - требование записать 1 мс сигнала (а это 200 отсчетов) до превышения порога, т.е. аналоговым компаратором и быстрым пробуждением тут не обойтись.

АЦП+FIFO(типа SN74ALVC7804 или SN74V3680), а для пробуждения контроллера поставить аналоговый компаратор.

Share this post


Link to post
Share on other sites

Посмотрите еще самые последние контроллеры от NXP, (что то типа LPC55SXX или похожее), могу ошибаться, но вроде как возможность работы АЦП с DMA в спящем режиме и цифровые компараторы на борту для пробуждения ядра.

Share this post


Link to post
Share on other sites
3 hours ago, vladec said:

Посмотрите еще самые последние контроллеры от NXP, (что то типа LPC55SXX или похожее), могу ошибаться, но вроде как возможность работы АЦП с DMA в спящем режиме и цифровые компараторы на борту для пробуждения ядра.

у мелких lpc8xx в ацп тоже есть цифровые компараторы.

и M0 пожалуй поменьше жрать должен чем двухголовый M33.

 

Share this post


Link to post
Share on other sites
3 часа назад, vladec сказал:

Посмотрите еще самые последние контроллеры от NXP, (что то типа LPC55SXX или похожее), могу ошибаться, но вроде как возможность работы АЦП с DMA в спящем режиме и цифровые компараторы на борту для пробуждения ядра.

Возможность работы АЦП при спящем ядре есть во многих МК. Но для 100kS/s нужна тактовая для АЦП 1.5 МГц. Соответственно какие-то части МК будут работать на такой частоте (пускай и при спящем ядре). А значит минимального потребления как в low power режимах - десятков мкА уже не добиться.

Но ТС ничего не указал про то - какой ток потребления его устроит? Если устроит потребление в пару мА, то можно выбрать STM8L - там есть и АЦП 12бит и DMA и компараторы и экономичное 8-битное ядро.

Если нужно ниже, то тогда наверно только городить какую то внешнюю схему с внешним АЦП.

Share this post


Link to post
Share on other sites

STM32 имеет analog watchdog в АЦП, ПДП умеет писать из АЦП в циклический буфер, все это без участия ядра. Сколько все это будет потреблять в таком режиме - надо смотреть в документации. 

Share this post


Link to post
Share on other sites

К сожалению, пока что потребление специфицировано на уровне "чем меньше, тем лучше", т.к. параллельно идёт выбор первичного преобразователя (датчика). И если окажемся перед фактом, что датчик жрёт 5 мА, то и вытягивать микроконтроллер с АЦПшкой на десятки микроампер не будет смысла.

Как я понял из обзора документации на микроконтроллеры, режимы с пониженным энергопотреблением и активными АЦП, DMA и оконным компаратором есть практически у всех: STM32L, MSP432, nxp kinetis, ADUCM302x и т.д. Надо внимательно изучать документацию на предмет того, какие аппаратные блоки должны быть включены, чтобы обеспечить работу (например, АЦПшка может тактироваться не от всякого внутреннего генератора), выбирать пару-тройку претендентов для опытов.

 

Тема создавалась чтобы изучить опыт инженеров, имевших практический опыт решения подобных задач.

Share this post


Link to post
Share on other sites
18 minutes ago, sysel said:

Тема создавалась чтобы изучить опыт инженеров, имевших практический опыт решения подобных задач.

как-то для какого-то маложоркого усройства после подсчёта всех джоулей, необходимых для довольно несложного фильтра для сигнала в первые кГц оказалось гораздо выгоднее сгородить его на малопотребляющих ОУ и потом только цифровать, чем делать это в цифре.

так что внешнее АЦП, со сдвиговыми регистрами и ФИФО, как предложил HardEgorможет вполне оказаться гораздо выгоднее по потреблению.

встроенные в МК опоры АЦП обычно жрут довольно много, выгоднее на IO повесить внешнюю она и "включаться" будет быстрее, но в вашем случае когда цифровать надо непрерывно не вариант, но когда МК выбирать будете на потребление внутренней опоры поглядеть полезно.

и запись во flash сама по себе может тоже съесть довольно много джоулей по сравнению с fram например.

Share this post


Link to post
Share on other sites
5 hours ago, jcxz said:

Возможность работы АЦП при спящем ядре есть во многих МК.

Почему-то у Atmel возможность остановить тактовую CPU, и при этом, по DMA, заливать данные в ОЗУ реализована только на древних ARM типа AT91SAM7S

на Cortex М3, М4, М7 - частота CPU уже не отключается, есть только режимы сна ядра...

 

Share this post


Link to post
Share on other sites

Выясняется масса пикантных подробностей, когда читаешь дальше первых двух страниц даташитов :) а если ещё в еррату глянуть...

Share this post


Link to post
Share on other sites

Посмотрите в сторону STM32L...
Там и АЦП->ДМА->Память при остановленном ядре,
и analog wachdog для регистрации вашего события
и в документации внятно указаны потребления всех периферий по отдельности для разных частот, можно за 5 минут просуммировать и узнать что получится.
 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now