PIC18 MCU Relay Issue

1

Estoy teniendo algunos problemas extraños con un microcontrolador PIC (PIC18F45K22) conduciendo una placa SainSmart 2 Channel Relay ( enlace ).

Después de un poco de solución de problemas, he podido aislar el problema. Cada vez que tengo una carga conectada al relé (un solenoide en un golpe de puerta eléctrico) y hago la transición de una salida baja lógica a una salida alta lógica, el contador del programa parece saltar a una ubicación aleatoria en el código.

Encontré esto ejecutando mi PICKit3 sin ningún punto de interrupción. Cada vez que se produce esta transición, el código se romperá aleatoriamente (algunas veces en el contador de programas 0x0, otras veces en ubicaciones aleatorias). Desconectar la carga del relé (sin cambios en el programa) elimina el problema de manera constante.

He intercambiado microcontroladores y canales en el tablero de relés (incluso accionados por un pin diferente del PIC) sin cambios.

El pin de salida del microcontrolador está conectado directamente al pin IN1 de la placa. El puente JD-VCC está en su lugar, alimentado por la misma fuente de alimentación que el PIC.

Configuración:

TRISDbits.TRISD1 = 0;
ANSELDbits.ANSD1 = 1;
LATDbits.LATD1 = 1;

Macros utilizadas para controlar el relé:

#define Relay_1ON() do { LATDbits.LATD1 = 0; } while(0)
#define Relay_1OFF() do { LATDbits.LATD1 = 1; } while(0)

Tengo una configuración casi idéntica en otro proyecto sin problemas, por lo que estoy en una pequeña pérdida. ¿Algún pensamiento?

    
pregunta BrennanU

1 respuesta

1

Cuando pasa al estado lógico alto, ¿esto corresponde a la apertura de los contactos? Si es así, podría estar dibujando un arco debido a la carga inductiva, que generará RF de banda ancha. Es posible que pueda suprimir esto colocando un amortiguador RC de serie en los contactos. ¿Su solenoide es accionado por CA o CC?

    
respondido por el electrogas

Lea otras preguntas en las etiquetas