Je contrôle un ventilateur PC PWM à 4 broches à partir d'un PIC16F684 avec la vitesse du ventilateur générée par une lecture ADC d'un capteur de proximité. Tout fonctionne bien.
Je ne prévoyais pas à l'origine d'utiliser la sortie du tachymètre du ventilateur, mais comme elle est disponible, je la surveillais avec ma portée juste pour voir que ma correspondance entre la proximité et la vitesse du ventilateur fonctionne.
Maintenant, ce que j'ai remarqué, c'est que lorsque le PWM fait fonctionner le ventilateur à 100%, le signal de tachymètre (qui est un drain ouvert tiré via une résistance de 10K) est agréable et propre:
Cependant, quand je cours à moins de 100%, c'est bruyant:
Zoom sur ce bruit:
Je suppose qu'il est affecté par le signal PWM, mais j'aimerais comprendre pourquoi et comment pour pouvoir le nettoyer si nécessaire à l'avenir. Vraiment, je m'intéresse à ce que vous devez faire lorsque vous voyez un bruit comme celui-ci, comment vous trouvez la cause et comment vous le "corrigez". La portée parvient à se déclencher ok, donc je me demande si je l'alimente simplement à la broche d'interruption externe sur le PIC (RA2), qui est une entrée de déclenchement de Schmitt avec des niveaux CMOS, alors je ne "verrai" pas le bruit et je pourrait par exemple faire écho d'un signal propre d'une autre broche pour atténuer une LED ou quelque chose.
Alors, quelqu'un peut-il expliquer en termes généraux comment reconnaître et corriger les signaux bruyants? Ou si c'est trop large peut-être juste ce problème particulier? De plus, s'il y a un problème avec mon circuit, ce serait bien de le savoir aussi. Dans le schéma ci-dessous, le signal que j'affiche est l'entrée TACH à gauche du circuit:
MISE À JOUR
Après des suggestions utiles de @MichaelKaras et @techydude, j'ai exclu Q2 comme source de tout problème en le supprimant complètement du circuit et en mettant directement le ventilateur à la terre. Aucun effet significatif sur le bruit.
J'ai donc codé l'interruption externe sur RA2 pour faire écho à un signal "nettoyé" d'une broche de rechange (RA1 dans ce cas), ce qui a beaucoup aidé mais qui scintillait toujours en raison de fausses interruptions. (Donc, je définirais l'interruption pour piéger le front montant, puis je basculerais sur le front descendant lors du déclenchement et vice versa, en réglant / réinitialisant RA1 en conséquence).
Mais, après avoir également ajouté un condensateur 100nF sur R3 (dans le cadre de la suggestion de @ techydude), j'obtiens maintenant une sortie beaucoup plus stable. La capture d'écran ci-dessous est le signal TACH après le nettoyage via l'entrée et la re-sortie Schmitt Triggered RA2:
Réponses:
À propos de votre schéma:
Tout semble bien, vous pouvez augmenter le R2 à 10k ou même 100k, la capacité du MOST est si petite, le FAN aura une inertie de rotation beaucoup plus importante que le délai de désactivation dans le MOST, probablement même avec 1M. De cette façon, l'emplacement de votre 100R n'est pas pertinent et pendant que vous ne perdez aucun mA. Si vous ne maintenez jamais de uC dans la réinitialisation, cela n'est techniquement même pas nécessaire du tout, car votre uC le tirera activement vers le haut ou vers le bas.
Pour le signal PWM, vous pouvez voir si la fiche technique permet un pull-up externe jusqu'à 12V, bien que je doute que cela fasse une grande différence dans les deux cas.
À propos du bruit:
EDIT: J'ai mal lu votre intrigue pour kHz, ce qui est stupide si vous y pensez, où c'est Hz. Une partie de mon histoire changera un peu (comme le discours sur la nécessité de MHz pour le travail numérique), mais l'idée générale demeure.
Je laisserai l'intégralité du post tel quel, mais pour un signal de 100 Hz avec un bruit de 30 kHz, au lieu de 100 kHz avec un bruit de> 5 MHz (cela n'a pas vraiment de sens, non?), Vous pourriez augmenter les résistances qui interagissent avec les condensateurs par un facteur de 10, et également augmenter les condensateurs d'un facteur de 50 à 100. Cela vous permettra d'obtenir une fréquence de filtrage de facteur 1000 inférieure dans tous les exemples. Mais il est également normal d'augmenter simplement les condensateurs d'un facteur de 10 à 20, pour des bords plus nets ou une réponse plus rapide sur votre signal d'intérêt, car 30 kHz est très loin de 100 Hz.
Considérez donc ce post comme écrit pour les hautes fréquences et réduisez les idées, ce qui les rend beaucoup plus faciles à mettre en œuvre aussi! (Surtout le rejet numérique en 3.)
Fin du montage
Puisque vous faites un si bon cas d'utilisation pour travailler sur des méthodes de réduction du bruit, je vais essayer d'en faire un qui s'applique à votre situation.
À tous ceux qui lisent, sachez:
Il s'agit uniquement de bruit sur un signal numérique
Dans un signal numérique, vous pouvez faire l'hypothèse qu'il n'y a que deux tensions qui vous intéressent "on" et "off". Tout ce qui se trouve entre les deux est inutile et appartient au bruit ou au mal. Dans un signal analogique, vous devez connaître tous les niveaux de tension et vous devez effectuer un filtrage réel avec des charges de C, L, etc.
Un problème dans votre signal est que les pics de bruit négatifs au niveau élevé et les pics de bruit positifs au niveau bas sont très proches les uns des autres, donc un simple déclencheur standard, même avec un niveau réglable, ne peut vous garantir absolument que vous n'obtiendrez jamais confus.
Vos options:
1. Modifiez le biais:
Le positif a des pointes négatives très faibles, car votre pull-up ne peut pas gagner du bruit. La chose la plus simple que vous puissiez essayer est de diminuer cette résistance. Il y a un risque que cela n'augmente que les pointes sur le signal d'arrêt, de sorte que cela ne fonctionne pas toujours. Mais il est très possible que cela vous donne une certaine marge entre les pointes pour définir une simple hystérésis.
2. Modifiez les niveaux de tension
Vous pouvez facilement, si le ventilateur le permet, changer le tachymètre à un niveau de tension plus élevé et ajouter un état intermédiaire:
simuler ce circuit - Schéma créé à l'aide de CircuitLab
Maintenant, il peut y avoir juste assez d'espace entre les pointes hautes et basses pour vous assurer que le MOST est toujours allumé, même lorsqu'il y a des pointes négatives et toujours éteint, même s'il y a des pointes positives. Cela peut prendre quelques diodes, zeners ou résistances pour obtenir le point de consigne dans la nouvelle situation, mais si les pointes sur le signal négatif restent ce qu'elles sont, elles ne devraient pas déclencher le MOSFET, tant que vous ne le faites pas remplacez-le par un qui a un seuil de porte inférieur à 2V.
3. Ajoutez une hystérésis "lente":
C'est une astuce couramment utilisée lorsque vous savez qu'un signal de bruit hérissé est au moins d'un ordre de grandeur plus grand que le signal qui vous intéresse. Il retardera un peu le signal, il ne peut donc pas être utilisé dans des situations où le moment exact d'un changement on / off est important.
Mais pour un signal dont vous ne voulez connaître que la forme ou la fréquence, c'est une méthode très robuste. Il commence essentiellement à se déclencher lorsqu'une tension franchit le seuil, mais ne termine cette action que lorsqu'il y reste. Il existe de nombreuses façons d'en créer un.
Vous pouvez le faire dans le contrôleur (ce qui est plus facile en termes de nombre de composants): vous pouvez déclencher sur un flanc, puis échantillonner quelques valeurs supplémentaires à une vitesse suffisante pour voir le haut entre les pics de bruit, mais ne confondez pas le fait de manquer une période entière de bas. Ensuite, vous faites un jugement prédéfini basé sur la connaissance de votre signal et de votre bruit. Par exemple, si vous pouviez échantillonner à 10 MHz, vous pourriez capturer 50 échantillons et être certain qu'une fréquence maximale de 100 kHz ne sera pas ignorée si vous optez pour la règle de la majorité. C'est à dire: au moins 25 doivent être bas pour qu'il soit réellement bas. Vos pointes ne sont que très minces et la plupart du temps c'est le signal d'origine, donc ça pourrait marcher, mais le nombre d'une majorité peut être ajusté. Cela fonctionnera également avec 1 MHz et 6 ou 7 échantillons, mais ce sera moins d'une majorité réelle, donc il peut y avoir à nouveau des risques.
Vous pouvez également le faire en externe: mais c'est déjà BEAUCOUP plus compliqué que d'ajouter un simple filtre, surtout lorsque vous regardez le résultat avec un uC avec une certaine hystérésis en entrée. Mais c'est amusant d'y penser, alors:
simuler ce circuit
U1 est tout ampli-op ou comperator approprié. Les comperators sont de meilleurs commutateurs, souvent avec une meilleure oscillation, mais pour les sous-MHz, un OpAmp avec une oscillation rail / rail décente fera facilement l'affaire.
Bien que ce type d'hystérésis puisse être construit avec au moins une résistance de moins, celle-ci est plus facile à expliquer et à ce titre plus facile à modifier.
Imaginez-le d'abord sans le condensateur:
Tout d'abord, voyez que le diviseur de résistance est influencé par la sortie de U1, il le tirera un peu plus bas ou plus haut à travers la résistance apparente de 20kOhm. Disons que sur l'entrée positive de U1 se trouve une tension de 1,1 V arrondie vers le bas lorsque sa sortie est de 0 et de 3,9 V arrondie vers le haut lorsque sa sortie est de 5 V.
Si l'entrée tachymétrique de démarrage en régime permanent est élevée, la sortie de U1 sera faible, en raison de la nature inversée de l'entrée du tachymètre. Ainsi, l'entrée négative sera, encore une fois en raison de la résistance de rappel supplémentaire, d'environ 2,3 V. Étant donné que l'entrée positive n'est que de 1,1 V, l'entrée doit descendre en dessous de 2,2 V pour que l'entrée négative voit une tension inférieure et que la sortie bascule.
Lorsque la sortie bascule, l'entrée négative verra 3,6 V (car à cet instant le signal d'entrée est de 2,2 V, la sortie de U1 est de 5 V, donc leur milieu, fabriqué par les résistances 10k, est d'environ 3,6 V), mais le positif l'entrée sera passée de 1,1 V à 3,9 V, donc le négatif est toujours en dessous de l'entrée positive et la sortie restera 5 V.
Si le signal "abandonne" rapidement et revient en arrière, la sortie de U1 reviendra rapidement en arrière, mais le pic a déjà dû descendre en dessous de 2,2 V, c'est mieux que rien.
Si le signal descend plus bas à 0, la situation stable ne fera que se renforcer, l'entrée négative chutera à 2,5 V (puisque nous supposons que le tacho du FAN est suffisamment fort pour un pull-down) et le positif restera à environ 3,9. V.
Maintenant, le signal doit monter au-dessus de 2,7 V pour que la sortie retourne dans l'autre sens. Très probablement, 95% de vos pointes seront déjà ignorées.
Ajout du condensateur:
Avec le condensateur, le signal entrant doit fournir suffisamment d'énergie pendant assez de temps pour charger ou décharger le condensateur. En effet c'est déjà un filtre RC. Tout pic qui plonge rapidement puis récupère ne pourra pas décharger le condensateur.
La valeur de C dépend bien sûr du signal source et du signal de bruit. J'ai 510pF garé pour un signal source à 100 kHz contre une durée de pointe de 1us tout au plus, mais je n'ai pas vraiment fait beaucoup de mathématiques, c'est juste un instinct basé sur le temps RC, sentant que cela pourrait être proche de ce qui fonctionnera.
4. Filtrez le bruit
C'est un peu comme filtrer un signal analogique. Vous pouvez utiliser un réseau RC simple, comme expliqué dans la section précédente:
simuler ce circuit
Étant donné que les pointes de bruit sont égales ou inférieures à 1us, elles ne peuvent pas faire de changement très significatif de la tension sur le condensateur, car son temps RC est de 5us. Cela signifie que l'énergie dans les pointes est aplatie à une moyenne. Comme vous voyez des hauts et des creux bas sur les pointes, il est même possible que les moyennes soient très proches de 0V et 5V, mais cela ne peut être dit qu'avec de meilleures images ou simplement une expérience. Puisque vous l'alimentez sur une broche uC, le temps RC sera probablement suffisant pour le voir comme haut ou bas. Cela donnera une petite distorsion en raison de la charge plus lente que la décharge, causée par la résistance de rappel. Certains ajustements de valeurs peuvent donner un résultat dans lequel cela est négligeable.
Si cela ne suffit pas, vous pouvez ajouter des composants supplémentaires, mais vous en faites trop rapidement lorsque votre bruit dominant est au moins 10 fois "plus rapide" que votre signal.
Vous pouvez ajouter une inductance de 4,7 uH en série avec la résistance pour lisser certains flancs à haute fréquence, peut-être même 10 uH.
Mais pour être honnête, dans le cas de "l'alimenter en uC", la seule raison d'expérimenter avec les L dans un signal de votre genre est de trouver un équilibre dans lequel le R est grand, C est petit et L aide simplement à lisser quelques flancs, de sorte que R2 / R1 sera suffisamment petit pour ignorer la différence de temps de montée et de descente. comme un R1 de 33k, un C de 150pF et un L en série avec R1 de 56uH. Ou peut-être qu'une perle de ferrite au lieu de l'inducteur, dépend un peu de la netteté de vos pointes.
Mais déjà trop réfléchir, je dirais.
la source
Un bruit comme celui-ci provenant d'un tachymètre de ventilateur est courant, car les circuits (qui incluent généralement un capteur à effet Hall) dans le ventilateur qui génère la sortie du tachymètre sont eux-mêmes coupés on / off à votre fréquence PWM (lorsque votre sortie PWM est à autre chose que 100% -On), pas seulement l'alimentation du moteur lui-même. Bien sûr, ils auront une certaine capacité pour lisser l'alimentation de ces circuits, mais étant donné, disons, une alimentation de ventilateur de 12V, tant qu'il y a suffisamment de capacité pour maintenir plusieurs volts entre les périodes d'arrêt PWM minimum, c'est suffisant pour piloter le Hall- Capteur d'effet et pull-up de la sortie tacho (si le ventilateur inclut son propre pull-up sur la sortie tacho), pour fournir un signal de sortie récupérable. Oui, les fans sont en désordre lorsque vous PWM leur offre. Certains ventilateurs offrent une entrée de vitesse PWM distincte de leur alimentation + 12V.
Votre PWM semble être d'environ 27 kHz. Donc, la bonne chose dans cette situation spécifique est que votre sortie tachymétrique à 100% semble être d'environ 800 Hz, ce qui est <1 / 30ème de la fréquence de votre PWM, donc filtrer cette sortie tachymétrique pour se débarrasser de la plupart du bruit PWM est facile et mérite d'être fait. Il est tard ici, donc je CBF travaille à travers les calculs, mais parce qu'il est à drain ouvert et que c'est votre tension d'alimentation de pull-up (dans le ventilateur) qui est molestée par PWM, un plafond entre le tachymètre et le rail + 12V (pas le PWM sortie de votre circuit d'entraînement du ventilateur) sera probablement une meilleure option qu'un capuchon sur le tachymètre à la terre. Essayez les deux et voyez. Commencez avec un capuchon en céramique 100n de tension appropriée et voyez à quoi il ressemble.
Avec une entrée Schmigger sur le PIC, vous pourriez même être en mesure de vous éloigner sans filtrer cette sortie de tachymètre avant de la placer dans votre PIC, mais vous avez ce différentiel de fréquence qui vous permettra facilement de faire un long chemin vers le nettoyage vers le haut.
Un problème possible avec votre gestion du signal tachymétrique du ventilateur: si le ventilateur le tire jusqu'à +12 avec un 10k en interne (certains le font, d'autres pas) et vous tirez également le signal tachymétrique vers votre + Rail 5V, alors vous le tirez vers le bas! Il existe différentes configurations de circuits pour résoudre ce problème, en fonction de la tension d'alimentation du ventilateur, de la force du pull-up, etc. Essayez de le mesurer avec votre multimètre et faites-le nous savoir.
la source
Une source possible de bruit sur le signal TACH peut être due au fait que le FET IRF150 n'est pas une impédance ON suffisamment basse. Cela peut être dû au fait que le FET RdsON est assez élevé ou que le FET n'est pas complètement activé à la tension de commande de grille fournie.
Lorsque le courant FAN s'allume et s'éteint avec le signal PWM, il y aura une baisse de la résistance FET, ce qui fait que la référence "GND" du ventilateur monte et descend et se traduit par le bruit vu sur le signal TACH.
Vous pouvez vérifier cela pour voir si l'effet que je décris est le cas en mettant le câble GND de l'oscilloscope sur le drain FET, puis regardez le signal TACH. Le signal aurait l'air beaucoup plus propre.
La solution serait de sélectionner un FET avec un RdsON beaucoup plus faible lorsqu'il est fourni avec un lecteur de grille fourni par votre système.
Une autre idée possible est d'utiliser un P-FET pour commuter le fil + 12V du ventilateur au lieu du fil GND.
Notez que l'agencement de résistance de grille que vous utilisez vous fait perdre une partie de votre potentiel d'entraînement de grille. Déplacez la résistance 1K de l'autre côté du 100ohm.
la source
Cela ressemble à un travail pour un filtre passe-bas. Vous devez conserver le signal utile avec f 1 autour de 1 kHz et supprimer le signal incriminé avec f 2 près de 25 kHz. La fréquence de coupure peut être choisie comme moyenne géométrique de f 1 et f 2 (sous-optimale mais simple):
f c = sqrt (1 * 25) = 5 kHz.
En supposant simple filtre RC sera suffisant, et vous avez déjà la résistance dans le circuit TACH (R 3 = 10 kOhm), la valeur du condensateur approprié doit être calculé pour correspondre à la 5 kHz costant temps :
C = 1 / (2 * pi * fc * R) = 1 / (6,28 * 5000 * 10000) = 3,2 * 10 -9 F.
Il vous suffit donc de souder un condensateur 3nF entre la ligne TACH et la masse. Il atténuera le bruit haute fréquence d'un facteur de 20 ou plus, ce qui devrait être suffisant pour votre application.
la source