Перейти к содержанию
    

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, sysel сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, vladec said:

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, vladec сказал:

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, sysel said:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, jcxz said:

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...