temperatura pt100 medicion lm35 hilos datasheet control conexion con arduino arduino-uno temperature rtd

arduino - medicion - sensor de temperatura pt100



¿Cómo se lee la temperatura con una placa Arduino Uno con sensor PT100 RTD? (2)

PT100 aumenta su resistencia a medida que se aplica calor. La característica temperatura vs. resistencia se describe en la tabla de resistencia pt100

Arduino puede leer el voltaje en la entrada analógica. Para obtener lecturas de grados Celsius debemos:

  1. leer entrada analógica como voltaje
  2. calcular el valor de resistencia (divisor de voltaje)
  3. búsqueda de grados centígrados de la tabla basada en la resistencia

Vin es de 5 voltios de Arduino R1 es una resistencia de valor conocido en mi programa es de 220 Ohm, en realidad R2 es el pt 100 Vout tiene que estar conectado al pin de entrada analógica Arduino (A0, por ejemplo)

R2 = R1 * 1 / (Vin / Vout - 1)

El circuito se puede hacer en base a la imagen de arriba es bastante simple.

El boceto que escribí contiene datos de resistencia de 0C - 80C (puede ampliarse fácilmente) Para obtener los grados del valor de resistencia, utilizo mi versión de la función MultiMap que utiliza una matriz de flotación como valores de resistencia y utiliza la interpolación lineal para calcular grados exactos

float in[] = { 100.00, 100.39, 100.78, 101.17, 101.56, 101.95, 102.34, 102.73, 103.12, 103.51, 103.90, 104.29, 104.68, 105.07, 105.46, 105.85, 106.24, 106.63, 107.02, 107.40, 107.79, 108.18, 108.57, 108.96, 109.35, 109.73, 110.12, 110.51, 110.90, 111.29, 111.67, 112.06, 112.45, 112.83, 113.22, 113.61, 114.00, 114.38, 114.77, 115.15, 115.54, 115.93, 116.31, 116.70, 117.08, 117.47, 117.86, 118.24, 118.63, 119.01, 119.40, 119.78, 120.17, 120.55, 120.94, 121.32, 121.71, 122.09, 122.47, 122.86, 123.24, 123.63, 124.01, 124.39, 124.78, 125.16, 125.54, 125.93, 126.31, 126.69, 127.08, 127.46, 127.84, 128.22, 128.61, 128.99, 129.37, 129.75, 130.13, 130.52 }; // known resistance in voltage divider int R1 = 217; float MultiMap(float val, float* _in, uint8_t size) { // calculate if value is out of range if (val < _in[0] ) return -99.99; if (val > _in[size-1] ) return 99.99; // search for ''value'' in _in array to get the position No. uint8_t pos = 0; while(val > _in[pos]) pos++; // handles the ''rare'' equality case if (val == _in[pos]) return pos; float r1 = _in[pos-1]; float r2 = _in[pos]; int c1 = pos-1; int c2 = pos; return c1 + (val - r1) / (r2-r1) * (c2-c1); } void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: int pt100 = analogRead(A0); float Vout = pt100 * (5.0 / 1023.0); float R2 = R1 * 1/(5.0/Vout - 1); float c = MultiMap(R2,in,80); Serial.print("Resistance: "); Serial.print(R2); Serial.println(" Ohm"); Serial.print("Temperature: "); Serial.print(c); Serial.println(" C"); delay(400); }

Soy nuevo en la programación de Arduino. Y casi sin experiencia.

Estoy buscando programar mi placa Arduino Uno para leer la configuración de 2/3/4 hilos del sensor PT100 RTD (en niveles de precisión de al menos 0,5 ° C). El rango de temperatura es de 0 a 400 ° C y de -50 a 100 ° C.

Como soy totalmente nuevo en este campo, agradecería una información bastante descriptiva con circuitos, imágenes y códigos.

He investigado mucho sobre el tema, pero no pude obtener nada útil o sustancial para resolver mi problema.

Además, no puedo usar termistor ni ningún IC para leer las temperaturas ya que la máquina en la que está instalado el RTD tiene PID, pero me gustaría crear un registrador de datos que pueda obtener temperaturas en la computadora.


Chris, aunque tu solución funciona, hay espacio para algunas mejoras.

1) el pullup de 220 ohm es demasiado pequeño. Hay una corriente notable que se ejecuta constantemente a través del pt100, que puede interferir con la precisión. Un enfoque muy minimalista es aumentar el pullup para reducir esta corriente y amplificar el voltaje en el divisor, consulte http://www.avrfreaks.net/sites/default/files/pt100.JPG.

2) una vez que haya un cable visible y un entorno industrial estándar, puede optar por un diseño de puente de medición estándar. Esto usa cuatro cables, de los cuales dos se usan como una fuente de corriente constante. (A diferencia de una resistencia de pollup, una fuente de corriente constante garantiza lecturas estables de rango completo, y debe tener una mejor estabilidad de temperatura. Una simple pullup puede tener una deriva significativa. Los otros dos cables se utilizan como entrada diferencial. No fluye corriente en estos cables , por lo tanto, la distancia de cableado real del sensor no afectará la precisión. Este enfoque se muestra aquí: https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/4wire2.svg/286px-4wire2.svg .png y, de hecho, todos los sensores industriales trabajan en este principio.

3) puede preferir utilizar un front-end analógico en lugar de rodar su propio circuito analógico. AD7714 http://www.seekic.com/circuit_diagram/Measuring_and_Test_Circuit/Temperature_measurement_circuit_composed_of_the_AD7714_and_Pt100.html y muchas más soluciones profesionales aquí: http://www.ti.com/europe/downloads/2-%203-%204-Wire% 20RTD% 20Measurement.pdf