Зачем для работы с ESP32 нужен внешний АЦП, я писал в этой статье.
MCP3201 подключается на шину SPI. Краткие характеристики:
- архитектура - АЦП последовательного приближения(sar)
- Разрешение (Бит) 12
- Частота дискретизации (выб/сек.) - 100k
- Количество A/D конвертеров - 1
- Количество входных каналов - 1
- Тип входа - псевдодифференциальный
- Напряжение питания: аналоговое/цифровое 2.7…5.5 в/2.7…5.5в
- Рабочая температура,°С-40…+85
MCP3201 подключается на шину SPI. Линия MOSI не используется. Пример схемы подключения, вместе с дисплеем от Nokia 5110 (он тоже c SPI).
В качестве источника опорного напряжения Vref используем выход 3.3V
Микроконтроллер опускает линию CS, чтобы начать связь со встроенным MCP3201. В этот момент тактовый сигнал, генерируемый микроконтроллером, используется для запуска аналого-цифрового преобразования. На следующем рисунке подробно показан цикл преобразования и передачи данных.
Посмотрим на тактовый сигнал, после третьего импульса старший бит (MSB) аналоговых данных доступен на линии Dout. Следующие импульсы тактового сигнала позволяют получить оставшиеся биты цифровых данных. Обратите внимание, что бит B1 повторяется на шестнадцатом такте и должен быть удален, когда мы переходим к восстановлению цифровых данных аналогового сигнала. Это можно сделать, сдвинув все биты на одну позицию вправо.
После считывания двух байт микроконтроллер устанавливает на линии CS высокий уровень.
Функция которая получает значение из регистров MCP3201 получилось простой - юзать библиотеки для этих целей смысла нет ни какого.
Из основного кода функцию можно будет вызвать:
uint16_t adcValue = readMCP3201 ();
В целом АЦП MCP3201 конечно бомба:
Не смотря на кучу соплей показания стоят как вкопанные, никакого шума.
Ну, а если для формирования опорного напряжения, использовать источник со значением 4.096V - получиться девайс с разрешением 1мВ на 1 единицу показаний - стоит он правда недешево даже на Ali
MCP3201 в DIP корпусе АлиЭкспрес можно найти по цене до 100 рублей.
Следующая статья будет посвящена скрещиванию MCP3201 c ACS712 и измерениям в цепях переменного тока.
Код функции для работы с MCP3201 доступен тут (совместим с любой ардуиноподобной платформой).
Если содержимое статьи Вам было не очень понятно - рекомендую посмотреть это видео:
Оглавление канала тут:
Всем удачи!