Чтение и обработка 32+ каналов АЦП на высоких частотах

Для проекта мне нужно отобрать 32 или более фоторезисторов за раз и вернуть идентификатор и значение самого яркого фоторезистора по какой-либо связи (i2c, серийный номер и т. д. для меня не имеет большого значения). Я борюсь с тем, как считывать так много АЦП одновременно, сохраняя при этом высокую скорость возврата (предпочтительно> 100 Гц, но это может быть нереально).

Я слышал, что для этой цели можно использовать FPGA, но у меня мало времени и нет опыта работы с ними. Существуют ли микроконтроллеры с таким количеством АЦП или у вас есть другие предложения? Спасибо.

Что вы собираетесь делать с данными после их получения? Сохранить для последующей обработки? Управлять ЦАП в контуре управления? Управление 32 ЦАП в 32 контурах управления? Отправить на ПК?
Его можно либо отправить непосредственно на ПК через USB, либо через микроконтроллер в качестве посредника, в зависимости от того, что окажется более удобным.
Вы можете посмотреть на платы сбора данных USB. На eBay я видел предложения USB-накопителей с 6 каналами по 10 бит менее чем за 10 долларов. Покупатель остерегается, конечно.
Я подошел бы к подходу творчески. Например, вам не нужны значения, вам просто нужно знать, какое из них самое большое. Может быть, вы можете одновременно заряжать 32 конденсатора через интеграторы и просто защелкивать первый, чтобы достичь какого-то порога.
100Гц это не высокие частоты. Я считаю, что высокие частоты составляют около 100 МГц, что определенно потребует FPGA для 32 каналов. На частоте 100 Гц вы можете использовать аналоговые мультиплексоры, если вам не требуется, чтобы все сэмплы были с одним и тем же интервалом дискретизации.

Ответы (1)

100 Гц на 32 каналах звучит вполне выполнимо.

Предполагая, что мы говорим от 8 до 12 бит, это всего 12 * 32 * 100 = 38400 бит в секунду работы по выборке.

Даже 16 или 32 бита на канал не будут огромным расходом бюджета на выборку только при 100 Гц, но переход от 10 до 12 бит со средним фоторезистором, вероятно, уже больше, чем чрезмерная инженерия, они не настолько совместимы между двумя разными типами, которые вы нужна точность в один милливольт на вашем АЦП.

Если вам нужна точная синхронизация, вам просто нужен набор из 4, 8 или даже 16-канальных АЦП, другого варианта для этого нет. Если вам нужно «одновременно», есть много MCU, которые предлагают от 200kSample/s до 2MSample/s и от 8 до 10 мультиплексированных каналов. Если у вас есть 8 каналов на вашем MCU, вы можете использовать аналоговый мультиплексор от 1 до 4 на каждом канале и сделать его 8*4 = 32 канала.

Если вам нужно просканировать 32 канала со скоростью 200 000 отсчетов/с с некоторым временем установления между ними, скажем, 10 мкс, вы сможете просканировать их все за:

32*10 мкс + 32*(1/200000)с = 480 мкс.

Если вам нужно 100 отчетов в секунду, что оставляет 9,52 мс между пакетом выборки, это почти в 20 раз больше, чем время, необходимое для их выборки, и будет казаться, что они сделаны в одно и то же время по сравнению с вашей скоростью измерения.

Я бы посоветовал вам несколько точных микроконтроллеров, но, поскольку я очень сильно заклеймен Atmel, я чувствую, что это будет предвзято / основано на мнении. Но если вам нужен Atmel, обратите внимание на серии ATMega и ATXMega, они просты в использовании и мощны. Типы ATXMega предлагают большую отдачу за относительно небольшие деньги. Но у Microchip и Texas Instruments наверняка есть аналоги по цене от 4 до 6 долларов с дешевыми экспериментальными платами на их основе, которые вы могли бы использовать, если считаете, что есть лучшие примеры или поддержка для них.

Существует еще одна альтернатива одновременной выборке: несколько схем выборки и хранения и один АЦП с мультиплексором.
@NickJohnson Отличный момент, который я совершенно забыл учесть.