Ventilateur PWM 4 fils - Démarrage difficile

Bonjour,

J'ai un petit problème concernant le déclenchement du ventilo

matos :

Carte Romeo BLE (compatible Arduino Uno) Ventilateur BeQuiet silent wings 2 pwm 12v 0.2A 1000 rpm alim externe 12v pour le ventilo.

problème n°1 : lorsque je fais un analogWrite(pinFan, 0), donc normalement le ventilo ne tourne plus, dès fois je remarque de micros saccades comme s'il voulait redémarrer. mais il ne tourne pas. Est-ce un problème d'alimentation ou bien de commande via le fil de contrôle (bleu)? Y-a-t-il un composant à intercaler quelque part?

problème n°2 : Je veux faire varier la vitesse du ventilo. Pour cela j'ai déclaré des paliers avec une valeur comprise entre 0 et 255. Seulement mon ventilo n'arrivera pas à démarrer en dessous de 100, on aperçoit des saccades mais il ne parvient pas à se lancer. Est-ce normal ou faut-il insérer un composant (genre condensateur pour booster le démarrage)? si oui quel type et taille? Je précise que si je l'aide manuellement à se lancer, il maintient sa vitesse par la suite.

sinon j'ai bidouillé un petit programme qui me permet de déterminer la valeur min lorsque le ventilo tourne de lui même et je la définie comme étant la vitesse la plus lente. Mais est-ce vraiment la solution... car mon amplitude devient réduite (100-255)

Sinon j'arrive bien à récupérer la valeur rpm via le fil vert et tout marche normalement sauf les cas de figures si dessus. je précise que toutes les masses sont reliées entre elles avec celle de la Romeo.

merci d'avance pour vos réponses!

neo888: ...définie comme étant la vitesse la plus lente. Mais est-ce vraiment la solution... car mon amplitude devient réduite (100-255)

Bonjour Pour la gestion de vitesse "ventilo PC" par pwm , l'amplitude n'est jamais 0/100% Il faut decoller le ventilo lorsqu'il part de 0 tu peux avoir une gestion vitesse plus grande apres mise en route , mais ce ne sera pas une amplitude 0/100% il y a un phénomène d’hystérésis I.e tu "decolle le ventilo" à 30% de PWM , tu peux ensuite peut etre reguler entre 20 et 100

En fait le problème se pose lorsque le ventilo est à l’arrêt et doit démarrer car si je dois simplement réduire la vitesse, il n’y a pas de soucis, il ralenti et se cale à la demande.
Le branchement du ventilo:

  • GRD : branché sur le - de l’alim externe (12v - 1A) elle-même reliée à celle du Romeo
  • 12V : branché sur celui de l’alim externe
  • Vert: Tachymètre branché sur le D5(pwm)
    -Bleu: contrôle branché sur le D3(pwm)

j’ai juste mis dans le setup():

pinMode(pinFan, OUTPUT); //en D3
pinMode(pinPulse, INPUT); //en D5

et dans loop() j’envoie un analogWrite(pinFan, V) // 0<V<255

En gros, soit je le mets à 255 pendant 1sec pour le redescendre à la bonne valeur, soit j’envoie entre 100-255. Je testerai les 2.
merci pour la formule, je ne savais pas que ça se calculait ainsi!!! c’est vrai que 4.7v fait juste.

Par contre me reste toujours les micro-saccades (très faibles et quand même assez rares). Je ne vois pas d’où vient le problème. Peut-être faut-il lisser d’avantage la source (transfo 12v fournit avec la freebox v4 à l’époque). Ou alors ça vient du D3 car j’ai changé de fil et j’ai toujours le problème.
Ca doit consommer un peu, donc pour une alim autonome c’est pas top.

Merci pour vos avis!

la plupart des ventilos type "PC " sont des moteurs brushless le "top synchro" pour la gestion des bobines est fourni par capteur hall (et son aimant positionné sur le rotor)

Tu penses que le fait qu'il soit brushless, il est plus sensible aux parasites, et de là viendrait les micro-saccades? En tout cas celui là est extrêmement silencieux même à pleine charge. Pour avoir regardé de manière plus approfondie, le micro-saccade est relativement périodique, et je me demande s'il ne se produit pas à chaque renouvellement de loop().

je me demande s'il ne se produit pas à chaque renouvellement de loop()

à vérifier en allumant et éteignant une LED à chaque loop

note que tu peux également programmer une régulation de ton ventilo en utilisant le fil vert. Les problèmes de démarrage seraient résolus automatiquement

Comment cç une régulation avec le fil vert?

tu veux dire qu’avec le fils vert (tachymètre) je peux forcer le ventilo à respecter une vitesse?

Je ne pense pas que tu puisses forcer le ventilo à tourner à une certaine vitesse avec le fil vert, ce n'est qu'un retour d'information.

Par contre tu peux appliquer une consigne et avoir un retour. Donc par exemple le lancer à 100% et une fois que le retour dis que le ventilateur tourne à une certaine vitesse, baisser la vitesse à la consigne que tu veux. Comme ça tu es sûr qu'il s'est bien lancé. Tu peux même vérifier en temps réel qu'il tourne toujours avec cette information ;)

C'est un système en boucle fermé, aussi appelé asservissement : http://fr.wikipedia.org/wiki/Asservissement_%28automatique%29

Après je ne sais pas bien comment cela s'implémente sur un arduino...

Bonjour,

tiré de : http://www.moteurindustrie.com/brushless/technique.html

Démarrage d’un moteur brushless :

Le même problème se pose pour le démarrage du moteur brushless, car le rotor ne peut pas atteindre instantanément la vitesse de rotation du champ. Le système de contrôle électronique doit donc assurer un démarrage progressif, l’objectif étant toujours de reproduire la fonction du collecteur. La fréquence des tensions d’alimentations sera donc très basse au départ, puis augmentée progressivement en tenant compte de la réaction du moteur.

donc, soit tu le démarres à une vitesse élevée et tu lui baisses sa vitesse ensuite, soit tu augmentes progressivement ton pwm ... je pense que la 1° solution est à privilégier, car tu auras surement une zone "morte" avec la 2° solution.

Pierre

Je pense qu'il faut que tu fasses des essais et que tu en tire les conclusions.

Les problèmes liés au pilotage des moteurs brushless ne nous concerne pas directement vu que le ventilo est piloté par un PWM, il possède donc un contrôleur brushless intégré. En revanche, il te faut trouver une bonne façon d'allumer le ventilo, comme évoqué par petrusfr, voici mes propositions : - Une seconde à 255. - Montée progressive jusqu'à constater que le ventilo tourne (grâce au fil bleu ?)

Personnellement je trouve qu'il serait intéressant de savoir ce qu'il y a sur le fil bleu afin de voir si c'est exploitable par l'Arduino.

Oui “cannard”, j’avais bien compris le rôle du fil vert mais comme je suis un novice avec l’arduino et en prog ( mais qu’est ce que je fais là !!! :smiley: c’est passionnant!!!), je me disais que peut-être il y avait moyen en fonction de la valeur retournée de stabiliser d’avantage la vitesse (et donc aussi de supprimer les micro-saccades lorsque le pwm est à 0.

Oui "petrusfr, je pense aussi que mettre une valeur forte au début puis décélérer est le meilleur moyen. par contre pas forcément 255 car ça demande plus de jus (enfin je pense ) mais je sais que le ventilo tourne à partir de 100 de manière sûre.

Pour répondre aussi à UniseV, en faisant une montée progressive, c’est vrai qu’il y a des “zones mortes”. j’ai créé un ptit prog qui justement fait monter progressivement (par paliers de 2 toutes les 2 sec) et dès que le ventilo tourne il affiche le nombre de RPM. seulement une fois il va démarrer à 60, l’autre fois ce sera 70 ou 80 et ce, pour le même ventilo donc pas fiable pour en tirer une valeur mini stabilisée.

Pour ce qui est des micro-saccades, elles sont bien dues au renouvellement de loop(). Et il n’y a pas que le ventilo qui saccade mais aussi un ptit servo, qui lorsque qu’il doit rester à 0, on entend le moteur vérifier qu’il y est bien.

Peut-être un soucis dans la programmation. je vais voir ça.

comment as tu l'info de la Rotation par minute ?

question inutile, c'est le fil vert.

alors ou est le prob? puisque tu as le retour de rotation, tu ne peux pas t'en servir pour ajuster ta consigne ?

bonsoir Les ventilos de PC sont conçus pour etre regulé en vitesse avec un PWM d'~ 25kHz De memoire le PWM standard d'un arduino de base (analogwrite) est beaucoup plus faible *

PWM Frequency: Target frequency 25 kHz, acceptable operational range 21 kHz to 28 kHz

  • retrouvé :

The frequency of the PWM signal on most pins is approximately 490 Hz

Pour les tours par minutes :

via le fil vert :

pulse = pulseIn(pinPulse, LOW, 1000000); RPM = (60 / (pulse / 1000000.0))/4;

Je pense que tu le savais déjà dfgh ;) et c'est fidèle car à 255 je suis à 1016 RPM pour 1000 annoncés. mon problème n'est pas d'ajuster la consigne c'est juste que je voudrais pouvoir faire tourner mon ventilo à faible vitesse sans avoir besoin de le"lancer". Mais je pense que c'est impossible et je garderai la solution de faire tourner + dans un premier tps pour réduire ensuite la vitesse.

j'ai vu aussi l'info comme quoi le ventilo fonctionnait à 25khz. d'ailleurs il me semble que certains arrivent à modifier la fréquence sur l'arduino pour s'en rapprocher (c'était en anglais donc sur à 70% de ma traduction :p )

Bonsoir,

Tu peux régler la fréquence de pwm (en français) comme indiqué sur les liens ci-dessous ☺ P

modifier la frequence d'un pwm

http://arduino103.blogspot.fr/2013/02/ajuster-le-frequence-pwm-sur-un-arduino.html

Pierre

Si tu as beaucoup de ventilos tu peux aussi utiliser un PWM driver qui laissera l'Arduino libre pour d'autres choses (comme lire la vitesse des ventilos) Mais il ne fonctionnera qu'à 1,6 KHz au max.

On peut voir ton code ?

Pour les 25Khz je pense que tu pourras les obtenir avec l'Arduino au détriment de la précision. Une solution est évoquée ici en anglais.

merci pour les liens. Je ne les avaient pas vu ceux là et en plus en français! :smiley:

Je vous joints le code.
Je tiens à préciser que je n’y connais pas grand chose (juste des notions de c++) et qu’il manque pas mal de chose dont les conditions de “bon fonctionnement” si je peux appeler ça ainsi (genre si les sondes fonctionnent, si le capteur lumière répond…). Je les implanterai pour palier à tout dysfonctionnement et surtout pour ne pas faire planter le système.

Je vous explique en 2 ligne le projet:

Le but est de créer un chauffage/ clim solaire avec un thermostat à 3 sondes températures (maison, dehors et dans la boite). suivant les valeurs, ça active ou non un ventilo (qui doit fonctionner dans les 2 sens, d’ailleurs j’ai une question à ce sujet!).
Il y a une partie avec capteur de lumiere pour détecter le crépuscule et basculer en mode nuit et qui permet d’activer aussi un éclairage leds (non traité dans ce code car je n’arrive pas à faire fonctionner indépendamment les leds du reste), la lumière étant sur minuterie.
voila en gros.

C’est le début et si vous avez des remarques + ou - pour améliorer le code n’hésitez pas.

Pour le ventilo à 2 sens, je crois qu’il faut utiliser un pont en H avec diodes. Comment on les pilote? avec une sortie digital qui active ou non l’interrupteur de chacune d’entre elles?

merci

Test.ino (18.7 KB)

neo888: ...

Pour le ventilo à 2 sens, je crois qu'il faut utiliser un pont en H avec diodes. Comment on les pilote? avec une sortie digital qui active ou non l'interrupteur de chacune d'entre elles?

8) si tu pense inverser le sens de rotation (inversion de flux) de ton ventilateur

Ventilateur BeQuiet silent wings 2 pwm 12v 0.2A 1000 rpm

avec un pont en H , je crois fortement "que ça ne va pas le faire" :grin:

ok... :p

tu peux m'expliquer?

Du fait qu'il soit pwm il ne reçoit les infos que pour un sens?

neo888: ok... :p

tu peux m'expliquer?

Du fait qu'il soit pwm il ne reçoit les infos que pour un sens?

:grin: il est juste prevu par construction pour ne tourner que dans un seul sens PWM ou pas