Catégories
Commande des moteurs Projets microcontrôleurs pwm Variateur de vitesse

Infrarouge IR: Variateur de vitesse à MLI #1/2

Variateur de vitesse à MLI

Objectifs

  • Savoir les caractéristiques du convertisseur numérique analogique (DAC) MCP4725
  • Avoir utilisé le DAC avec Arduino en utilisant la liaison I2C
  • Savoir utiliser le DAC dans une application pratique (modulateur de largeur d’impulsion (MLI) ou (PWM))
  • Et autres astuces pratiques

Principe de fonctionnement

Le projet dans sa  globalité consiste à faire varier le rapport cyclique d’un signal PWM en utilisant une télécommande infrarouge. Deux boutons seront utilisés (Up et Down) pour augmenter ou le réduire le rapport cyclique. La première carte Arduino sert à recevoir la commande pour ensuite incrémenter ou décrémenter la valeur du DAC. La seconde carte sert à convertir la valeur acquit du DAC en un rapport cyclique (valeur comprise entre 0 (0%) et 255 (100%)).

Le projet est subdivisé en deux parties. En premier temps on ne va pas utiliser la liaison IR pour ajuster le rapport cyclique mais un potentiomètre analogique branché dans l’entrée A0 de la carte Arduino 1. Le schéma du principe est illustré ci-après. La partie prochaine abordera l’implémentation de la liaison IR.

Caractéristiques techniques du convertisseur N/A MCP4725

  •  Résolution 12 bits
  •  Mémoire non volatile intégrée (EEPROM)
  •  ± 0,2 LSB d’erreur DNL (typique)
  •  Mode normal ou hors tension
  •  Temps d’établissement rapide de 6 µs (typique)
  •  Référence de tension externe (VDD)
  •  Faible consommation d’énergie
  •  Fonctionnement avec alimentation simple: 2,7V à 5,5V
  •  Interface I2C:
    • Huit adresses disponibles
    • Standard (100 kbps), Rapide (400 kbps) et Modes haute vitesse (3,4 Mbps)
  •  Plage de température étendue: -40 ° C à + 125 ° C
  • Autres: Datasheet MCP4725

Exemples d’applications

  •  Découpe de point ou de décalage
  •  Calibrage du capteur
  •  Asservissement en boucle fermée
  •  Instrumentation basse puissance
  •  Périphériques PC
  •  Systèmes d’acquisition de données
  •  Références de tensions réglables

composant MCP4725

Un DAC à quoi ça sert ?

La carte Arduino est constituée essentiellement d’un microcontrôleur 8 bits. L’Arduino mini contient 8 entrées analogiques (A0-A7). En réalité elles sont les entrées d’un convertisseur numérique analogique (ADC ou CAN). En revanche le µC ne dispose d’aucun convertisseur numérique analogique (DAC ou CNA). Autrement dit on peut lire une tension analogique en utilisant le µC mais on ne peut pas en fournir une ! Par conséquent, un composant DAC externe est nécessaire pour convertir une valeur numérique en une tension analogique. Le DAC est un composant important en électronique, ses applications sont multiples (asservissement, contrôle, génération des signaux, références des tensons, etc.).

Comment envoyer une valeur au DAC ?

Il faut installer la librairie Adafruit_MCP4725 dédiée au DAC MCP4725 disponible ICI. La librairie nécessite la liaison I2C pour communiquer avec le DAC. La déclaration et l’initialisation sont relativement simples. Ci-dessous un exemple :

#include <Wire.h> // I2C
#include <Adafruit_MCP4725.h> // DAC

// Déclaration du DAC
Adafruit_MCP4725 dac;

void setup(void)
{
// Initialisation DAC
dac.begin(0x60);
}

l’envoie d’une valeur au DAC (écriture dans le DAC) s’effectuer en une seule instruction !

...
// Ecriture dans le DAC
dac.setVoltage(val_DAC, false);
...

Schéma Arduino-DAC

Programme Arduino 1

#include <Wire.h>
#include <Adafruit_MCP4725.h>

uint32_t val_ADC=0;
uint32_t val_DAC=0;
Adafruit_MCP4725 dac;

void setup(void)
{
// Initialisation DAC
dac.begin(0x60);
}

void loop(void)
{
// Lecture ADC
val_ADC = analogRead(A0);

// Conversion 10 bits => 12 bits
val_DAC=val_ADC<<2;

// Ecriture dans le DAC
dac.setVoltage(val_DAC, false);
}

Programme Arduino 2


uint16_t val_ADC=0, val_PWM=0;
const unsigned short ADC_PIN=A0;
const unsigned short PWM_PIN=2;

void setup(void)
{
// Initialisation PWM
pinMode(PWM_PIN, OUTPUT);
analogWrite(PWM_PIN, 0);
}

void loop(void)
{
// Lecture ADC
val_ADC = analogRead(A0);

// Conversion 10 bits => 8 bits
val_PWM=val_ADC>>2;

// Ecriture dans le controleur PWM
analogWrite(PWM_PIN, val_PWM);
}

Téléchargement

Photos du projet

Projet Variateur de vitesse à MLI (3)

Projet Variateur de vitesse à MLI (2)

Projet Variateur de vitesse à MLI (1)

Tout les projets microcontrôleur

Laisser un commentaire