Ventilador de PC PWM controlado por Arduino

1

Estoy buscando obtener 2 Evercool EC8015HH12BP 80x10mm (4 hilos) PWM fans. Sin embargo, estoy tratando de controlar la velocidad del ventilador con el arduino a través de los pines PWM.

Encontré el siguiente diagrama que parece ser lo que estoy buscando para conectar el ventilador al Arduino:

Elcódigoquecreoquepuedousareselsiguiente:

intpwmPin=9;//digitalpin9intpwmVal=10;voidsetup(){pinMode(pwmPin,OUTPUT);//setsthepinasoutputSerial.begin(9600);}voidloop(){if(pwmVal!=255){analogWrite(pwmPin,pwmVal);//pwmVal+=10;Serial.print(pwmVal);//PrintredvalueSerial.print("\n");    // Print a tab
  } else {
         Serial.print('at max high');  // Print red value
         Serial.print("\n");    // Print a tab
  }
  delay(1000);
}

Supongo que el PWM estaría en el rango de 0-255 al escribirlo desde el ardunio? Usaré el sensor de temperatura del termómetro DS18B20 para ver qué tan rápido necesito hacer girar el ventilador.

Sin embargo, la velocidad del ventilador (máx. 12 V en este momento) nunca disminuye un bit.

Estoy usando D9 en el Arduino Nano ATmega 328.

La referencia está aquí para la placa (en caso de que tenga la patilla de la placa incorrecta): ingrese la descripción del enlace aquí

¡Cualquier comentario útil sería genial!

    
pregunta StealthRT

3 respuestas

1

Una cosa a tener en cuenta es que


if (pwmVal != 255) {
    pwmVal += 10;
    ...

no se detendrá en 255, ya que pwmVal será 250, luego 260, e.t.c. Una forma de solucionar esto sería escribir


if(pwmVal < 255)
{
   pwmVal += 10;
}
else
{
   pwmVal = 255;
}

Por cierto, su código está escrito, si DEBUG se establece en 0, no ocurrirá nada (pwmVal se establecerá en 0). Si DEBUG se establece en 1, la velocidad del ventilador aumentará a una velocidad establecida por "espera" (que no está definida en este código), hasta que alcance su máximo. El valor también se imprimirá en el puerto serie.

    
respondido por el gbmhunter
1

Lo siento por agregar esto como otras respuestas, pero no se me permitió agregar un comentario a la respuesta de Scott Seidman y agregar más información al comentario de gbmhunters.

La frecuencia PWN se puede controlar mediante los registros PWM, algo que también se requiere si desea utilizar el Arduino como transmisor de infrarrojos, como un control remoto programable.

Puede encontrar más información sobre los registros PWN en esta publicación, escrita inicialmente por Ken Shirriff: enlace

    
respondido por el dazo
0

La frecuencia PWM debe estar entre 21 kHz y 28 kHz de acuerdo con formfactors.org/developer/specs/4_Wire_PWM_Spec.pdf. No sé cómo establecer la frecuencia de PWM en un Arduino, pero sospecho que es necesario configurar.

El mismo documento sugiere que es posible que hayas invertido tus pines de sentido y PWM (¡aunque tu diagrama y tu foto muestran dos cosas diferentes!). No puedo verificar esto o asumir la responsabilidad de su fan si está mal.

    
respondido por el Scott Seidman

Lea otras preguntas en las etiquetas