Différences entre versions de « P2E-LDR-FR »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 103 : Ligne 103 :
 
* '''Ligne 19''': '''led_value''' contient True lorsque la LED doit être allumée, ce qui est la cas si la valeur du convertisseur analogique tombe sous la valeur '''TURN_ON''' (32000 dans le script d'exemple).
 
* '''Ligne 19''': '''led_value''' contient True lorsque la LED doit être allumée, ce qui est la cas si la valeur du convertisseur analogique tombe sous la valeur '''TURN_ON''' (32000 dans le script d'exemple).
 
* '''Ligne 20''': allumer/éteindre la LED (selon la valeur de '''led_value''').
 
* '''Ligne 20''': allumer/éteindre la LED (selon la valeur de '''led_value''').
* '''Ligne 21''': affichage de la valeur du convertisseur et de l'état marche/arrêt de la LED. La valeur pour la "led" est de 0 lorsque éteinte et 10000 lorsque allumée.<br />Cette bizarrerie est utile lors du rendu en graphique dans Thonny car l'échelle de valeur sur l'ADC est de 20000 à 50000.<br />Une valeur de 0 ou 10000 pour la LED permettra de voir l'activation de celle-ci sur le graphe (ce qui serait impossible avec les valeurs 0 et 1 correspondant aux valeurs binaire True et False).<br />C'est l'expression ternaire {{fname|0=10000 if led_value==True else 0}} ; il existe cependant un code plus beaucoup plus concis permettant d'obtenir le même résultat.
+
* '''Ligne 21''': affichage de la valeur du convertisseur et de l'état marche/arrêt de la LED. La valeur pour la "led" est de 0 lorsque éteinte et 10000 lorsque allumée.<br />Cette bizarrerie est utile lors du rendu en graphique dans Thonny car l'échelle de valeur sur l'ADC est de 20000 à 50000.<br />Une valeur de 0 ou 10000 pour la LED permettra de voir l'activation de celle-ci sur le graphe (ce qui serait impossible avec les valeurs 0 et 1 correspondant aux valeurs binaire True et False).<br />C'est l'expression ternaire {{fname|1=10000 if led_value==True else 0}} ; il existe cependant un code plus beaucoup plus concis permettant d'obtenir le même résultat.
  
  

Version du 23 décembre 2024 à 21:56

Introduction

La photo-résistance est une résistance photo-sensible, cela signifie que la valeur de sa résistance dépend de la quantité de lumière qui atteint le capteur.

PhotoResistance.jpg

Comme le montre le graphique ci-dessous, la résistance d'une photo-résistance diminue lorsque la quantité de lumière augmente (sur le capteur).

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

La photo-résistance est souvent appelée LDR, acronyme anglophone de Light Dependant Resistor (résistance dépendant de la lumière).

Photo-Résistance vs Luxmètre

Les photo-résistances sont des éléments très abordables mais permet uniquement de faire un relevé "relatif" de la luminosité.

Cela signifie qu'il est possible de savoir s'il fait très lumineux, lumineux, sombre ou noir sans pouvoir évaluer "finement" la quantité de lumière!

Il n'est donc pas possible d'utiliser un tel dispositif d'évaluer le nombre de Lux (mesure d'éclairement lumineux, Wikitionnaire), ce que d'autres capteurs plus avancer peuvent permettre.

Photo-résistance du Pico-2-Explorer

Le Pico-2-Explorer propose une photo-résistance dans sa section analogique.

P2E-LDR-10.png

Un microcontrôleur n'est pas capable de mesurer une résistance mais, par contre, il sait mesurer une tension! C'est pour cette raison de la photo-résistance intervient dans un pont diviseur de tension.

Sur le Pico-2-Explorer, la photo-résistance est montée dans un pont diviseur de tension avec une résistance de 10 KOhms.

Le schéma ci-dessous détaille le raccordement de la photo-résistance, une sonde symbolise le branchement sur le connecteur LDR (de la section Analogique).

P2E-LDR-schematic.jpg

Si la photo-résistance est placé sous une source lumineuse alors sa résistance chute, ce qui déplace le potentiel de la jonction Photo_résistance-R10K en direction de 3.3V. La tension VOut augmente vers 0V.

P2E-LDR-in-light.jpg

Si la photo-résistance est masquée, la quantité de lumière qui frappe la photo-résistance diminue. En conséquent, la résistance de la photo-résistance augmente!

Si la résistance de la photo-résistance augmente alors le potentiel de la jonction Photo_résistance-R10K évolue en direction de la masse. La tension VOut diminue vers GND .

P2E-LDR-in-dark.jpg

Cas pratique

L'exemple ci-dessous se propose de relever la valeur du convertisseur analogique en fonction des conditions de luminosité imposée sur la photo-résistance.

En complément, le script allume la LED Rouge (veilleuse) lorsque la luminosité descend sous un certain seuil (donc lorsque la tension sur l'entrée analogique dépasse une tension de référence).

Branchement simplifié

Dans cet exemple, nous allons brancher la photo-résistance (notée LDR) sur l'entrée analogique A1 (GP27) pour lire la valeur sur le convertisseur analogique.

La LED rouge est branchée sur la broche GP22 configurée en sortie.

P2E-LDR-20.png

Remarque: Si vous n'êtes pas encore familiarisé avec l'utilisation des entrées analogiques alors vous pouvez consulter le tutoriel sur les entrées analogiques.

Code

Le code ci-dessous peut être saisi dans une session REPL ou dans Thonny IDE.

Cet exemple est également disponible dans le dépôt analog-ldr.py .

 1 from machine import Pin, ADC
 2 import time
 3 
 4 TURN_ON = 32000 # 0 - 65535
 5 
 6 # Désactive PowerSafe (lower ripple)
 7 Pin( 23, Pin.OUT, value=True )
 8 
 9 a1 = ADC( Pin( Pin.board.GP27 ) )
10 led = Pin( Pin.board.GP22, Pin.OUT )
11 while True:
12     # Effectuer 10 mesures
13     val = 0
14     for i in range( 10 ):
15         val += a1.read_u16()
16     # calculer la moyenne
17     val = val/10
18     
19     led_value = val < TURN_ON
20     led.value( led_value )
21     print( 'adc=%5i , led=%5i' % (val,10000 if led_value==True else 0) )
22     time.sleep_ms( 300 )

Il ne reste plus qu'à placer un objet (ex: votre main) entre la source de lumière et la photo-résistance pour constater l'impact sur le convertisseur analogique (dans la sessions REPL).

P2E-LDR-25.png

Voici quelques explications concernant le script:

  • Ligne 4: la constante TURN_ON indique la valeur ADC en dessous de laquelle la LED sera allumée.
  • Ligne 7: Désactivation du mode d'économie d'énergie pour réduire le bruit sur l'alimentation (et donc le bruit sur les signaux analogiques).
  • Lignes 9 et 10: création de l'instance a1 pour l'acquisition analogique et led pour le contrôle de la LED rouge.
  • Lignes 13 à 17: moyenne du relevé de 10 acquisition ADC sur a1 (GP27).
  • Ligne 19: led_value contient True lorsque la LED doit être allumée, ce qui est la cas si la valeur du convertisseur analogique tombe sous la valeur TURN_ON (32000 dans le script d'exemple).
  • Ligne 20: allumer/éteindre la LED (selon la valeur de led_value).
  • Ligne 21: affichage de la valeur du convertisseur et de l'état marche/arrêt de la LED. La valeur pour la "led" est de 0 lorsque éteinte et 10000 lorsque allumée.
    Cette bizarrerie est utile lors du rendu en graphique dans Thonny car l'échelle de valeur sur l'ADC est de 20000 à 50000.
    Une valeur de 0 ou 10000 pour la LED permettra de voir l'activation de celle-ci sur le graphe (ce qui serait impossible avec les valeurs 0 et 1 correspondant aux valeurs binaire True et False).
    C'est l'expression ternaire 10000 if led_value==True else 0 ; il existe cependant un code plus beaucoup plus concis permettant d'obtenir le même résultat.


Dans Il est également possible de visualiser cette information sous forme de graphique.

800px

Un problème?

TODO

Pas de son ?

  1. Est ce que la valeur affichée dans REPL varie lorsque le potentiomètre est tourné ?
    1. OUI: vérifier la présence du cavalier près de
    2. NON: vérifier le raccordement entre le GP26 et le potentiomètre

Le son est presque inaudible ?

  1. les valeurs au dessus de 8000 Hertz sont à la limite des possibilités du Buzzer.
  2. abaisser les fréquences avec le potentiomètre

J'ai le message d'erreur "ImportError: no module named 'maps'" !

  1. Télécharger le fichier `maps.py` depuis esp8266-upy/LIBRARIAN.
  2. copiez le fichier le `maps.py` dans le répertoire 'lib/' de votre carte MicroPython.

Le son n'est pas très stable:

  1. Cela est provoqué par le bruit sur l'alimentation, bruit que l'on retrouve sur sur l'entrée analogique
  2. Modifier le code pour réduire la précision à 9 ou 10 bits significatif permettra d'éliminer la partie la plus faible du signal (donc le bruit).
    Voyez l'exemple pwm-buzzer-9bits pwm-buzzer-9bits.py dans le dépôt.

Le défi

Remplacer le contrôle par potentiomètre par un contrôle numérique à l'aide de deux boutons.

Utiliser Btn 1 pour diminuer la fréquence du son et Btn 2 pour en augmenter la fréquence.

Encore plus

Brancher une photo-résistance

Voici comment brancher une photo-résistance en créant le pont diviseur de tension, sans oublier d'apporter la masse et la tension d'alimentation nécessaire.

P2E-LDR-wiring-2.png


Autres ressources


Traduction augmentée réalisée par Meurisse. D pour shop.MCHobby.be - Licence CC-BY-SA.


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.