¿Cómo averiguar el voltaje en la entrada de Arduino ADC?

1

Soy un completo principiante en el campo de la ingeniería eléctrica. Tengo este sensor de temperatura con 2k Ohm de resistencia en 25 ° C. Lo conecté en paralelo a una resistencia de 3,6 k Ohm para disminuir la resistencia general, alimentado por la salida de 5 V en mi Arduino Duemilanove con el chip ATmega168. Lo conecté a un canal de entrada analógica.

Mi problema es cómo traducir los números que leí de mi entrada analógica a temperatura en ° C.

Mi enfoque es el siguiente:

  • 1 / R = 1 / \ $ R_1 \ $ + 1 / \ $ R_2 \ $, entonces 1 / R = 1/3600 \ $ \ Omega \ $ + 1/2000 \ $ \ Omega \ $, entonces R = 1286 \ $ \ Omega \ $.
  • R = U / I < = > R \ $ \ times \ $ I = U, por lo tanto 1286 \ $ \ Omega \ $ \ $ \ times \ $ I = U
  • Los mapas de entrada analógica de Arduino de 0V a 5V a 0..1023. Usando esto, puedo traducir un número dado a un voltaje, y usar la fórmula anterior (y una tabla de resistencia para ese sensor) para calcular la temperatura medida actualmente.

Como puede ver, todavía no he descubierto qué sería de estos cálculos. ¿Mi enfoque es correcto y, ¿qué es lo que estoy en este contexto?

Apreciaría una pista en la dirección correcta. Gracias de antemano.

    
pregunta nijansen

4 respuestas

2

Creo que te estás acercando a esto de manera incorrecta. No debe colocar la resistencia en paralelo, sino que debe colocarla en serie. Si los coloca en paralelo, solo leerá un 5v fijo en un lado o 0v en el otro. Luego, utilizará el ADC en el Arduino para medir el voltaje entre los sensores de temperatura y la resistencia.

Lo que estás haciendo es crear un donde la resistencia del sensor de temperatura está cambiando.

La ecuación se vuelve no lineal, por lo que si desea simplificarla, puede combinar series y paralelo como se explica en esta respuesta .

    
respondido por el Kellenjb
2

Como dijo Kellen, debes colocarlos en serie, no en paralelo.

Lasresistenciasparalelasdelaizquierdatienenelmismovoltajequelasotras5VdesuArduino.Laresistenciafijatieneunacorrientefija,yaquelatensióntambiénesfija,laresistenciadeltermistorvaría,porloquetambiénloharálacorriente.PeroelADCenunmicrocontroladornomidelacorriente,mideelvoltaje.Yelúnicovoltajequetieneestecircuitoeselvoltajedelafuentedealimentaciónfija,porloquenopuedeusareso.

Lasdosresistenciasenseriealaderechahacenlocontrario.Comosolohayunarutadecorriente,ambasobtienenlamismacorriente,ypuedentenerdiferentesvoltajesatravésdeellas.DigamosqueR1es15k\$\Omega\$yR210k\$\Omega\$.Entonces,lacorrientequevecuandolepones5Ves5V/(15k\$\Omega\$+10k\$\Omega\$)=200\$\mu\$A.Luego,deacuerdoconlaLeydeOhm,elvoltajeenR2=I\$\times\$R2=200\$\mu\$A\$\times\$10k\$\Omega\$=2V.Ustedtieneundivisorderesistenciaquesepuedeescalarde5Va2V.Másgeneral:

\$V_{R2}=\dfrac{R2}{R1+R2}\timesV_+\$

SiR1oR2varían,elvoltajedesalidavariará,yesoesloquenecesitamos.SiusaunaresistenciafijaparaR2ydejaqueR1seaeltermistor,entoncesunaumentoenlatemperaturaharáqueR1baje,ylarelaciónR2/(R1+R2)serámayor;Tendráunvoltajedesalidamayoraunatemperaturamásalta.¿Cuálserálatemperatura?Podemosreescribirlaecuacióndeldivisorderesistenciacomo

\$R2=\dfrac{V_{R2}}{V_+-V_{R2}}\timesR1\$

\$V_+\$y\$R1\$seconocen,elADCmide\$V_{R2}\$,porloquesabemoselvalorde\$R2\$.

LostermistoresNTCtienenunacaracterísticadetemperaturadeaspectofeo.Lashojasdedatosparaellospuedenmostrarunatablaqueindicaquétemperaturaconcuerdaconquéresistencia,porloquepodríausarlacomounatabladebúsquedaparaencontrarlatemperaturasiconocelaresistencia.Esunmétodoperfectamentebueno,peroesunapenaquetengamosquedesperdiciarlamemoriadenuestromicrocontroladorenunamesaasí.

Ensurespuesta,Kellenseenlazacon otra respuesta mía , que muestra cómo se puede hacer más la curva del termistor. lineal mediante el uso de una resistencia en paralelo y en serie, de modo que la función pueda aproximar la temperatura en un intervalo específico

\ $ T = a \ times V_T + b \ $

Los coeficientes dependen del tipo de termistor y de los valores de las otras dos resistencias. En la respuesta vinculada, los calculé para otro termistor, en base a un gráfico proporcionado por el fabricante.

    
respondido por el stevenvh
0

Para mantener el autocalentamiento por debajo del límite absoluto de 6 mW y minimizar el error de autocalentamiento en grados por debajo de 0,5 Kelvin, mantenga la corriente al 10% de la potencia máxima. Para 0.6mW, I = SQRT (P / R) = SQRT (0.0006 / 2000) = ~ 0.5mA.

Entonces el voltaje debe ser de aproximadamente 1V. Para escalar el voltaje al rango dinámico completo de ADC, necesita una etapa de amplificador de voltaje de CC que centre 1V nominal a 2.5V en el punto medio. Aún más, es posible que desee reducir algunas clases de errores típicos de CC mediante el uso del puente de resistencia de precisión, el amplificador instrumental, el cableado de 4 hilos con detección de unidad, los protectores y los filtros algorítmicos. Después de esto, solo las fórmulas de interpolación, lineales o no, o basadas en tablas, tal vez con calibración a nivel del mar con agua destilada en ebullición y mezcla de agua y hielo.

    
respondido por el user924
0

enlace debería ayudarlo a encontrar el voltaje exacto. Se dice:

long readVcc() {
  long result;
  // Read 1.1V reference against AVcc
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Convert
  while (bit_is_set(ADCSRA,ADSC));
  result = ADCL;
  result |= ADCH<<8;
  result = 1126400L / result; // Back-calculate AVcc in mV
  return result;
}

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println( readVcc(), DEC );
  delay(1000);
}
    
respondido por el Hellonearthis

Lea otras preguntas en las etiquetas