KY-018 Module à photorésistance LDR

De SensorKit X40 Wiki

Aller à : navigation, rechercher

Photo

ky-018.jpg

Données techniques / Description sommaire

Ce module intègre une photorésistance dont la valeur de résistance diminue lorsque la lumière augmente.

Cette variation de résistance peut être déterminée mathématiquement et permet de déterminer la quantité de lumière (en fonction de la variation de la résistance aux changements de lumière). Vous pouvez donc connaître la quantité de lumière si vous connaissez la résistance du capteur.

Cette résistance peut être déterminée à l'aide d'un diviseur de tension comme dans le schéma ci-dessous. Au moyen de la tension mesurée au point milieu, on peut alors calculer la résistance de la LDR (le calcul exact est repris dans les exemples de code ci-dessous).

KY-013diviseur2.png

Brochage

3 G V S.png

Exemple de code pour Arduino

Le programme mesure la valeur de tension continue aux bornes de la LDR, il calcule la résistance du capteur et envoie le résultat vers la sortie série.

int sensorPin = A5; // Déclaration de la broche d'entrée

// Sortie série à 9600 bauds
void setup()
{
	Serial.begin(9600);
}

// Le programme mesure la valeur de tension continue aux bornes de la LDR, il calcule la résistance du capteur <br />// et envoie le résultat vers la sortie série.

void loop()
{      
        // La valeur de la tension est mesurée
	int rawValue = analogRead(sensorPin);
        float voltage = rawValue * (5.0/1023) * 1000;
        
        float resitance = 10000 * ( voltage / ( 5000.0 - voltage) );
        
	// Sortie vers l'interface série
	Serial.print("Tension:");	Serial.print(voltage); Serial.print("mV");
	Serial.print(", Resistance:"); Serial.print(resitance); Serial.println("Ohm");
	Serial.println("---------------------------------------");

	delay(500);
}

Affectation des broches Arduino:

Sensor GND = [Pin GND]
Sensor +V = [Pin 5V]
Sensor Signal = [Pin A5]

Exemple de programme à télécharger:

KY-018.zip

Exemple de code pour Raspberry Pi

!! Attention !! Capteur analogique !! Attention !!

Contrairement à une carte Arduino, la Raspberry Pi ne dispose pas d'entrées analogiques ni de convertisseur ADC (Analog Digital Converter) intégré. Cela pose problème lorsque vous voulez utiliser des capteurs analogiques avec une carte Raspberry.

Pour contourner ce problème, Sensorkit X40 inclut le module KY-053 qui possède un module convertisseur ADC de 16 bits et qui peut être raccordé sur la Raspberry pour lui procurer 4 entrées analogiques. Ce module se raccorde à la Raspberry via le bus I2C. Il mesure la tension (analogique) et envoie une valeur numérique à la Raspberry.

Vous trouverez de plus amples informations à ce sujet dans la description du module KY-053.

!! Attention !! Capteur analogique  !! Attention !!


Ce programme utilise des librairies Python de la société Adafruit pour piloter les circuits ADS1115 (ADC) et ADS1x15 (I2C). 

Celles-ci se trouvent à la page https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code sous licence BSD

Le programme mesure la tension à l'aide du convertisseur ADS1115. Il calcule la résistance de la LDR et la transmet à la console. 

#!/usr/bin/python
# coding=utf-8
 
#############################################################################################################
### Copyright by Joy-IT
### Published under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
### Commercial use only after permission is requested and granted
### Programme traduit par Go tronic
###
### Single Analog Sensor - Raspberry Pi Python Code Example
###
#############################################################################################################
 
# Ce code utilise les librairies Python ADS1115 et I2C pour la Raspberry Pi
# Ces librairies sont publiées sous licence BSD sur le lien ci-dessous
# [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]
from Adafruit_ADS1x15 import ADS1x15
from time import sleep
 
# Les modules nécessaires sont importés et mis en place
import time, signal, sys, os, math
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
 
# Les variables utilisées sont initialisées
delayTime = 0.2
voltageMax = 3300 # valeur de tension maximale possible à l'entrée du convertisseur ADC
 
# attribution d'adresse ADS1x15 ADC
 
ADS1015 = 0x00  # 12-bit ADC
ADS1115 = 0x01  # 16-bit
 
# Choix du gain
gain = 4096  # +/- 4.096V
# gain = 2048  # +/- 2.048V
# gain = 1024  # +/- 1.024V
# gain = 512   # +/- 0.512V
# gain = 256   # +/- 0.256V
 
# Choix de la fréquence d'échantillonnage ADC (SampleRate)
# sps = 8    # 8 échantillons par seconde
# sps = 16   # 16 échantillons par seconde
# sps = 32   # 32 échantillons par seconde
# sps = 64   # 64 échantillons par seconde
# sps = 128  # 128 échantillons par seconde
sps = 250  # 250 échantillons par seconde
# sps = 475  # 475 échantillons par seconde
# sps = 860  # 860 échantillons par seconde
 
# choix du canal ADC (1-4)
adc_channel = 0    # Channel 0
# adc_channel = 1    # Channel 1
# adc_channel = 2    # Channel 2
# adc_channel = 3    # Channel 3
 
# initialisation du convertisseur
adc = ADS1x15(ic=ADS1115)
 
#############################################################################################################
 
# ########
# boucle de programme principale
# ########
# Le programme mesure la tension à l'aide du convertisseur ADS1115. 
# Il calcule la résistance de la LDR et les transmet à la console.
 
try:
        while True:
                #La valeur actuelle est reçue,...
                voltage = adc.readADCSingleEnded(adc_channel, gain, sps)
 
                # ... la résistance est calculée...
                resitance = 10000 * voltage/(voltageMax - voltage)
 
                # ... et les deux sont envpyées à la console
                print "Tension:", voltage,"mV, Résistance:", resitance,"Ω"
                print "---------------------------------------"
 
                # Delay
                time.sleep(delayTime)
 
 
 
except KeyboardInterrupt:
        GPIO.cleanup()

Brochage Raspberry Pi:

Capteur

GND = GND [Pin 06 (RPi)]
+V = 3,3V [Pin 01 (RPi)]
Signal analogique = Analog 0 [Pin A0 (ADS1115 - KY-053)]

ADS1115 - KY-053:

VDD = 3,3V [Pin 17]
GND = Masse [Pin 09]
SCL = GPIO03 / SCL [Pin 05]
SDA = GPIO02 / SDA [Pin 03]
A0 = s.o. [Capteur: signal analogique]

Exemple de programme à télécharger

RPi_Single_Analog_Sensor.zip

Commande pour lancer le programme:

sudo python RPi_Single_Analog_Sensor.py