Cómo calibrar PT100 con Arduino

0

Estoy tratando de usar mi PT100 con un PLC basado en Arduino de Industrial Shields, que es básicamente un Arduino Mega en un recipiente de plástico. Estoy usando una resistencia de 250Ω, en realidad una resistencia de 237Ω entre analógica y tierra.
El rango pt100 es de -200 a 600C & El transmisor de acuerdo con el escáner NFC también es de -200 a 600C.

Aquí está mi código:

int sensorValue = 0;
int temperature = 0;
int ReceivedByte = 0;
float f1 = 0;
float t1 = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("hi...");
  //analogReference(INTERNAL2V56);
}

void loop() {
  delay(1000);
  sensorValue = analogRead(A2);
  Serial.println(sensorValue);
  /**
   current voltage(250 Ohm) ADC Temperature
 -----------------------------------------------------
 4 mA 1 V 205 -50 C
 20 mA 5 V 1023 +150 C
   * 
   */
  //original 5V adc values from weber 194,971
  //SO-weber new values 10 bit ADC 97,485
  //204-1023 for 10V ADC with 2x237Ω
  // map the signals (using 194-971 for 5V and 97-485 for 10V)
  // to get decimal values, because map() doesn't work with floats)
  // V = 0.004A x 237Ω = 0.948V => 1024 x (0.948/5) = 194.5 lower bound
  // V = 0.020A x 237Ω = 4.74V => 1024 x (4.74/5) = 970.7 upper bound
  temperature=map(sensorValue,194,971,-200,600);
  f1 = temperature; // Float conversion
  Serial.print(f1);
  Serial.print("\n");
}

También me dijeron que probara 500Ω (237x2 = 474Ω) con los valores completos de 10V (debido a las hojas de datos de IS) en lugar de 5V, pero eso tampoco funciona como se puede ver en la tabla de resultados a continuación. Lo intenté:

A- 5V valor total & 237Ω B- 10V de valor completo y amp; 237Ω C- 10V de valor completo y amp; 474Ω

He probado todas las opciones de cableado disponibles con mi pt100 de 3 cables.

Entonces me pregunto acerca de 2 posibilidades: 1. ¿Cuál es la configuración de cableado correcta, porque quiero eliminar esa variable?

  1. ¿Podría ser que las hojas de datos de Industrial Shields son incorrectas? Acabo de marcar la casilla plc real y dice "0-10VDC analógico", por lo que no creo que la hoja de datos IS sea incorrecta.

RESULTADOS DE ACTUALIZACIÓN: Lo que no me gusta de las mediciones de temperatura ambiente es que obviamente está apagado porque no hay 10C en mi oficina, es 22C con un termómetro. Pero lo más importante es que es muy errático, y oscila entre 0C y 12C a veces. Un promedio de 100 mediciones produce alrededor de 10C. Simplemente lo puse en una taza de café y el termómetro digital lee 61C y el promedio de 100 del pt100 lee 58C, así que es alentador. Pero las lecturas individuales varían hasta 47C, por lo que aún es errático.

Aquí están los resultados:

Gracias

    
pregunta marciokoko

4 respuestas

1

Resulta que el transmisor no estaba programado. Debe programarse para que las lecturas funcionen.

    
respondido por el marciokoko
0

Supongo que tu esquema es algo así:

simular este circuito : esquema creado usando CircuitLab

El PT100 tiene una resistencia de 100Ohm a 0 ° C y 138.5Ohm a 100 ° C. El voltaje en la entrada analógica es

$$ V_ {AI} = 5V \ cdot \ frac {R_1} {R_1 + R_ {PT100}} $$

Ya que tienes un ADC de 10 bits y si lo mido mide de 0V a 5V, también puedes escribir:

$$ n_ {ADC} = 1023 \ cdot \ frac {R_1} {R_1 + R_ {PT100}} $$

Eso significa que una temperatura más alta / más alta \ $ R_ {PT100} \ $ conduce a un valor de ADC de menor voltaje / menor. Solo, lo que observas.

