Mise en oeuvre : Chapitre 2 - Détecteur de luminosité

Le forum du Snootlab Starter Kit

Mise en oeuvre : Chapitre 2 - Détecteur de luminosité

Message non lude Stéphane » Lun 6 Juin 2011 15:32

[Presentation du montage]

Montage N°2 : Détecteur de luminosité avec seuil de fonctionnement et affichage.


Dans le chapitre précédent, nous avons appris comment associer un capteur avec un élément délivrant de l'information sonore, fonction des valeurs mesurées. Dans ce nouveau chapitre, nous allons en plus conditionner le fonctionnement du capteur. En effet, notre montage sera composé d'un capteur de luminosité, d'un étage de visualisation par leds (ou bargraphe, au choix) et d'un potentiomètre, géré par l'utilisateur, qui fixera le seuil de fonctionnement. De manière plus détaillée, quand la valeur mesurée sera inférieure à la valeur de consigne donnée par le potentiomètre, notre montage n'affichera rien sur les leds. La progression qu'apporte ce chapitre réside dans une légère complexification du circuit électronique. En effet, pourquoi faire en software ce qui peut se faire en hardware ?


[Présentation des composants]

Les composants utilisés sont :

Photorésistance (x1)
Résistance de 1kOhms (x1)
Résistance de 150Ohms (x11)
Résistance de 5kOms (x1)
Résistance de 10kOhms (x1)
LM358 (x1)
Arduino Uno (x1)
Leds (x10)
Fils
Breadboard (x1)
Potentiomètre rotatif (x1)


Allez, maintenant que nous avons toutes les billes, ne perdons pas de temps, assemblons les !


[Le Montage]

Voici comment relier les composants entre eux. Le logiciel utilisé ici est Fritzing, il permet de donner une vue claire à vos montages, à mi-chemin entre la photo et le schéma électronique, et nous, à Snootlab, on aime ça !


Donc, notre montage se présente ainsi :

Sketch_STK_basic_2_.png
Sketch_STK_basic_2_.png (66.11 Kio) Vu 5154 fois



Les couleurs ont été choisies de cette manière :
Les fils rouges représentent le Vcc(+5V)
Les fils noirs représentent le GND(0V)
Les fils bleus sont les signaux de commande des leds


Le schéma électronique de ce montage est celui-ci :

Appli_STK_basic_2_sch.png
Appli_STK_basic_2_sch.png (13.67 Kio) Vu 5561 fois



[Explications sur le montage]

La photo résistance va produire une tension variable en fonction de la luminosité reçue. Cette tension, au travers de R13, va attaquer l'entrée PLUS du LM358. L'entrée MOINS, elle, est attaquée par une tension fixée par le potentiomètre rotatif. L'AOP (Amplificateur Opérationnel) LM358 est monté en comparateur double seuil (hystérésis), les deux tensions seuils de basculement sont fixées par R13 et R15. La tension sur l'entrée PLUS du comparateur dépend de la sortie, de la tension aux bornes de la photorésistance et des résistances R13 et R15. Lorsque cette tension sera plus élevée que sur l'entrée MOINS, la sortie passera à l'état haut. Si elle est inférieure, la sortie passe à l'état bas.
Le programme analyse la valeur de la tension aux bornes de la photorésistance, et la retranscrit, selon une échelle de valeur personnalisée, sur un indicateur à leds. Plus la luminosité baisse, plus le nombre de leds allumées augmente. En parallèle, le logiciel scrute la sortie du comparateur. Si la sortie est à '1', il autorise l'allumage des leds, sinon, il force l'extinction des leds.


Amplificateur Opérationnel :

Un AOP est un élément qui qui va amplifier en sortie, la différence de tension présente entre ses deux entrées(Vdiff = Vplus - Vmoins). Ce taux d'amplification appelé « gain différentiel » varie selon les modèles.
Une valeur générique fréquemment utilisée est 100dB, sa formule est Gdiff = 20log(Vs/Vdiff).
Nous allons maintenant aborder les trois cas d'utilisation de l'AOP :

1 – Comparateur simple :
Comme nous l'avons vu, le gain différentiel est relativement élevé, cela implique que si, par exemple Vdiff=0,5V, alors Vs=50000V!Or, le composant ne pourra pas sortir un Vs supérieur à sa tension d'alimentation, disons 5V. Ce que l'on remarque dans ce cas là, c'est que dès que V+ est supérieur à V-, Vs=5V et Vs=0V dans le cas contraire, c'est donc typiquement un fonctionnement en comparateur !

2 – Comparateur à double seuil :
Ce cas nécessite d'effectuer une contre-réaction positive (relier la sortie à l'entrée positive).
Ici, le but est d'obtenir deux seuils de basculement différents. Quand Vs=0V et que l'on veut faire basculer la sortie à 5V il faut atteindre le seuil haut, et quand Vs=5V et qu'on veut la faire basculer à 0V, il faut descendre jusqu'au seuil de basculement bas. Dans notre cas, l'écart entre les deux seuils est égal au rapport des résistances multiplié par la valeur de Vs à l'état haut (5V) moins sa valeur à l'état bas (0V). L'écart entre les deux seuils est donc de 0,5V. L'intéret de ce montage est qu'il faut « insister » pour faire basculer l'état du comparateur, ce qui est pratique pour de l'éclairage public. Ce principe permet de ne pas déclencher l'éclairage dès qu'un nuage obscurcit le capteur !

3 – Fonctionnement en mode linéaire
Ce cas nécessite d'effectuer une contre-réaction négative (relier la sortie à l'entrée négative).
Le fonctionnement en mode linéaire va rendre Vdiff nulle. En effet, dans ce mode Vplus – Vmoins =0. La tension de sortie dépend donc « uniquement » des tensions d'entrée du montage et des éléments présents, mais plus de l'amplification interne de l'AOP.




[Go for Code]

Code: Tout sélectionner
/*
    Application BASIC pour le STK Snootlab : N°3
    Détecteur de luminosité avec seuil de fonctionnement, et affichage de la valeur sur une échelle de leds.
 Le convertisseur Analogique/Numérique de l'Arduino à une résolution de 2^10 bits = 1024 valeurs.
 */

// Declarations de la variable relative à la photo-résistance
unsigned int R_value = 0;

// Declaration de la pin analogique reliée aux bornes de la photo-resistance
char R_pin = 0;


// Configuration
void setup(void)
{
  Serial.begin(115200);            //Mise en place de la communication série, via l'USB, à 19200bps
  analogReference(DEFAULT);        //Positionner la référence pleine échelle du convertisseur
                                   //pour : 5v=1023
  DDRD=0xFC;                       //Positionner les pins reliées au bargraphe en sortie
  DDRB=0x0F;
  pinMode(12,INPUT);               //Positionner la pin en sortie du comparateur en entrée

}



//  MAIN

void loop(void)
{

  R_value = analogRead(R_pin);   

    if(digitalRead(12)==LOW)              // Si on est en dessous du seuil de détection fixé
    {                              //par le potentiometre circulaire, éteindre l'affichage
        PORTD=0;
        PORTB=0;
    } else affichage_led((R_value/2));
   
  delay(500);                              //Attendre une demie seconde avant de recommencer

}



// Sous-routine

void affichage_led(unsigned int valeur)    //Allumer les leds du bargraphe en fonction
{                                      //de l'intensité lumineuse
  PORTD=0;                                 //Remise à zéro de l'affichage
  PORTB=0;
  if(valeur<16)
  {
    PORTD|=0x04;
  }
  else if (valeur<32)
  {
    PORTD|=0x0C;
  }
  else if (valeur<64)
  {
    PORTD|=0x1C;
  }
  else if (valeur<128)
  {
    PORTD|=0x3C;
  }
  else if (valeur<192)
  {
    PORTD|=0x7C;     
  }
  else if (valeur<256)
  {
    PORTD|=0xFC;
  }
  else if (valeur<320)
  {
    PORTD|=0xFC;
    PORTB|=0x01;

  }
  else if (valeur<384)
  {
    PORTD|=0xFC;
    PORTB|=0x03;
  }
  else if (valeur<512)
  {
    PORTD|=0xFC;
    PORTB|=0x07;
  }
  else  {
    PORTD|=0xFC;
    PORTB|=0x0F;
  }

}


[Conclusion]

Et voici, c'est terminé pour aujourd'hui !
Désormais, vous êtes capable de réaliser une chaîne comprenant un capteur, et un élément de signalisation dépendant de ce même capteur ainsi qu'un circuit de traitement logique.
Cet exemple peut servir de base pour un montage faisant varier la lumière d'une lampe torche en fonction de l'obscurité, et qui l'éteint automatiquement en cas de trop grande luminosité, ou tout ce qui peut sortir de créatif de votre tête !
Imaginez ! Explorez ! Nous vous donnons les briques et les explications, à vous de faire votre maison ! Surtout, faites partager vos expériences à notre communauté, posez des questions, échangez vos travaux, vivez open-hardware !
Fichiers joints
Sketch_STK_basic_2.fz
(394.2 Kio) Téléchargé 191 fois
Avatar de l’utilisateur
Stéphane
 
Messages: 179
Inscription: Lun 2 Mai 2011 09:40

Retourner vers Starter Kit

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron