Arduino PCF8591

Arduino PCF8591
Артикул: 2503598

производитель: Arduino
Требуется установка или ремонт?

сервисный центр Kypidetali!

тел. +7(499)347-04-82

Описание Arduino PCF8591

Вот подробное описание модуля Arduino PCF8591 (ЦАП/АЦП на базе микросхемы NXP/Philips PCF8591T), его характеристики, парт-номера и совместимость.


1. Общее описание

PCF8591 — это 8-битный низкопотребляющий АЦП (аналогово-цифровой преобразователь) и ЦАП (цифро-аналоговый преобразователь) с интерфейсом I2C. Модуль позволяет:

  • Считывать до 4 аналоговых сигналов и преобразовывать их в цифровой код (8 бит, от 0 до 255).
  • Выводить 1 аналоговый сигнал (8-битное напряжение) через ЦАП.
  • Выбирать адрес на шине I2C (4 возможных адреса: 0x48, 0x49, 0x4A, 0x4B).
  • Управлять светодиодом и подстроечным резистором, входящими в состав модуля.

Модуль особенно полезен, когда стандартного числа аналоговых входов Arduino (например, A0…A5 у Uno) не хватает.


2. Технические характеристики

| Параметр | Значение | |---|---| | Микросхема | PCF8591T (NXP/Philips) | | Напряжение питания | 2.5 В … 6.0 В (обычно 5 В для Arduino) | | Интерфейс | I2C (max 400 кГц в стандартном режиме) | | Разрядность АЦП | 8 бит (0…255) | | Разрядность ЦАП | 8 бит | | Количество аналоговых входов | 4 (AIN0…AIN3) | | Количество аналоговых выходов | 1 (AOUT) | | Опорное напряжение Δ (Vref) | Напряжение питания (VDD) – обычно 5 В, регулируется внешним резистором | | Адрес на шине I2C | По умолчанию 0x48, настраивается перемычками A0, A1, A2 | | Ток потребления (working) | Около 1 мА (зависит от частоты преобразования) | | Размеры модуля | ~ 24×20 мм (2x1, у разных продавцов может отличаться) |


3. Назначение выводов модуля (типовой)

| Пин | Назначение | |---|---| | VCC / + | Питание (3.3–5.5 В) | | GND / - | Земля | | SDA (или DATA) | Линия I2C данных | | SCL (или CLK)| Линия I2C тактовой частоты | | AIN0 | Аналоговый вход 0 | | AIN1 | Аналоговый вход 1 | | AIN2 | Аналоговый вход 2 | | AIN3 | Аналоговый вход 3 | | AOUT | Аналоговый выход (0–5/3.3 В) |

Примечание: на некоторых модулях есть выносной потенциометр и фоторезистор – они подключены к входам AIN0 и AIN1.


4. Парт‑номера (MPN/PN) микросхемы PCF8591

  • PCF8591T/2,512 — SO‑16 корпус (наиболее часто встречается у дешёвых модулей из Китая)
  • PCF8591T/2,518 — другой упаковочный код той же микросхемы (NXP)
  • PCF8591P — корпус DIP‑16 (подходит для макетных плат)

При заказе самой микросхемы ищите по любому из этих номеров — они функционально одинаковы.


5. Совместимые модели контроллеров / микроконтроллеров

Модуль совместим с любой микроконтроллерной платформой, которая поддерживает I2C, в том числе:

  • Arduino:
    • Uno, Nano, Mini, Pro Mini
    • Leonardo, Micro, Due (только уровень 3.3 В или делитель)
    • Mega 2560, Mega ADK
    • ESP8266 (Wemos D1, NodeMCU)
    • ESP32, ESP32‑C3, ESP32‑S2
    • Teensy (3.x, 4.x)
    • STM32 (Blue Pill, Black Pill, Discovery)
    • Raspberry Pi Pico / RP2040
    • Galileo, Particle Photon и т.д.

Важно: учитывайте напряжение логики – многие платы (кроме Due и ESP32) работают от 5 В, а сам PCF8591 может работать от 3.3 В, но не все модули корректно понижают опорное напряжение. Рекомендуется питать модуль от напряжения, соответствующего расчётам ЦАП/АЦП (обычно 5 В для Arduino).


6. Типичные проблемы / примечания

  • Подтяжка I2C – на большинстве модулей стоит по одному резистору на SDA и SCL (2.2 кОм…10 кОм), подключающихся к VCC. Лишняя подтяжка не нужна, если вы не удлиняете линию сильно.
  • ЦАП выдаёт только напряжение, НЕ ТОК. Максимальный ток выхода – около 100 мкА напрямую (на вход нужно подавать потенциометры или референсный ОУ).
  • Не подходит для высокочастотной выборки – АЦП делает примерно 1.9…6.8 ксемплов/сек (зависит от тактовой I2C), поэтому не годится для аудио или осциллографов.
  • Иногда встречаются бракованные копии или повреждённые выводы, работающие непредсказуемо – покупайте у проверенных брендов (NXP, или возвратные модули).

7. Краткий пример подключения и код (Arduino)

Подключение (Uno/Nano):

  • VCC → 5V
  • GND → GND
  • SDA → A4 (на Uno) / D4 (на Nano)
  • SCL → A5 (на Uno) / D5 (на Nano)
  • (AIN0 подключить, например, к потенциометру питания)

Код (чтение АЦП + вывод на ЦАП):

#include <Wire.h>

#define PCF8591_ADDR 0x48

void setup() {
  Wire.begin();
  Serial.begin(9600);
}
void loop() {
  Wire.beginTransmission(PCF8591_ADDR);
  Wire.write(0x00);             // Установить адрес регистра АЦП
  Wire.endTransmission();
  
  Wire.requestFrom(PCF8591_ADDR, 2);
  Wire.read(); // мусорный байт
  int val = Wire.read();  
  Serial.print("ADC Value: ");
  Serial.println(val);

  delay(500);
}

Для вывода на ЦАП:

  Wire.beginTransmission(PCF8591_ADDR);
  Wire.write(0x40);   // управление D2 и D1/0 – цифро-аналоговый режим
  Wire.write(analogCtrl); // выходное значение 8‑битное (0–255, 8‑битный ЦАП)
  Wire.endTransmission();

8. Конструкторский список покупки (BoM для Arduino Kit)

| Наименование | Парт‑номер / общее | |---|---| | Модуль PCF8591 ADC/DAC | – у продавца: MOD‑ADC‑4ch | | Сама микросхема (DIP‑запас) | PCF8591P – NXP | | Отдельный резистор потенциометра ручки | B100k (подпружиненный) | | Платка адаптера с кнопками / прерыванием | Нет необходимости – у модуля уже стоит I2C‑слот |


Если вам нужно углублённое руководство по библиотекам (например, Adafruit_PCF8591 vs собственная реализация) – скажите, помогу расширить.

Совместимые модели для Arduino PCF8591

Arduino PCF8591