LINUX.ORG.RU

МК и аналоговый сигнал >= 80 кГц

 


0

1

Возможно ли такое провернуть с каким-нибудь Arduino и Co? Требуется оцифровать форму сигнала с ультразвукового датчика, который резонирует на 40 кГц.

У меня очень маленький опыт с ардуиноподобными, есть ардуино уно с ATmega328p. В IDE есть функция analogRead(), но в документации читаю «It takes about 100 microseconds», т.е. в 8 раз дольше, чем мне нужно, можно ли это как-то обойти?



Последнее исправление: float (всего исправлений: 1)

Сама по себе AVR так умеет, там (если считать, что МК работает на 4 МГц) АЦП работает на частотах вплоть до 200 кГц при полной точности и выше с понижением точности.

Если ардуиновский софт таких частот достичь не позволяет — дерьмо софт, значится. Пиши на сях напрямую в регистры.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

Ну вот и мне кажется, что при тикалке в 16 МГц оно обязано так уметь. «Но ведь я не специалист». А по каким ключевым словам надо просвещаться, чтобы руками сделать такую оцифровку? Прерывания? Таймер? Я на железном уровне никогда можно сказать не работал.

float
() автор топика
Ответ на: комментарий от float

Да я тоже ни разу не специалист. Берёшь даташит, читаешь и пишешь на сях, напрямую обращаясь к нужным регистрам (== «внутренним переменным» МК).

intelfx ★★★★★
()

Скажем, у STM32 минимальное время преобразования 12-битного АЦП — около 1мкс. Если тебе хватит 8-10 бит, то ОК.

Но сразу же у тебя возникнет проблема передачи данных. Т.е. как минимум нужно будет внешнюю память по FSMC подключить, заполнять в ней буфер, а потом выплевывать его по USB в компьютер, как делают Saleae logick и "USB-осциллографы".

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

8 бит достаточно. Я тоже начинаю склоняться в сторону ARM Cortex, как раз потому, что смотрю на предполагаемые интерфейсы для передачи данных (ZigBee) и понимаю, что придётся сигнал обрабатывать «на месте», то есть придётся ставить дополнительные требования ещё и к памяти и к скорости вычислений.

float
() автор топика
Ответ на: комментарий от Harald

Да я знаю. Сам как-то гонял какую-то атмегу на предельных частотах.

intelfx ★★★★★
()

Отмечу тему как решённую, потому что обнаружил такую замечательную штуку как quadrature sampling. Вкратце, 80 кГц тут совсем не нужны. Так как сигнал достаточно узкополосный (± 2-3 кГц), можно применить этот самый quadrature sampling и сэмплить частотами в разы ниче частоты носителя. Может, кому пригодится...

float
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.