×
BLACK FRIDAY - LIVE & DIRECT (24 Nov 2021)

Dispositif spécial Black Friday - Les meilleurs bons plans gamer du Black Friday en LIVE pendant 72H !!!

Problème ventilateur.

Plus
il y a 5 ans 10 mois #69572 par Black_Wolf
Réponse de Black_Wolf sur le sujet Problème ventilateur.
Sur mon montage, je branche l'entrée PWM du ventilateur directement sur la sortie PWM de l'Arduino et ça suffit.
J'ai juste placé un ULN2803A qui me coupe la masse du ventilateur quand je désire le stopper ( signal PWM à 0% ).
Fichier attaché :

Lors des premiers essais... Pin 44 sur la photo. Piloté par le code mis plus haut, je modifie juste le OCR## rattaché à la pin à piloter pour faire changer la vitesse.

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 10 mois #69573 par Black_Wolf
Réponse de Black_Wolf sur le sujet Problème ventilateur.
void setup () {
    TCCR1A = 0x52;
    TCCR1B = 0x1A;
    ICR1 = 79;

    pinMode( 9, OUTPUT );
    pinMode( 10, OUTPUT );
}

void loop () {
    OCR1A = VALUE_1;        // Le pourcentage de PWM pour la sortie 9
    OCR1B = VALUE_2;        // Le pourcentage de PWM pour la sortie 10
    ...
}
Ce code là devrait fonctionner chez toi.
Il semblerait que sur le Nano il n'y ai qu'un timer 16 bits relié sur les broches 9 et 10, et un timer 8 bits, relié sur les broches 6 (OCR0A) et 5 (OCR0B).
J'ai utilisé le timer 16 bits, en mode 14 avec un prescale de 8.
Tu n'as qu'à donner une valeur entre 0 et 79 à OCR1A ou OCR1B pour faire varier le ventilateur correspondant.

J'avoue que chez moi, j'utilise des valeurs entre 10 et 80 par pas de 10, par facilité. Au dessus de 79, il prend 79 comme valeur, donc 80 ça ne fausse pas trop le pourcentage final.
Avec des valeurs de 10 en 10, ça te fait 8 bits, et tu peut tenter d'utiliser le timer 0 en plus du 1. ça te permettras de piloter 4 sorties PWM en 25 kHz.
Bien sur, il faut vérifier les tableaux dans la datasheet pour être certain des valeurs à donner à TCCR0A et TCCR0B.

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 10 mois #69762 par Manghao
Réponse de Manghao sur le sujet Problème ventilateur.

Black_Wolf écrit:

void setup () {
    TCCR1A = 0x52;
    TCCR1B = 0x1A;
    ICR1 = 79;

    pinMode( 9, OUTPUT );
    pinMode( 10, OUTPUT );
}

void loop () {
    OCR1A = VALUE_1;        // Le pourcentage de PWM pour la sortie 9
    OCR1B = VALUE_2;        // Le pourcentage de PWM pour la sortie 10
    ...
}
Ce code là devrait fonctionner chez toi.
Il semblerait que sur le Nano il n'y ai qu'un timer 16 bits relié sur les broches 9 et 10, et un timer 8 bits, relié sur les broches 6 (OCR0A) et 5 (OCR0B).
J'ai utilisé le timer 16 bits, en mode 14 avec un prescale de 8.
Tu n'as qu'à donner une valeur entre 0 et 79 à OCR1A ou OCR1B pour faire varier le ventilateur correspondant.

J'avoue que chez moi, j'utilise des valeurs entre 10 et 80 par pas de 10, par facilité. Au dessus de 79, il prend 79 comme valeur, donc 80 ça ne fausse pas trop le pourcentage final.
Avec des valeurs de 10 en 10, ça te fait 8 bits, et tu peut tenter d'utiliser le timer 0 en plus du 1. ça te permettras de piloter 4 sorties PWM en 25 kHz.
Bien sur, il faut vérifier les tableaux dans la datasheet pour être certain des valeurs à donner à TCCR0A et TCCR0B.


Oh ! Merci bien, il faudrait que je me plonge dans la compréhension de la modification des registre.
Le ULN2803A fonctionne comme un relais je présume.

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 10 mois #69787 par Black_Wolf
Réponse de Black_Wolf sur le sujet Problème ventilateur.
Oui, il me semble que c'est un réseau de transistors montés en darlinghton. Mais je ne suis pas dans l'électronique.
Pour ce que j'en sais, je l'alimente en 5 ou 12 V suivant ce que je met derrière, et j'ai 8 "entrées" dessus.
Attention, c'est un retour à la masse !
Par précaution, pour des ventilateurs, je double les entrées / sorties sur le ULN.

Pour les registres, il te faut la datasheet de ton microproc (at328 il me semble avoir lu), et tu cherche le chapitre 8 bits ou 16 bits timers.
Après avoir lu la moitié, tu tomberas sur des tableaux pour TCCR#A, puis TCCR#B qui te disent quoi choisir en fonction de tes besoins. ( Mode 14 pour le FAST PWM, sans modification de la fréquence et 2 comparateurs de disponibles pour TCCR#A ), et prescale de 8 pour TCCR#B. Tu n'as pas besoin d'avoir de correction d'erreur donc tu peut laisser ces bits à 0.
Après avoir placé chaque tableaux, tu auras deux chiffres binaires de 8 bits qui seront tes valeurs pour TCCR#A et TCCR#B.
ICR# se calcule selon une formule, elle est donnée dans le lien que j'ai mit plus haut, j'ai la flemme de rechercher ce soir, mais pour ton application, ce seras 79.
Ensuite, le microproc compare la valeur de tes deux registres OCR#A et OCR#B à celle de ICR# pour ajuster le PWM.

Mais tu peut faire d'autres choses aussi, à toi de voir...

En tout cas, chez moi c'est sur ça que mon programme s'appuie, et c'est totalement transparent et rapide.
Je balancerait peut être le code quand j'aurais terminé, peut être qu'un pro saurait l'optimiser.
Mais pour le moment, c'est encore trop brouillon à mon gout.

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 10 mois #69788 par admin-Guillaume
Réponse de admin-Guillaume sur le sujet Problème ventilateur.
Perso vous m'avez perdu en route :)

--->>>>> Vous pouvez également nous aider et soutenir le site ! C'est gratuit !
Il suffit de passer par les liens suivants pour effectuer votre commande :
Amazon / Materiel.net / LDLC / Top Achat / Grosbill / RueduCommerce / Cdiscount / FNAC / Kinguin
Cela ne vous coûtera rien ( 0€) ! De notre côté cela nous aide à payer l'hébergement mais également à développer le site ! Merci d'avance pour votre soutien !

Notre communauté est active quotidiennement sur les réseaux sociaux !

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 10 mois #69804 par leboson
Réponse de leboson sur le sujet Problème ventilateur.
tout pareil

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 10 mois #69805 par Black_Wolf
Réponse de Black_Wolf sur le sujet Problème ventilateur.
C'est parce que vous n'appliquez pas la bonne méthode et que vous n'avez pas une vue globale de la situation.
Quand j'aurais le temps, je mettrai un exemple qui devrait rendre mon charabia compréhensible.

Concernant la méthode, je dois avouer que je code bien mieux quand j'ai un petit coup dans les carreaux. Çà m'ouvre l'esprit et me donne des idées rapidement.
Bien sur, pas de quoi être chiffon carpette non plus !

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 10 mois #69874 par Black_Wolf
Réponse de Black_Wolf sur le sujet Problème ventilateur.
Voilà, un peu brouillon, mais c'est comme ça qu'il faut voir les tableaux pour définir les modes de fonctionnement.
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 6 mois #87361 par Black_Wolf
Réponse de Black_Wolf sur le sujet Problème ventilateur.
Aller, je fais remonter un peu le sujet...
De mon côté j'avance petit à petit. J'ai déjà "préparé" deux circuit imprimés doubles couches pour la partie supérieure de mon PC.
Un circuit venant prendre place à côté des 3 ventilateurs supérieurs, et reprenant leurs branchements, ainsi que deux sondes.
Le second circuit lui vient remplacer le réhobus intégré du Cosmos II. Il est juste un peu plus long et un peu plus large.
Il me reste à faire le circuit imprimé ou se placeras l'Arduino et qui se rangeras dans un rack à disque dur. Par contre, par soucis de simplicité, il me faudra encore un circuit sur le côté pour tout brancher simplement.
En parallèle de tout ceci, j'ai pris quelques mesures du boitier, et je vais créer des cloisons / mini boitiers par impression 3D pour tout ranger. Il vas donc y avoir du changement !

Pour le programme, j'ai remplacé mon Arduino MEGA par un Arduino DUE qui est plus flexible au niveau des interruptions, et surtout qui tourne en 32 bits.
C'est un peu plus chiant à programmer, mais je m'en sort.
6 sorties PWM ayant chacune son miroir sur d'autres broches et qui me permettent de piloter 6 groupes de ventilateurs en 4 broches ou non
2 sorties PWM configurées pour créer un signal correspondant à des vitesses de ventilateur et qui seront reliées à... 2 cartes graphiques ( watercoolées ) pour avoir un retour dans les softs.
5 Timer en mode capture me permettant de lire en simultané 5 vitesses de ventilateurs. Les deux pompes sont branchées dessus, Les 3 ventilateurs supérieurs aussi, mais eux je fais une moyenne pour envoyer vers les cartes graphiques. ( Le radiateur supérieur correspond à celui de ma carte graphique. )
Bien sur, inutile de préciser que les Timers comme le PWM ne consomment rien en temps d’exécution du programme et sont non bloquants.

Sinon, tous les boutons du boitier sont interfacés, ainsi que leur retour lumineux.

Il ne me reste plus qu'à coder la partie lecture des sondes et créer des scénarios pour la parti automatique.
Et aussi interfacer avec la carte mère. L'envoi des vitesses des ventilateurs vers l'Arduino et la carte mère en simultané fonctionne, mais j'aimerai assez récupérer le signal PWM venant de la carte mère.

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 6 mois #87399 par Manghao
Réponse de Manghao sur le sujet Problème ventilateur.
Pour ma part, j'ai acheté un rhéobus, ma carte Mega a cramée je ne sais comment, branché en USB pendant une communication série avec le PC

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 6 mois #87436 par Black_Wolf
Réponse de Black_Wolf sur le sujet Problème ventilateur.
Arf, pas de bol pour toi.
Pourtant c'est solide ces bêtes là... Les miennes ont acceptées pas mal de choses !

Connexion ou Créer un compte pour participer à la conversation.

Plus
il y a 5 ans 6 mois #87676 par Manghao
Réponse de Manghao sur le sujet Problème ventilateur.
Je sais que c'est solide, mais je sais pas ce quelle a eu. Envois des photos de ton installation quand tu aura fini :)

Connexion ou Créer un compte pour participer à la conversation.