Граждане, посоветоваться хочется! Делаю акустический определитель направления. Хочу, чтобы мой робот-путешественник на мой хлопок возвращался ко мне. 8 микрофонов (8 штук DFRobot Analog Sound Sensor DFR0034) расположил с шагом 45 градусов (см. рисунок). Замерив аналоговый сигнал с их выходов после хлопка (предварительно обработав и усилив) и сравнив показания, можно определить направление на источник звука с точностью до 22,5 градусов (а если откалибровать идеально микрофоны и применив математику похитрее - то и с бОльшей). За несколько итераций робот должен выйти на меня. На картинке показал как собираюсь обрабатывать сигнал с микрофона для подготовки его к отправке на аналоговый вход Arduin'ы. Сигнал от хлопка с расстояния в пол-метра дает всплеск (после интегратора) в 100 мВ. На расстоянии в 5-6 метров будет десяток мВ (а то и меньше). Усиливаем до диапазона 0-5В (применяю ОУ rail-to-rail с однополярным питанирем 5В). Дальше - на компаратор чтобы отсечь шумы и случайные звуки. Выход с компаратора думаю завести на прерывание для запуска аналоговых измерений (можно через монтажное И со всех восьми компараторов). А вот что заводить на АЦП Arduin'ы? Мне надо считать подряд 8 аналоговых значений, в идеале - одновременно. Сколько времени занимает выполнение команды analogRead на Arduino Mega 2560? Я пытался на цифровом 40 МГц осцилле (500 MS/s) это замерить и уперся в предел измерения. То есть речь идет о единицах микросекунд? То есть я могу спокойно выполнять 8 подряд команд analogRead и забить на "разбежку", отнеся ее к аппаратной погрешности измерений? То есть заводить на АЦП сигнал из точки "В" рисунка? И не париться с допобработкой? Спасибо.
40 кГц - частота оцифровки? То есть оцифровка за 25 мкс? Или за 10х25мкс=250 мкс? (10 - число разрядов АЦП)