Convertisseur digital analogique MCP4725

Contexte

Je souhaitais utiliser ce DAC pour envoyer à un manomètre une tension continue variable, et ce depuis l'arduino, dans mon projet de lecture de sondes automobile. J'ai utilisé le modèle YL 40 qui a été désastreux, je ne suis rien arrivé à en tirer (voir ici) et me suis donc tourné vers le MCP4725, plus simple mais très efficace !

Présentation

Ce DAC 12 bits de dimensions réduites (15x15mm) fonctionne sur bus I2C. Voici son schéma d’interfaçage avec un Arduino :

Interfaçage MCP4725 avec Arduino
Interfaçage du DAC MCP4725 avec l'Arduino

VCC : alimentation de 3 à 5V
GND : masse
SDA : sur la broche I2C Data (Pin A4 sur Arduino Uno/Nano, Pin 20 sur un Mega et Pin Digital 1 sur un Leonardo)
SCL : sur la broche I2C Clock (Pin A5 sur Arduino Uno/Nano, Pin 21 sur un Mega et Pin Digital 3 sur Leonardo)
OUT : tension de sortie (c'est la broche qui nous intéresse en lecture)

En bref, on lui envoie une valeur entre 0 et 4095 via le bus I2C, et il l'échelonne entre 0 et la tension d'entrée sur sa broche de sortie (OUT). Par exemple si on lui envoie la valeur 2000 et que VCC est à 5V, il va sortir 2.44V (proportionnalité avec un bête produit en croix).
Il n'y a pas (ou très peu) de déperdition entre l'entrée et la sortie, si vous l'alimentez en 5V (sur VCC) vous aurez à très peu de choses près 5V maximum en sortie sur VOUT (et non pas 4 et quelques comme avec le YL-40).

Code source

Pour le tester, j'utilise la librairie Adafruit MCP4725. Pour connaître l'adresse I2C il vous faut au préalable lancer le scanner I2C. L'adresse trouvée est reportée dans le code ci-dessous (0x62, dans mon cas !).

#include 

Adafruit_MCP4725 dac;

void setup(void) {
  dac.begin(0x62);   
}

void loop(void) {
  
    uint32_t dac_value;
  
    for (dac_value = 4095; dac_value >= 0; dac_value = dac_value - 10)
    {
      dac.setVoltage(dac_value, false);
      delay(100);
    }          
}

Se procurer les composants

-
-
- et pour référence :

Vidéo

Dans cette courte vidéo, je fais varier la tension envoyée au manomètre sur sa broche de mesure, qu'il convertit en température (il s'agit d'un manomètre de température de liquide de refroidissement, gradué entre 20 et 150°C). Désolé pour la piètre qualité de la vidéo, mais pas réellement besoin de plus pour comprendre le principe ^^

Cet article vous a plu ? Merci de le partager sur les réseaux sociaux :
image
Qui est l'auteur ?

Passionné de nouvelles technologies, je propose mes services de développement Web, principalement dans l'élaboration de scripts et d'algorithmes sur mesure, ainsi que plus généralement dans la réalisation de sites internet évolués (e-commerce, etc...) et du référencement (SEO).
N'hésitez pas à me contacter pour toute demande !

Abonnez-vous à ce blog par email

Rentrez votre adresse email pour vous abonner au blog et recevoir un e-mail à chaque nouvel article :

ou suivez nous sur Facebook :

Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec une *

Quelle est la dernière lettre du mot pjzd ? :