Table des matières:

Contrôle PWM DIY pour les fans de PC : 12 étapes
Contrôle PWM DIY pour les fans de PC : 12 étapes

Vidéo: Contrôle PWM DIY pour les fans de PC : 12 étapes

Vidéo: Contrôle PWM DIY pour les fans de PC : 12 étapes
Vidéo: Les ventilateurs de PC 🖥 Alimentation, RPM et PWM ! 2024, Novembre
Anonim
Contrôle PWM DIY pour les fans de PC
Contrôle PWM DIY pour les fans de PC

Ce Instructable décrit la construction d'un contrôleur PWM de ventilateur PC 12 V complet. La conception peut contrôler jusqu'à 16 ventilateurs d'ordinateur à 3 broches. La conception utilise une paire de circuits intégrés à signaux mixtes configurables Dialog GreenPAK™ pour contrôler le cycle de service de chaque ventilateur. Il comprend également deux façons de modifier la vitesse du ventilateur:

une. avec un encodeur quadrature/rotatif

b. avec une application Windows intégrée en C# qui communique avec le GreenPAK via I2C.

Ci-dessous, nous avons décrit les étapes nécessaires pour comprendre comment la puce GreenPAK a été programmée pour créer le contrôle PWM pour les fans de PC. Cependant, si vous souhaitez simplement obtenir le résultat de la programmation, téléchargez le logiciel GreenPAK pour afficher le fichier de conception GreenPAK déjà terminé. Branchez le kit de développement GreenPAK sur votre ordinateur et appuyez sur programme pour créer le circuit intégré personnalisé pour le contrôle PWM pour les fans de PC.

Étape 1: Schéma fonctionnel du système

Schéma fonctionnel du système
Schéma fonctionnel du système

Étape 2: Conception du décodeur rotatif SLG46108

Conception du décodeur rotatif SLG46108
Conception du décodeur rotatif SLG46108
Conception du décodeur rotatif SLG46108
Conception du décodeur rotatif SLG46108
Conception du décodeur rotatif SLG46108
Conception du décodeur rotatif SLG46108

Un encodeur rotatif est utilisé pour augmenter ou diminuer le cycle de service des ventilateurs manuellement. Cet appareil émet des impulsions sur ses sorties Canal A et Canal B distantes de 90°. Voir AN-1101: Unclocked Quadrature Decoder pour plus d'informations sur le fonctionnement d'un encodeur rotatif.

Un décodeur rotatif cadencé peut être créé à l'aide d'un Dialog GreenPAK SLG46108 pour traiter les signaux des canaux A et B et les émettre sous forme d'impulsions dans le sens antihoraire (CCW) et horaire (CW).

Lorsque le canal A est en avance sur le canal B, la conception émet une courte impulsion en CW. Lorsque le canal B précède le canal A, il émet une courte impulsion sur CCW

Trois DFF synchronisent l'entrée du canal A avec l'horloge. De même, le retard du canal avec OUT0 réglé sur deux DFF et OUT1 réglé sur trois DFF créent la même fonctionnalité pour le canal B.

Pour créer des sorties CW et CCW, utilisez quelques LUT. Pour plus d'informations sur cette conception de décodeur rotatif standard, visitez ce site Web.

Le décodeur rotatif GreenPAK recevra les impulsions d'entrée A et B et produira les impulsions CW et CCW comme illustré à la figure 4.

Le circuit après les portes XOR garantit qu'il n'y aura jamais d'impulsion CW et d'impulsion CCW en même temps, permettant toute erreur avec l'encodeur rotatif. Le retard de front descendant de 8 ms sur les signaux CW et CCW les oblige à rester au niveau haut pendant 8 ms plus un cycle d'horloge, ce qui est nécessaire pour les SLG46826 GreenPAK en aval.

Étape 3: Conception du contrôleur de ventilateur SLG46826

Conception de contrôleur de ventilateur SLG46826
Conception de contrôleur de ventilateur SLG46826

Étape 4: génération PWM avec compteurs décalés

Génération PWM avec compteurs décalés
Génération PWM avec compteurs décalés
Génération PWM avec compteurs décalés
Génération PWM avec compteurs décalés

Une paire de compteurs de décalage avec la même période est utilisée pour générer le signal PWM. Le premier compteur définit un DFF, et le second le réinitialise, créant un signal PWM de rapport cyclique cohérent, comme le montrent les figures 6 et 7.

CNT6 définit DFF10 et la sortie inversée de CNT1 réinitialise DFF10. Les broches 18 et 19 sont utilisées pour émettre le signal PWM vers des circuits externes

Étape 5: Contrôle du cycle de service avec injection d'horloge et saut d'horloge

Contrôle du cycle de service avec injection d'horloge et saut d'horloge
Contrôle du cycle de service avec injection d'horloge et saut d'horloge
Contrôle du cycle de service avec injection d'horloge et saut d'horloge
Contrôle du cycle de service avec injection d'horloge et saut d'horloge

Le contrôleur de ventilateur reçoit les signaux CW et CCW en tant qu'entrées du décodeur rotatif et les utilise pour augmenter ou diminuer le signal PWM qui contrôle la vitesse du ventilateur. Ceci est réalisé avec plusieurs composants logiques numériques.

Le cycle de service doit augmenter lorsqu'une impulsion CW est reçue. Cela se fait en injectant une impulsion d'horloge supplémentaire dans le bloc CNT6, l'amenant à sortir un cycle d'horloge plus tôt qu'il ne l'aurait fait autrement. Ce processus est illustré à la figure 8.

CNT1 est toujours cadencé à un taux constant, mais CNT6 a quelques horloges supplémentaires injectées. Chaque fois qu'il y a une horloge supplémentaire au compteur, il décale sa sortie d'une période d'horloge vers la gauche.

À l'inverse, pour diminuer le rapport cyclique, sautez une impulsion d'horloge pour CNT6, comme illustré à la figure 9. CNT1 est toujours cadencé à un taux constant, et il y a des impulsions d'horloge sautées pour CNT6, où le compteur n'a pas été cadencé quand il était supposé à. De cette façon, la sortie de CNT6 est poussée vers la droite d'une période d'horloge à la fois, raccourcissant le cycle de service PWM de sortie.

La fonctionnalité d'injection d'horloge et de saut d'horloge est effectuée à l'aide de certains éléments logiques numériques dans le GreenPAK. Une paire de blocs multifonctions est utilisée pour créer une paire de combinaisons de verrouillage/détecteur de bord. LUT0 4 bits est utilisé pour multiplexer entre le signal d'horloge général (CLK/8) et les signaux d'injection d'horloge ou de saut d'horloge. Cette fonctionnalité est décrite plus en détail à l'étape 7.

Étape 6: Saisie BOUTON

BOUTON Entrée
BOUTON Entrée

L'entrée BUTTON est anti-rebond pendant 20 ms, puis utilisée pour basculer un verrou qui détermine si cette puce particulière est sélectionnée. Si elle est sélectionnée, la LUT à 4 bits transmet les signaux de saut d'horloge ou d'injection. Si la puce n'est pas sélectionnée, la LUT 4 bits transmet simplement le signal CLK/8.

Étape 7: Prévention du renversement du cycle de service

Prévention du renversement du cycle de service
Prévention du renversement du cycle de service
Prévention du renversement du cycle de service
Prévention du renversement du cycle de service
Prévention du renversement du cycle de service
Prévention du renversement du cycle de service

Les verrous RS 3 bits LUT5 et 3 bits LUT3 sont utilisés pour s'assurer que vous ne pouvez pas injecter ou sauter autant d'horloges que les compteurs de décalage se retournent. Ceci afin d'éviter que le système n'atteigne 100 % de cycle de service, puis bascule sur un cycle de service de 1 % s'il reçoit une autre horloge injectée.

Les verrous RS empêchent que cela se produise en verrouillant les entrées des blocs multifonctions lorsque le système est à un cycle d'horloge du basculement. Une paire de DFF retarde les signaux PWM_SET et PWM_nRST d'une période d'horloge, comme le montre la figure 11.

Une paire de LUT est utilisée pour créer la logique nécessaire. Si le cycle de service est si faible que le signal PWM_SET retardé se produit en même temps que le signal PWM_nRST, une nouvelle diminution du cycle de service provoquera un retournement.

De même, si l'on approche du rapport cyclique maximal, de sorte que le signal PWM_nRST retardé se produit en même temps que le signal PWM_SET, il est nécessaire d'éviter toute augmentation supplémentaire du rapport cyclique. Dans ce cas, retardez le signal nRST de deux cycles d'horloge pour vous assurer que le système ne bascule pas de 99 % à 1 %.

Étape 8: Contrôle du cycle de service avec I2C

Contrôle du cycle de service avec I2C
Contrôle du cycle de service avec I2C
Contrôle du cycle de service avec I2C
Contrôle du cycle de service avec I2C
Contrôle du cycle de service avec I2C
Contrôle du cycle de service avec I2C

Cette conception intègre un autre moyen de contrôler le cycle de service autre que le saut d'horloge/l'injection d'horloge. Un microcontrôleur externe peut être utilisé pour écrire des commandes I2C sur le GreenPAK afin de définir le cycle de service.

Le contrôle du cycle de service via I2C nécessite que le contrôleur exécute une séquence de commandes spécifique. Ces commandes sont présentées dans l'ordre dans le tableau 1. Un "x" indique un bit qui ne doit pas changer, "[" indique un bit START et "]" indique un bit STOP

Le bloc PDLY génère une courte impulsion active haute sur le front descendant du signal CLK/8, appelée !CLK/8. Ce signal est utilisé pour cadencer DFF14 à une fréquence constante. Lorsque I2C_SET passe à l'état haut de manière asynchrone, le prochain front montant de !CLK/8 fait sortir DFF14 de l'état HAUT, ce qui déclenche le CNT5 OneShot. Le OneShot s'exécute pendant le nombre de cycles d'horloge que l'utilisateur a écrit, comme spécifié dans la commande I2C « Write to CNT5 » du tableau 1. Dans ce cas, il s'agit de 10 cycles d'horloge. Le OneShot permet à l'oscillateur de 25 MHz de fonctionner exactement pendant sa durée et non plus, de sorte que LUT0 à 3 bits reçoive le nombre de cycles d'horloge qui ont été écrits sur CNT5.

La figure 15 montre ces signaux, où les horloges rouges sont celles qui sont envoyées à LUT0 à 3 bits, qui les transmet à CNT6 (le compteur PWM_SET), créant ainsi le décalage pour la génération du rapport cyclique.

Étape 9: Lecture du tachymètre

Lecture du tachymètre
Lecture du tachymètre
Lecture du tachymètre
Lecture du tachymètre

Si vous le souhaitez, l'utilisateur peut lire la valeur du tachymètre sur I2C pour suivre la vitesse à laquelle le ventilateur tourne en lisant la valeur CNT2. CNT2 est incrémenté à chaque fois que ACMP0H a un front montant et peut être réinitialisé de manière asynchrone avec une commande I2C. Notez qu'il s'agit d'une fonctionnalité facultative et que le seuil d'ACMP0H devra être ajusté en fonction des spécifications du ventilateur particulier utilisé.

Étape 10: Conception de circuits externes

Conception de circuits externes
Conception de circuits externes

Le circuit externe est assez simple. Il y a un bouton-poussoir connecté à la broche 6 du GreenPAK pour basculer si cet appareil particulier est sélectionné pour la commande rotative, et une LED connectée à la broche 12 et à la broche 13 pour indiquer quand l'appareil est sélectionné.

Étant donné que le ventilateur fonctionne en 12 V, une paire de FET pour contrôler sa commutation est nécessaire. Les Pin18 et Pin19 du GreenPAK pilotent un nFET. Lorsque le nFET est allumé, il tire la grille du pFET LOW, qui connecte le ventilateur au +12 V. Lorsque le nFET est éteint, la grille du PFET est tirée vers le haut par la résistance de 1 kΩ, ce qui déconnecte le ventilateur à partir de +12V.

Étape 11: Conception de circuits imprimés

Conception de circuits imprimés
Conception de circuits imprimés

Pour prototyper la conception, quelques PCB ont été assemblés. Le PCB sur la gauche est le "contrôleur de ventilateur", qui abrite l'encodeur rotatif, la prise 12 V, le SLG46108 GreenPAK et les connecteurs pour la carte de dérivation FT232H USB vers I2C. Les deux PCB sur la droite sont des " Fan Boards ", qui contiennent les SLG46826 GreenPAK, des boutons-poussoirs, des commutateurs, des LED et des en-têtes de ventilateur.

Chaque panneau de ventilateur a un en-tête mâle enveloppé sur le côté gauche et un en-tête femelle sur le côté droit afin qu'ils puissent être connectés en guirlande ensemble. Chaque Fan Board peut être rempli de ressources pour contrôler indépendamment deux ventilateurs.

Étape 12: Application C#

Application C#
Application C#

Une application C# a été écrite pour s'interfacer avec les Fan Boards via le pont FT232H USB-I2C. Cette application peut être utilisée pour régler la fréquence de chaque ventilateur avec les commandes I2C générées par l'application.

L'application envoie une requête ping aux 16 adresses I2C une fois par seconde et remplit l'interface graphique avec les adresses esclaves présentes. Dans cet exemple Ventilateur 1 (adresse esclave 0001) et Ventilateur 3 (adresse esclave 0011) connectés à la carte. Des ajustements au cycle de service de chaque ventilateur individuellement peuvent être effectués en déplaçant la barre coulissante ou en tapant une valeur de 0 à 256 dans la zone de texte sous la barre coulissante.

Conclusion

En utilisant cette conception, il est possible de contrôler indépendamment jusqu'à 16 ventilateurs (puisqu'il existe 16 adresses esclaves I2C possibles) soit avec un encodeur rotatif, soit avec une application C#. Il a été démontré comment générer un signal PWM avec une paire de compteurs décalés, et comment augmenter et diminuer le cycle de service de ce signal sans renversement.

Conseillé: