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.
Ce que vous essayez de concevoir, c'est un système d'acquisition de données
S'il dispose d'un convertisseur numérique-analogique (DAC), vous pouvez le faire. Sinon, obtenez un DAC externe et demandez au microcontrôleur de lui communiquer via tout ce qu'il peut (I2C, SPI, UART, etc.)
Vous avez remarqué que vous avez étiqueté une puce, ils ont des microcontrôleurs avec un DAC, des simples (pic12f752, pic16f753,782) aux avancés (dsPIC33fj16GS504,502,302) et plusieurs autres. vous pouvez les trouver ici http://www.microchip.com/maps/microcontroller.aspx
la source
Selon le courant consommé par le système, vous pourrez peut-être le faire avec une échelle de résistance en tant que DAC: http://en.wikipedia.org/wiki/Resistor_ladder
Si vous voulez un petit nombre de valeurs de tension spécifiques, vous pouvez même concevoir l'échelle de résistances pour les émettre exactement plutôt que le système normal de 2 ^ n valeurs uniformément espacées.
S'il tire un courant non trivial, vous voudrez un ampli-op sur la sortie configuré comme tampon. Assurez-vous que votre ampli-op fonctionne avec une linéarité appropriée proche de 0V; vous pourriez avoir besoin d'une alimentation négative pour cela.
la source
En plus des autres réponses, la plupart des microcontrôleurs ont une fonction PWM (et sinon, vous pouvez toujours en bang bang). Si vous alimentez PWM dans un simple filtre RC, vous pouvez créer un DAC primitif sans beaucoup de composants ou de coûts supplémentaires.
la source
Si vous êtes d'accord avec PWM, la sortie analogique d'Arduino ferait très bien l'affaire. Vous pouvez également envisager d'ajouter un filtre passe-bas, car les impulsions peuvent être très bruyantes.
Si vous avez besoin d'une solution plus propre, trouvez les microcontrôleurs fournis avec les modules DAC. Certains microcontrôleurs MSP430 ont un DAC ( voir page 23 ) que vous pouvez utiliser. Vous devez consulter leurs fiches techniques.
Si vous vous trouvez contraint à un microcontrôleur sans DAC, vous pouvez envisager d'obtenir une puce DAC. Ces puces peuvent être contrôlées facilement via SPI ou I2C, et elles sont bon marché. Voici un DAC 12 bits qui coûte un peu plus d'un dollar.
J'espère que cela t'aides.
la source