Sifflement moteur en pwm

Bonjour,

Je viens de changer mes moteurs de ventilo dans ma serre. Ils étaient d'occase et passablement âgés. Ils fonctionnent en PWM de manière à moduler l'apport de chauffage ou de refroidissement en fonction de la température.
Bref ça fonctionne comme avant mais ça siffle (à 976 Hz). Les plantes s'en foutent (enfin je pense) mais c'est pénible. Que faire à part filtrer les hautes fréquences ?

Merci d'avance

Bonsoir lacuzon
changer la F°du PWM si c'est possible
le PWM est initié par quoi ?

https://arduino.blaisepascal.fr/modifier-la-frequence-pwm/

Pour ne pas faire une usine à gaz, on peut faire simplement avec les cartes que je connais (nano, nanopro, uno, mega):
TCCR?B = bonneValeur;

Pour cela il faut savoir quelle est la carte utilisée.
Si c'est une parmi nano, nanopro, uno, mega:

  • quel timer est utilisé ou quel est la pin utilisée.
  • si c'est le timer 0, les fonctions millis(), micro() ou delay() est elle utiliséeet si oui lesquelles?

Et un simple filtre RC pour ne garder que la composante continue ?

Ou les deux : passer à une fréquence moins audible (le maximum de sensibilité de l'oreille est entre 800 Hz et environ 1,2 kHz) et un filtrage.

J'utilise un uno et j'ai gardé la fréquence par défaut c'est a dire le diviseur 64. A l'époque, quand j'ai pondu mon programme, j'avais fait divers essais et m'était fixé à 976 Hz.
Si je change, je dois changer la dynamique dans la fonction map. Comme c'est un peu lointain, je n'ai pas trop envie de rebricoler mon code...

Je pense que le faible bruit transmis par les moteurs précédents est dû à leur inertie. Ils sont très lourds et moins agiles que les nouveaux.

J'utilise les pins 5 et 6
.

Si je filtre, je perds l'intérêt du hachage, je me retrouve à alimenter mes moteurs en continu. Donc c'est un peu la quadrature du cercle.

Un ventilateur 4 broches fonctionnera à 500Hz, un ventilateur à 2 ou 3 broches produira pratiquement à coup sûr un sifflement audible.

void setup()
{
  // prescaller for 31.372KHz
  TCCR2B &= B11111000;
  TCCR2B |= (0 << CS22) | (0 << CS21) | (1 << CS20);
}

Non le filtrage est équivalent à une intégration.
Le condensateur ne peut pas rester chargé vu qu'il est chargé par le moteur.
Sans réseau RC c'est le moteur, qui est un organe lent, qui joue le rôle de l'intégrateur.
Avec un réseau RC tu ne fais qu'augmenter un phénomène qui se produit naturellement.
Tu ne fais pas varier la vitesse du ventillo à 1000 Hz mais à quelques Hz.

Oui, je suis d'accord, le filtrage intègre, donc s'il intègre, la tension aux bornes du moteur va chuter de 12 volts max à sa valeur intégrée ce que je vois sur mon contrôleur quand je vérifie les tensions aux bornes des ventilos quand le PWM est en fonction.

Ou je n'ai rien compris, éventualité plausible!

Sur ton multimètre tu mesures une pseudo tension moyenne qui est le résultat de l'intégration par le moteur de ton signale PWM.

Sur la uno, les broches 5 et 6 correspondent au timer 0!

On peut changer le prescaler si les fonctions micros(), delay(), et millis() ne sont pas utilisées, sinon il faut aussi ajuster tous leurs paramètres.

Deux cas, le timer 2 est utilisé pour faire autre chose, auquel cas ceci n'est pas utilisable, soit le timer 2 n'est pas utilisé par ailleurs et un simple

void setup()
{
  // prescaller for 31.372KHz
  TCCR2B = B11111001;
}

suffirait. Bon, mais ici, c'est le timer 0 qui est utilisé.


Pour changer la fréquence du hachage dans le cas présent, il faut savoir si micros() et millis() sont utilisées. delay() n'est pas forcément un gros problème, on peut la remplacer par _delay_ms(). On peut donc éventuellement changer la fréquence.
Sinon, si il est possible d'utiliser un autre timer (broches 9 et 10 pour le timer 1 ou 3 et 11 pour le timer2, ce serait une solution. A condition que ces timers ne soient pas utilisés. Par exemple Servo utilise le timer 1 sans le crier sur les toits.


L'intérêt du hachage c'est que le module de puissance ait un bon rendement. Si le filtrage se fait avec self et condensateur, cela ne change quasiment rien au rendement de l'ensemble.

Merci des réponses et de ton explication Henri sur le choix des broches. Je n'n'étais pas allé aussi loin quand j'ai opté pour 5 et 6.

Sur le filtrage avec self et condensateur, je comprends que l'on puisse supprimer les harmoniques mais la fréquence fondamentale doit bien être maintenue pour bénéficier de l'effet de hachage.

Un signal périodique comme la PWM peut être traité comme un signal numérique ou un signal analogique. Il y a corespondance totale.

Si on décompose un signal PWM avec les séries de Fourrier on trouve une composante continue, qui dépend dirrectement du rapport cyclique et une somme de signaux sinusoïdaux dont les amplitudes dépendent aussi du rapport cyclique.

Le moteur ne "prend" que la composante continue sauf quand il siffle où dans le cas présent il prend la fréquence fondamentale (dite harmonique 1) du signal PWM. Mais cette fréquence fondamentale ne peut pas le faire tourner puisqu'elle est alternative, seulement le faire vibrer si elle est proche de la fréquence de résonnance mécanique de certains de ses éléments, d'où le sifflement.

Le seul petit inconvénient au filtrage est dans le cas d'un filtrage RC où selon le choix de la valeur de la résistance il peut y avoir une chute de tension dans la résistance en série avec le moteur : on a toujours U = RI.

Traiter le problème analogiquement ou numériquement n'aura aucune influence sur le "hachage".
Si il y en aura une :

  • Mathématiquement un intégrateur introduit toujours un retard.
  • Physiquement on se pose la question quel est la valeur de ce retard, est-il perturbant ?

@68tjs
coil whine.
J'ai constaté (confirmé par les datasheets) que certains moteurs, surtout, des ventilateurs de dernière génération,ne supporte plus le PWM

En général la fréquence PWM des ventilos de PC est aux alentours de 25KHz.
Parmi ceux que j'ai testé seuls les ventilateurs 4 fils ne sifflent pas avec un PWM à 500Hz.
Les ventilateurs 4 fils comportent une électronique et la broche de commande se pilote sans problème avec une sortie de µcontrôleur. L'électronique se charge de piloter le moteur. Même avec un rapport PWM de 0% le ventilateur tourne, à sa vitesse minimale.
Les autres ventilateurs 2 et 3 fils peuvent être pilotés en PWM, à condition d'ajouter un transistor pour fournir la puissance. A 500Hz de PWM ils sifflent presque à coup sûr.
L'ATMEGA n'offre pas une suite de diviseurs très riche : 1, 8, 64, etc. On ne pourra pas obtenir un PWM à 25KHz, mais j'ai fait des essais à 31KHz et le ventilateur fonctionne parfaitement.

bonjour henri
Je pense que là , @Lacuzon parle de ventilateur de radiateur automobile en 12V

Le pwm est appliqué à un mosfet

La dessus, je ne suis pas d'accord. Par défaut changer de diviseur est une solution ultra simple, mais on peur choisir la fréquence et le rapport cyclique dans certaines limites. Pour preuve les servos sont pilotés par du 50Hz en PWM variables. Et pour un ou deux servos, cela peut se faire par hard (avec un timer 2, pas avec les timers 8 bits).
Maintenant par soft, on peut faire du PWM sur n'importe quelle broche à n'importe quelle fréquence (enfin avec certaines limites).

Il serait bien de le préciser.

Oui..., mais ....,
Le premier ventilateur ne vibrait pas à 900 Hz.
Le second vibre. Hypothèse : le second à une fréquence de résonance mécanique plus élevée, probablement parce qu'il a plus de "plastoque" et moins de métal.
Augmenter la fréquence de récurrence de la PWM résoudra ce problème, mais en soulèvera peut-être d'autres.

Exact, mes vieux moteurs sont de gros bestiaux de 250W avec gros bobinage, poids élevé et tout en métal d'où grosse solidité et grosse inertie donc faible bruit.

Les nouveaux sont beaucoup plus légers en ABS et métal, fabriqués vous savez où...leur intérêt est leur plus faible puissance, 80W et leur prix, en gros 4 fois moins chers que les moteurs/ventilos équipant les voitures.

J'ai d'ailleurs une question connexe, le fait d'alimenter un moteur à courant continu en PWM ( je me pose seulement aujourd'ui la question) n'est-il pas préjudiciable aux charbons du moteur qui sont excités tous les kHz ?

