Sistemas Embebidos

Sistemas Embebidos

Electrónica analógica y digital: El corazón de los sistemas autónomos.

Códigos Fuente

Códigos Fuente

C, C++, Java, Verilog, VHDL, Object Pascal, PHP, etc... Lenguajes que describen Hardware y Software inteligente.

Mecatrónica

Mecatrónica

Mecánica, Electrónica y Diseño de Software conjugados para crear nuevos dispositivos.

Artículos de la categoría Electrónica

10 Trucos para mitigar el ruido en los circuitos

1.- Piensa en Corriente

A todos nos encanta ver esas bonitas ondas de voltaje en el osciloscopio, nos encanta pensar en que necesitamos tal voltaje o forma de onda aquí o allá, pero para lidiar con los ruidos eléctricos necesitamos pensar un rato en la poco intuitiva corriente, que por lo demás es difícil de medir. Después de todo son las variaciones de corriente de nuestro circuito las que inducen variaciones de corriente en partes que no queremos. Esta es la primera recomendación y básicamente fundamenta todo lo que viene a continuación.

2.- Planifica los caminos de retorno

Lo más efectivo para combatir el ruido en nuestros diseños es minimizar el ruido que se emite. Aunque suena obvio no siempre lo es tanto, cuando estamos diseñando una PCB es típico que nos preocupamos primero de conectar todas las señales que nos interesan y después ver cómo nos las arreglamos con las alimentaciones y las tierras. Bueno, esas señales que tanto apreciamos necesitan siempre de un camino de retorno para la corriente. Hay que asegurarse de que ese flujo de corriente siga los bucles con menor área posible para minimizar las emisiones. Si no prestamos atención nuestras queridas señales pueden necesitar caminos intrincados y grandes para llegar a destino, induciendo ruido en toda la placa.

De hecho, en algunos casos es buena idea llevar explícitamente la señal en dos pistas: una para la señal misma y la otra será el camino de retorno. Aunque sea la misma tierra de toda la placa, si nos aseguramos que esa señal importante irá y vendrá por un camino conocido y controlado, podemos evitarnos varios problemas.

3.- Separa las tierras analógicas de las digitales

Seguramente habrás escuchado esta recomendación alguna vez. Bueno, es básicamente lo mismo que los puntos anteriores, queremos estar seguros de que las corrientes de nuestras señales analógicas no se mezclen con las digitales. Que sus caminos sean predecibles y controlados.

4.- Intercala tierras en los conectores de datos

La situación es la siguiente: tenemos un bus de datos paralelo y cada bit puede cambiar indistintamente de los demás. Si ponemos un único pin de tierra en ese conector, las corrientes que genera cada bit deben pasar todas por el mismo pin de vuelta con resultados inciertos. Es buena idea intercalar tierras entre cada pin de datos, eso junto a un cable plano reduce notablemente el crosstalk y permite transmitir datos tranquilamente a varias decenas de MHz.

5.- Agrega tantas tierras como puedas

Nuevamente en los conectores, si necesitamos transmitir datos, señales analógicas y energía, lo mejor es sobredimensionar el conector y usar tantos pines como podamos para las tierras, tratando de sectorizar las zonas que tendrán señales de mayor velocidad (que pueden inducir ruido) de las analógicas y de energía. (Ni se te ocurra cometer el error de principiante de hacer conectores sin tierra, aunque suene chistoso pasa con frecuencia)

6.- Incrementa la corriente de tus señales

A veces es imposible deshacerse de los ruidos, por ejemplo, en electrónica de potencia y motores, por eso hay que pensar en maneras de evitar que esos ruidos inevitables perturben nuestras mediciones. Como dije antes, el ruido eléctrico no es más que corrientes de alta frecuencia que inducen corrientes de alta frecuencia donde no queremos. Una buena regla es intentar que nuestras señales críticas necesiten de al menos 1mA de flujo de corriente, de esta manera las pequeñas perturbaciones de nA o uA que se puedan inducir serán irrelevantes y no alterarán significativamente nuestra querida medida de voltaje. Por algo es tan popular el uso de mediciones analógicas de 4-20mA en aplicaciones industriales.

7.- Ubica correctamente tus componentes

Imaginemos que necesitamos leer un bit de status que viene de un convertidor de potencia en un entorno muy ruidoso. Nuestro sensor tiene una salida open collector y como somos obedientes pusimos una resistencia pull-up lo suficientemente pequeña para que se necesite más de 1mA para llevar el valor de salida a 0V, pero aún así medimos puro ruido en el lado de la recepción.

¿Qué podría haber salido mal? bueno, lo más probable es que nuestra super resistencia esté junto al transistor y ese mA sólo pasa por allá, dejando todo el trayecto hasta nuestro circuito recepción suceptible a los ruidos. Mucho peor si esa señal viene de un laaaargo cable hasta nuestro circuito de control.

La solución para esto es simplemente poner la resistencia pull-up junto a nuestro pin de recepción, para que sea necesario que circule la corriente designada por todo el cable para generar un cambio en el valor lógico. En este caso también es fundamental cuidar el camino de retorno de esa señal, las tierras no se juntan mágicamente.

8.- Convierte tus señales analógicas a corriente

A veces no hay mucho remedio y no podemos hacer circular la corriente que queramos por nuestras señales, sobretodo las analógicas. Por ejemplo, si tengo un equipo de electrónica de potencia con todo tipo de ruidos en su interior, pero debo controlarlo con una perilla desde afuera. Un potenciómetro no nos deja mucha opción para incrementar corrientes y estamos forzados a llevar esa señal por un largo cable.

Si ese es el caso, una buena idea es hacer una plaquita sencilla con un op-amp configurado como seguidor de voltaje y hacer que siga la salida de nuestro potenciómetro. ¿Qué gano con eso? bueno, el op-amp tiene baja impedancia en la salida y suelen ser capaces de entregar varios mA, por lo que ubicar una resistencia baja en el pin de recepción hará que se necesite más corriente para elevar su voltaje haciendo más sólida la señal. Además, para evitar el uso de fuentes duales y de paso eliminar el problema de que a 0V van 0mA, podemos agregar una resistencia entre el potenciómetro y tierra para que la medida tenga un offset y así nuestra señal será confiable sin importar la posición del potenciómetro. (No te olvides del camino de retorno en el cable de conexión)

adc

9.- Separa las pistas entre sí y evita pistas paralelas

Para evitar el crosstalk en los buses de datos, se suele seguir la norma de que la separación entre bits en la PCB debe ser de al menos el doble del grosor de las pistas y si podemos intercalar entre ellos un plano de tierra mucho mejor (siempre que quede bien conectado, por supuesto). Ahora cuando hablamos de señales diferentes (que no pertenecen al mismo bus y por lo tanto van a partes distintas de nuestro circuito), debemos evitar que vayan paralelas para reducir la posibilidad de interferencia. Si es necesario que se crucen en diferentes capas, el ideal es que sean cruces perpendiculares.

10.- Filtra tus señales, no busques la perfección

A todos nos encanta ver señales digitales cuadraditas en el osciloscopio, sentimos que somos unos maestros de la integridad de señal cuando todo luce bonito, pero eso tiene un costo. Si consideramos que siempre hay capacidades parásitas en todos lados (además de los capacitores que explícitamente están allí) y el hecho de que para lograr un escalón de voltaje en un capacitor necesitamos de un impulso de corriente infinita, es obvio que una señal perfecta es también un perfecto emisor de interferencias. Siempre teniendo en cuenta el contexto y los límites que tenemos, el uso de filtros como ferritas e inductancias puede ayudarnos a suavizar las corrientes y por lo tanto las emisiones que afectan nuestro circuito… Hace poco en un equipo de medición de señales de alta sensibilidad cuya PCB diseñé, tuvimos problemas porque al intentar bajar los costos y usar un transductor más barato se veía un montón de ruido en la pantalla, en principio decidimos que no teníamos otra opción más que usar el transductor 400USD más caro, pero después de algunas pruebas bastó con agregar un par de ferritas (que valen una fracción de dólar cada una) para que el ruido molesto desapareciera. Así que no se trata sólo de ponerse exquisito, las consecuencias pueden ser importantes.

