Circuito del termistor NTC, conversión ADC, temperatura de cómputo

2

Aquí están los esquemas de mi circuito NTC - ADC,

ADC10bits,ADCVCC2.56V

Vin=5V

¿AlguienmepuedeexplicarcómoobtengoRT,elvalordelaresistenciadeNTCapartirdelvalordeADC?gracias.

Estoyusandolafórmuladeldivisordevoltaje:

Vout=ADCVCC*ADC_value/1024BETA=3950R25=4700RT=10K/(Vin-Vout-1)T=(1/(1/298.16+1/BETA*ln(RT/R25))-273.15

Peroobtuveresultadoserróneos:

elrangodemistemperaturasson:

adc=1->T=344°C;adc=1023->T=8

¿CómotengoqueconfigurarelADCenAVR?¿Conreferenciadevoltajeinternoono?

¿Tengounafórmulaincorrecta?

Necesitoleerlatemperatura"exacta" en un rango de -10 ° C a + 30 ° C más o menos.

Ya lo he intentado con la ecuación SH con coeficiente A, B, C ¡Pero tengo los peores resultados!

Creo que no entiendo los esquemas de los circuitos NTC - ADC ...

Y configura mi ATMega con parámetros incorrectos.

¿Alguien puede intentar explicarme cómo convertir mi valor de ADC a Resistencia de termistor con estos esquemas?

Gracias en consejos por ayuda.

Icono_de_imagen>

Mi configuración para AVR ADC:

ADMUX |= (1<<REFS0) | (1<<REFS1);
ADCSRA |= (1<<ADEN) |(1<<ADSC) |(1<<ADIE);
ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

y la fórmula utilizada para obtener la resistencia del valor ADC:     Vin = 5V     Vref = 2,56V (AREF)

Vout = adc_val * (Vref / 1024.0))
RT   = 10k / (Vin / Vout - 1.0)

¿Este código coincide con los esquemas? ¿Es correcta mi configuración de ADC con esos esquemas? gracias en consejo.

    
pregunta Raffaello

2 respuestas

1
  

Alguien puede intentar explicarme cómo convertir mi valor de ADC a   ¿Resistencia del termistor con estos esquemas?

En primer lugar, el circuito del amplificador operacional está haciendo muy poco más que agregar un pequeño error. Si hubiera ganado, se podría argumentar que tenía un beneficio.

En segundo lugar, este circuito se beneficia del uso de la tensión de alimentación como su referencia analógica, porque luego elimina otro término de error que es la diferencia variable entre la tensión de alimentación en R1 y la tensión de referencia del ADC.

Entonces, el valor del ADC representa la relación \ $ \ dfrac {termistor \ resistencia de espacio} {termistor \ resistencia de espacio + 10k \ Omega} \ $

¿Puedes tomarlo desde aquí?

    
respondido por el Andy aka
2

Ejecuté tu código en Python y obtuve 285 para adc_val = 1 y -84 para adc_val = 1023. Con un adc_val de 318, obtengo 25.9. RT en ese punto es 4504. Así que parece que tus ecuaciones deben ser correctas. ¿Está seguro de que se está implementando correctamente en términos de tipos? Tiene que ser todo punto flotante. Si algo se está convirtiendo en un entero o algo, podría obtener algunos resultados extraños.

>>> BETA = 3950
>>> R25 = 4700
>>> Vin = 5
>>> Vref = 5
>>> adc_val = 1
>>> Vout = adc_val * (Vref / 1024.0)
>>> RT   = 10000 / (Vin / Vout - 1.0)
>>> T = (1 / (1/298.16 + 1/BETA * log(RT/R25 ))) - 273.15
>>> T
285.3553121325664
>>> adc_val = 1023
>>> Vout = adc_val * (Vref / 1024.0)
>>> RT   = 10000 / (Vin / Vout - 1.0)
>>> T = (1 / (1/298.16 + 1/BETA * log(RT/R25 ))) - 273.15
>>> T
-84.45667531777428
>>> adc_val = 318
>>> Vout = adc_val * (Vref / 1024.0)
>>> RT   = 10000 / (Vin / Vout - 1.0)
>>> RT
4504.249291784702
>>> T = (1 / (1/298.16 + 1/BETA * log(RT/R25 ))) - 273.15
>>> T
25.970525623383708
    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas