Obtener la temperatura a través del ADC del microcontrolador

2

Quiero manipular el valor físico de la temperatura. Aquí está la característica de este µC:

Resolución: 12 bits
Suministro: 5 V
Mesure min: -45
Mesure máximo: 75
Mín. ADC EN: 0.4
ADC Máx. EN: 4.8

Aquí está la fórmula que utilicé:

 Value = (Digital value * Max ADC IN) / 4095.0;

Utilicé la regla de tres.

Max ADC IN (4.8) ===> 4095 (depends on the resolution (12 bits)) 
Value            ===> Digital value from ADC

Si uso esta fórmula, ¿es suficiente leer el valor físico?

No tengo la hoja de datos del sensor, el microcontrolador es 68HCs12.

    
pregunta physics

1 respuesta

1

Creo que tu fórmula está bien. Como lo mencionó Sanjeev, no olvide obtener la cantidad aproximada de muestras que necesita para obtener la precisión que necesita.

Aquí hay un ejemplo de una rutina ADC_get_value que usé hace un tiempo. Utiliza una fórmula similar:

/* Function name    :   unsigned char ConvertAdcvalueToFuelLevel( unsigned int x )
* Crated by     :   
* Description   :   This function converts from ADC values to its equivalent voltage and then returns a number
*                   between 0 - 255 representing voltages between 0 - 5000mV.
*                   The receiver must multiply the returned value by 19.6078 in order to get the equivalent
*                   voltage.
*                   The transfer function for the hardware used on the ADC input is:
*                   f(x)= 0.999*x       x:volts
******************************************************************************************************************/
unsigned char ConvertAdcvalueToFuelLevel( unsigned int x )
{
    unsigned int Voltage;
    unsigned int Offset = 5;        //15mV

    //Converts from ADC bits to voltage
    Voltage = ((unsigned long int)((unsigned long int)x * 4990))/4095;  //(x*Vref)/4095 (Millivolts)

    //The hardware used on the analog input is almost lineal between 0V and 4.2V.
    Voltage = (unsigned int)(0.999*Voltage) + Offset;
    return (unsigned char)(Voltage / 19.6078);
}
    
respondido por el Dante

Lea otras preguntas en las etiquetas