Ayuda convertidor Analogico - Digital

#1
Buenas tardes,

estoy tratando de entender las conversiones binarias que hace un convertidor analogo - digital, al que le entra una señal (temperatura en centigrados) y da como resultado en el display temperatura en Farenheit.

El voltaje es 5v. Por cada 10mV/°C. El convertidor es de 10 bits. Mi rango es de 1023.

Asi por ejemplo si Vref + = 5 V y vRef- = Tierra entonces 5 - 0 = 5 = 5000 mv /1024 = 4,8 mv/bit

La entrada analogica para 0 v Corresponderia a 00 0000 0000 y para 5 V seria 11 1111 1111

Si el sensor tiene por ejemplo 20 grados de temperatura nos daria una salida de 10 mv/ºC x 20 > 200 mv

Entonces el pic depositaria en su conversor A/D de 10 bits esta información:

200 mv / 4,8 mv > 41,6mv lo que seria 00 0010 1001

Ahora, aqui es donde estoy atorado. Este ultimo valor como lo podria convertir para que me de un binario y sea un dato en farenheit. Lo que pienso es multiplicar el binario por 1.8 (en binario) y sumarle 32 (en binario). Lo cual no me sale, algo me esta faltando o me estoy saltando.

Muchas gracias por su ayuda.
 

thellier

Bovino adicto
#4
Una observación compañero, jamas podrás multiplicar un numero flotante por un binario, primero tienes que convertir el binario a flotante para que lo puedas multiplicar, ahora para realizar lo que necesitas con el LM35 (sensor de temperatura) se calcula de la siguiente manera:

Primero calcula el voltaje del ADC respecto al voltaje de la fuente del microcontrolador:

float Vb = ValorADC*5.0/1023.0;

ValorADC: Valor DECIMAL que te entrega el convertidor analogico digital

Después se calcula por regla de tres el valor de grados C:

float Gc = Vb*500.0/5.0;

Ya con el valor de grados C calculas los grados F:

float Gf = Gc*1.8 - 32.0;

Espero te sirva, saludos!

thellier: Estudiante de 9° semestre de Ing. Mecatrónica
 
#5
Hola. Estoy de acuerdo con todas las respuestas, aunque la última no se limita a floats. Sí es importante el código para saber si estás programando en ensamblador o con algún compilador. De cualquier modo hay trucos para hacer operaciones con enteros y obtener valores aceptables. Por ejemplo, la conversión de ºC a ºF con enteros: ºF = (ºC * 180 - 320 / 10). Simples matemáticas...

Del mismo modo puedes llevar los 4,88758 mV/bit a 49, 489, 4888, 48876 o hasta donde tu exactitud lo requiera y te lo permita el algoritmo de multiplicación/división.

Saludos
 
Arriba