Внешний АЦП и ардуина

trujsr
Offline
Зарегистрирован: 06.05.2018

Добрый день. Может кто подсказать есть ли смысл брать внешний АЦП с высокой частотой, например 1 миллион считываний в секунду для работы с ардуино? Со встроенным АЦП работал, все норм, но хочется большей скорости. Вопрос в том, сможет ли сама арудина обрабатывать сигнал с внешнего АЦП с высокой частотой?

Например, мне надо оцифровать синусоиду 5В, 20кГц, 

АЦП с частотой 1ГГц получается будет делать 50 замеров на период, что вполне неплохо.

Моя задача сохранить эти замеры на арудино в массив, ну а дальше уже с ним работать, реально это сделать?

Если нет, то в какую сторону смотреть, какие МК могут справиться с такой задачей?

 

 

triac
triac аватар
Offline
Зарегистрирован: 03.05.2018

По теореме Найквиста-Котельникова, чтобы оцифровать синусоиду частотй 20 кГц, достаточно делать измерения с частотой вдвое выше, т.е. 40 кГц. Отсюда как раз "растут ноги" частоты оцифровки CD дисков, равной 44.1 кГц.  Если с запасом, то можно частоту 20 кГц оцифровывать с частотой 100 кГц.  А вот 1 МГц - это уже большой перебор, не говоря уж о 1 ГГц.

Внутренний АЦП у Атмеги-328 может оцифровывать с частотой до 79.6 кГц на низком разрешении, или до 15 кГц на полном разрешении. То есть, на низком разрешении он 20 кГц синус кое-как оцифровать успевает. Но в Атмеге ОЗУ всего 2 кБ , при 8-битной оцифровке с частотой 50 кГц эта память будет полностью заполнена всего за 40 мс.

Поэтому лучше использовать ARM с  большой памятью, например,  Arduino DUE.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

АЦП с частотой 1ГГц получается будет делать 50000 замеров на период.

Ну да ладно.

С какой частотой может Ардуина обрабатывать сигнал, зависит от алгоритма обработки и от квалификации программиста, который будет реализовывыать этот алгоритм.

Подумайте еще, как будете вводить оцифрованный сигнал в Ардуину: обычно используются последовательные интерфейсы, значит частота передечи должна быть не ниже, чем частота оцифровки, умноженная на разрядность.

nik182
Offline
Зарегистрирован: 04.05.2015

STM32 имеют АЦП с оцифровкой 1МГц и памяти достаточно для сохранения в массив и програмировать можно в среде ардуино.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nik182 пишет:
STM32 имеют АЦП с оцифровкой 1МГц и памяти достаточно для сохранения в массив и програмировать можно в среде ардуино.

А как же 5В? Делить?

И, кстати, на сколько суток хватит этих "достаточно памяти"?

nik182
Offline
Зарегистрирован: 04.05.2015

С учётом на программу и стек милисекунд на 15, но на проанализировать спектр синусоиды 20 кГц вполне хватит.  

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

nik182 пишет:

С учётом на программу и стек милисекунд на 15, но на проанализировать спектр синусоиды 20 кГц вполне хватит.  

20 кГц - это, насколько я понимаю, верхняя частота, а как Вы оцениваете нижнюю?

nik182
Offline
Зарегистрирован: 04.05.2015

Верхняя 500кГц. Нижняя в этом случае 60 Гц. Но АЦП можно цифровать реже. В этом случае диапазон можно сдвинуть 25кГц - 3Гц. Это если амплитуда 20кГц ещё интересует.