Ir al contenido

← Todas las funcionalidades

Banco de ensayo de fusiblesRaspberry PLC 19RSCPII2CControl

Calibrar la corriente de ensayo en lazo cerrado

La calibración de corriente en lazo cerrado es lo que separa un ensayo certificado de una estimación: la fuente de alimentación indica una corriente, pero a la norma le importa la corriente que realmente circula por el dispositivo bajo ensayo. Este ejemplo lee la corriente real de un shunt de 60 mOhm cada 50 ms y corrige la consigna SCPI en pasos de ±0.1 A hasta que medida y objetivo convergen, con un timeout de 5 s. Es la rutina que abre cada serie en un banco de ensayo de fusibles real en producción.

Por qué no basta con la lectura de la propia fuente

La resistencia del cableado, el envejecimiento de los conectores y la calibración interna de la fuente desplazan la corriente entregada respecto a la consigna. A 220 A, incluso un error del 1% son 2.2 A — suficiente para invalidar un ensayo de no fusión. Medir en el shunt, justo al lado del fusible, elimina de la ecuación todas las fuentes de error aguas arriba.

Una ley de control deliberadamente simple

Aquí no hay PID: pasos fijos de ±0.1 A dentro de una banda muerta de 0.15 A. Con una fuente estable y un bucle de 50 ms esto converge en bastante menos de un segundo, no puede oscilar y es trivial de certificar. El timeout de 5 s señala un bucle atascado — normalmente un fusible fundido o un circuito abierto — en lugar de seguir buscando indefinidamente.

Dónde encaja en la secuencia de ensayo

La calibración se ejecuta una vez al inicio de cada ensayo, con el fusible ya en su portafusibles. La consigna convergida se congela después para toda la secuencia PD, de no fusión o de fusión, y el informe registra tanto la consigna como la corriente medida para que la cadena de trazabilidad quede intacta.

Un fragmento de la implementación

Tal cual del ejemplo desplegado en el Raspberry PLC 19R — cópialo libremente:

def calibrate(supply, target_a):
    """Trim the setpoint until the shunt current matches the target.

    Returns (final_setpoint, measured_current, converged).
    """
    setpoint = target_a   # first approximation: setpoint = target
    supply.set_current(setpoint)
    t0 = time.time()

    while time.time() - t0 < TIMEOUT_S:
        measured = read_shunt_current()
        error = target_a - measured

        if abs(error) <= TOLERANCE_A:
            return setpoint, measured, True  # converged

        # Fixed 0.1 A correction steps in the direction of the error
        setpoint += STEP_A if error > 0 else -STEP_A
        setpoint = max(0.0, min(setpoint, 220.0))  # XG limits
        supply.set_current(setpoint)
        time.sleep(PERIOD_S)

    return setpoint, read_shunt_current(), False  # timed out without converging

El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.

Preguntas frecuentes

¿Por qué no usar un controlador PID?

Porque la planta es casi estática. La fuente mantiene su salida totalmente estable, así que un corrector de paso fijo con banda muerta converge rápido y nunca puede sobrepasar ni oscilar, lo que en un banco de certificación importa más que la velocidad.

¿Qué pasa si el bucle nunca converge?

El timeout de 5 s devuelve un flag de no convergencia. El banco lo trata como condición de aborto; normalmente significa que la muestra fundió durante la rampa, que hay una conexión abierta o que la fuente alcanzó su límite de compliance.

¿Qué precisión tiene la cadena de medida del shunt?

Un shunt de 60 mOhm de clase 0.5 leído en diferencial por un ADS1015 a ganancia 16 resuelve mejor que 0.1 A. Un factor de corrección final de 1.02, obtenido contra un medidor de referencia, absorbe el error residual de la cadena.

Funcionalidades relacionadas