- Необходимые компоненты
- Модуль АЦП / ЦАП PCF8591
- Контакты I2C в Raspberry Pi
- Взаимодействие модуля АЦП / ЦАП PCF8591 с Raspberry Pi
- Программа Python для аналого-цифрового преобразования (АЦП)
Аналогово-цифровое преобразование является очень важной задачей во встроенной электронике, поскольку большинство датчиков выдают выходные данные в виде аналоговых значений и для подачи их в микроконтроллер, который понимает только двоичные значения, мы должны преобразовать их в цифровые значения. Таким образом, чтобы иметь возможность обрабатывать аналоговые данные, микроконтроллерам необходим аналого-цифровой преобразователь.
Некоторые микроконтроллеры имеют встроенный АЦП, например Arduino, MSP430, PIC16F877A, но в некоторых микроконтроллерах его нет, например, 8051, Raspberry Pi и т. Д., И мы должны использовать некоторые внешние ИС аналогово-цифрового преобразователя, такие как ADC0804, ADC0808. Ниже вы можете найти различные примеры АЦП с разными микроконтроллерами:
- Как использовать АЦП в Arduino Uno?
- Учебник Raspberry Pi ADC
- Взаимодействие ADC0808 с микроконтроллером 8051
- Цифровой вольтметр 0-25 В с микроконтроллером AVR
- Как использовать АЦП в STM32F103C8
- Как использовать АЦП в MSP430G2
- Как использовать АЦП в ARM7 LPC2148
- Использование модуля АЦП микроконтроллера PIC с MPLAB и XC8
В этом руководстве мы узнаем, как подключить модуль ADC / DAC PCF8591 к Raspberry Pi.
Необходимые компоненты
- Raspberry Pi
- Модуль АЦП PCF8591
- 100K горшок
- Соединительные кабели
Предполагается, что у вас есть Raspberry Pi с установленной в нем последней версией Raspbian OS, и вы знаете, как подключиться к Pi по SSH с помощью терминального программного обеспечения, такого как putty. Если вы новичок в Raspberry Pi, прочтите эту статью, чтобы начать работу с Raspberry Pi. Тем не менее, если вы столкнетесь с какой-либо проблемой, существует множество руководств по Raspberry Pi, которые могут помочь.
Модуль АЦП / ЦАП PCF8591
PCF8591 - это модуль 8-битного аналого-цифрового или 8-битного цифро-аналогового преобразователя, что означает, что каждый вывод может считывать аналоговые значения до 256. Он также имеет LDR и схему термистора, предусмотренную на плате. Этот модуль имеет четыре аналоговых входа и один аналоговый выход. Он работает по протоколу I 2 C, поэтому есть выводы SCL и SDA для последовательных часов и адреса последовательных данных. Он требует напряжения питания 2,5-6 В и имеет низкий ток в режиме ожидания. Мы также можем управлять входным напряжением, регулируя ручку потенциометра на модуле. На плате также есть три перемычки. J4 подключен для выбора цепи доступа к термистору, J5 подключен для выбора цепи доступа LDR / фоторезистораи J6 подключен для выбора цепи доступа с регулируемым напряжением. На плате есть два светодиода D1, и D2-D1 показывает силу выходного напряжения, а D2 показывает силу напряжения питания. Чем выше выходное напряжение или напряжение питания, тем выше яркость светодиода D1 или D2. Вы также можете проверить эти светодиоды с помощью потенциометра на VCC или на выводе AOUT.
Контакты I2C в Raspberry Pi
Чтобы использовать PCF8591 с Raspberry Pi, первое, что нужно сделать, это узнать контакты порта Raspberry Pi I2C и настроить порт I2C в Raspberry pi.
Ниже приведена схема выводов Raspberry Pi 3 Model B +, а выводы I2C GPIO2 (SDA) и GPIO3 (SCL) используются в этом руководстве.
Настройка I2C в Raspberry Pi
По умолчанию I2C отключен в Raspberry Pi. Так что сначала его нужно включить. Чтобы включить I2C в Raspberry Pi
1. Зайдите в терминал и введите sudo raspi-config.
2. Теперь появится инструмент настройки программного обеспечения Raspberry Pi.
3. Выберите Параметры интерфейса и затем включите I2C.
4. После включения I2C перезагрузите Pi.
Сканирование I2C-адреса PCF8591 с помощью Raspberry Pi
Теперь, чтобы начать связь с микросхемой PCF8591, Raspberry Pi должен знать свой адрес I2C. Чтобы найти адрес, сначала подключите выводы SDA и SCL PCF8591 к выводам SDA и SCL Raspberry Pi. Также подключите контакты + 5V и GND.
Теперь откройте терминал и введите команду ниже, чтобы узнать адрес подключенного устройства I2C, sudo i2cdetect –y 1 или sudo i2cdetect –y 0
После обнаружения адреса I2C пришло время построить схему и установить необходимые библиотеки для использования PCF8591 с Raspberry Pi.
Взаимодействие модуля АЦП / ЦАП PCF8591 с Raspberry Pi
Принципиальная схема взаимодействия PCF8591 с Raspberry Pi проста. В этом примере интерфейса мы будем считывать аналоговые значения с любого из аналоговых контактов и показывать их на терминале Raspberry Pi. Мы можем изменить значения, используя банк 100K.
Подключите VCC и GND к GPIO2 и GPIO Raspberry Pi. Затем подключите SDA и SCL к GPIO3 и GPIO5 соответственно. Наконец, подключите банк 100K к AIN0. Вы также можете добавить ЖК-дисплей 16x2 для отображения значений АЦП вместо их отображения на Терминале. Узнайте больше о взаимодействии ЖК-дисплея 16x2 с Raspberry Pi здесь.
Программа Python для аналого-цифрового преобразования (АЦП)
Полная программа и работа видео приводится в конце данного руководства.
Во-первых, импортируйте библиотеку smbus для связи по шине I 2 C и библиотеку времени, чтобы задать время ожидания между печатью значения.
import smbus время импорта
Теперь определите некоторые переменные. Первая переменная содержит адрес шины I 2 C, а вторая переменная содержит адрес первого вывода аналогового входа.
адрес = 0x48 A0 = 0x40
Далее мы создали объект функции SMBus (1) библиотеки smbus
автобус = smbus.SMBus (1)
Теперь, в то время как первая строка сообщает IC выполнить аналоговое измерение на первом аналоговом входном контакте. Вторая строка хранит адрес, считанный с аналогового вывода, в виде значения переменной. Наконец, распечатайте значение.
while True: bus.write_byte (адрес, A0) значение = bus.read_byte (адрес) print (значение) time.sleep (0.1)
Теперь, наконец, сохраните код Python в каком-нибудь файле с расширением.py и запустите код в терминале Raspberry Pi, используя команду ниже:
python filename.py
Перед запуском кода убедитесь, что вы включили связь I 2 C и все контакты подключены, как показано на диаграмме, в противном случае будут отображаться ошибки. Аналоговые значения должны начать отображаться на терминале, как показано ниже. Отрегулируйте ручку кастрюли, и вы увидите постепенное изменение значений. Узнайте больше о запуске программы в
Полный код Python и видео приведены ниже.