Autres articles / Other articles

Gestion des sorties N/A (Numériques/Analogiques)

publication: 15 juillet 2021 / mis à jour 15 juillet 2021

Read this page in english

 

Appel à collaboration

Vous développez des montages, simples ou complexes avec ESP32 et ESP32forth.

Partagez-les ici sur ce site.

ESP32forth ne pourra se développer qu'avec la collaboration active de toutes les bonnes volontés.

Vos montages peuvent aider d'autres développeurs.

Les montages des autres développeurs peuvent vous aider.

Pour proposer un article ou un montage, cliquez ici


La conversion numérique / analogique

La conversion d'une grandeur numérique en une tension électrique proportionnelle à cette grandeur numérique est une fonctionnalité très intéressante sur un microcontrôleur.

Quand vous utilisez Internet et que vous passez un appel téléphonique en VOIP, votre voix est transformée en valeurs numériques. Celle de votre correspondant sera inversement transformée de chiffres vers des signaux sonores. Ce processus utilise la conversion analogique vers numérique et inversement.

Ce sont les prémices de ce processus que nous allons aborder dans cet article.

La conversion N/A avec circuit R2R

Voici le schéma de base d'un convertisseur numérique analogique 4 bits:

La valeur à convertir, sur 4 bits, est répartie sur 4 pins a0 à a3. La tension de référence est injectée en haut à gauche du circuit. Cette tension génère une intensité 2I si ce courant ne traverse aucune résistance.

Selon les bits activés, pour chaque bit la tension est divisée et additionnée à celle des autres bits actifs. Par exemple, si a2 et a0 sont actifs, le courant de sortie Is sera la somme I/2 et I/8.

Pour ce circuit 4 bits, le pas de conversion est I/16. Avec ESP32, la conversion s'effectue sur 8 bits. Le pas de conversion sera donc I/256.

La conversion N/A avec ESP32

Aucune carte ARDUINO ne dispose de sortie de conversion N/A. Pour effectuer une conversion N/A avec une carte ARDUINO, il faut utiliser un composant externe.

Avec la carte ESP32, nous disposons de deux pins, G25 et G26, correspondant à des sorties de conversion N/A.

Pour notre première expérience de conversion N/A avec la carte ESP32, nous allons connecter deux LEDs aux pins G25 et G26:

\ define Gx to LEDs 
25 constant ledBLUE     \  blue led on G25 
26 constant ledWHITE    \ white led on G26 

Avant d'effectuer une conversion N/A, on prévoit l'initialisation des pins G25 et G26:

\ init Gx as output 
: initLeds ( -- ) 
    ledBLUE  output pinMode 
    ledWHITE output pinMode 
    ; 

Et on définit deux mots permettant de contrôler l'intensité de nos deux LEDs:

\ set intensity for BLUE led 
: BLset ( val -- ) 
    ledBLUE   swap dacWrite 
    ; 
 
\ set intensity for WHITE led 
: WHset ( val -- ) 
    ledWHITE  swap dacWrite 
    ; 

Les mots BLset et WHset acceptent comme paramètre une valeur numérique dans l'intervalle 0..255.

Sur la photo, après initLeds, la séquence 200 BLset allume la LED bleue à puissance réduite.

Pour l'allumer à pleine puissance, on utilisera la séquence 255 BLset

Pour l'éteindre complètement, on enverra cette séquence 0 BLset

Possibilités de la conversion N/A

Ici, avec nos deux LEDs, nous avons réalisé un montage simple et de peu d'intérêt.

Ce montage a le mérite de montrer que la conversion N/A fonctionne parfaitement. La conversion N/A permet:

Code complet disponible ici:

ESP32forth/blob/main/DAC/DAoutput.txt


Legal: site web personnel sans commerce / personal site without seling