Estoy con éxito la lectura externa ADC valor de uso de ATmega32-A.
Unsigned int adc;
adc = AD7798_16(0x58, 0xFFFF); // read register
printf("ADC value is %d\r\n", adc);
Estoy recibiendo ADC valor como número decimal entre un rango de "0 a 65535". Quiero que la convierte en analógica de voltaje usando la siguiente fórmula.
Código = 2N – 1 × [(AIN × GANANCIA / VREF) + 1]
donde:
AIN es el voltaje en la entrada analógica.
N = 16 para el AD7798, y N = 24 para el AD7799.
He simplificado la fórmula y cálculo de
// la fórmula para caluculate tensión analógica de salida digital :Código = 2N – 1× [(AIN × GANANCIA/VREF) + 1]
// OBTENER / VREF = 1 / 2.5 => 0.4
// 0.4 Ain = ((adc / 32768) - 1)
flotador de Ain;
Ain=(((((float) adc) / 32768) - 1) / 0.416);
printf("valor:%.2f [v]\r\n", Ain);
La fórmula anterior devuelve siempre el valor negativo. Quiero impresión de que valor negativo. Me han tratado como en el anterior, pero no su trabajo. Cómo imprimir Ain valor? aquí adc es de valor sin signo así que me estoy convirtiendo en un flotador.
Me han tratado como esta también
Ain = (((adc / 32768.0) - 1) / 0.416);
printf("value:%.2f [v]\r\n", Ain);
pero yo no soy capaz de imprimir ese valor.