Oui, tous les microcontrôleurs ont un moyen de produire des signaux de tension contrôlés par le firmware. La méthode de la force brute consiste pour le micro à inclure un convertisseur numérique-analogique (D / A). Le micrologiciel écrit un nombre dans le D / A et produit une tension proportionnelle à ce nombre.
Une spécification importante de D / As est le nombre de bits du nombre. Ceci détermine sa résolution. Le D / A peut produire 2 N valeurs différentes quand il y a N bits dans le nombre. Par exemple, un D / A 8 bits peut produire 256 niveaux de tension différents. Notez qu'une broche de sortie numérique ordinaire peut être considérée comme un D / A 1 bit. Le nombre a deux états, 0 et 1, et la tension de sortie est haute ou basse.
La plupart des micros ne sont pas livrés avec des D / As multi-bits intégrés car il y a peu de demande pour cela. Habituellement, nous essayons de convertir les valeurs analogiques en numériques le plus tôt possible dans le processus, de faire les manipulations numériquement, puis de contrôler les choses avec des impulsions. Il est inhabituel de vouloir qu'un micro produise une tension analogique. Même dans des applications comme l'audio que vous pouvez considérer comme étant intrinsèquement liées à un signal analogique, les choses sont souvent traitées numériquement ou avec des impulsions à la fin. C'est essentiellement ce qu'est un amplificateur de classe D.
Si vous ne souhaitez pas utiliser l'un des ensembles de micros limités avec un D / A intégré, vous pouvez en ajouter un en externe. Il existe de nombreux D / As que le micro peut piloter sur un bus SPI, par exemple.
Cependant, à moins que vous n'ayez besoin d'une sortie haute vitesse, le filtrage passe-bas de la sortie PWM d'un micro produit un joli signal analogique. Les micros sont bons pour produire des séquences d'impulsions bien contrôlées, et beaucoup ont du matériel intégré à cet effet. Par exemple, considérons une sortie numérique qui peut être modifiée tous les 1 µs (à un taux de 1 MHz). Supposons que vous ayez regroupé les tranches de temps de 1 µs en blocs de 1023. Pour chaque bloc, vous pouvez avoir entre 0 et 1023 des tranches étant hautes. Si vous deviez faire la moyenne de cela, vous obtiendriez une valeur analogique avec 1024 niveaux possibles, ce que vous obtiendriez d'un D / A 10 bits. Le signal brut contiendra la valeur moyenne souhaitée, plus les hautes fréquences commençant à 1 MHz / 1023 = 978 Hz. En appliquant quelques pôles de filtrage passe-bas (une résistance et un condensateur par pôle),
Ce type d'A / D a de belles propriétés en ce sens qu'il est très linéaire, monotone et sans puissance de deux sorties glitch. Le seul inconvénient est généralement la bande passante. Pour quelques résistances et condensateurs simples formant le filtre passe-bas, vous ne pouvez probablement pas obtenir un signal analogique plus rapidement que quelques 10s de Hz.
Notez que l'utilisation de 1023 tranches par bloc était un choix arbitraire que vous avez fait. Si vous voulez plus de résolution, agrandissez les blocs, mais la sortie filtrée devra changer plus lentement. Cependant, de nombreux micros peuvent faire la génération PWM dans le matériel avec un taux de tranche beaucoup plus rapide que 1 MHz.
J'essaierais de voir si la méthode PWM peut fonctionner avant de passer à un D / A externe.