Transitorios que pasan a través del integrado de alimentación?

Hola!

Soy un aficionado a la Electrónica, de España. Creo que ya pertenecía a este foro pero perdí el usuario :(

A ver si podéis ayudarme con este problema que tengo de alimentación.

He estado años poniendo a punto un montaje con microprocesador PIC18F67K22, llamémosle mP.
Lo alimento a 3.3V con dos integrados MAX884 de Maxim, según el esquema adjunto de la etapa de alimentación.
El montaje funciona bien. El mP duerme durante un tiempo, se despierta por reloj interno, hace una medida y se vuielve a dormir. Mientras está durmiendo U3 está deshabilitado y sin consumir, así que solo trabaja U2 dando tensión por el pin 4 al mP y a una tarjeta SD Card.
La única forma de que el equipo despierte por el usuario es pulsando las teclas SW3 ó SW4 (a la izquierda), lo que las pone a "1" y dispara una Interrupción del mP (también añadí un interruptor doble SW2P3T1 que puede conectar los bornes de ambas teclas a masa parra asegurar que no se pulsaban por error).

Muchas veces alimento el equipo con un pequeño alimentador estabilizado (llamemos PS) enchufado a la red 220V que me da 6V ó 9V DC. Creo que es de buena calidad. La conecto en el jack J1 (arriba a la derecha).


PROBLEMA
----------

Cuando el equipo está durmiendo, si enciendo algún aparato (p.e mi PC) en la misma toma en la que está el PS entonces el equipo se despierta. Creo que hay algún pico o espúreo que traspasa a U2 pero no sé cómo llega hasta las teclas SW3 ó SW4, si ese es el problema. Y me sorprende que consiga pasar a U2.

Creo que tengo bien deshabilitado en el mP todas las alarmas BORM y simialres.

Así que estoy dando vueltas a esto:

1. Los condensadores de filtro C1 y C2. ¿Debería añadir uno más pequeño en paralelo a C1 para absorber los transitorios más rápidos?

2. Es correcto el valor de 330 nF para C14?

3. El mP tiene los condensadores de desacoplo recomendados por Microchip ( 0.1 mF), pero ¿debería añadir algo más?

4. ¿Conviene añadir algún condensador en SW3 ó SW4? ¿De qué valor?

5. ¿Creéis que he hecho un mal diseño? ¿Qué me aconsejáis?

Desde ya os agradezco mucho vuestra ayuda.
 

Adjuntos

  • SURGE_SUPPLY.jpg
    SURGE_SUPPLY.jpg
    94.1 KB · Visitas: 66
Última edición:
Hace falta el esquema completo, solo se ve una parte, por otra parte si no se tuvo los recaudos de línea poco es lo que puede hacer maxim, ya que su misión es regular tensión no impedir transitorios.
El problema es la red de 220, el equipo deberia llevar un filtro EMI en la entrada, luego un varistor, podes agregar zeners de 3V9 y alguno que otro supresor de transitorios, si no agregas eso mmmm
 
Última edición:
Cuando se utilizan botones lo mejor es que la entrada este referenciada a masa, pero aún asi si no se toman las precauciones antes mencionadas de nada sirven
 
Gracias por las respuetas, Smoke y Pandacha.

Lo de bajar los 470K se me ocurrió esta mañana, lo probaré. Pero realmente están a masa todo el tiempo, así que no debería de importar demasiado, ¿no?
Haciendo pruebas he visto que el equipo se depierta comportándose como si hubiesen apretado la tecla "A" o la "E", aleatoriamente, así que sospecho de una inducción sobre sus cables.
He pensado poner unos choques de ferrita en sus conexiones con el mP...,o, siendo más pragmático, tratar ese despertar en la rutina de interrupción :
- recibo la interrupción
- espero 10 ms
- leo los pines de las teclas "A" y "E"
- si están a "0": es que no las están pulsando y ha sido una falsa alarma pasajera, y sigo durmiendo
- si están a "1" es que el usuario las está pulsando realmente y me despierto.
 
COMO ??...........los lees ? a los pines.

preguntas con la instruccion adecuada como esta la entrada y con eso tomas la desicion?

podes poner foto de las entradas que leen los pulsadores ??

Gracias por las respuetas, Smoke y Pandacha.

Lo de bajar los 470K se me ocurrió esta mañana, lo probaré. Pero realmente están a masa todo el tiempo, así que no debería de importar demasiado, ¿no?
Haciendo pruebas he visto que el equipo se depierta comportándose como si hubiesen apretado la tecla "A" o la "E", aleatoriamente, así que sospecho de una inducción sobre sus cables.
He pensado poner unos choques de ferrita en sus conexiones con el mP...,o, siendo más pragmático, tratar ese despertar en la rutina de interrupción :
- recibo la interrupción
- espero 10 ms
- leo los pines de las teclas "A" y "E"
- si están a "0": es que no las están pulsando y ha sido una falsa alarma pasajera, y sigo durmiendo
- si están a "1" es que el usuario las está pulsando realmente y me despierto.

no es asi como se lee un pin.
vos estas

- espero 10 ms
- leo los pines de las teclas "A" y "E"
- si están a "0": es que no las están pulsando y ha sido una falsa alarma pasajera, y sigo durmiendo
- si están a "1" es que el usuario las está pulsando realmente y me despierto.

esperas 10ms y luego tomas tu lectura leyendo el pin SOLO UNA VEZ ?
confirma eso .
 
Última edición:
Sí, Peperc, te explico:

durante el ciclo de sleeping (mP durmiente) solo me interesa salir si el usuario ha pulsado la tecla "A" o "E".
Nadie es tan rápido como para pulsar una tecla solo 10 ms, así que si la rutina de interrupción se activa miro enseguida, una sola vez, si la entrada correspondiente a la tecla "A" o "E" sigue a "1" después de 10 ms.
Si sigue a "1" significa que el usuario aún la está apretando y que no ha sido un pulso esporádico.
Si ya no está en "1" sino en "0" significa que la tecla no está pulsada realmente y que desapareció la perturbación.
Todo eso, claro está, para tratar con perturbaciones de hasta 10 ms , que creo que es un margen bueno.
 
Esas resistencias son demasiado grandes quedan muy lejos del ground, podes poner tranquilamente unas R de 1k0 y asi y todo serian unos 3.3mA es decir nada y estaria la entrada mejor puesta a tierr
 
He hecho lo del delay. Por ahora va bien y he sido incapaz de provocar un despertar a pesar de que he enchufado y desenchufado de forma bruta lámparas, alimentadores...

Pandacha: tienes razón en bajar las resistencias. Voy a ponerlas de 10K.

Gracias
 
10k Sigue siendo bastante, depende del caso, en general cuantos más ruido menos resistencia.

Tres Varistores en la entrada, entre fase y neutro, fase y tierra y neutro y tierra. Eso quita mucho transitorio.

 
Scooter yo uso las de 10k en los que tengo hechos y me va bien, uso, eso si, esta instruccion y va perfecto: do{} while (input(pin_x)); para evitar rebotes.

Una pregunta, damos por hecho el tema de la toma de tierra pero por lo que llevo visto, lamentablemente, muchos pero muchos casos, dudo que haya toma de tierra, de hecho yo tengo una tarjeta funcionando y no hay toma de tierra, no es lo correcto pero es lo que hay, digo esto por lo de los varistores.
 
Si no hay tierra primero que nada Filtro EMI luego varistor a la entrada entre neutro y fase poner un zener de 5.6, si se alimenta con 5V(lo ideal bien ajustado a 5V y zener de 5V1)o 3.6 para fuente de 3.3 y capacitores de 100n entre +B y masa del micro y en cada CI lógico auxiliar.
El ruido es el peor enemigo de los micros.
Cuanto más baja la resistencia a masa en las entradas, mejor ya que los transitorios, son de poca energia son impulsos de tensión y casi nada de corriente, al encontrar una baja impedancia su amplitud se diluye
 
pandacba yo he tenido un problema que afortunadamebte lo he podido solucionar con separar el panel de control unos 3 metros de donde estaban todos los motores y otros compònentes, y mira que con el filtro EMI y con redes Snubber en los reles consegui rebajar mucho los transitorios pero alguna vez me hacia alguna cosa rara, sobretodo al desactivar algun motor, cuando lo separe sobre esa distancia se me han terminado los problemas, tengo que decir que en ese lugar la toma de tierra es malisima, es mas tengo hasta dudas de si existe, lo que no soy capaz de resolver es que dependiendo que rele uso, èste se me queda activado y me toca ir haciendo pruebas.
 
El valor de las resistencias de pullup o pulldown son una primera aproximación contra el ruido.
Yo las he puesto de infinito, es decir usando la interna que suele ser de 30~50k y de 10p Ohm también dependiendo de la longitud de los cables y el ruido eléctrico.


 
Hola de nuevo!

Ya he cambiado las R de las teclas a 1K como sugerístes Smoke y Pandacha.
Además he puesto el delay(20ms) en la rutina de interrupción, y con eso va bien, el mP ya no se despierta en las pruebas que he hecho.

También he cambiado el condensadoir C13 desde 470mF a2 de 220mF en paralelo, por aquéllo de que con menor capacidad reaccionan más rápido.

Ahora quiero hacer pruebas cuando estoy arrancando el equipo -aún no está durmiendo y no tengo en ese punto deshabilitadas las interrupciones bien- porque en esa fase sigo teniendo problemas. Para ello voy a probar con algún varistor (¿de qué tensión me recomendáis si la entrada es de 6V ó 9V?) y con choques en el + de la fuente de alimentación.
 
Tienen que ser compatibles con la tensión de entradas.
Algo que hago, no se si es tu caso, es que cuando hay relays o motores o bobinas a conmutar utilizo fuents separadas y utillizo optos para aislar las salidas
 
JoseD2 por que no usas, si te parece bien, este sistema, por ejemplo:

If( input( pin_ xx)) {
do{}
while( input( pin_ xx));
Instruccion;
Instruccion;
}

con esto no necesitas el delay, y creo que resolveras algunos problemas, lo de poner resistencias de 1Kohm no creo que estes muy acertado, si te fijas pandacba habla de valores altos, yo las suelo usar de 10 k y me va bien.
 
Última edición:
Atrás
Arriba