Оглавление:

PCF8591 (расширитель аналоговых входов / выходов i2c) Простота использования: 9 шагов
PCF8591 (расширитель аналоговых входов / выходов i2c) Простота использования: 9 шагов

Видео: PCF8591 (расширитель аналоговых входов / выходов i2c) Простота использования: 9 шагов

Видео: PCF8591 (расширитель аналоговых входов / выходов i2c) Простота использования: 9 шагов
Видео: Цифро-аналоговый преобразователь MCP4725 и Arduino 2024, Июль
Anonim
PCF8591 (расширитель аналогового ввода-вывода i2c) Быстрое и простое использование
PCF8591 (расширитель аналогового ввода-вывода i2c) Быстрое и простое использование

Библиотека для использования микросхемы i2c pcf8591 с arduino и esp8266.

Эта ИС может управлять (до 4) аналоговыми входами и / или 1 аналоговыми выходами, например, измерять напряжение, считывать значение термистора или гаснуть светодиода.

Может считывать аналоговое значение и записывать аналоговое значение с помощью только 2-х проводов (идеально подходит для ESP-01).

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

Вы можете найти обновленную версию на моем сайте

Шаг 1. Как работает I2c

Как работает I2c
Как работает I2c

I2C работает с двумя проводами: SDA (линия передачи данных) и SCL (линия синхронизации).

Обе эти линии имеют открытый сток, но подтянуты резисторами.

Обычно на линии есть один мастер и один или несколько подчиненных, хотя может быть несколько мастеров, но об этом мы поговорим позже.

И ведущие, и ведомые устройства могут передавать или принимать данные, поэтому устройство может находиться в одном из этих четырех состояний: ведущее передается, ведущее принимает, ведомое передает, ведомое принимает.

Шаг 2:

Вы можете найти мою библиотеку здесь.

Скачать.

Нажмите кнопку СКАЧАТЬ в правом верхнем углу, переименуйте несжатую папку в PCF8591.

Убедитесь, что папка PCF8591 содержит файлы PCF8591.cpp и PCF8591.h.

Поместите папку библиотеки PCF8591 в папку / library /.

Вам может потребоваться создать подпапку библиотек, если это ваша первая библиотека.

Перезагрузите IDE.

Шаг 3: Использование

Конструктор: вы должны передать адрес i2c (чтобы проверить адрес, используйте это руководство I2cScanner)

PCF8591 (адрес uint8_t);

для esp8266, если вы хотите указать вывод SDA и SCL, используйте это:

PCF8591 (адрес uint8_t, uint8_t sda, uint8_t scl);

Шаг 4: считайте значение

Прочитать значение
Прочитать значение

IC, как вы можете видеть на изображении, имеет 4 аналоговых входа и 1 аналоговый выход.

Итак, чтобы прочитать весь аналоговый ввод за одну передачу, вы можете сделать (значение от 0 до 255):

PCF8591:: AnalogInput ai = pcf8591.analogReadAll ();

Serial.print (ai.ain0); Serial.print ("-"); Serial.print (ai.ain1); Serial.print ("-"); Serial.print (ai.ain2); Serial.print ("-"); Serial.println (ai.ain3);

если вы хотите прочитать один аналоговый вход или канал:

int ana = pcf8591.analogRead (AIN0); // читаем аналог 0

Шаг 5: прочтите Vale из канала

Читать Вейл с канала
Читать Вейл с канала

Эта ИС имеет несколько типов чтения, и вы можете использовать аналоговый вход или аналоговый канал (когда вы используете один аналоговый вход для чтения, и канал показан на рисунках).

Например, чтобы прочитать значение канала 0 в двух дифференциальных входах, вы должны сделать:

int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // читаем аналог 0

Шаг 6: запишите значение

Если вы хотите записать аналоговое значение, вы должны сделать (значение от 0 до 255):

pcf8591.analogWrite (128);

Шаг 7: Дополнительные функции

Дополнительная функция - считывание напряжения записи: для расчета напряжения вы должны передать некоторый параметр:

  • microcontrollerReferenceVoltage: получить напряжение от напряжения микроконтроллера (фиксировано только AVR без esp8266 для esp 3,3 В)
  • referenceVoltage: если microcontrollerReferenceVoltage false принимает это значение, команды:

void VoltageWrite (значение с плавающей запятой, bool microcontrollerReferenceVoltage = true, referenceVoltage с плавающей запятой = 5,0);

float VoltageRead (uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

Примеры:

pcf8591.voltageWrite (2.7); // Выход 2,7 В

задержка (3000);

float ana0V = pcf8591.voltageRead (AIN0); // Считываем напряжение с аналогового 0

Serial.println (ana0V);

Шаг 8: Примеры схемы подключения

Примеры Схема подключения
Примеры Схема подключения

Шаг 9: Спасибо

Серия проектов i2c (Сборник):

  • Датчик температуры и влажности
  • Аналоговый расширитель
  • Цифровой расширитель
  • ЖК дисплей

Рекомендуемые: