39. Akses DAC (Digital to Analog Converter) MCP4725
39. Akses DAC (Digital to Analog Converter) MCP4725

IC MCP4725 adalah Modul Konverter Digital ke Analog 12-Bit digunakan untuk menghasilkan tegangan output analog dari 0V - 5V dan dikendalikan dengan  komunikasi I2C. IC ini juga dilengkapi dengan memori EEPROM non-volatile on board.

IC ini memiliki resolusi 12-Bit. Ini berarti kita dapat menggunakan (0 hingga 4096) sebagai input untuk memberikan tegangan output  (sesuai tegangan referensinya). Tegangan referensi maksimum adalah 5V.

IC DAC ini dapat dihubungkan dengan mikrokontroler apapun dengan komunikasi I2C. Komunikasi I2C hanya membutuhkan dua kabel SCL dan SDA. Secara default, alamat I2C untuk MCP4725 adalah 0x60 atau 0x61 atau 0x62. Dengan bus I2C kita dapat menghubungkan beberapa IC DAC MCP4725 dengan mengubah alamat I2C pada IC. 

Percobaan 55: Akses DAC (Digital to Analog) 12 Bit

.
  1. Hubungkan SDA dengan pin D20 ATMEGA 2560
  2. Hubungkan SCL dengan pin D21 ATMEGA 2560
  3. Hubungkan O dengan pin A0 ATMEGA 2560
  4. Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
  5. Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file DAC_MCP4725
  6. Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
  7. Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.

Code:

#include <Wire.h>             //wire library
#include <Adafruit_MCP4725.h> // MCP4725 library from adafruit
#define analogVin A0          // Analog voltage input to A0

Adafruit_MCP4725 MCP4725; 

void setup(void) {
  Serial.begin(9600);
  MCP4725.begin(0x60); // Default I2C Address of MCP4725 breakout board (sparkfun)   If not try 0x61 or 0x62
  
}

void loop(void) {
  
    uint32_t MCP4725_value;
    int adcValueRead = 0;
    float voltageRead = 0;
    
    float MCP4725_expected_output;
    
   
    for (MCP4725_value = 0; MCP4725_value < 4096; MCP4725_value = MCP4725_value + 15)
    {
      MCP4725_expected_output = (5.0/4096.0) * MCP4725_value;
      MCP4725.setVoltage(MCP4725_value, false);
      delay(250);
      adcValueRead = analogRead(analogVin);
      voltageRead = (adcValueRead * 5.0 )/ 1024.0;
      
      Serial.print("MCP4725 Val.: ");
      Serial.print(MCP4725_value);
      
      Serial.print("  Expected Volt.: ");
      Serial.print(MCP4725_expected_output,3);
      
      Serial.print("  ADC Val.: ");
      Serial.print(adcValueRead);
      
      Serial.print("  Measured Volt.: ");      
      Serial.println(voltageRead,3);      
    }    
}

.

Video Demo:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *