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

 

Arduino и ЦАП MCP4725

Автор: Mike(admin) от 18-05-2018, 18:05

Для того, чтобы получить аналоговый сигнал нужной формы из цифровой системы, необходим цифро-аналоговый преобразователь или просто ЦАП. К сожалению, в базовые модели Arduino (Arduino Uno, Arduino Mini и т.п.) не входит встроенный ЦАП, поэтому в таких случаях (если формирование сигнала из ШИМ не дает нужной точности) следует пользоваться внешними модулями ЦАП.


Arduino и ЦАП MCP4725

В данном материале мы рассмотрим ЦАП MCP4725 компании Microchip и то, как работать с ним с помощью Arduino.


MCP4725 представляет собой одноканальный 12-разрядный, буферизованный аналого-цифровой преобразователь со встроенным EEPROM и последовательным интерфейсом, совместимым с I2C. Поскольку данная микросхема доступна в корпусе SOT-23-6, радиолюбителям сложно припаять и тестировать такой ЦАП, поэтому на рынке появились модули с впаянным MCP4725 по доступным ценам.


MCP4725

Недорогой модуль, показанный выше, обеспечивает легкий доступ к 12-разрядному ЦАП MCP4725. Согласно документации, адрес устройства содержит четыре фиксированных бита (код устройства = 1100) и три бита адреса (A2, A1, A0). Биты A2 и A1 устанавливаются во время изготовления, а бит A0 определяется логическим состоянием настраиваемого пользователем вывода A0. Вывод A0 можно подключить к VCC или GND или активно управлять цифровыми логическими уровнями. Обнаружено, что адрес I2C по умолчанию для модуля, представленного здесь, равен 0x60 (A0 = 0, A1 = 0, A2 = 0). Также обратите внимание, что напряжение на выводе VCC используется как вход питания, а также опорный вход ЦАП, поэтому источник питания на выводе VCC должен быть настолько чистым, насколько это возможно для хорошей эффективности ЦАП.


Что касается требований к питанию, MCP4725 будет потреблять не более 0,4 мА от источника питания с нулевой нагрузкой на выходе и подавать к нагрузке менее 25 мА. Поскольку это 12-разрядный ЦАП, он будет принимать до 4096 возможных входных значений для обеспечения аналогового выхода. Здесь выходное значение 0 равно нулю, а выходное значение 4095 является полномасштабным выходом, которое определяется опорным напряжением, подаваемым на вывод VCC. Подключается MCP4725 к Arduino следующим образом:


Arduino и ЦАП MCP4725

Далее приведен простой скетч (код) для первоначального теста модуля MCP4725. В этом эксперименте используется Arduino Uno и ЖК-экран в качестве аппаратного обеспечения в дополнение к модулю ЦАП. Скетч, поддерживаемый библиотекой Adafruit_MCP4725, инкрементирует выход ЦАП, считывает значения и отображает результаты на ЖК-экране.



#include <Wire.h>
#include <Adafruit_MCP4725.h>
#include <LiquidCrystal.h>
#define MCP4725In A1
Adafruit_MCP4725 MCP4725;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup()
{
    delay(1000);
    lcd.begin(16,2);
    MCP4725.begin(0x60);

    // Считывание - требуемое значение
    lcd.setCursor(0,0);
    lcd.print("REQD: ");

    // Считывание - наблюдаемое значение
    lcd.setCursor(0,1);
    lcd.print("OBSD: ");
}

void loop()
{
    uint32_t MCP4725_value;
    int adcInput = 0;
    float voltageIn = 0;
    float MCP4725_reading;

    for (MCP4725_value = 0; MCP4725_value < 4096; MCP4725_value = MCP4725_value + 128)
    {
        delay(1000);
        MCP4725_reading = (5.0/4096.0) * MCP4725_value;
        MCP4725.setVoltage(MCP4725_value, false);
        
        adcInput = analogRead(MCP4725In);
        voltageIn = (adcInput * 5.0 )/ 1024.0;
        
        lcd.setCursor(7,0);
        lcd.print(MCP4725_reading,3);
        lcd.setCursor(7,1);
        lcd.print(voltageIn,3);
    }
}

Вот как это может выглядеть:


Arduino и ЦАП MCP4725



© digitrode.ru


Теги: Arduino, ЦАП, MCP4725



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


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

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

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