Catégories
Commande des moteurs Projets électroniques pwm Variateur de vitesse

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

2 réponses sur « Infrarouge IR: Variateur de vitesse à MLI #2/2 »

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