Raspberry Pi:Библиотеки/WiringPi/Расширения/Подключение аналогового чипа PCF8591 (I2C): различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Raspberry Pi панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} {{Черновик}} =Подключение а…») |
Нет описания правки |
||
Строка 15: | Строка 15: | ||
== Подключение == | == Подключение == | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
#include <wiringPi.h> | #include <wiringPi.h> | ||
#include <pcf8591.h> | #include <pcf8591.h> | ||
Строка 22: | Строка 22: | ||
== Инициализация == | == Инициализация == | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
pcf8591Setup (int pinBase, int i2cAddress) ; | pcf8591Setup (int pinBase, int i2cAddress) ; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 28: | Строка 28: | ||
Параметр '''pinBase''' – это любое значение выше '''«64»'''. Параметр '''i2cAddress''' – это адрес устройства на шине '''I2C''' (по умолчанию здесь стоит значение '''«0x48»''', но вы можете поменять его, если используете несколько устройств). Чтобы проверить, правильный ли девайс использует устройство, просканируйте шину '''I2C''' командой | Параметр '''pinBase''' – это любое значение выше '''«64»'''. Параметр '''i2cAddress''' – это адрес устройства на шине '''I2C''' (по умолчанию здесь стоит значение '''«0x48»''', но вы можете поменять его, если используете несколько устройств). Чтобы проверить, правильный ли девайс использует устройство, просканируйте шину '''I2C''' командой | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
gpio i2cd | gpio i2cd | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 53: | Строка 53: | ||
* Перед использованием девайсов с шиной '''I2C''' в ядро нужно загрузить модули '''I2C'''. Для этого впишите следующее: | * Перед использованием девайсов с шиной '''I2C''' в ядро нужно загрузить модули '''I2C'''. Для этого впишите следующее: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
gpio load i2c | gpio load i2c | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 60: | Строка 60: | ||
* Если у вас '''Pi''' версии '''1''', нужно вписать | * Если у вас '''Pi''' версии '''1''', нужно вписать | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
i2cdetect -y 0 | i2cdetect -y 0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 66: | Строка 66: | ||
, а если версии '''2''', то | , а если версии '''2''', то | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
i2cdetect -y 1 | i2cdetect -y 1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 72: | Строка 72: | ||
* Команда '''gpio''' поддерживает команду '''i2cdetect''' и автоматически подстраивается под версию платы. Просто впишите | * Команда '''gpio''' поддерживает команду '''i2cdetect''' и автоматически подстраивается под версию платы. Просто впишите | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
gpio i2cd | gpio i2cd | ||
</syntaxhighlight> | </syntaxhighlight> |
Текущая версия от 20:04, 23 мая 2023
Содержание | Введение | Продукты | Операционная система | Настройка | Основы 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 не имеет программируемых подтягивающих резисторов, но есть резисторы, которые включаются, когда контакты чипа переключены в режим ввода данных.
- Выходной аналоговый контакт, как правило, находится в высокоимпедансном режиме, но только до первого считывания или записи на девайс. Поэтому будет разумно сделать на девайс предварительную запись, чтобы задать необходимое начальное значение.