Controlador de ventilador impulsado por CPU y GPU: 6 pasos (con imágenes)
Controlador de ventilador impulsado por CPU y GPU: 6 pasos (con imágenes)
Anonim
Controlador de ventilador impulsado por CPU y GPU
Controlador de ventilador impulsado por CPU y GPU

Recientemente actualicé mi tarjeta gráfica. El nuevo modelo de GPU tiene un TDP más alto que mi CPU y una GPU antigua, por lo que también quería instalar ventiladores de carcasa adicionales. Desafortunadamente, mi MOBO tiene solo 3 conectores de ventilador con control de velocidad, y solo se pueden vincular a la temperatura de la CPU o del chipset. Decidí remediar esto, diseñando mi propio controlador de ventilador de PC que lee las velocidades de RPM de los ventiladores ya instalados (tanto los conectados al MOBO como impulsados por la temperatura de la CPU y los que enfrían la GPU) y tiene dos canales de salida. El canal A utiliza la velocidad de los ventiladores vinculados a la temperatura de la CPU y la GPU para impulsar ventiladores de salida de 3 pines con velocidad variable. El canal B solo detecta la velocidad de los ventiladores de la GPU y su circuito de salida utiliza un transistor adicional que permite alcanzar velocidades más bajas de los ventiladores impulsados por él (funciona bien con la tarjeta gráfica semi-pasiva).

En mi opinión, leer la velocidad de otros ventiladores es más fácil y económico que instalar sondas de temperatura adicionales justo al lado de procesadores cubiertos con disipadores de calor (básicamente requiere conectar el cable de los tacómetros de los ventiladores directamente a un pin del microcontrolador).

Aquí se describen algunos de los métodos para controlar la velocidad del ventilador. Decidí usar PWM de baja frecuencia, pero con algunas modificaciones al método descrito en el artículo. En primer lugar, cada canal tiene 6 diodos conectados en serie, que se pueden usar para reducir el voltaje que alimenta un ventilador en 4-5V. En esta configuración, los niveles de voltaje PWM son ~ 8V - 12V y 0V - ~ 8V (no disponible en el Canal A) en lugar de 0V - 12V. Esto reduce en gran medida el ruido producido por el ventilador. Aquí se describe otro truco que utilicé para hacer que el ventilador controlado de esta manera sea más silencioso. Este truco requiere instalar un circuito RC entre la salida del microcontrolador y una puerta de un MOSFET que usé para cambiar los niveles de voltaje del ventilador. Esto reduce la velocidad de respuesta de una señal que controla el MOSFET, lo que a su vez hace que la sacudida angular del ventilador durante el cambio de nivel de voltaje sea menos prominente, lo que reduce la vibración y los picos de voltaje.

Suministros

Partes y materiales:

  • ATtiny13 o ATtiny13A en un estuche de 8 PDIP
  • Zócalo DIP de 8 pines
  • 3x transistor IRF530
  • 12 diodos 1N4007 (cualquier otro diodo de 1A con una caída de voltaje de alrededor de 0,7 V debería funcionar)
  • Condensador electrolítico radial 220uF / 25V
  • Condensador electrolítico radial 10uF / 16V
  • Condensador de disco cerámico 5x 100nF
  • Resistencia de 10k 0.25W
  • Resistencia 4x 22k 0.25W
  • 2x 1k resistencia de 0,25 W
  • Botón de interruptor táctil de 6x6 mm
  • 2 x 2 pines de 2,54 mm conector de pines macho recto
  • Conector de ventilador macho de 4x 3 pines (Molex 2510), alternativamente, puede usar encabezados de pines normales si lo desea (yo lo hice), pero luego debe tener mucho cuidado al conectar los ventiladores, y los conectores hembra de esos ventiladores serán adjunto de forma menos segura
  • Conector Molex de 4 pines, carcasa hembra / pines macho (conector de alimentación AMP MATE-N-LOK 1-480424-0), utilicé uno que era parte del adaptador Molex macho a 2x SATA hembra incluido con algunos MOBO antiguos
  • 2x cables de puente con conectores hembra de 2.54 mm (o carcasas de conectores + pines + cables), se soldarán a los cables del tacómetro de los ventiladores de entrada (o directamente a sus conectores en PCB)
  • Preboard (50 mm x 70 mm, mínimo de 18 x 24 orificios), alternativamente, puede grabar usted mismo la placa revestida de cobre y perforar los orificios
  • algunos pedazos de alambre
  • cinta insultiva
  • cinta de papel de aluminio (si va a conectar el conector a la placa posterior de la GPU, consulte el paso 5)
  • papel

