KY-035 Capteur magnétique analogique

De SensorKit X40 Wiki

Aller à : navigation, rechercher

Photo

KY-0035.png

Données techniques / Description sommaire

Le capteur basé sur un AH49E délivre une tension analogique proportionnelle à l'intensité du champ magnétique (via un aimant par exemple).

Brochage

3 S V G.png

Exemple de code pour Arduino

Le programme mesure la valeur de tension au niveau du capteur, calcule la résistance à partir de cette valeur et de la résistance série connue et renvoie les résultats à 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 au niveau du capteur, <br />//calcule la résistance à partir de cette valeur et de la résistance <br />//série connue et renvoie les résultats à la sortie série.

void loop()
{      
        // Mesure de la tension du capteur...
	int rawValue = analogRead(sensorPin);
        float voltage = rawValue * (5.0/1023) * 1000;
        
        float resistance = 10000 * ( voltage / ( 5000.0 - voltage) );
        
	// ... et envoi vers le port série
	Serial.print("Tension:");	Serial.print(voltage); Serial.print("mV");
	Serial.print(", Résistance:"); Serial.print(resistance); 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-035.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
### Traduction française 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 maxi possible sur l'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 et les transmet à la console.

try:
        while True:
                #Lecture de la valeur de la tension,...
                voltage = adc.readADCSingleEnded(adc_channel, gain, sps)

                # ... calcul de la résistance...
                resistance = 10000 * voltage/(voltageMax - voltage)

                # ... et envoi des 2 valeurs dans la console
                print "Tension:", voltage,"mV, Résistance:", ressitance,"Ω"
                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. [Sensor: 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