How to connect a DAC to an Arduino?
- Attachments
- 1111.jpg
- You don't have permission to download attachments.
- (45 Kb) Downloaded 0 times
Arduino
#include<Wire.h> // библиотека для работы с протоколом I2C
#include <LiquidCrystal.h> //библиотека для работы с ЖК дисплеем
#define MCP4725 0x61 //устанавливаем для MCP4725 адрес 0x61, для своего АЦП вы можете использовать свой адрес
LiquidCrystal lcd(2,3,4,5,6,7); //контакты, к которым подключен ЖК дисплей - RS,E,D4,D5,D6,D7
unsigned int adc;
byte buffer[3];
void setup()
{
Wire.begin(); //старт связи по протоколу I2C
lcd.begin(16,2); //устанавливаем ЖК дисплей в режим 16х2
lcd.print("CIRCUIT DIGEST");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Arduino");
lcd.setCursor(0,1);
lcd.print("DAC with MCP4725");
delay(2000);
lcd.clear();
}
void loop()
{
buffer[0] = 0b01000000; //записываем в buffer0 контрольный байт (010-Sets in Write mode)
adc = analogRead(A0) * 4; //считываем аналоговое значение с контакта A0, преобразуем его в цифровое значение в диапазоне (0-1023) и умножаем его на 4 чтобы преобразовать его к диапазону (0-4096)
float ipvolt = (5.0/4096.0)* adc; //формула для расчета значения напряжения (A0)
buffer[1] = adc >> 4; //записываем наиболее значимые биты
buffer[2] = adc << 4; //записываем наименее значимые биты
unsigned int analogread = analogRead(A1)*4 ; //считываем аналоговое напряжение с контакта A1
float opvolt = (5.0/4096.0)* analogread; // формула для расчета значения напряжения (A1)
Wire.beginTransmission(MCP4725); //присоединяемся к шине I2C с MCP4725 с адресом 0x61
Wire.write(buffer[0]); //передаем контрольный байт с помощью протокола I2C
Wire.write(buffer[1]); //передаем наиболее значимые биты с помощью протокола I2C
Wire.write(buffer[2]); // передаем наименее значимые биты с помощью протокола I2C
Wire.endTransmission(); //окончание передачи
lcd.setCursor(0,0);
lcd.print("A IP:");
lcd.print(adc); // выводим на экран значение с выхода АЦП контакта A0
lcd.setCursor(10,0);
lcd.print("V:"); // выводим на экран значение напряжения на контакте A0
lcd.print(ipvolt);
lcd.setCursor(0,1);
lcd.print("D OP:");
lcd.print(analogread); // выводим на экран значение с контакта A1 (с ЦАП)
lcd.setCursor(10,1);
lcd.print("V:");
lcd.print(opvolt); // выводим на экран значение напряжения на контакте A1 (From DAC)
delay(500);
lcd.clear();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include<Wire.h> // библиотека для работы с протоколом I2C
#include <LiquidCrystal.h> //библиотека для работы с ЖК дисплеем
#define MCP4725 0x61 //устанавливаем для MCP4725 адрес 0x61, для своего АЦП вы можете использовать свой адрес
LiquidCrystal lcd(2,3,4,5,6,7); //контакты, к которым подключен ЖК дисплей - RS,E,D4,D5,D6,D7
unsigned int adc;
byte buffer[3];
void setup()
{
Wire.begin(); //старт связи по протоколу I2C
lcd.begin(16,2); //устанавливаем ЖК дисплей в режим 16х2
lcd.print("CIRCUIT DIGEST");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Arduino");
lcd.setCursor(0,1);
lcd.print("DAC with MCP4725");
delay(2000);
lcd.clear();
}
void loop()
{
buffer[0] = 0b01000000; //записываем в buffer0 контрольный байт (010-Sets in Write mode)
adc = analogRead(A0) * 4; //считываем аналоговое значение с контакта A0, преобразуем его в цифровое значение в диапазоне (0-1023) и умножаем его на 4 чтобы преобразовать его к диапазону (0-4096)
float ipvolt = (5.0/4096.0)* adc; //формула для расчета значения напряжения (A0)
buffer[1] = adc >> 4; //записываем наиболее значимые биты
buffer[2] = adc << 4; //записываем наименее значимые биты
unsigned int analogread = analogRead(A1)*4 ; //считываем аналоговое напряжение с контакта A1
float opvolt = (5.0/4096.0)* analogread; // формула для расчета значения напряжения (A1)
Wire.beginTransmission(MCP4725); //присоединяемся к шине I2C с MCP4725 с адресом 0x61
Wire.write(buffer[0]); //передаем контрольный байт с помощью протокола I2C
Wire.write(buffer[1]); //передаем наиболее значимые биты с помощью протокола I2C
Wire.write(buffer[2]); // передаем наименее значимые биты с помощью протокола I2C
Wire.endTransmission(); //окончание передачи
lcd.setCursor(0,0);
lcd.print("A IP:");
lcd.print(adc); // выводим на экран значение с выхода АЦП контакта A0
lcd.setCursor(10,0);
lcd.print("V:"); // выводим на экран значение напряжения на контакте A0
lcd.print(ipvolt);
lcd.setCursor(0,1);
lcd.print("D OP:");
lcd.print(analogread); // выводим на экран значение с контакта A1 (с ЦАП)
lcd.setCursor(10,1);
lcd.print("V:");
lcd.print(opvolt); // выводим на экран значение напряжения на контакте A1 (From DAC)
delay(500);
lcd.clear();
Similar topics
Permissions in this forum:
You cannot reply to topics in this forum