On peut faire une MLI avec un circuit extérieur (cher) ou utiliser les ressource que nous offre l'Atmega328. Je ne sais pas quelle sera le fréquence du micro utilisé, mais je vais partir de 16MHZ.
Pour faire le MLI, on utilise un compteur. Par exemple pour avoir une MLI à10% et si on veut 256 niveaux différents, on part avec le compteur à 0 et on met une sortie à HIGH. quand le compteur arrive à 25, on repasse la sortie à LOW. Quand on arrive à 256, le compteur repasse à 0 et la sortie à HIGH. Le compteur va compter à la fréquence du quartz (on ne peut pas plus) soit à 16 MHZ.
Si on veut 256 niveaux possibles de MLI (équivalent d'un CNA 8 bits), il faut compter jusqu'à 256 et la fréquence du MLI sera de 16MHz/256 soit 62,5kHz. On ne peut pas travailler pus rapidement, on peut par contre compter du 8MHz ou moins, ce qui ne présente aucun avantage.
Si on veut plus de précision, par exemple 1024 niveaux, on ne pourra plus travailler qu'à 16kHz...
Si on veut 128 niveaux, on peut travailler à 125kHz
Pourquoi choisir 256 niveaux et pas 250 ou une autre valeur? Simplement parce que le compteur 2 est un compteur 8 bits, et que c'est facile. En info, on aime bien les puissances de 2, mais ce n'est pas du tout une obligation.
Si 256 niveaux est un bon compromis, cela nous donne 62kHz.
Un filtre, notamment un simple RC, ne peut pas éliminer les fréquences. Il les atténuent simplement, mais dans la pratique atténuer de 60dB va faire que le signal sera de l'ordre de grandeur du bruit. On pourait mettre un filtre plus efficace (deux résistances et deux condensateurs) mais cela complique pour un gain trop faible.
Pour moi, plus on coupe bas, mieux c'est pour le signal de sortie, plus on coupe haut plus le système réagira rapidement. Si on commande derrière un moteur et qu'on a 10kΩ/47µF, il faudra 1 à 2 seconde pour passer de 0V à 10V. Cela va limiter la monté en vitesse du moteur, ce qui peut être bénéfique (ou pas). Si c'était pour de l'éclairage, j'aurais dit qu'il faut couper plus haut.
Maintenant couper à 1kHz, filtre moins bien, mais a-t-on besoin que la monté de 0V à 10V puisse se faire en 2ms ou pas?
Pour avoir un signal à peu près correct, il faut couper à une fréquence 100 fois moins (environ), d'où cette base classique de 10kHz.
si on pouvait travailler à 160MHz sur 256 niveaux, on pourrait travailler à 600kHz et couper à 10kHz...