цифровая электроника
вычислительная техника
встраиваемые системы

 

Raspberry Pi и ЦАП MCP4725

Автор: Mike(admin) от 27-03-2019, 06:55

Raspberry Pi и цифро-аналоговый преобразователь


Микроконтроллеры и микропроцессоры работают только с цифровыми значениями, но в реальном мире нам приходится иметь дело с аналоговыми сигналами. Вот почему АЦП (аналого-цифровые преобразователи) предназначены для преобразования аналоговых значений реального мира в цифровую форму, чтобы микроконтроллеры могли обрабатывать сигналы. Но что, если нам нужны аналоговые сигналы от цифровых значений, то в этом случае нам поможет ЦАП (цифро-аналоговый преобразователь).


Raspberry Pi и ЦАП MCP4725

ЦАП может использоваться во многих приложениях, таких как управление двигателями, управление яркостью светодиодных индикаторов, аудиоусилители, видеокодеры, системы сбора данных и т. д. В этом примере мы будем использовать микросхему 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 с четким указанием контактов:


Модуль ЦАП 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.


Настройка линий интерфейса I2C в Raspberry Pi

Перезагрузите после этого 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

Код 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


Теги: Raspberry Pi, ЦАП, MCP4725



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий