Le contrôle d’un signal PWM de ventilateur à 4 fils à l’aide d’Arduino ne permet que deux réglages

Wolfen

Le contrôle d’un signal PWM de ventilateur à 4 fils à l’aide d’Arduino ne permet que deux réglages


J’ai connecté ma broche pwm à mon arduino comme dans ce tutoriel

http://fritzing.org/projects/reading-pc-fan-rpm-with-an-arduino/

entrez la description de l'image ici

Cela fonctionne correctement. Je peux lire et régler la vitesse en utilisant un croquis de ce site Web:

http://www.beefrankly.org/blog/2011/12/21/read-out-4-pin-cpu-fan-speed/

 int  fanPulse =   0 ; 
 unsigned   long  pulseDuration ; 

 void  setup () 
 { 
 Serial . begin ( 9600 ); pinMode ( fanPulse ,  INPUT ); digitalWrite ( fanPulse , HIGH ); 
 } 

 void  readPulse ()   { pulseDuration =  pulseIn ( fanPulse ,  LOW ); 
 double  frequency =   1000000 / pulseDuration ; 

 Serial . print ( "pulse duration:" ); 
 Serial . println ( pulseDuration ); 

 Serial . print ( "time for full rev. (microsec.):" ); 
 Serial . println ( pulseDuration * 2 ); 
 Serial . print ( "freq. (Hz):" ); 
 Serial . println ( frequency / 2 ); 
 Serial . print ( "RPM:" ); 
 Serial . println ( frequency / 2 * 60 ); 

 } 

 void  loop () 
 { analogWrite ( 3 , 20 ); delay ( 5000 ); readPulse (); analogWrite ( 3 , 50 ); delay ( 5000 ); readPulse (); analogWrite ( 3 , 100 ); delay ( 5000 ); readPulse (); analogWrite ( 3 , 200 ); delay ( 5000 ); readPulse (); analogWrite ( 3 , 255 ); delay ( 5000 ); readPulse (); 
 } 

Il me semble que je ne peux saisir que des valeurs supérieures à 127 et inférieures à 127. Il n’y a pas de pas entre elles. Le ventilateur ne tourne pas plus lentement lorsque je passe de 126 à 0 ou de 128 à 255.

Quelques résultats que j’obtiens:

 100 : pulse duration : 19058 time for  full rev .   ( microsec .): 38116 freq .   ( Hz ): 26.00 RPM : 1560.00 


 0 : pulse duration : 19160 time for  full rev .   ( microsec .): 38320 freq .   ( Hz ): 26.00 RPM : 1560.00 


 127 : pulse duration : 9032 time for  full rev .   ( microsec .): 18064 freq .   ( Hz ): 55.00 RPM : 3300.00 


 255 : pulse duration : 9151 time for  full rev .   ( microsec .): 18302 freq .   ( Hz ): 54.50 RPM : 3270.00 

Y a-t-il une erreur que j’ai commise ou est-il possible que mon fan n’accepte pas les valeurs précises? Pouvez-vous recommander 4 ventilateurs câblés que je pourrais utiliser pour cela ou d’une autre manière? J’ai pensé à utiliser un SG2524N pour contrôler un moteur à deux fils, mais je n’ai pas d’expérience avec cela. Merci pour vos conseils.

Ignacio Vazquez-Abrams

Êtes-vous sûr que la broche 3 est un canal PWM sur votre Arduino? Utilisez une LED pour tester.

Wolfen

J’utilise maintenant SoftPWM, toujours pas de changement. Je vais changer le ventilateur et réessayer

Réponses


 tester

Les fans n’utilisent pas les fréquences PWM d’origine. La fréquence de contrôle PWM doit être de 25 kHz. Un Arduino 16 MHz peut le faire relativement facilement via un logiciel. Recherchez simplement « 4 wire fan arduino » et il y a pas mal de messages dessus, y compris un exemple de code pour régler la fréquence du prescaler afin que le PWM de sortie soit à 25 kHz.

Passant

D’accord. 25 à 50 HERTZ est un rapport cyclique extrêmement faible pour un ventilateur.

DRS David Soft

Voici un lien pour configurer PWM 25KHz sur Arduino: arduino.stackexchange.com/a/25623/7732

 

#à, #de, 4, contrôle, d’arduino, d’un, deux, fils?, l’aide, Le, ne, permet, PWM, que, réglages, Signal, ventilateur

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *