le glitch du pwmil suffit de faire une recherche, et on trouve plein de gens, oscillogrammes à l'appui, qui y sont confrontés
dans l'illustation, on voit un signal pwm de rapport cyclique ~50% qui passe à un rapport ~10%, et entre temps il s'est passé un truc, c'est le gltch ; j'ai dessiné en orange l'effet du glitch
les conséquences d'un tel glitch sur des commandes de moteur, ou de chauffage, par exemple, sont négilgeables, à fortiori si la fréquence du pwm est élevée
par contre pour des leds, même à des rapportrs élevés, ça saute aux yeux, donc à fortiori si le rapport cyclique (éclairage vu comme faible), est petit
il faut absolument s'en prémunir ;
au niveau électronique, par exemple pour un pwm généré directement par le timer d'un microcontrôleur (arduino), le problème se passe quand on change le rapport cyclique alors que la période est en cours
on a une rampe ascendante qui se répète périodiquement, en dents de scie ; au début de la période, cad. au bas de la rampe, la sortie pwm est mise à high ; quand la rampe atteint la consigne, la sortie pwm passe à low ; si la consigne est basse, la rampe l'atteint rapidement, l'impulsion est courte (rapport cyclique faible) ; si la consigne est élevée, la rampe mettra du temps à atteindre la consigne, l'impulsion est longue (rapport cyclique élevé)
revenons à l'exemple de notre infortuné internaute, que s'est-il passé ?
au début, le rapport cyclique est de 50%, au début de la rampe, la sortie pwm est high, la rampe se dirige vers les 50% pour atteindre la consigne, et mettre la sortie à low ; or, quand la rampe arrive vers les 40%, la consigne est brutalement mise à 10% : la rampe n'a plus aucune chance d'atteindre la consigne, car elle est allé au-dessus, la sortie restera high au moins jusqu'à la fin de la période, cad. quand la rampe (descendra brusquement) à 0 ; c'est le glitch électronique du pwm
les fabricants de microcontrôleurs et autres ics donnnent la parade à ce glich : la nouvelle consigne, quand elle est entrée par le programmateur (internaute du site locoduino), est mise dans un buffer ; elle n'est transferrée comme consige effective que quand la rampe atteint 0 (début de la période) ; le glitch est mis en echec
notons que ces notions sont aussi à prendre en compte par qui écrirait du pwm purement en soft ; ce n'est pas ma philosophie : les périphériques sont là, utilisons les (vaste débat que je clos aussitôt)
confronté au glitch, j'ai donc programmé l'arduino pour la mise en buffer de la consigne ... mais les glitches étaient toujours visibles, le problème était ailleurs ...