[RESOLU] Ventilateur 4pins (PC) sur Arduino

Bonjour, j'ai acheté il y a quelques jours une carte Arduino UNO, je souhaite réaliser un interface PC qui permet de controler des ventilateurs et d'afficher des températures.
Ayant des connaissances en programmation, j'ai déjà fais l'interface PC + la communication entre le PC et l'arduino, cependant je n'es très peu de connaissance en éléctronique, et je souhaiterais donc savoir comment gérer la vitesse de ce ventilateur depuis la carte arduino, je pense utiliser la fonctionnalité PWM, cependant je ne sais pas comment crée le driver du ventilateur permettant de faire une vitesse variable et surtout d'alimenter le moteur en 12v (j'ai le 12v depuis une source externe).

PS: Les 4pins correspondent au +12/GND/(Vitesse moteur?)/PWM
PS2: Je dispose du starter kit et de quelques composants.

Merci

Bonjour,

Pour le câblage (avec les couleurs, ...) :
http://www.allpinouts.org/index.php/Motherboard_(CPU)_4_Pin_Fan

Pour la partie "lecture de la vitesse" :
[Arduino] Tachymètre DIY et ventilateur de PC | Skyduino - Le DIY à la française (pour ventilateur 3 broches mais ça doit marcher pareil)
beefrankly blog › Arduino: Read out and control a 4-pin CPU fan

La doc technique des ventilateurs 4 broches pour PC :

Un code d'exemple pour générer le signal PWM de controle :
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1215675974/all

Ah merci ! Cependant si j'alimente le GND et le +12v le moteur tourne, si j'ajoute le PWM ça le regulera automatiquement ?
Pour le moment j'ai fais un petit montage pour moteur DC avec une resistance un transistor et une diode ça marche pas mal cependant je pense que cette méthode est pas adapté pour ce type de moteur.

ProgramFiles:
Ah merci ! Cependant si j'alimente le GND et le +12v le moteur tourne, si j'ajoute le PWM ça le regulera automatiquement ?
Pour le moment j'ai fais un petit montage pour moteur DC avec une resistance un transistor et une diode ça marche pas mal cependant je pense que cette méthode est pas adapté pour ce type de moteur.

Oui ça devrait réguler la vitesse dés que tu appliqueras le signal PWM (niveau logique TTL 0/5v, tu n'as aucun composants à ajouter).
Regarde le code d'exemple cité plus haut et le pdf, il te donnera toute les info dont tu as besoin :wink:

Voila, ça fonctionne grâce au code

void setup()
{
  // configure hardware timer2 to generate a fast PWM on OC2B (Arduino digital pin 3)
  // set pin high on overflow, clear on compare match with OCR2B
  TCCR2A = 0x23;
  TCCR2B = 0x0C;  // select timer2 clock as 16 MHz I/O clock / 64 = 250 kHz
  OCR2A = 249;  // top/overflow value is 249 => produces a 1000 Hz PWM
  pinMode(3, OUTPUT);  // enable the PWM output (you now have a PWM signal on digital pin 3)
  OCR2B = 125;  // set the PWM to 50% duty cycle
}

Cependant à la valeur 0

OCR2B = 0;

Le moteur tourne toujours à petite vitesse, c'est une sécurité permettant d'eviter d'augmenter trop l'intensité ?
Si je souhaite quand même le couper je dois obligatoirement utiliser un transistor sur le circuit 12v ?

Je m'attaque à l'affichage de la vitesse maintenant.

PS: Pourrais-je avoir quelques explications sur les variables/constante ? TCCR2A, TCCR2B, OCR2A et OCR2B ? J'ai pas vu ça dans la doc.

Merci.

ProgramFiles:
PS: Pourrais-je avoir quelques explications sur les variables/constante ? TCCR2A, TCCR2B, OCR2A et OCR2B ? J'ai pas vu ça dans la doc.

Merci.

il faut fouiller dans le datasheet : timer2 / registers description. Les TCCR2X servent à configurer le timer, OCR2X sont les registres de valeur PWM A et B. Si tu arrives à déchiffrer le datasheet, tu vas devenir un kador du timer! Mais c'est long...

Ou puis-je download ce datasheet ?
Sinon, pour la vitesse j'obtiens des valeurs d'environ 4000/5000rpm pour la vitesse minimum et +12000 pour la vitesse max, ça m'a l'air correct.

[HS]Le threading fonctionne avec arduino ? (Lien Fr ?)[/HS]

Merci

bonjour
je suis 1/4 hors sujet (3 pins au lieu de 4) , mais j'assume :grin:
juste pour evocation :
j'ai acheté il y quelques années des "variateurs manuels" de ventilo
j'en ai démonté un ce matin
notez l'utilisation "exotique" d'un 7805 , le schéma (pas de moi)

ProgramFiles:
Ou puis-je download ce datasheet ?
Sinon, pour la vitesse j'obtiens des valeurs d'environ 4000/5000rpm pour la vitesse minimum et +12000 pour la vitesse max, ça m'a l'air correct.

google -> "atmega328p datasheet" -> Smart | Connected | Secure | Microchip Technology
Bonne lecture, j’espère que tu t'y connais en english parce que tu as +560 pages à lire :wink:

ProgramFiles:
[HS]Le threading fonctionne avec arduino ? (Lien Fr ?)[/HS]

Pas de threading en arduino c'est physiquement impossible !
Arduino = microcontroleurs AVR = processeur mono coeur = une action simultané

Tu peut faire du "pseudo threading" avec un RTOS comme duinOS (par exemple), mais ça ne sera pas de l’exécution parallèle, juste de l’exécution partagé.

Ok merci, sujet résolu, j'ouvre un topic pour le threading avec duinos.