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

 

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




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

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

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