Ya revisado el lado de emitir ruido, vamos por el lado de mitigarlo cuando ya está. Los capacitores son nuestros amigos cuando están cerca de nuestros pines de recepción y queremos filtrar ruido de alta frecuencia. Muchas veces el ruido inducido tiene frecuencias mucho mayores a las que nos interesan, así que vale la pena sacrificar el ancho de banda por una señal sólida. Debo confesar que en algunos casos he llegado a soldar capacitores SMD encima de las resistencias pull-up para filtrar, es un parche elegante (nadie lo nota) y funciona.

11.- [Bonus Track] – Intercala un plano de tierra entre tus dos capas de señales de alta velocidad.

Si estás diseñando una PCB multicapa con señales de alta velocidad, seguramente tendrás el problema de que tienes que usar más de una capa para llevar tus datos de un lugar a otro. En ese caso el ideal es usar un plano de tierra intercalado entre las capas de señal, para que ese plano sea el camino de retorno indiscutido de nuestras señales sin importar si nos saltamos de una capa a la otra. De lo contrario nuestras corrientes se pueden ir por cualquier parte y degradar tanto la integridad de esa señal como la de las demás.

Peripecias con memorias Flash

La gente que me conoce de cerca sabe que he estado dando jugo con este tema producto de un pequeño traspié en el trabajo, prometo que esta será la última vez que mencione el tema :-P. Lo que pasa es que muchas veces uno se encuentra con esas cosas que “todos saben” y por lo tanto nadie explicita, provocando grandes dolores de cabeza que en realidad eran muy simples de solucionar.

Sin más rodeos, estaba trabajando hace unas semanas en la interfaz en Verilog para una memoria flash serial (Spansion S25FL256SAGNFI001), la cual tiene la importante misión de guardar los datos de configuración de un par de FPGAs, por lo tanto el arranque de las mismas y el funcionamiento del equipo depende de escribir y leer esa memoria. Poco a poco fuí haciendo cada uno de los bloques necesarios, un software para el PC que me permitiera cargar un archivo binario a la FPGA que maneja la flash, un core en verilog que recibiera los datos, un core de administración de “alto nivel” (entre muchas comillas) de la flash y el que maneja físicamente la interfaz SPI que finalmente llega a los pines de la dichosa memoria.

Luego de varias semanas de pruebas, correcciones y el típico proceso iterativo de estas cosas, llegué a un punto en que estaba generando correctamente las secuencias de escritura y lectura de la flash, pero sólo leía basura. Estuve cerca de una semana completa frustrado probando mil cosas mirando el analizador lógico hasta que probé escribir en otra dirección. Voilá! ahora los datos que leía estaban correctos!

Con una sonrisa en mi rostro volví a probar la escritura, esta vez con otros datos para poder observar el patrón en el analizador lógico. Cuando ejecuté nuevamente el comando de lectura para ver orgulloso mi obra terminada, nuevamente el terror volvió a mi rostro: otra vez basura.

Y así pasaron un par de días en los que no sabía si correr en círculos o rodar en el suelo, hasta que un día temprano todo tuvo sentido: La memoria flash traía puros 1s cuando estaba nueva, el comando de borrado lo que hace es restaurar los bits a 1, entonces eso quiere decir que cuando escribo paso los 1s a 0s donde corresponda… 1+1.. IDIOTA!!!!! Todo el tiempo estuvo funcionando y yo no sabía que tenía que borrar el sector antes de escribirlo!!!!

Protesto, nadie me lo dijo, no lo decía la hoja de datos, no estaba en ninguna parte esa restricción porque es “obvio” que uno tiene que borrar las memorias antes de escribirlas o no? con mi pendrive es más fácil!

Analizador Lógico
El analizador lógico muestra los comandos de escritura, primero el Write Enable, luego el Read Status para verificar que puedo escribir y finalmente el comando de escritura seguido por la dirección y los datos que en este caso son todos 0

Categorías

Enlaces

Estadísticas


eXTReMe Tracker