desktop

Convertir temperatura con ADC de 12 bits y precision de 0.25°C

Hola buen dia a todos, tengo una enorme duda y espero puedan ayudarme y si no pues el intento se habra hecho

La cuestion es que tengo un convertir ADC de 12 bits y un zener programable de 5 volts mismo que voy usar como referencia entonces segun esto si divido la referencia entre 12 bits me da:

5/12bits = 0.001220 Volts*bit

Ahora se supone que mi sensor puede medir hasta 1024°C con pasos de 0.25°C por tanto con un ADC de 12bits alcanza pues si cada bit representa 0.25°C y puede medir hasta 1024 seria:

1024°C/0.25°C = 4096 = 12bits Si alcanza

Entonces cuando yo lea 0.001220 Volts osea 1 binario yo tendre 0.25°C cuando tenga 0.00244 Volts osea 2 binario yo tendre 0.5°C

Entonces en el microcontrolador tendria que hacer algo como esto para convertir el numero binario a temperatura

(Numero binario * 0.001220) = temperatura medida

El problema esta en que lo hago en un attiny2313 con solo 2KB y al hacer un producto de numeros flotantes pues no me alcanzan la memoria, entonces me dije a mi mismo "porque no cambio el valor de la referencia de tal forma que me salga un numero mas manejable como por ejemplo

4.096V / 12 bits = 0.001 pero aun me queda claro como eso podria ayudarme


Entonces alguien podra decirme como convertir ese valor binario a temperatura, el problema de convertirlo a una cadena ascci ya lo tengo hecho

Sale gracias
 
Un pequeño tip para evitar los flotantes es trabajar con la escala de miles, o millones. Es decir, si tienes el valor 0.001, lo multiplicas por 1000 y ya haces los cálculos que sean. Y en el resultado final, o separas las cifras cada una en una variable, o divides el número por 1000...
Espero que te ayude, un saludo
 
Un pequeño tip para evitar los flotantes es trabajar con la escala de miles, o millones. Es decir, si tienes el valor 0.001, lo multiplicas por 1000 y ya haces los cálculos que sean. Y en el resultado final, o separas las cifras cada una en una variable, o divides el número por 1000...
Espero que te ayude, un saludo

Hace eso que menciona arrivaellobo, los atmega generan mucho código para poder trabajar con Nº flotantes y si trabajas en C, trata de evitar ciertas funciones de las librerías como "delay".
 
Hola perdon por la tandanza en responder, estaba quemando una ratito el cerebro y llegue a la misma conclusion que ustedes, voy a trabajar con el valor de 0.001 y cuando imprima el valor voy a colocar el punto decimal a donde corresponde jejeje, tambien estaba pensando en colocar un zener programable de 5 volts y con un potenciometro de precision de esos de muchas vueltas voy a ajustar para obtener los 4.096 volts aun que mi multimetro solo marca hasta 4.09 volts, gracias IMASDPIC me di cuenta de que en el foro ya hay mucha informacion el problema es que hay tanta que se esta volviendo dificil encontrar las cosas se me hace que vamos a tener que hacer una limpieza jajaja curiosamente no encontre ese link que me pasaste, o mas bien no supe buscar en fin muchas gracias por la ayuda
 
Atrás
Arriba