ruido en microcontroladores

Hola a todos, mi problema es el siguiente mediante un PIC16f877 a 4MHZ, envio serialmente datos a otra placa con un 74HC164 (serial-in, parallel-out shift register) la cual prende 8 leds draiveados con ULN2003 a 24V. el programa anda bien, ambas placas tambien funcionan bien el problema es que cuando prendo y apago el interruptor de mi fluorescente, los leds se prenden o apagan aleatoriamente. tengo capacitores de desacople por todos lados pero no se como evitar este efecto ruidoso........
la comunicacion es serial sincronica (una linea de datos y una de clock) alguna sugerencia? guille
 
Eso generalmente ocurre al aparecer ruido sobre la señal de clk del HC164, una manera de evitar en conectando una resistencia PullUp de unos 10K en el pin de CLK ademas deveras hacer o asegurate que por pograma el nivel de reposo del Clk sea High.
 
Eso generalmente ocurre al aparecer ruido sobre la señal de clk del HC164, una manera de evitar en conectando una resistencia PullUp de unos 10K en el pin de CLK ademas deveras hacer o asegurate que por pograma el nivel de reposo del Clk sea High.
 
Hola guille,

Te paso ideas para reducir el ruido en la señal de reloj

1. Hacer la conexión lo más corta posible.
2. Hacer la conexión del reloj junto a un cable trenzado de tierra.
3. Agregar un pequeño capacitor cerámico de bajo valor (dependiendo de al frecuencia del reloj)
3. Agregar el pull-up que comentó el compañero lalosoft.
4. agregar una resistencia en serie en la línea de reloj, una común es de 1k, pero depende de la frecuencia y el cableado o ruteado del trazo de la señal de reloj.

Espero ésto te sirva.

Saludos,
 
gracias lalosoft gracias eduardo, probe lo de poner la resistencia de pull up de 10k, pero sigo con el mismo problema. el diseño original tiene una resistencia de pull down de 12k. asi que mantuve esta resistencia.
empece a probar con un capacitor entre el clock y tierra y veo que el ruido disminuye, asi que tengo que encontrar un valor adecuado para la frecuencia que estoy enviando el clock. como puedo calcular este valor? gracias por su ayuda.
 
Hola Guille

Para calcular el capacitor dependes de

1. La frecuencia de la señal que envíes
2. Las impedancias interfases a la que se comunica tu reloj
3. La impedancia del cable que comunica la señal

Pero un ejemplo sería:

si tienes una conexión entre dos microcontroladores con entradas CMOS (que son las más comunes hoy en día) puedes asumir una resistencia para el receptor (o el que está configurado como entrada) de 1Mega y el que envía la señal por lo general puedes considerar 1k ohm de impedancia.
Asumimos una frecuencia de 44.1khz para simular la frecuencia de muestreo de audio.

Simplificando:

La impedancia del transmisor sería: 1k ohm y la del receptor 1Mega ohm

Rt=1k
Rr=1000k
freq=44.1khz

El periodo = T = 1/freq = 22.6757 us (microsegundos)

tu pulso de reloj estaría en alto cerca de 11.337 us y en bajo 11.337 us
|<-----11.337us------->|
+--------------------------+ +--------
| | | Pulso reloj
-----+ +-------------------------+
|<-----11.337us------->|
Si agregas un capacitor podemos calcular la TAU.

La TAU puedes considerarla como la demora que tiene el capacitor en cargarse.

simplificando la TAU la puedes calcular como R*C. la resistencia por la capacitancia.

Tau = R * C

Para el circuito necesitas la resistencia equivalente, que para éste sistema sería:

Req= 1k || 1000k (1k en paralelo con 1000k)
Req= 999

Si agregas un capacitor de 100pF, tu TAU puedes calcularla rápidamente como

Tau = R * C = 999 * 100E-12 = 99.9ns

Para no dañar la señal de reloj puedes lo siguiente:

3 * Tau < pulso alto de reloj

Entonces,

Demora = 3 * Tau = 3*99.9ns = 299.7ns < 11.337 us (O = Perfecto)

Pero si ubieras puesto un capacitor de 0.01uF

Tau = R * C = 999 * 0.01E-6 = 9.99us
Demora = 3 * Tau = 3 *9.99us =29.97us > 11.337 us (X = Malo)

Se dañaría tu señal de reloj.



Ojalá y esto te ayude.

Saludos,
 
que tal de antemano quiero comentarte que pueden ser muchas las causas del ruido, seria mejor que subieras unas fotos y un esquema pàra poder observar mas a detalle localizar el problema, ya que no te entiendo muy bien cuando dices que mandas datos a otra placa en donde enciendes leds, lo que yo entiendo es que en la otra placa solo tienes leds, ademas al mencionar placa entiendo que es un pcb o es un protoboard ? ademas no mencionas el tipos de cable que usas y la distancias entre ambas
 
Atrás
Arriba