sysel 0 Posted December 2, 2019 · Report post Здравствуйте! Стоит задача разработать очень энерго-эффективный регистратор "аналоговых" событий с батарейным питанием. Суть: есть сигнал (напряжение) с датчика, очень редко возникает бросок напряжения (крутой передний фронт, длительность импульса - единицы миллисекунд). Необходимо записать в микросхему флеш-памяти осциллограмму этого импульса, причем: хотя бы 1мс до события и 20мс после. Хотелось бы сделать это встроенным АЦП микроконтроллера. Разрядность АЦП не менее 10 бит, частота выборки не менее 100 ksps (точность частоты +/- 10%). Вопрос: есть ли в природе микроконтроллер, который можно настроить в следующий режим для ожидания события: 1. ядро остановлено; 2. АЦП выполняет конвертацию с частотой 200 ksps, результаты записывает в кольцевой буфер (или FIFO) (собственный буфер блока АЦП либо же по DMA в ОЗУ); 3. модуль АЦП имеет настраиваемые пороги, при превышении которых пробуждается ядро микроконтроллера; 4. потребление в этом режиме - десятки микроампер. Основной подвох задачи - требование записать 1 мс сигнала (а это 200 отсчетов) до превышения порога, т.е. аналоговым компаратором и быстрым пробуждением тут не обойтись. Существование АЦП ADS7042, потребляющей 23 мкА (при 100 ksps), подсказывает, что задача не из области фантастики. Прошу помощи с выбором микроконтроллера, который имеет АЦП с аппаратным цифровым компаратором и большим буфером (или мало потребляющую связку АЦП->DMA->ОЗУ). Не хотелось бы задействовать процессорное ядро для опроса АЦП и сравнения с порогом отсчетов. Или же существует малопотребляющая микросхема АЦП с большим буфером отсчетов и цифровым компаратором? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
megajohn 0 Posted December 2, 2019 · Report post >Основной подвох задачи - требование записать 1 мс сигнала (а это 200 отсчетов) до превышения порога раздвоить аналоговый сигнал на компаратор для пробуждения и на ультразвуковую линию задержки перед АЦП ? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sysel 0 Posted December 2, 2019 · Report post > раздвоить аналоговый сигнал на компаратор для пробуждения и на ультразвуковую линию задержки перед АЦП ? Что-то мне подсказывает, что затраты энергии на вкачивание сигнала в линию задержки и на приём из неё намного превзойдут потребление микроконтроллера в даже в самом активном режиме работы. Может быть я плохо искал, но найти линию задержки аналогового сигнала на миллисекундные времена мне не удалось. Может быть Вы подскажите модель? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Aleksandr Baranov 0 Posted December 2, 2019 · Report post EFR32 Вас не устроит? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
HardEgor 0 Posted December 3, 2019 · Report post 8 часов назад, sysel сказал: Основной подвох задачи - требование записать 1 мс сигнала (а это 200 отсчетов) до превышения порога, т.е. аналоговым компаратором и быстрым пробуждением тут не обойтись. АЦП+FIFO(типа SN74ALVC7804 или SN74V3680), а для пробуждения контроллера поставить аналоговый компаратор. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vladec 0 Posted December 3, 2019 · Report post Посмотрите еще самые последние контроллеры от NXP, (что то типа LPC55SXX или похожее), могу ошибаться, но вроде как возможность работы АЦП с DMA в спящем режиме и цифровые компараторы на борту для пробуждения ядра. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
_pv 0 Posted December 3, 2019 · Report post 3 hours ago, vladec said: Посмотрите еще самые последние контроллеры от NXP, (что то типа LPC55SXX или похожее), могу ошибаться, но вроде как возможность работы АЦП с DMA в спящем режиме и цифровые компараторы на борту для пробуждения ядра. у мелких lpc8xx в ацп тоже есть цифровые компараторы. и M0 пожалуй поменьше жрать должен чем двухголовый M33. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jcxz 4 Posted December 3, 2019 · Report post 3 часа назад, vladec сказал: Посмотрите еще самые последние контроллеры от NXP, (что то типа LPC55SXX или похожее), могу ошибаться, но вроде как возможность работы АЦП с DMA в спящем режиме и цифровые компараторы на борту для пробуждения ядра. Возможность работы АЦП при спящем ядре есть во многих МК. Но для 100kS/s нужна тактовая для АЦП 1.5 МГц. Соответственно какие-то части МК будут работать на такой частоте (пускай и при спящем ядре). А значит минимального потребления как в low power режимах - десятков мкА уже не добиться. Но ТС ничего не указал про то - какой ток потребления его устроит? Если устроит потребление в пару мА, то можно выбрать STM8L - там есть и АЦП 12бит и DMA и компараторы и экономичное 8-битное ядро. Если нужно ниже, то тогда наверно только городить какую то внешнюю схему с внешним АЦП. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 0 Posted December 3, 2019 · Report post STM32 имеет analog watchdog в АЦП, ПДП умеет писать из АЦП в циклический буфер, все это без участия ядра. Сколько все это будет потреблять в таком режиме - надо смотреть в документации. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sysel 0 Posted December 3, 2019 · Report post К сожалению, пока что потребление специфицировано на уровне "чем меньше, тем лучше", т.к. параллельно идёт выбор первичного преобразователя (датчика). И если окажемся перед фактом, что датчик жрёт 5 мА, то и вытягивать микроконтроллер с АЦПшкой на десятки микроампер не будет смысла. Как я понял из обзора документации на микроконтроллеры, режимы с пониженным энергопотреблением и активными АЦП, DMA и оконным компаратором есть практически у всех: STM32L, MSP432, nxp kinetis, ADUCM302x и т.д. Надо внимательно изучать документацию на предмет того, какие аппаратные блоки должны быть включены, чтобы обеспечить работу (например, АЦПшка может тактироваться не от всякого внутреннего генератора), выбирать пару-тройку претендентов для опытов. Тема создавалась чтобы изучить опыт инженеров, имевших практический опыт решения подобных задач. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
_pv 0 Posted December 3, 2019 · Report post 18 minutes ago, sysel said: Тема создавалась чтобы изучить опыт инженеров, имевших практический опыт решения подобных задач. как-то для какого-то маложоркого усройства после подсчёта всех джоулей, необходимых для довольно несложного фильтра для сигнала в первые кГц оказалось гораздо выгоднее сгородить его на малопотребляющих ОУ и потом только цифровать, чем делать это в цифре. так что внешнее АЦП, со сдвиговыми регистрами и ФИФО, как предложил HardEgor, может вполне оказаться гораздо выгоднее по потреблению. встроенные в МК опоры АЦП обычно жрут довольно много, выгоднее на IO повесить внешнюю она и "включаться" будет быстрее, но в вашем случае когда цифровать надо непрерывно не вариант, но когда МК выбирать будете на потребление внутренней опоры поглядеть полезно. и запись во flash сама по себе может тоже съесть довольно много джоулей по сравнению с fram например. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
_4afc_ 0 Posted December 3, 2019 · Report post 5 hours ago, jcxz said: Возможность работы АЦП при спящем ядре есть во многих МК. Почему-то у Atmel возможность остановить тактовую CPU, и при этом, по DMA, заливать данные в ОЗУ реализована только на древних ARM типа AT91SAM7S на Cortex М3, М4, М7 - частота CPU уже не отключается, есть только режимы сна ядра... Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sysel 0 Posted December 3, 2019 · Report post Выясняется масса пикантных подробностей, когда читаешь дальше первых двух страниц даташитов :) а если ещё в еррату глянуть... Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MiklPolikov 0 Posted December 4, 2019 · Report post Посмотрите в сторону STM32L... Там и АЦП->ДМА->Память при остановленном ядре, и analog wachdog для регистрации вашего события и в документации внятно указаны потребления всех периферий по отдельности для разных частот, можно за 5 минут просуммировать и узнать что получится. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...