Raspberry Pi:Библиотеки/WiringPi/Расширения/Подключение аналогового чипа PCF8591 (I2C)
Содержание | Введение | Продукты | Операционная система | Настройка | Основы Linux | Аппаратные средства | Неисправности | Типовые проблемы | Часто возникающие вопросы | Библиотеки | Примеры |
Черновик |
Подключение аналогового чипа PCF8591 (I2C)[1]
Библиотека WiringPi поддерживает расширительный модуль для чипа PCF8591, предназначенного для оснащения Raspberry Pi дополнительными аналоговыми контактами. Этот чип используется на аналоговой плате Quick2Wire.
Raspberry Pi оснащена одной шиной I2C, а PCF8591 – 3-битным адресным портом, поэтому в теории вы можете подключить к Pi восемь PCF8591.
Чип PCF8591 оснащен 4-канальным, 8-битным входным аналоговым портом и 1-канальным выходным аналоговым портом.
Подключение
#include <wiringPi.h>
#include <pcf8591.h>
Инициализация
pcf8591Setup (int pinBase, int i2cAddress) ;
Параметр pinBase – это любое значение выше «64». Параметр i2cAddress – это адрес устройства на шине I2C (по умолчанию здесь стоит значение «0x48», но вы можете поменять его, если используете несколько устройств). Чтобы проверить, правильный ли девайс использует устройство, просканируйте шину I2C командой
gpio i2cd
Функцию pcf8591Setup() можно вызывать для каждого чипа PCF8591, подключенного к вашей системе – просто используйте другие параметры pinBase и i2cAddress.
Количество контактов указывать не нужно: на PCF8591 их четыре. Базовым номером для выходного аналогового контакта является «0» – так же, как и у входного аналогового контакта.
Расчеты
В качестве эталонного напряжения плата использует, как правило, питание в 3,3 вольта.
Входное напряжение вычисляется так:
- Vвх = значение х 3,3 / 255
А выходное так:
- Vвых = значение / 255 х 3,3
Зная выходное напряжение, можно рассчитать и значение:
- значение = Vвых / 3,3 х 255
Примечания
- Перед использованием девайсов с шиной I2C в ядро нужно загрузить модули I2C. Для этого впишите следующее:
gpio load i2c
- Чтобы проверить, видит ли Pi ваши девайсы, просканируйте шину I2C при помощи команды i2cdetect. Чип PCF8591, как правило, виден с адресом «0x48», но если вы используете несколько PCF8591, у каждого из них будет (или должен быть) уникальный адрес.
- Если у вас Pi версии 1, нужно вписать
i2cdetect -y 0
, а если версии 2, то
i2cdetect -y 1
- Команда gpio поддерживает команду i2cdetect и автоматически подстраивается под версию платы. Просто впишите
gpio i2cd
- Драйвер PCF8591 библиотеки знает, какую версию Pi вы используете, поэтому никакой предварительной настройки не требуется – ваш код будет работать на обеих версиях Pi.
- Чип PCF8591 не имеет программируемых подтягивающих резисторов, но есть резисторы, которые включаются, когда контакты чипа переключены в режим ввода данных.
- Выходной аналоговый контакт, как правило, находится в высокоимпедансном режиме, но только до первого считывания или записи на девайс. Поэтому будет разумно сделать на девайс предварительную запись, чтобы задать необходимое начальное значение.