Instrumentos:

  • cortador diagonal
  • alicates
  • destornillador de punta plana
  • cuchillo de uso
  • multimetro
  • estación de soldadura
  • soldar
  • Programador AVR (programador independiente como USBasp o puede usar ArduinoISP
  • protoboard y cables de puente que se utilizarán para programar el microcontrolador fuera de la PCB (o cualquier otra herramienta que pueda lograr este objetivo)

Paso 1: descargo de responsabilidad

La construcción de este dispositivo requiere el uso de herramientas moderadamente peligrosas y puede causar daños o daños a la propiedad. Algunos de los pasos requeridos pueden anular la garantía de su hardware o incluso dañarlo si se llevan a cabo de manera incorrecta. Usted construye y usa el dispositivo descrito bajo su propio riesgo

Paso 2: Cómo funciona el control del ventilador

Cómo funciona el control del ventilador
Cómo funciona el control del ventilador

El canal A usa dos entradas. Cada una de esas entradas del Canal A tiene un nivel asociado, llamemos a esos niveles A0 y A1. De forma predeterminada, ambos niveles son 0. Ambas entradas tienen valores de umbral de RPM asociados (3 umbrales por entrada). Cuando se alcanza el primer umbral, A0 o A1 aumenta a 1, cuando el segundo aumenta a 2, y el tercer umbral establece uno de los niveles de entrada en 3. Más tarde, A0 y A1 se combinan (simplemente se suman y se evita que alcancen un valor más alto que 3), haciendo que el canal de salida principal sea un número de nivel en el rango 0-3. Este número se usa para controlar la velocidad de los ventiladores de salida, 0 significa que están alimentados por 7-8 V (ciclo de trabajo del 0%). Los niveles de salida más altos significan que el ventilador se alimenta con 12 V completos durante el 33%, 66% o 100% de un ciclo de 100 ms o 33 ms (depende de la frecuencia seleccionada).

El canal B tiene una sola entrada (B1, físicamente se comparte con el canal A [pin PB1]). Hay seis niveles B1 posibles (1-6), el nivel predeterminado es 1. Existen cinco valores de umbral, que pueden aumentar B1. B1 se utiliza como nivel de canal B de salida principal. Cuando es 1, 7-8V alimenta a los ventiladores de salida durante el 33% del tiempo de ciclo en un ciclo, en el otro durante el 66%, durante el resto del tiempo que la energía está desconectada. El nivel 2 significa que el 66% de cada ciclo es de 7-8 V, el resto 0 V. El nivel 3 significa que se aplica constantemente 7-8V. Los niveles 4-6 significan que el ventilador se alimenta con 12 V completos durante el 33%, 66% o 100% del ciclo, mientras que el resto del tiempo el voltaje es de 7-8 V.

La frecuencia de este control PWM por defecto es 10Hz. Puede aumentarse a 30 Hz cerrando los pines de puente J7.

Cuando se alcanza un umbral más alto, los niveles A0, A1 y B1 aumentan instantáneamente. Sin embargo, cuando las RPM disminuyen, el nivel se mantiene durante 200 ms y solo puede disminuir en 1 cada 200 ms. Es para evitar cambios rápidos de esos niveles cuando las RPM del ventilador de entrada están muy cerca del umbral.

Paso 3: Soldar componentes electrónicos

Soldadura de componentes electrónicos
Soldadura de componentes electrónicos
Soldadura de componentes electrónicos
Soldadura de componentes electrónicos
Soldadura de componentes electrónicos
Soldadura de componentes electrónicos

Suelde todos los componentes electrónicos al prefboard (excepto Attiny13, que luego se colocará dentro de un enchufe). Utilice cables de cobre (los de 0,5 mm de diámetro del cable UTP deberían ser perfectos) para realizar las conexiones eléctricas entre los componentes. Si tiene problemas para empujar cables grandes que salen del conector Molex (AMP MATE-N-LOK), puede perforar agujeros más grandes para ellos. Si no desea utilizar un taladro, siempre puede girar un tornillo varias veces dentro de pequeños orificios prefboard. Asegúrese de que los cables no provoquen ningún cortocircuito.

Si prefiere hacer su propia PCB, también proporciono archivos.svg (las dimensiones de la placa son 53.34x63.50 mm) y.pdf (tamaño de página A4, dentro del archivo.zip). Una placa revestida de cobre de un solo lado debería ser suficiente, ya que solo hay una conexión en el lado frontal (se puede hacer con un cable), por lo que los archivos para el lado frontal se proporcionan como principal para que se pueda identificar esta conexión.

Le recomiendo encarecidamente que cubra la parte posterior de la PCB con algún material aislante que evitará cualquier cortocircuito accidental. Usé pocas capas de papel normal que se sujetan a los bordes de la PCB con unas pocas tiras de cinta aislante.

Paso 4: Programación del microcontrolador ATtiny

Programación del microcontrolador ATtiny
Programación del microcontrolador ATtiny
Programación del microcontrolador ATtiny
Programación del microcontrolador ATtiny

El programa que se ejecuta en la MCU tiene codificados varios umbrales de velocidades de RPM de los ventiladores de entrada. Esos umbrales se encuentran al principio del archivo fan_controller.c. La línea que contiene el primer umbral, que es responsable de aumentar ligeramente el nivel de salida del canal A en respuesta a un ventilador input_0 que excede las 450 RPM, se ve así:

#define A0_SPEED_0 3 // 450 RPM

Si desea cambiar el valor umbral de RPM, debe reemplazar el número 3 con otra cosa. Incrementar este número en 1 cambiará el umbral en 150 RPM.

Otra cosa que quizás desee cambiar es la disminución del retardo del nivel de salida. Este retardo evita cambios rápidos en el nivel de salida cuando las RPM del ventilador de entrada están muy cerca del umbral. Hay 3 líneas que controlan esto (ya que el canal A usa 2 entradas y el canal B usa 1) y la primera de ellas se ve así:

if (channel_A0_lower_rpm_cycles> 2) {

Aumentar el número 2 aumentará este retraso. El retraso se cuenta en ciclos de 100 ms.

Para compilar el código fuente y luego programar el chip, necesitará algún software. En una distribución de Linux basada en Debian, se puede instalar ejecutando el siguiente comando:

sudo apt-get install avr-libc gcc-avr avrdude

Si está utilizando Windows, puede intentar instalar la suite WinAVR, que también contiene el software necesario.

Para compilar el código fuente, debe ejecutar esto:

avr-gcc -mmcu = attiny13 -Os -Wall fan_controller.c -o fan_controller.out -lm

Para crear un archivo.hex, debe copiar esta línea en la terminal:

avr-objcopy -O ihex -R.eeprom fan_controller.out fan_controller.hex

Este comando permite verificar cuánta memoria usará el programa (el texto es Flash, los datos son variables que se almacenarán en Flash y luego se copiarán en RAM, y bss son variables inicializadas con un valor de 0 en RAM):

avr-size fan_controller.out

Cuando su archivo.hex esté listo, debe insertar ATtiny13 en la placa de pruebas y conectarlo al programador con cables de puente. Es mejor desconectar la alimentación del programador cuando lo conecte a la MCU. Mantenga los bits de fusible predeterminados (H: FF, L: 6A). Si su programador es USBasp, este comando programará la memoria flash de la MCU:

avrdude -c usbasp -p t13 -B 8 -U flash: w: fan_controller.hex

-B 8 cambia la velocidad de transmisión entre el programador y MCU (bitclock). Es posible que deba cambiarlo a un valor más alto si tiene problemas para conectarse al microcontrolador.

Cuando la MCU esté lista, colóquela dentro del zócalo DIP 8. Para quitar la MCU de la placa de pruebas, generalmente hago palanca con un destornillador de punta plana.

Paso 5: Conexión de ventiladores al dispositivo

Conexión de ventiladores al dispositivo
Conexión de ventiladores al dispositivo
Conexión de ventiladores al dispositivo
Conexión de ventiladores al dispositivo
Conexión de ventiladores al dispositivo
Conexión de ventiladores al dispositivo

Como ventilador de entrada 0 (el que está conectado al PB0), seleccioné uno de los ventiladores de caja enchufados a MOBO, cuya velocidad variaba con la temperatura de la CPU. Quité el aislamiento de la parte del cable del tacómetro del ventilador y le soldé un extremo del cable de puente. El otro extremo (con un conector hembra de 2,54 mm adjunto) se conectará al controlador del ventilador. Si el cable de puente es demasiado corto, extiéndalo soldando otro cable entre los mencionados anteriormente. Luego cubra todos los conductores expuestos con cinta aislante.

La entrada 1 lee la velocidad de los ventiladores de la GPU (en mi caso, en realidad hay 3 de ellos, pero solo hay un conector de ventilador en el PCB de la tarjeta gráfica). Soldé el cable de puente de entrada 1 directamente a uno de los cables del conector del ventilador de la mini GPU de 4 pines ubicado en la PCB. Como este cable estaba ubicado entre el PCB y la placa posterior, primero aislé la placa posterior con un trozo de papel (especialmente porque el material de la placa posterior era bastante soldable) y luego conecté firmemente el conector hembra del cable al otro lado de la placa posterior con el uso de cinta de papel de aluminio.. Luego, los ventiladores de la GPU podrían conectarse al pin PB1 con el uso de otro cable de puente (extendido). Si no desea soldar nada en la PCB de su tarjeta gráfica, puede conectar un cable de puente a los cables del ventilador o hacer un adaptador que se colocará entre los ventiladores y el conector en la PCB, la decisión es suya.

El ventilador transmite su velocidad actual a través del cable del tacómetro mediante la conexión de este cable al suelo a través de un colector / drenaje abierto dos veces por rotación (el rotor del ventilador generalmente tiene 4 polos [NSNS] que son detectados por el sensor Hall, la salida del ventilador baja cuando se detecta el tipo de polo). Por otro lado, este cable generalmente se tira al nivel de voltaje de 3.3V. Si no está seguro de haber obtenido el cable correcto, puede usar un osciloscopio o construir uno de los circuitos de detección que se dibujan en la última imagen de este paso. El primero de ellos le permite verificar el voltaje máximo que aparece en la ubicación medida, el segundo para verificar si aparecen pulsos de baja frecuencia allí.

Los pines de entrada de ATtiny deben leer 3.3V como estado ALTO, pero si tiene problemas con esto, puede intentar reducir el voltaje que alimenta la MCU (¡también aumentará la resistencia de los MOSFET!). No tuve ningún problema, sin embargo, decidí que debería incluir este pensamiento aquí.

Cuando los ventiladores de entrada estén listos, puede colocar el controlador del ventilador dentro de la carcasa de su PC, en el lugar que elija. Lo monté al costado de dos de mis compartimentos para unidades de 5,25”vacíos, empujándolo entre las partes metálicas del compartimiento, colocando un poco de papel detrás y asegurándolo en su lugar con el uso de una brida empujada a través de uno de los orificios grandes. en prefboard y algunos otros agujeros en la bahía de 5.25”. Asegúrese de que ninguna parte metálica de la carcasa de la PC pueda tocar ninguno de los conductores expuestos del controlador del ventilador.

Ahora puede conectar ventiladores de salida de 3 pines al controlador. Los ventiladores de salida conectados al canal A estarán vinculados tanto a los ventiladores de la CPU como a los de la GPU, y el voltaje mínimo que los alimentará será de aproximadamente 7-8 V. Los ventiladores enchufados en los conectores de salida B del canal serán impulsados solo por los ventiladores del enfriador de la GPU y su voltaje puede caer a 0 V (pero solo durante 66 ms cada segundo ciclo de 100 ms en el nivel de unidad de salida más bajo). Los ventiladores no deben consumir más de 1 A por canal de salida.

Paso 6: Otros cambios que hice en mi PC

Otros cambios que hice en mi PC
Otros cambios que hice en mi PC
Otros cambios que hice en mi PC
Otros cambios que hice en mi PC
Otros cambios que hice en mi PC
Otros cambios que hice en mi PC
Otros cambios que hice en mi PC
Otros cambios que hice en mi PC

El canal A impulsa dos ventiladores ubicados en la parte superior de mi caja. Son del mismo modelo y funcionan con el mismo voltaje, lo que los hace girar a velocidades muy similares. Como resultado de eso, apareció algún latido audible (patrón de interferencia entre dos sonidos de frecuencias ligeramente diferentes). Para remediar esto, instalé 2 diodos (uno normal y uno Schottky) en serie con uno de los ventiladores. Esto redujo el voltaje y la velocidad del ventilador, haciendo que el ritmo desapareciera.

Otro cambio, que está relacionado con uno de los ventiladores que hice, es la instalación de un ventilador superior de fuelle de pared de papel ubicado más al frente. Su propósito es evitar que este ventilador succione aire que aún no haya pasado por ninguno de los disipadores de calor. También intenté hacer otras paredes de papel que evitaran que el aire de escape de la GPU fuera absorbido por el enfriador de la CPU. De hecho, redujeron la temperatura de la CPU, pero a costa de que la GPU se calentara más, así que al final los eliminé.

Otra modificación inusual que hice es la eliminación del filtro de polvo en el escape de esos dos ventiladores superiores (la mayoría de las veces el aire sale de la carcasa de todos modos, y cuando mi PC está apagada, el cajón ubicado ligeramente por encima de la carcasa de la PC lo protege del polvo). También instalé un ventilador de 92 mm frente a dos bahías de unidad de 5,25”vacías (el controlador del ventilador se encuentra justo detrás). Este ventilador no está sujeto por ningún tornillo, solo encaja bien entre el ventilador de 120 mm debajo y la unidad óptica arriba (las superficies de ambos están cubiertas con cinta aislante para proporcionar cierta amortiguación de vibraciones).