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

 



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




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

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

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