Может кто прояснит - про "полосу пропускания" для осциллографа на ардуино?
- Войдите на сайт для отправки комментариев
Вс, 13/06/2021 - 15:00
Всем доброго!
Копаю инфу, чтобы собрать свой осциллограф...
Насколько я знаю, у них есть 3 главных параметра: частота дискретизации, полоса пропускания и величина памяти на канал.
С частотой дискретизации разобрался. А вот как быть с "полосой пропускания" - как этот параметр можно применить в случае, если у нас -ардуино? Какую полосу пропускания поддерживает скажем analogRead?
Вообще-то Ардуино - это не конкретный контроллер, а семейство, обладающее довольно широким разбросом характеристик.
Если же речь идет об Ардуино Уно/Нано/Мини/Мега, насколько мне известно, полоса пропускания аналоговых цепей не влияет на работу АЦП Ардуино. Т.о. она не меньше 4 кГц.
Вообще же - надо смотреть в дэйташите на конкретный контроллер (если это кому-то интересно).
Для ардуино нашел такую штуку: "Одно аналоговое преобразование занимает 13 тактовых периодов. Частота дискретизации может быть вычислена, исходя из тактовой частоты микроконтроллера: 16 Мгц/(16*13) ≈ 77 кГц. "
То есть, грубо говоря (если совсем по-обывательски): ардуина принимает любую частоту, но, так как ее проц(и функция analogRead) способны оцифровывать сигнал со скоростью не более 77 кГц, - то адекватно можно отобразить только сигнал в этих пределах?
Если входящий сигнал будет существенно выше- то качество его отображения(т.е. разрешение), будет катастрофически падать и зашумляться. Например, так -как на картинке ниже?
Полоса пропускания считается для всей системы - от щупа до софта.
так как ее проц(и функция analogRead) способны оцифровывать сигнал со скоростью не более 77 кГц, - то адекватно можно отобразить только сигнал в этих пределах?
77/2 кГц теоретически. В реальности еще хуже, т.к. нужно отсекать по этой частоте, а идеального фильтра не бывает.
Для ардуино нашел такую штуку: "Одно аналоговое преобразование занимает 13 тактовых периодов. Частота дискретизации может быть вычислена, исходя из тактовой частоты микроконтроллера: 16 Мгц/(16*13) ≈ 77 кГц. "
1. Еще раз: Ардуирно это не какой-нибудь конкретный контроллер, а целое семейство контроллеров.
Вы можете сказать, чему равна грузоподъемность Рено, если у легковушек она менее 0.5 т, а у большегрузов - более 12? Так и с Ардуино.
2. Эти выкладки не имеют ничего общего с реальностью. Если взять наиболее распространенную модель Ардуино на 16 МГц Атмега328, то время измерения составляет 112 мкс, т.е. 8900 отсчетов в секунду. Но при желании АЦП контроллера можно разогнать и до 300 кГц, только это будет уже не Ардуино.
3. Если работать не с Ардуино, а с конкретным контроллером, (но, подчеркиваю: это уже не Ардуино), например, с тем же 328, то частоту дискретизации можно задать уже перепрограммируя сам контроллер (что невозможно сделать средствами Ардуино), но при этом ограничением выступает не частота контроллера, а частота АЦП, которая, как правило, меньше частоты самого контроллера.
4. У Ардуино Дуэ максимальная частота дискретизации 223 кГц, что также не согласуется с Вашими оценками. А у контроллера SAM3X8E частоту дискретизации можно сделать еще выше.
...77 кГц, - то адекватно можно отобразить только сигнал в этих пределах?
Нет.
По теореме Котельникова-Шеннона-Найквиста - вдвое меньше.
Для ардуино нашел такую штуку: "Одно аналоговое преобразование занимает 13 тактовых периодов. Частота дискретизации может быть вычислена, исходя из тактовой частоты микроконтроллера: 16 Мгц/(16*13) ≈ 77 кГц.
Это неверно. У АЦП свои часы и речь идёт о его тринадцати тактах, а не о тринадцати тактах микроконтроллера.
Если от АЦП нужна максимальная точность, то частота его часов должна быть меду 50кГц и 200кГц. Достигается это делителем. В частности для частоты контроллера 16МГц делитель нужен 128, что даёт 16МГц / 128 = 125кГц.
Значит, максимальная частота дискретизации получается 125000 / 13 = 9,6 килосэмпла / сек.
Можно конечно, жертвуя точностью, уменьшать делитель, но во-первых до разумных пределов, а во-вторых, что Вы там при этом наизмеряете?
Полоса пропускания это характеристика входных цепей до АЦП. В идеале эта полоса должна быть от нуля до половины частоты дискритизации.
Я, конечно, напишу банальность, но все же: кроме оцифровки нужно еще принять во внимание скорость отрисовки, которая, скорее всего, будет много меньше. Иначе зачем вся эта гонка за цифирями...
Неа.
Полоса пропускания определяется только аналоговой частью. Это та частота, при которой усиление падает на 3дб. Микроконтроллер тут никаким боком не присутствует. Для частот до 100 кгц любой ОУ подойдет. Поэтому тут ограничений нет.
Величина памяти на канал - это сколько точек контроллер может запомнить и вывести на экран. Примерно это около несколько сотен точек.
Частота дискретизации определяется скоростью опроса АЦП. Например если измеряемый сигнал - синус с частотой 10 кгц - то частота дискретизации должна быть не менее 100 кгц, а еще лучше 200 кгц. Так что на arduino максимум частоты измерения это 10 кгц. Вероятнее тут нужен контроллер типа STM32F но и в этов случае максимальная частота будет не выше 30 кгц.
https://mysku.ru/blog/aliexpress/42342.html
Развивая мысль Buldakov, я бы хотел заметить, что идея создания осциллографа не нова и если в приемлимом виде его до сих по не создали на ATMega328, то это значит, что у данной МС аппаратной мощи не хватает. Стоит посмотреть на маркировки микросхем самых дешманских "осциллографов" и прикинуть что нужно по скорострельности.
Нет, ну вопросы создания осциллографа подробно обсасывались в http://arduino.ru/forum/proekty/vyzhimaem-maksimum-usb-ostsillograf-na-arduino
Тут, как мне кажется, просто у человека есть некоторое недопонимание терминологии, вот и попытались ему объяснить. Т.е. вопрос создания в этой теме даже не поднимался.