En principio, puede alterar la función de mapa de su código: Calcule los valores de ADC, por ejemplo. para 0 ° C y 100 ° C, y mapéelos al rango de temperatura. Obtenga los valores PT100 de una tabla. PERO: Aunque \ $ R_ {PT100} \ $ es proporcional a la temperatura (no lo es, pero para la mayoría de las aplicaciones se puede suponer que lo es), la fórmula anterior no lo es. Eso significa que, simplemente asignando el rango de valores de ADC al rango de temperatura no se obtienen resultados precisos. Dependiendo del rango de temperatura necesario, la precisión aún puede ser suficiente. Por ejemplo, propuse 0 ° C y 100 ° C.

Si necesita más precisión, puede calcular el reverso de la fórmula anterior, para calcular correctamente la resistencia del PT100 a partir del valor ADC:

$$ R_ {PT100} = 1023 \ cdot \ frac {R_1} {n_ {ADC}} - R_1 $$

Más aún: la resolución no es tan buena. Un PT100 es muy preciso, pero el cambio en la resistencia es de solo 0.3Ohm / ° C. Necesitas poder medir cambios tan pequeños. Simplemente calcule la diferencia en el valor de ADC para 100Ohm y 100.3Ohm para verificar cuánto cambia el valor de ADC por ° C. Personalmente, recomendaría un NTC. No tan preciso, pero mayor cambio en la resistencia, mejor resolución.

    
respondido por el sweber
0

Tienes un elemento PT100 con un transmisor de temperatura en él . Eso da una señal de 4-20mA que está relacionada con la temperatura. Necesita saber las temperaturas de cero y de intervalo desde el transmisor, y luego puede correlacionar.

De acuerdo con el código en tu captura de pantalla, -50degC es 4mA y 20mA es + 150degC.

La resistencia de medición es de 237 ohm, por lo que sabe que -50degC es 948mV y 150degC es 4.74V.

Dada la referencia de 10 bit ADC y 5V ADC, 948mV es 1024 * 0.948V / 5V = 194 ADC y 4.74V es 1024 * 4.74V / 5V = 971 ADC.

Actualice de acuerdo con la información en la sección de comentarios:

Ahora que sabemos que los valores de cero y rango del transmisor son:

 4mA  = -200 deg C 
20mA  =  600 deg C

los números en los cálculos cambian ligeramente.

La resistencia de medición es de 237 ohm, por lo que sabe que -200 degC es 948mV y 600 degC es 4.74V.

Ahora, dado que, de hecho, no ha conectado esto a un Arduino estándar, pero esta variante de Arduino industrializada, tendrá que ajustar los cálculos de ADC para lo que se considere a gran escala en el dispositivo industrializado - PLC IO analógico es muy a menudo 0-10V. Esto también se ha confirmado con el escudos industriales Arduino PLC manual del usuario (ver imagen abajo)

Dada referencia de 10 bit ADC y 10V ADC,

\ $ - 200 \, C \, = \, 948 \, mV \ Rightarrow \ frac {0.948 \, V \, \ cdot \, 1024} {10 \, V} = 97 \, ADC \ $

\ $ 600 \, C \, = \, 4.74 \, V \ Rightarrow \ frac {4.74 \, V \, \ cdot \, 1024} {10 \, V} = 485 \, ADC \ $






    
respondido por el MrGerber
0

El transmisor parece ser de tipo alimentado por bucle, por lo que con una fuente de alimentación mínima de 6V, necesitará una fuente de alimentación de alrededor de 12V para 5V y más como 24V para 10V.

El voltaje mínimo absoluto es 6V + 0.021A * R, donde R es la resistencia de carga más la resistencia de ida y vuelta de los cables al transmisor 4-20mA, pero realmente debería tener un par de voltios (al menos) más para permite la inmunidad al ruido, el coeficiente de temperatura de los cables, la resistencia de conexión, etc.

Esto se debe a que en un sistema de dos cables la tensión de alimentación es la tensión restante una vez que se ha restado la tensión de salida. Debe permitir un poco de rango excesivo para distinguir entre sensores de escala completa y sensores abiertos.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas