Как стать автором
Обновить

Краткий обзор возможностей — для построения осциллографа

Время на прочтение 12 мин
Количество просмотров 25K
Всего голосов 65: ↑60 и ↓5 +55
Комментарии 24

Комментарии 24

После analogRead() чтение можно заканчивать. И набор слов наводит на мысль о подстрочнике без необходимой плашки.
Рассмотрена проблема наложения спектров (aliasing) — и на том спасибо. О хорошей синхронизации или какой либо имитации ЦЗО — может быть в другой раз?

К сожалению, в статье не упоминается, на какую стоимость стоит ориентироваться при разработке подобных устройств. Если бюджет в размере 25-30 долларов приемлем, то я бы рекомендовал Teensy 4.0 или 4.1 (в зависимости от требований) в сочетании с AD5621.

Как известно, чем выше разрядность АЦП, тем лучше отображается форма сигналов. Соответственно, 12-разрядный AD5621, работающий на частоте 1 МГц, будет гораздо лучше «родного» 8- или 10-битного, которые для «повышения разрядности» используют усреднение.

Если уж «гулять, так гулять», то можно сделать и 2-канальную систему, в которой на каждом канале будет свой Тинси и АЦП, но тут могут быть проблемы с обменом данными, о которых я написал в своей заметке.

ad5621 это цап,

из готовых плат за $25 есть OM13054 с 80msps ацп, либо MSP-EXP432P401R у которого при 1Msps 13 эффективных разрядов вытянуть можно, если так нужно именно разрешение повыше. но, о ужас, без analogRead()!

Прошу пардону, я имел в виду ADS7886 — в установке, с которой я работал, есть и АЦП, и ЦАП, вытащил не то, что надо было.

Зачем? У самого популярного контроллера STM32F103C8 есть два 12-битных АЦП, которые, к тому же, могут быть обслужены DMA. Тут вам и точность, и автоматический сбор данных, и усреднение по прерыванию.

Тут, наверное, надо смотреть на задачу в целом, и под нее подбирать паратмеры железа.
Тинси мне нравится за это:
ARM Cortex-M7 at 600 MHz
Float point math unit, 64 & 32 bits
1984K Flash, 1024K RAM (512K tightly coupled), 1K EEPROM (emulated)
USB device 480 Mbit/sec & USB host 480 Mbit/sec

Т.е., например, можно сразу в память загнать до 400-500к отсчетов, а потом их перегнать в ПК. У STM32F103C8 так не получится — у него всего 20к SRAM. Но, еще раз, — хозяин барин.

На AliExpress готовая плата с STM32F103C8T6 стоит около 350-500 рублей.

И через раз (теперь, думаю, чаще) оказывается китайской почти копией.

Китай STM32H743VIT6 - 1400р.

Везде про частоту дискретизации одно и тоже. Никто даже не удосужится вникнуть в теорему Котельникова. А упомянуть про фазу сигнала, про восстановление сигнала, или хотя-бы заикнуться про функцию sin(x)/x - это уже выходит за рамки копи-паста.

Хорошо хоть упомянули про наложение спектра.

У ESP32 отвратительный АЦП
Нелинейность измерения и низкая стабильность измерения, которая даже производителем описана. Производитель рекомендует на вход поставить кондер 100нФ и усреднять измерения!

ИМХО: Ослик нужно делать на внешнем АЦП.

Для любителя лучше всего что-то в виде пробника. Например oscill

В пересчете на зарплату эффективно только вкалывать на работе. Хобби вещь затратная ;)

А так да, присоединяюсь. Прибор, которым можно что-то измерять состоит не только из АЦП. Если делать по уму (с прецизионными делителями/усилителями/цепями защиты/корпусом/ПО) - это порядочный кусок работы.

Согласен на счет хобби, но всё таки, это в первую очередь инструмент, а не проект выходного дня) Хотя - у кого какие хобби)

Ну, существует же байка, что настоящий столяр сам должен сделать верстак и рубанок ;)

А настоящий солдат - радар из сапёрской лопатки, фонарика и телефона)))

Поставив INTERNAL мы можем измерять напряжение от 0V до 1.1V с точностью (1.1 / 1024) ~0.98 милливольт.
Только нужно помнить, что по спецификации ATmega328P диапазон bandgap reference voltage варьируется от 1.0 до 1.2 V (Vcc = 2.7 V; Ta = 25 °C).
Так себе «точность».

Постоянное упоминание analogRead() наводит жути ;-) Но на одной из картинок на чистом английском языке :-) написано "Write ADCH" — это ведь и есть самое оно (хотя пренебрегать ADCL не стоит).

Зарегистрируйтесь на Хабре , чтобы оставить комментарий