Estoy controlando un ventilador de PC PWM de 4 pines desde un PIC16F684 con la velocidad del ventilador impulsada por una lectura ADC de un sensor de proximidad. Todo esto funciona bien.
Originalmente no estaba planeando usar la salida del tacómetro del ventilador, pero como está disponible, la he estado monitoreando con mi alcance solo para ver que mi mapeo entre la proximidad y la velocidad del ventilador funciona.
Ahora, lo que he notado es que cuando el PWM está ejecutando el ventilador al 100%, la señal de tacómetro (que es un drenaje abierto extraído a través de una resistencia de 10K) es agradable y limpia:
Sin embargo, cuando corro a menos del 100%, es ruidoso:
Acercándonos a ese ruido:
Supongo que está siendo afectado por la señal PWM, pero me gustaría entender por qué y cómo podría limpiarlo si es necesario en el futuro. Realmente estoy interesado en lo que debe hacer cuando ve un ruido como este, cómo encuentra la causa y cómo la "arregla". El alcance logra disparar bien, así que me pregunto si solo lo alimento al pin de interrupción externo en el PIC (RA2), que es una entrada de disparador Schmitt con niveles de CMOS, entonces no "veré" el ruido y yo podría, por ejemplo, hacer eco de una señal limpia de otro pin para atenuar un LED o algo así.
Entonces, ¿alguien puede explicar en términos generales cómo reconocer y corregir señales ruidosas? ¿O si eso es demasiado amplio, tal vez solo este problema en particular? Además, si hay algún problema con mi circuito, sería bueno saberlo también. En el siguiente esquema, la señal que estoy mostrando es la entrada TACH a la izquierda del circuito:
ACTUALIZACIÓN
Después de sugerencias útiles de @MichaelKaras y @techydude, descarté Q2 como la fuente de cualquier problema al eliminarlo del circuito por completo y conectar a tierra el ventilador directamente. Sin efecto significativo sobre el ruido.
Entonces codifiqué la interrupción externa en RA2 para hacer eco de una señal "limpia" de un pin de repuesto (RA1 en este caso), lo que ayudó mucho pero todavía parpadeaba debido a falsas interrupciones. (Así que configuré la interrupción para atrapar el borde ascendente y luego cambié al borde descendente cuando se activó y viceversa, configurando / restableciendo RA1 en consecuencia).
Pero, después de agregar también un condensador de 100nF a través de R3 (como parte de la sugerencia de @ techydude), ahora obtengo una salida mucho más estable. La captura de pantalla a continuación es la señal TACH después de la limpieza a través de la entrada disparada Schmitt RA2 y la nueva salida en RA1:
Respuestas:
Sobre su esquema:
Todo parece estar bien, puede aumentar el R2 a 10k o incluso 100k, la capacitancia del MOST es tan pequeña que el VENTILADOR tendrá mucha más inercia de giro que el retraso de apagado en el MOST, probablemente incluso con 1M. De esa manera, la ubicación de su 100R es irrelevante y, mientras está encendido, no desperdicia ningún mA. Si nunca mantiene presionado de uC en el reinicio, técnicamente ni siquiera es necesario, ya que su uC lo empujará activamente hacia arriba o hacia abajo.
Para la señal PWM, podría ver si la hoja de datos permite un pull-up externo a 12V, aunque dudo que haga una gran diferencia en ambos sentidos.
Sobre el ruido:
EDITAR: Leí mal su trama para kHz, lo cual es estúpido si lo piensa, donde es Hz. Parte de mi historia cambiará un poco (como la charla sobre la necesidad de MHz para el trabajo digital), pero la idea general sigue siendo.
Dejaré toda la publicación tal como está, pero para una señal de 100Hz con ruido de 30kHz, en lugar de 100kHz con> 5MHz de ruido (tampoco tenía sentido, ¿verdad?), Podría aumentar las resistencias que interactúan con los condensadores en un factor de 10, y también aumentar los condensadores en un factor de 50 a 100. Eso le dará un factor 1000 de frecuencia de filtrado más baja en todos los ejemplos. Pero también está bien simplemente aumentar los condensadores en un factor de 10 a 20, para obtener bordes más nítidos o una respuesta más rápida en su señal de interés, ya que 30kHz está muy lejos de 100Hz.
¡Considere esta publicación como escrita para frecuencias altas y reduzca las ideas, haciéndolas mucho más fáciles de implementar también! (Especialmente el rechazo digital en 3.)
Fin de Editar
Dado que es un buen caso de uso para trabajar con métodos de reducción de ruido, intentaré crear uno que se aplique a su situación.
Para cualquiera que lea, tenga en cuenta:
Esto solo se trata de ruido en una señal digital
En una señal digital, puede suponer que solo hay dos voltajes que le interesan "encendido" y "apagado". Cualquier cosa intermedia no tiene sentido y pertenece al ruido o al mal. En una señal analógica, debe saber acerca de cada nivel de voltaje y debe realizar un filtrado real con cargas de C, L, etc.
Un problema en su señal es que los picos de ruido negativo en el nivel alto y los picos de ruido positivo en el nivel bajo se acercan mucho, por lo que un simple disparador estándar, incluso con un nivel ajustable, no puede garantizarle absolutamente que nunca obtendrá confuso.
Sus opciones:
1. Cambiar el sesgo:
Lo positivo tiene picos negativos muy bajos, eso es porque tu pull-up no puede ganar con el ruido. Lo más fácil que puedes probar es disminuir esa resistencia. Existe el riesgo de que esto también aumente los picos en la señal de apagado, por lo que puede que no siempre funcione. Pero es muy posible que te dé un margen de maniobra entre los picos para establecer una histéresis simple.
2. Cambiar los niveles de voltaje
Puede fácilmente, si el ventilador lo permite, cambiar el Tacho a un nivel de voltaje más alto y agregar un estado intermedio:
simular este circuito : esquema creado con CircuitLab
Ahora podría haber suficiente espacio entre los picos altos y bajos para asegurarse de que el MOST esté siempre encendido, incluso cuando haya picos negativos y siempre apagados, incluso si hay picos positivos. Puede tomar algunos diodos, zeners o resistencias para obtener el punto de ajuste en la nueva situación, pero si los picos en la señal negativa permanecen como están, no deberían activar el MOSFET, siempre y cuando no lo haga. reemplácelo con uno que tenga un umbral de puerta inferior a 2V.
3. Agregue Histéresis "lenta":
Este es un truco que se usa comúnmente cuando sabes que una señal de ruido puntiagudo es de al menos un orden de magnitud mayor que la señal que te interesa. Retrasa un poco la señal, por lo que no se puede usar en situaciones donde el momento exacto de un cambio de encendido / apagado es importante.
Pero para una señal en la que solo desea conocer la forma o frecuencia de la misma, este es un método muy robusto. Básicamente comienza a dispararse cuando hay un voltaje que cruza el umbral, pero solo completa esa acción cuando permanece allí. Hay muchas formas de construir uno.
Puede hacerlo en el controlador (que es el más fácil en el recuento de componentes): puede disparar en un flanco, luego muestrear algunos valores más a la velocidad suficiente para ver el nivel alto entre picos de ruido, pero no confundir si pierde un período completo de nivel bajo. Luego, realiza un juicio predefinido basado en el conocimiento de su señal y ruido. Por ejemplo, si pudiera muestrear a 10MHz, podría capturar 50 muestras y asegurarse de que una frecuencia más alta de 100kHz no será ignorada si sigue la regla de la mayoría. Es decir: al menos 25 deben ser bajos para que sea realmente bajo. Sus picos son muy delgados y la mayoría de las veces es la señal original, por lo que podría funcionar, pero se puede ajustar el número de una mayoría. Esto funcionará con 1MHz y 6 o 7 muestras también, pero será menos de una mayoría real, por lo que puede haber algunos riesgos nuevamente.
También puede hacerlo externamente: pero ya es MUCHO más complicado que agregar un filtro simple, especialmente cuando mira el resultado con un uC con cierta histéresis en su entrada. Pero es divertido pensar en eso, así que:
simular este circuito
U1 es cualquier Op-Amp o Competidor adecuado. Los competidores son mejores conmutadores, a menudo con un mejor swing, pero para sub-MHz, un OpAmp con un buen rail / rail swing funcionará fácilmente.
Si bien este tipo de histéresis se puede construir con al menos una resistencia menos, esta es más fácil de explicar y, como tal, más fácil de modificar.
Primero imagínelo sin el condensador:
Primero, vea que el divisor de resistencia está influenciado por la salida de U1, lo empujará un poco más bajo a más alto a través de la resistencia aparente de 20kOhm. Digamos que en la entrada positiva de U1 hay un voltaje de 1.1V redondeado hacia abajo cuando su salida es 0, y 3.9V redondeado hacia arriba cuando su salida es 5V.
Si la entrada Tacho de arranque en estado estable es alta, la salida de U1 será baja, debido a la naturaleza inversora de la entrada al Tacho. Entonces, la entrada negativa será, nuevamente debido a la resistencia extra pull-up, aproximadamente 2.3V. Dado que la entrada positiva es de solo 1.1V, la entrada debe caer por debajo de 2.2V para que la entrada negativa vea un voltaje más bajo y haga que la salida se voltee.
Cuando la salida se voltea, la entrada negativa verá 3.6V (porque en este instante la señal de entrada es 2.2V, la salida de U1 es 5V, por lo que su punto medio, hecho por las resistencias de 10k es aproximadamente 3.6V), pero el positivo la entrada habrá cambiado de 1.1V a 3.9V, por lo que el negativo todavía está por debajo de la entrada positiva y la salida se mantendrá 5V.
Si la señal ahora "aborta" rápidamente y vuelve a subir, la salida de U1 volverá rápidamente, pero entonces el pico ya ha tenido que caer por debajo de 2.2V, así que eso es mejor que nada.
Si la señal baja aún más a 0, la situación estable solo se volverá más fuerte, la entrada negativa caerá a 2.5V (dado que asumimos que el tacho del FAN es lo suficientemente fuerte como un pull-down) y lo positivo descansará a aproximadamente 3.9 V.
Ahora la señal necesita elevarse por encima de 2.7V para que la salida se invierta. Es muy probable que el 95% de tus picos ya sean ignorados.
Agregar el condensador:
Con el condensador, la señal entrante necesita suministrar suficiente energía durante el tiempo suficiente para cargar o descargar el condensador. En efecto, eso ya es un filtro RC. Cualquier pico que se sumerja rápidamente y luego se recupere no podrá descargar el condensador.
El valor de C, por supuesto, depende de la señal fuente y la señal de ruido. He estacionado la bola 510pF para una señal de fuente de 100 kHz frente a la duración del pico de 1us como máximo, pero realmente no hice muchas matemáticas, es solo una sensación instintiva basada en el tiempo RC de que esto podría estar cerca de lo que funcionará.
4. Filtrar el ruido
Esto es un poco como simplemente filtrar una señal analógica. Puede usar una red RC simple, como se discutió en la sección anterior:
simular este circuito
Como los picos de ruido son iguales o inferiores a 1us, no pueden hacer un cambio muy significativo en el voltaje del condensador, ya que su tiempo RC es de 5us. Esto significa que la energía en los picos se aplana a un promedio. Dado que ve picos altos y bajas en los picos, incluso es posible que los promedios estén muy cerca de 0V y 5V, pero eso solo se puede decir con mejores imágenes o solo con un experimento. Como lo alimenta a un pin uC, el tiempo RC probablemente será suficiente para verlo como alto o bajo. Esto dará una pequeña distorsión debido a la carga más lenta que a la descarga, causada por la resistencia pull-up. Algunos ajustes de valores pueden producir un resultado en el que eso es insignificante.
Si eso no es suficiente, podría agregar algunos componentes más, pero está exagerando rápidamente cuando su ruido dominante es al menos 10 veces "más rápido" que su señal.
Puede agregar un inductor de 4.7uH en serie con la resistencia para suavizar algunos flancos de alta frecuencia, tal vez incluso 10uH.
Pero para ser honesto, en el caso de "alimentarlo a una uC", la única razón para experimentar con L en una señal de su tipo es encontrar un equilibrio en el que la R sea grande, C sea pequeña y L simplemente ayude a suavizar algunos flancos, de modo que R2 / R1 será lo suficientemente pequeño como para ignorar la diferencia en el tiempo de subida y bajada. como un R1 de 33k, C de 150pF y un L en serie con R1 de 56uH. O tal vez una cuenta de ferrita en lugar del inductor, depende un poco de la nitidez de sus picos.
Pero ya pensándolo demasiado, diría.
fuente
Un ruido como este proveniente de un tacho de ventilador es común, porque el circuito (que generalmente incluye un sensor de efecto Hall) en el ventilador que genera la salida de tacho se está encendiendo / apagando en su frecuencia PWM (cuando su salida PWM está en cualquier otra cosa 100% -On), no solo el suministro al motor en sí. Seguro que tendrán algo de capacidad para suavizar el suministro a ese circuito, pero dada, digamos, una fuente de alimentación de ventilador de 12V, siempre que haya suficiente capacidad para mantener varios voltios entre los períodos de apagado PWM mínimos, eso es suficiente para que ambos conduzcan el Hall- Sensor de efecto y pull-up de la salida de tacho (si el ventilador incluye su propio pull-up en la salida de tacho), para proporcionar una señal de salida recuperable. Sí, los fanáticos son desordenados cuando PWM su suministro. Algunos ventiladores ofrecen una entrada de velocidad PWM separada de su suministro de + 12V.
Su PWM parece ser de unos 27 kHz. Entonces, lo bueno en esta situación específica es que su salida de tacho al 100% parece ser de aproximadamente 800Hz, que es <1/30 de la frecuencia de su PWM, por lo que filtrar esta salida de tacho para eliminar la mayor parte del ruido PWM es fácil y vale la pena hacerlo. Es tarde aquí, así que CBF trabajé a través de los calcs, pero debido a que es de drenaje abierto y es su voltaje de suministro pull-up (en el ventilador) que está siendo molestado por PWM, una tapa entre el tacho y el riel de + 12V (no el PWM salida de su circuito de impulsión del ventilador) probablemente será una mejor opción que un tapón en el tacho a tierra. Prueba ambos y verás. Comience con una tapa de cerámica de 100n de voltaje apropiado y vea cómo se ve.
Con una entrada de Schmigger en el PIC, incluso podría escapar sin filtrar esta salida de tacho antes de ponerla en su PIC, pero tiene ese diferencial de frecuencia que le permitirá recorrer un largo camino hacia la limpieza. arriba.
Un posible problema con su manejo de la señal de tacho desde el ventilador aunque: si el ventilador lo eleva hasta +12 con un 10k internamente (algunos lo hacen, otros no) y también está elevando la señal de tacho a su Carril de + 5V, ¡entonces lo estás tirando hacia abajo! Hay varias configuraciones de circuito para lidiar con esto, dependiendo del voltaje de suministro del ventilador, qué tan fuerte es el pull-up, etc. Intente medirlo con su multímetro y avísenos.
fuente
Una posible fuente de ruido en la señal TACH puede deberse a que el IRF150 FET no tiene una impedancia de encendido suficientemente baja. Esto podría deberse a que el FET RdsON es bastante alto o que el FET no está completamente ENCENDIDO con el voltaje de accionamiento de la puerta proporcionado.
A medida que la corriente FAN se enciende y se apaga con la señal PWM, habrá una caída en la resistencia FET, lo que hace que la referencia "GND" del ventilador se mueva hacia arriba y hacia abajo y se traduzca en el ruido que se ve en la señal TACH.
Puede verificar esto para ver si el efecto que describo es el caso colocando el cable GND del osciloscopio en el drenaje FET y luego observe la señal TACH. La señal se vería mucho más limpia.
La solución sería seleccionar un FET con un RdsON mucho más bajo cuando se suministra con una unidad de compuerta que proporciona su sistema.
Otra posible idea es usar un P-FET para cambiar el cable de +12 V del ventilador en lugar del cable GND.
Tenga en cuenta que la disposición de resistencia de compuerta que está utilizando hace que pierda parte de su potencial accionamiento de compuerta. Mueva la resistencia de 1K al otro lado de los 100 ohmios.
fuente
Esto suena como un trabajo para un filtro de paso bajo. Debe mantener la señal útil con f 1 alrededor de 1 kHz y eliminar la señal ofensiva con f 2 cerca de 25 kHz. La frecuencia de corte se puede elegir como media geométrica de f 1 y f 2 (subóptima pero simple):
f c = sqrt (1 * 25) = 5 kHz.
Suponiendo que un filtro RC simple será suficiente, y ya tiene la resistencia en el circuito TACH (R 3 = 10 kOhm), el valor del condensador apropiado debe calcularse para que coincida con el costo temporal de 5 kHz :
C = 1 / (2 * pi * fc * R) = 1 / (6.28 * 5000 * 10000) = 3.2 * 10 -9 F.
Entonces, todo lo que necesita hacer es soldar un condensador de 3nF entre la línea TACH y la tierra. Atenuará el ruido de alta frecuencia en un factor de 20 o más, que debería ser suficiente para su aplicación.
fuente