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

Objectif

Le mini-projet est suite du projet 25. Il permet d’intégrer la liaison infrarouge (émetteur+récepteur IR) à la place du potentiomètre analogique. Dans le projet précédèrent, on ajuste le rapport cyclique du signal PWM manuellement en utilisant un potentiomètre rotatif. Dans le présent projet on utilisera une télécommande IR dédiée à la même opération.

Fonctionnement

Je vous invite en premier temps à consulter le projet 25 :

Les modifications apportées par rapport à la partie 1 du projet sont les suivantes :

1. Utilisation d’un émetteur IR : Se forme d’une télécommande IR, deux boutons « 1 » et « 2 » seront utilisés de la façon suivante : bouton « 1 » : lorsqu’on appuie sur la touche « 1 » on incrémente le rapport cyclique du signal PWM d’un pas constant. On sait que le rapport cyclique peut varier entre 0(0%) et 255(100%). Lorsque la valeur atteint 255 on recommence à zéro. Bouton « 2» : lorsqu’on appuie sur la touche « 2 » on décrémente la valeur d’une valeur constante. Lorsque la valeur atteint 0 on initialise le compteur à 255.

Astuce : On peut utiliser un compteur du type « unsigned char » codé sur 8 bits non signés. La mise à zéro ou à 255 s’effectuer d’une façon automatique (255+1=0, 0-1=255).

2. Sortie D3 de la carte Arduino 2 : On utilisera une nouvelle sortie PWM ayant le même rapport cyclique que la sortie D3. Elle sera utilisée pour observer le signal PWM en utilisant un oscilloscope numérique. On aura deux moyennes de visualisation : La luminosité de la LED branchée dans la sortie D2 et la courbe affichée dans l’oscilloscope.

Note : Consultez les projets précédents pour en savoir plus sur le fonctionnement et l’utilisation d’un émetteur/récepteur IR.

Programme Arduino 1

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

// Variable DAC
int val_DAC=0;
const int DAC_Step=50;
const int DAC_Max=4095; // 2^12-1=4096-1=4095
Adafruit_MCP4725 dac;

// Numéro du pin sortie du récepteur 
long int res_val;
const int receiver = 11; 

// Déclaration d'un objet IRrecv
IRrecv irrecv(receiver);           
decode_results results;       

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

  // Init du récepteur 
  irrecv.enableIRIn();
}

void loop(void)
{
  // Lecture de la télécommande 
  if (irrecv.decode(&results))
  {
    // Récupération du code   
    res_val = results.value;

    // Up PWM
    if (res_val==0xFF30CF)
    {
      val_DAC=val_DAC+DAC_Step; 
      if (val_DAC>DAC_Max) 
        val_DAC=0; 
    }

    // DOWN PWM
    if (res_val==0xFF18E7)
    {
      val_DAC=val_DAC-DAC_Step; 
      if (val_DAC<0) 
        val_DAC=DAC_Max; 
    }
     
    // Réception de la nouvelle valeur
    irrecv.resume();
  } 
  
  // 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 PWM1_PIN=2; 
const unsigned short PWM2_PIN=3; 


void setup(void) 
{
  // Initialisation PWM1 & PWM2
  pinMode(PWM1_PIN, OUTPUT);
  pinMode(PWM2_PIN, OUTPUT);
  analogWrite(PWM1_PIN, 0);
  analogWrite(PWM2_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 PWMx
  analogWrite(PWM1_PIN, val_PWM);
  analogWrite(PWM2_PIN, val_PWM);
}

Téléchargement

Photos du projet

Projet Variateur de vitesse à MLI - Partie 2 - photos du projet (2)

Projet Variateur de vitesse à MLI - Partie 2 - photos du projet (1)

Projet Variateur de vitesse à MLI - Partie 2 - photos du projet (2)

Projet Variateur de vitesse à MLI - Partie 2 - photos du projet (1)

Vidéo démonstration

Abonnez-vous à notre Chaîne

Tout les projets microcontrôleur

Articles

2 thoughts on “Infrarouge IR: Variateur de vitesse à MLI #2/2”

  1. Bonjour, c’est très bien expliqué ! Juste une petite question,quel est le logiciel d’oscilloscope utilisé dans ce projet ?
    Merci !

    1. Bonjour, Merci pour votre message. J’ai utilisé un oscilloscope numérique (deux canaux, 20 MHz) que j’ai branché en liaison USB avec l’ordinateur. L’équipement est muni d’un logiciel spécifique. Voilà un exemple d’oscilo sur Amazon: ICI.
      Bon courage 😉

Laisser un commentaire

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

Anti-Robot *