Raspberry Pi и цифро-аналоговый преобразователь
Микроконтроллеры и микропроцессоры работают только с цифровыми значениями, но в реальном мире нам приходится иметь дело с аналоговыми сигналами. Вот почему АЦП (аналого-цифровые преобразователи) предназначены для преобразования аналоговых значений реального мира в цифровую форму, чтобы микроконтроллеры могли обрабатывать сигналы. Но что, если нам нужны аналоговые сигналы от цифровых значений, то в этом случае нам поможет ЦАП (цифро-аналоговый преобразователь).
ЦАП может использоваться во многих приложениях, таких как управление двигателями, управление яркостью светодиодных индикаторов, аудиоусилители, видеокодеры, системы сбора данных и т. д. В этом примере мы будем использовать микросхему 12-разрядного ЦАП MCP4725 для разработки цифро-аналогового преобразователя с использованием Raspberry Pi. Мы уже подключали MCP4725 к Arduino, теперь проверим работу этого ЦАП с Raspberry Pi.
MCP4725 IC – это 12-разрядный цифро-аналоговый преобразователь, который используется для генерации выходных аналоговых напряжений от (0 до 5 В) и управляется с помощью интерфейса I2C. Он также поставляется с энергонезависимой памятью EEPROM.
Данная микросхема имеет 12-битное разрешение. Это означает, что мы используем от 0 до 4096 в качестве входных данных для обеспечения выходного напряжения относительно опорного напряжения. Максимальное опорное напряжение 5В. Формула для расчета выходного напряжения следующая:
Выходное напряжение = (Опорное напряжение / Разрешение в битах) x Цифровое значение
Для примера, если мы используем 5 В в качестве опорного напряжения и давайте предположим, что цифровое значение у нас 2048. Таким образом, для вычисления выходного сигнала ЦАП:
Выходное напряжение = (5/ 4096) x 2048 = 2.5 В
Модуль ЦАП MCP4725
Ниже приведено изображение модуля MCP4725 с четким указанием контактов:
- OUT – выходное аналоговое напряжение
- GND – земля выхода
- SCL – Тактирование I2C
- SDA – Данные I2C
- VCC – Вход опорного напряжения 5В или 3.3В
- GND – земля входа
Эта микросхема может управляться с помощью интерфейса I2C, для которого требуется только два провода SCL и SDA. По умолчанию адрес I2C для MCP4725 равен 0x60.
Настройка линий интерфейса I2C в Raspberry Pi
Чтобы использовать MCP4725 с Raspberry Pi, первое, что нужно сделать, это знать контакты порта I2C Raspberry Pi и настроить этот порт правильно. По умолчанию I2C отключен в Raspberry Pi. Чтобы включить I2C в Raspberry Pi, нужно сначала зайти в терминал и ввести sudo raspi-config. Появится инструмент настройки Raspberry Pi. Выберите «Interfacing options» и включите I2C.
Перезагрузите после этого Raspberry Pi. Теперь, чтобы установить связь с микросхемой MCP4725, Raspberry Pi должен знать ее адрес I2C. Чтобы найти адрес, сначала подключите выводы SDA и SCL MCP4725 к выводам SDA и SCL Raspberry Pi. Также подключите контакты + 5V и GND. Теперь откройте терминал и введите команду(ы) ниже, чтобы узнать адрес подключенного устройства I2C:
sudo i2cdetect –y 1 или sudo i2cdetect –y 0
После нахождения адреса I2C самое время установить необходимые библиотеки для использования MCP4725 с Raspberry Pi.
Библиотека MCP4725 Adafruit для Raspberry Pi
Для использования с Raspberry Pi микросхемы ЦАП MCP4725 с шиной I2C используется библиотека Adafruit MCP4725. Чтобы загрузить и установить библиотеку, выполните следующие действия: убедитесь, что Raspberry Pi подключен к активному интернету, затем откройте терминал и выполните следующие строки одну за другой:
sudo apt-get install git build-essential python-dev
git clone https://github.com/adafruit/Adafruit_Python_MCP4725.git
cd Adafruit_Python_MCP4725
sudo python setup.py install
После успешной установки теперь библиотеку Adafruit MCP4725 можно импортировать в любой скрипт на Python, используя строку:
Import Adafruit_MCP4725
Библиотека ЖК-экрана для Raspberry Pi
В этом проекте используется ЖК-дисплей для отображения значений ЦАП и аналогового напряжения, поэтому для загрузки и установки библиотеки ЖК-дисплея в Raspberry Pi выполните следующие действия: откройте окно терминала и выполните следующие строки одну за другой:
apt-get install git
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git
cd Adafruit_Python_CharLCD
sudo python setup.py install
После установки библиотеки Adafruit_python_CharLCD теперь ее можно использовать из любого скрипта Python, используя следующую строку:
import Adafruit_CharLCD as LCD
Схема подключения Raspberry Pi и ЦАП MCP4725
Теперь Raspberry Pi готов выдавать значения для цифро-аналогового преобразователя, поэтому давайте подключим схему, как показано на рисунке ниже:
Код Raspberry Pi для взаимодействия с ЦАП MCP4725
Полный код Python для Raspberry Pi приведен в конце этого урока. Просто загрузите его в raspberry pi с помощью любого SSH-клиента, такого как Putty, или любого FTP-клиента, например FileZilla, или вы можете напрямую написать программу в raspberry pi, подключив к нему монитор.
В этой программе цифровое значение 0-4096 отправляется из Raspberry Pi на MCP4725 через шину I2C для получения аналогового выходного напряжения от 0 до 5 В, которое можно проверить с помощью мультиметра. Цифровые и аналоговые значения отображаются на ЖК-дисплее 16x2. В нашей программе цифровое значение отправляется с шагом 150 с использованием цикла for (0,150,300,450… 4050).
import Adafruit_CharLCD as LCD
import Adafruit_MCP4725
import time
lcd_rs = 25
lcd_en = 24
lcd_d4 = 23
lcd_d5 = 17
lcd_d6 = 18
lcd_d7 = 22
lcd_backlight = 4
# Определить количество количество столбцов и строк для 16x2 LCD
lcd_columns = 16
lcd_rows = 2
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7,
lcd_columns, lcd_rows, lcd_backlight)
lcd.message('Circuit Digest')
time.sleep(2.0)
lcd.message('\nDAC using Rpi')
time.sleep(5.0)
lcd.clear()
dac = Adafruit_MCP4725.MCP4725(address=0x60)
while True:
for x in range(0,4097,150):
print(x)
dac.set_voltage(x)
lcd.cursor_pos = (0,0)
lcd.message("DAC Value: " + str(x))
voltage = x/4096.0*5.0
lcd.message("\nAnalogVolt: %.2f" % voltage)
time.sleep(2)
lcd.clear()
© digitrode.ru