Différences entre versions de « P2E-LDR-FR »
(28 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 19 : | Ligne 19 : | ||
Il n'est donc pas possible d'utiliser un tel dispositif d'évaluer le nombre de Lux ([https://fr.wiktionary.org/wiki/lux mesure d'éclairement lumineux], ''Wikitionnaire''), ce que d'autres [https://shop.mchobby.be/fr/recherche?controller=search&s=lux capteurs plus avancer] peuvent permettre. | Il n'est donc pas possible d'utiliser un tel dispositif d'évaluer le nombre de Lux ([https://fr.wiktionary.org/wiki/lux mesure d'éclairement lumineux], ''Wikitionnaire''), ce que d'autres [https://shop.mchobby.be/fr/recherche?controller=search&s=lux 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. | Le Pico-2-Explorer propose une photo-résistance dans sa section analogique. | ||
Ligne 30 : | Ligne 30 : | ||
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). | 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). | ||
− | [[Fichier:P2E-LDR-schematic. | + | {{ambox | text = A contrario des montages communément présentés sur Internet, celui-ci place la photo-résistance en haut du pont diviseur. Cela permet de maintenir une relation cohérente entre augmentation de la lumière et augmentation de la tension.}} |
+ | |||
+ | [[Fichier: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. | ||
+ | |||
+ | [[Fichier: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 . | ||
+ | |||
+ | [[Fichier:P2E-LDR-in-dark.jpg]] | ||
== Cas pratique == | == Cas pratique == | ||
− | L'exemple ci-dessous se propose de relever la valeur du convertisseur analogique en fonction des conditions de luminosité. | + | 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. | + | 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é === | === Branchement simplifié === | ||
Ligne 53 : | Ligne 65 : | ||
Le code ci-dessous peut être saisi dans une session REPL ou dans Thonny IDE. | 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 [https://github.com/mchobby/pico-2-explorer/tree/main/ldr analog-ldr.py] . | + | Cet exemple est également disponible dans le dépôt [https://github.com/mchobby/pico-2-explorer/tree/main/analog-ldr analog-ldr.py] . |
+ | |||
+ | <syntaxhighlight lang="python" line highlight="4,7,9,10,13,19,21"> | ||
+ | from machine import Pin, ADC | ||
+ | import time | ||
− | + | TURN_ON = 32000 # 0 - 65535 | |
− | |||
− | |||
− | + | # Désactive PowerSafe (lower ripple) | |
+ | Pin( 23, Pin.OUT, value=True ) | ||
− | + | a1 = ADC( Pin( Pin.board.GP27 ) ) | |
+ | led = Pin( Pin.board.GP22, Pin.OUT ) | ||
+ | while True: | ||
+ | # Effectuer 10 mesures | ||
+ | val = 0 | ||
+ | for i in range( 10 ): | ||
+ | val += a1.read_u16() | ||
+ | # calculer la moyenne | ||
+ | val = val/10 | ||
+ | |||
+ | led_value = val < TURN_ON | ||
+ | led.value( led_value ) | ||
+ | print( 'adc=%5i , led=%5i' % (val,10000 if led_value==True else 0) ) | ||
+ | time.sleep_ms( 300 ) | ||
+ | </syntaxhighlight> | ||
− | + | 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). | |
− | |||
− | + | [[Fichier: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.<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. | ||
− | + | Il est également possible de visualiser ces informations sous forme de graphique. | |
− | + | == Un problème? == | |
− | Pas de | + | Pas de changement de valeur pour "adc=" ? (''elle devrait varier entre 25000 et 55000'') |
− | # | + | # vérifier le raccordement entre GP27 et LDR |
− | # | + | # Vérifier la déclaration de la broche a1 dans le script |
− | # | + | # La photo-résistance est elle suffisamment masquée? |
− | + | La valeur change subitement lorsque je pose le doigt sur la photo-résistance? | |
− | + | * La peau humaine présente également une résistance. Celle-ci perturbe la résistance de la photo-résistance si celle-ci expose des contacts métalliques. | |
− | |||
− | + | La LED ne s'allume jamais! | |
− | # | + | # vérifier le branchement de la LED. |
− | # | + | # vérifier que la valeur ADC tombe bien en dessous de 32000 lorsque la photo-résistance est masquée. Au besoin, augmenter la valeur de TURN_ON. |
− | + | La LED ne s'éteint jamais! | |
− | + | * verifier si la valeur ADC passe au dessus de 32000 lorsque la photo-résistance est en pleine lumière. Au besoin abaisser la valeur de TURN_ON. | |
− | |||
== Le défi == | == Le défi == | ||
− | Remplacer le | + | Remplacer la valeur TURN_ON par celle obtenue par le potentiomètre branché sur A0 (GP26). |
− | + | Le potentiomètre sert alors de consigne, un fonctionnement similaire à une lampe automatique pour jardin. | |
== Encore plus == | == Encore plus == | ||
=== Brancher une photo-résistance === | === 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. | 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. | ||
+ | |||
+ | Pour sa part, la LED doit être équipée d'une résistance afin de limiter le courant. | ||
[[Fichier:P2E-LDR-wiring-2.png|800px]] | [[Fichier:P2E-LDR-wiring-2.png|800px]] | ||
+ | === Autres tutoriels === | ||
+ | Ce wiki contient d'autres exemples autour de l'acquisition analogique. | ||
+ | |||
+ | {{ttuto-begin}} | ||
+ | |||
+ | {{ttuto | ||
+ | |label=Temperature | ||
+ | |descr=Mesurer la température à l'aide du TMP-36 (analogique) | ||
+ | |img=tlogo-p2e-tmp36.png | ||
+ | |link=P2E-TMP36-FR | ||
+ | }} | ||
+ | |||
+ | {{ttuto | ||
+ | |label=Entrée Analogique | ||
+ | |descr=Comment utiliser une entrée analogique | ||
+ | |img=tlogo-p2e-analog-input.png | ||
+ | |link=P2E-Analog-Input-FR | ||
+ | }} | ||
+ | |||
+ | {{ttuto-end}} | ||
=== Autres ressources === | === Autres ressources === |
Version actuelle datée du 28 janvier 2025 à 22:38
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.
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).
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.
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).
![]() |
A contrario des montages communément présentés sur Internet, celui-ci place la photo-résistance en haut du pont diviseur. Cela permet de maintenir une relation cohérente entre augmentation de la lumière et augmentation de la tension. |
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.
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 .
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.
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).
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.
Il est également possible de visualiser ces informations sous forme de graphique.
Un problème?
Pas de changement de valeur pour "adc=" ? (elle devrait varier entre 25000 et 55000)
- vérifier le raccordement entre GP27 et LDR
- Vérifier la déclaration de la broche a1 dans le script
- La photo-résistance est elle suffisamment masquée?
La valeur change subitement lorsque je pose le doigt sur la photo-résistance?
- La peau humaine présente également une résistance. Celle-ci perturbe la résistance de la photo-résistance si celle-ci expose des contacts métalliques.
La LED ne s'allume jamais!
- vérifier le branchement de la LED.
- vérifier que la valeur ADC tombe bien en dessous de 32000 lorsque la photo-résistance est masquée. Au besoin, augmenter la valeur de TURN_ON.
La LED ne s'éteint jamais!
- verifier si la valeur ADC passe au dessus de 32000 lorsque la photo-résistance est en pleine lumière. Au besoin abaisser la valeur de TURN_ON.
Le défi
Remplacer la valeur TURN_ON par celle obtenue par le potentiomètre branché sur A0 (GP26).
Le potentiomètre sert alors de consigne, un fonctionnement similaire à une lampe automatique pour jardin.
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.
Pour sa part, la LED doit être équipée d'une résistance afin de limiter le courant.
Autres tutoriels
Ce wiki contient d'autres exemples autour de l'acquisition analogique.
Autres ressources
Traduction augmentée réalisée par Meurisse. D pour shop.MCHobby.be - Licence CC-BY-SA.