calcular_r0.py
| 1 |
import grovepi |
|---|---|
| 2 |
import time |
| 3 |
import math |
| 4 |
|
| 5 |
RL_VALUE = 10000.0 # Resistencia de Carga (GrovePi) |
| 6 |
|
| 7 |
def get_RS_resistance(analog_value): |
| 8 |
if analog_value == 0: return float('inf') |
| 9 |
return RL_VALUE * ((1023.0 / analog_value) - 1.0) |
| 10 |
|
| 11 |
# --- CONFIGURACIÓN DE CALIBRACIÓN ---
|
| 12 |
# DEBES CAMBIAR ESTOS DOS VALORES para cada sensor
|
| 13 |
CALIBRATION_PIN = 2 # 0 para MQ-7 (A0), 1 para MQ-4 (A1), 2 para MQ-135 (A2) |
| 14 |
FACTOR_RS_R0_CLEAN = 3.6 # 27.0 para MQ-7, 4.4 para MQ-4, 3.6 para MQ-135 |
| 15 |
# ------------------------------------
|
| 16 |
|
| 17 |
NUM_READINGS = 20
|
| 18 |
print(f"--- INICIANDO CÁLCULO DE R0 en A{CALIBRATION_PIN} ---")
|
| 19 |
|
| 20 |
grovepi.pinMode(CALIBRATION_PIN, "INPUT")
|
| 21 |
sum_rs = 0
|
| 22 |
|
| 23 |
for i in range(NUM_READINGS): |
| 24 |
try:
|
| 25 |
analog_val = grovepi.analogRead(CALIBRATION_PIN) |
| 26 |
rs = get_RS_resistance(analog_val) |
| 27 |
sum_rs += rs |
| 28 |
print(f"Lectura {i+1}/{NUM_READINGS}: RS = {rs:.2f} Ohmios")
|
| 29 |
time.sleep(2)
|
| 30 |
except:
|
| 31 |
print("Error de lectura.")
|
| 32 |
|
| 33 |
rs_avg_clean = sum_rs / NUM_READINGS |
| 34 |
R0_CALCULADO = rs_avg_clean / FACTOR_RS_R0_CLEAN |
| 35 |
|
| 36 |
print("\n--- ¡R0 CALCULADO! ---")
|
| 37 |
print(f"VALOR R0 (FINAL): {R0_CALCULADO:.2f} Ohmios")
|