Cela dit, mon installation tournait depuis plusieurs avec des moteurs fabriqués en 2001 et 2003. C'est seulement cette année qu'ils ont commencé à se gripper.

Ce n'est que mon avis de non spécialiste des moteurs, mais en électronicien analogicien je dirai que le bobinage d'un moteur est une très grosse inductance et que cette très grosse inductance coupe naturellement les fréquences élevées. À mon avis le moteur ne les voit pas, au du moins avec le sifflement, il ne les voit pas beaucoup.

Il y a un risque à monter trop haut en fréquence, mais je le pense uniquement théorique.
Le bobinage est fait d'un grand nombre de couches constituées chacune de spires jointives. Avec des fils côte à cote uniquement isolés avec un vernis en couche fine, il va se former de la capacité parasite qui se retrouve en parallèle sur l'inductance.
Quand la fréquence augmente l'impédance de l'inductance du bobinage augmente, cela va dans le bon sens, mais la capacité se transforme de plus en plus en court-circuit et cela ne va pas dans le bon sens.

Dans le cas d'un ventilateur, c'est plus un cas d'école qu'un risque.
Mais perso je reste prudent et j'applique la méthode des petits pas et il y a longtemps que j'ai compris que qui peut le plus ne peut pas forcément le moins.

C'est sûr que l'augmentation de la fréquence de récurrence de la PWM est le plus simple puisqu'il n'y a rien à ajouter.
Il faut juste ne pas toucher au timer 0 si tu veux continuer à utiliser les fonctions de temps arduino et prendre le timer 2 qui est aussi 8 bits.
Le timer 1 est un 16 bits avec des formes de PWM supplémentaires, mais qui ont une fréquence max inférieure à celle des timers 8 bits.

Tout est indiqué dans la datasheet.
Avec un 328p pour faire de la PWM sur le timer 2 il faut choisir les sorties.
OC2A (PB3 ou D11) -->aussi utilisé en mode ISP et en mode SPI : MOSI
OC2B (PD3 ou D3 ) -->aussi utilisé pour l'interruption Int1

Je procèderais par pas et si entre la fréquence actuelle et la fréquence max qui est Fhorloge/256 = 62,5 kHz, si cela ne convient pas je passerai au filtre RC avec une faible valeur de résistance.