Lógica detrás del cálculo de sensores MQx - Raspberry Pi

0

¿Podría explicar la lógica detrás de este fragmento de código que se toma de aquí para calibrar los sensores MQx:

def MQResistanceCalculation(self, raw_adc):
      return float(self.RL_VALUE*(1023.0-raw_adc)/float(raw_adc));

donde raw_adc es la lectura de MCP3008 , y RL_VALUE es la resistencia de carga en la placa, en kilo ohms e igual a 5.

La cosa es, por lo que yo entiendo , el ADC funciona de acuerdo con esta ecuación:

Resolution of ADC / System Voltage = ADC Reading / Analog Voltage Measured

pero no puedo verlo implementado en el código anterior (porque estaba siguiendo este tutorial pero para Arduino).

Además, para obtener el valor de RS en un gas de acuerdo con el segundo tutorial mencionado anteriormente, seguimos esta ecuación:

RS = [(VC x RL) / VRL] - RL

que tampoco se ve en el código completo del proyecto del que proviene el primer fragmento de código.

El esquema de este diseño es:

MQx Sensor -> Logic Level Converter -> MCP3008 -> RPi

Estoy seguro de que me estoy perdiendo algo, o tal vez estoy mezclando cosas.

    
pregunta Yahya

1 respuesta

0

Esta es la respuesta completa:

A partir de Ley de Ohm : V = R * I en el que V: Voltaje, R: Resistencia e I: Actual .

y en el circuito más simple de un Voltage Divider como este:

para medir cualquier voltaje necesitamos dos puntos, por lo que V out se puede medir de una de las siguientes dos maneras: (V in - V out ) = R 1 * I 1 : en la que V está en aquí está el lado positivo de la fuente de electricidad.

O (V out - V in ) = R 2 * I 2 : en la que V está en aquí está el lado negativo y es igual a 0 .

Elegimos la opción más fácil donde V in = 0, así que V out = R 2 * I 2 .

Ahora, debido a que no hay consumo de la corriente, podemos asumir que total = I 1 = I 2 . Así que reescriba la ecuación anterior: V out = R 2 * I total .

Ahora porque R 1 y R 2 conectados en serie, la ley dice que R total = R 1 + R 2 .

De vuelta a la Ley de Ohm, podemos decir: V in = R total * I total - > I total = V en / R total .

Usando la última ecuación, tendremos: V out = R 2 * (V in / R total ), reescribiéndolo de nuevo: V out = R 2 * (V in / R 1 + R 2 ).

Ahora el trabajo es encontrar R 1 :

V out / R 2 = V in / (R 1 + R 2 ) - > (R 2 * V in ) / V out = R 1 + R 2 .

Finalmente:

R 1 = [(R 2 * V in ) / V out ] - R 2 . Lo cual también podemos reescribirlo de esta manera: R 1 = [(V in / V out ) -1] * R < sub> 2 .

Convertidor analógico a digital (ADC):

que recibe un valor de voltaje y lo convierte en un valor digital correspondiente aproximado.

Descripción general de la resolución ADC:

La resolución determina la escala / nivel de la conversión, por ejemplo, si tenemos un ADC de 2 bits que puede leer hasta 10 V como entrada, los valores correspondientes posibles serán:

Voltage     2-Bit Digital Rep.

0 to 2.5        00
2.5 to 5        01
5 to 7.5        10
7.5 to 10       11

Entonces, son 2 2 = 4 números diferentes. Por lo tanto, el rango de valores digitales es: 0 a 3, de la misma manera, si tenemos ADC de 10 bits - > 2 10 = 1024, el rango de valores digitales es: 0 a 1023.

Relacionando el valor de ADC con el voltaje:

El ADC reporta un valor ratiométrico. Esto significa que para un ADC de 10 bits se supone que 5V (Voltaje del sistema) es 1023 y que cualquier valor inferior a 5V será una relación entre 5V y 1023.

Usamos esta simple ecuación:

ADC Resolution / System Voltage = ADC Reading / Analog Voltage Measured 

Ahora, reescribiéndolo:

 System Voltage = (Analog Voltage Measured * ADC Resolution) / ADC Reading

en el que el voltaje del sistema y el voltaje analógico medido corresponden a V in y V out en la ecuación del divisor de voltaje, respectivamente.

El uso de esto en la ecuación del divisor de voltaje nos da:

R 1 = [((Voltaje analógico medido * Resolución ADC) / Lectura ADC) / Voltaje analógico medido - 1] * R 2

Sigue reescribiéndolo:

R 1 = [(Voltaje analógico medido * Resolución ADC) / (Lectura ADC * Voltaje analógico medido) - 1] * R 2 - >

R 1 = [(Resolución ADC) / (Lectura ADC) - 1] * R 2 - >

R 1 = [(Resolución ADC) / Lectura ADC) - (Lectura ADC / Lectura ADC)] * R 2 - >

R 1 = [(Resolución ADC - Lectura ADC) / Lectura ADC)] * R 2 - >

Finally:

R 1 = R 2 * (Resolución ADC - Lectura ADC) / Lectura ADC) : en la que R 1 es la resistencia del sensor (R s ), R 2 es la resistencia de carga (R L ) y la resolución ADC es 1023.

    
respondido por el Yahya

Lea otras preguntas en las etiquetas