Estoy usando un AD5693 como convertidor de digital a analógico con un Arduino Uno. He conectado los pines SDA y SCL del AD5693 a los pines I2C del Arduino Uno. He conectado el LDAC active low a gnd. El pin de reinicio está conectado a VDD.
Obtuve el código de ejemplo de GitHub.
El siguiente código funciona correctamente:
#include<Wire.h>
// AD5693 I2C address is 0x4C(76)
#define Addr 0x4C
void setup()
{
// Initialise I2C communication as Master
Wire.begin();
// Initialise serial communication, set baud rate = 9600
Serial.begin(9600);
delay(300);
}
void loop()
{
unsigned int data[2] = {0x80, 0x00};
// Start I2C transmission
Wire.beginTransmission(Addr);
// Select DAC and input register
Wire.write(0x30);
// Write data = 0x8000(32768)
// data msb = 0x80
Wire.write(data[0]);
// data lsb = 0x00
Wire.write(data[1]);
// Stop I2C transmission
Wire.endTransmission();
// Convert the data, Vref = 5 V
float voltage = (((data[0] * 256) + (data[1])) / 65536.0) * 5.0;
// Output data to serial monitor
Serial.print("Voltage : ");
Serial.print(voltage);
Serial.println(" V");
delay(500);
}
Quiero tomar una entrada del usuario que es un valor de voltaje analógico y el mismo valor debería ser la salida del DAC IC.
¿Necesito convertir el valor de voltaje analógico del usuario a hexadecimal? Hay alguna otra manera.
Hexadecimal o no, no importa, pero debe convertir el número de voltios a unidades DAC. Esto se debe a que el DAC no tiene idea de voltajes absolutos, todo es proporcional a su voltaje de referencia (¿aquí 5V? Pero esto depende de su circuito. Una versión de este chip tiene una referencia interna de 2.5V, la otra tiene un pin para tomar un tensión externa).
La hoja de datos le da la fórmula en la página 19, pero es al revés:
Así que el primer paso es invertir esto:
Y asegúrese de que el valor sea de tipo entero, no superior a 65535 (¡no 65536!) y no inferior a 0.
Ahora viene el segundo truco: code
es un número de 16 bits, y el DAC lo espera en dos "palabras" de 8 bits cada una:
msb = (code >> 8) & 0xFF
lsb = code & 0xFF
Entonces debes escribir estos dos valores en sucesión.
Suponga que la ganancia es 1 de forma predeterminada, pero esto se puede cambiar en la configuración del DAC.
Un número es un número. Puede representar cualquier número de diferentes maneras, seguirá siendo el mismo número en cualquier representación, ya sea en binario, hexadecimal, octal o decimal.
Entonces no, no necesita ser convertido en nada. Si puede leer un número que el usuario ingresa de alguna manera en una variable, no necesita conversión.
scott seidman
maquinas de poder