Comments 24
После analogRead() чтение можно заканчивать. И набор слов наводит на мысль о подстрочнике без необходимой плашки.
Рассмотрена проблема наложения спектров (aliasing) — и на том спасибо. О хорошей синхронизации или какой либо имитации ЦЗО — может быть в другой раз?
Как известно, чем выше разрядность АЦП, тем лучше отображается форма сигналов. Соответственно, 12-разрядный AD5621, работающий на частоте 1 МГц, будет гораздо лучше «родного» 8- или 10-битного, которые для «повышения разрядности» используют усреднение.
Если уж «гулять, так гулять», то можно сделать и 2-канальную систему, в которой на каждом канале будет свой Тинси и АЦП, но тут могут быть проблемы с обменом данными, о которых я написал в своей заметке.
ad5621 это цап,
из готовых плат за $25 есть OM13054 с 80msps ацп, либо MSP-EXP432P401R у которого при 1Msps 13 эффективных разрядов вытянуть можно, если так нужно именно разрешение повыше. но, о ужас, без analogRead()!
Зачем? У самого популярного контроллера 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. Но, еще раз, — хозяин барин.
зачем? так дешевле почти в два раза получается :)
https://www.chipdip.ru/product/stm32f103c8t6
teensy 4.0 — $19.95
На AliExpress готовая плата с STM32F103C8T6 стоит около 350-500 рублей.
про BlackPill забыли? Из Китая STM32F401 - 320р., есть еще на STM32F411.
и в наших краях можно выбрать - https://www.electronshik.ru/catalog/mikrokontrollery/9Exo
Китай STM32H743VIT6 - 1400р.
Везде про частоту дискретизации одно и тоже. Никто даже не удосужится вникнуть в теорему Котельникова. А упомянуть про фазу сигнала, про восстановление сигнала, или хотя-бы заикнуться про функцию sin(x)/x - это уже выходит за рамки копи-паста.
Хорошо хоть упомянули про наложение спектра.
Нелинейность измерения и низкая стабильность измерения, которая даже производителем описана. Производитель рекомендует на вход поставить кондер 100нФ и усреднять измерения!
ИМХО: Ослик нужно делать на внешнем АЦП.
Сколько там дней потребовалось на создание велосипеда? В пересчете на зарплату?
Jinhan JDS2022
Что еще выдумывать?
В пересчете на зарплату эффективно только вкалывать на работе. Хобби вещь затратная ;)
А так да, присоединяюсь. Прибор, которым можно что-то измерять состоит не только из АЦП. Если делать по уму (с прецизионными делителями/усилителями/цепями защиты/корпусом/ПО) - это порядочный кусок работы.
Поставив 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 не стоит).
Вот блестящие конструкции:
Краткий обзор возможностей — для построения осциллографа