KY-025 Module Reed : Différence entre versions

De SensorKit X40 Wiki

Aller à : navigation, rechercher
(Technische Daten / Kurzbeschreibung)
(Exemple de code pour Raspberry Pi)
 
(17 révisions intermédiaires par le même utilisateur non affichées)
Ligne 3 : Ligne 3 :
  
 
==<span id="Donn.C3.A9es_techniques.C2.A0.2F.C2.A0Description_sommaire" class="mw-headline">Données techniques / Description sommaire</span>==
 
==<span id="Donn.C3.A9es_techniques.C2.A0.2F.C2.A0Description_sommaire" class="mw-headline">Données techniques / Description sommaire</span>==
Si un champ magnétique est détectée, la sortie numérique commute.
+
Si un champ magnétique est détecté, la sortie digitale commute.
  
 
Les contacts Reed sont composés de deux lames de contact souples situées à l'intérieur d'un tube en verre. Ces lames se déplacent l'une vers l'autre si un champ magnétique est présent dans le voisinage (passage d'un aimant).
 
Les contacts Reed sont composés de deux lames de contact souples situées à l'intérieur d'un tube en verre. Ces lames se déplacent l'une vers l'autre si un champ magnétique est présent dans le voisinage (passage d'un aimant).
  
[[Fichier:Reed.png|none|487x365px]]
+
[[Fichier:KY-025.png|none|487x365px]]
  
Le contact se ferme en présence d'un champ magnétique.<br />'''Sortie numérique:'''  contact si un champ magnétique est détecté<br />'''Sortie analogique:''' mesure directe du capteur
+
Le contact se ferme en présence d'un champ magnétique.<br />'''Sortie numérique:'''  contact si un champ magnétique est détecté<br />'''Sortie analogique:''' identique à la sortie numérique (capteur tout ou rien)
  
 
----
 
----
  
'''LED1:''' Zeigt an, dass der Sensor mit Spannung versorgt ist
+
'''LED1:''' indique que le capteur est alimenté en tension<br />'''LED2:''' indique qu'un champ magnétique est détecté
 
+
'''LED2:''' Zeigt an, dass ein Magnetfeld detektiert wurde
+
 
+
==Pin-Belegung==
+
[[Fichier:4_dig_V_G_An.png|none|450x235px]]
+
 
+
==Funktionsweise des Sensors==
+
Dieser Sensor besitzt auf seiner Platine drei funktionelle Bestandteile. Die ist die Sensoreinheit vorne am Modul, welche das aktuelle Umfeld physikalisch misst und als analoges Signal auf die zweite Einheit, dem Verstärker, ausgibt. Dieser verstärkt das Signal abhängig vom eingestellten Widerstand am Drehpotentiometer und leitet es auf den analogen Ausgang des Moduls.
+
 
+
 
+
'''Hierbei ist zu beachten: '''Das Signal ist invertiert; wird ein hoher Wert gemessen, so resultiert dies in einen niedrigeren Spannungswert am analogen Ausgang.
+
 
+
Die dritte Einheit stellt einen Komparator dar, welcher den digitalen Ausgang und die LED schaltet, wenn das Signal unter einen bestimmten Wert fällt. Mittels des Drehpotentiometers kann somit die Empfindlichkeit eingestellt werden, wie es im folgenden Bild aufgezeigt wird:
+
  
 +
==Brochage==
 +
[[Fichier:KY-024broches.png|450x235px|none]]
  
 +
==<span id="Fonctionnement_du_capteur" class="mw-headline">Fonctionnement du capteur</span>==
 +
Ce module est composé de trois éléments fonctionnels. Le capteur situé à l'avant du module effectue la mesure, le signal analogique est ensuite envoyé sur l'amplificateur. Celui-ci amplifie le signal en fonction du gain déterminé par le potentiomètre et envoie le signal à la sortie analogique du module.<br /><br />Il convient de noter que le signal est inversé: plus la valeur mesurée par le capteur est haute, plus la tension de sortie est faible.<br /><br />La troisième partie est composée d'un comparateur qui commute la sortie numérique et la diode lorsque le signal tombe en dessous d'une certaine valeur. La sensibilité peut être ajustée au moyen du potentiomètre comme décrit ci-dessous:<br /><br />
  
 
[[Fichier:Empfindlichkeit_Potentiometer.jpg|none|455x542px]]
 
[[Fichier:Empfindlichkeit_Potentiometer.jpg|none|455x542px]]
  
  
Dieser Sensor gibt somit keine absoluten Werte aus (z.B. genau gemessene Temperatur in °C oder Magnetfeldstärke in mT) , sondern es handelt sich hierbei um eine Relativ-Messung: Man definiert hierbei einen Grenzwert relativ zur gegebenen normalen Umweltsituation und es wird ein Signal ausgegeben was weiterverarbeitet werden kann, falls dieser Grenzwert überschritten bzw. ein anderer Zustand als der Normalfall eingetreten ist.
+
Ce type de capteur ne délivre pas des valeurs absolues (par exemple, la température mesurée avec précision en ° C ou de la force du champ magnétique en mT), mais des valeurs relatives. On définit une valeur limite par rapport à une valeur normale donnée et le module émet un signal si cette limite est dépassée.
  
 <br />Dieses Verhalten eignet sich hervorragend zur Temperaturüberwachung (KY-028), Näherungsschalter (KY-024, KY-025, KY-036), Alarmüberwachungen (KY-037, KY-038) oder Drehgeber (KY-026).
+
Ce fonctionnement est idéal pour la surveillance de la température (KY-028), les détecteurs de proximité (KY-024, KY 025, KY-036), la surveillance des alarmes (KY-037, KY-038) ou le détecteur de flamme (KY-026).
  
==Codebeispiel Arduino==
+
==<span id="Exemple_de_code_pour_Arduino" class="mw-headline">Exemple de code pour Arduino</span>==
Das Programm liest den aktuellen Spannungswert aus, der am analogen Ausgang gemessen werden kann, und gibt diesen auf der seriellen Schnittstelle aus.
+
Le programme lit la valeur de la tension à la sortie analogique et l'envoie vers le port série.
  
Zudem wird ebenfalls der Zustand des digitalen Pins in der Konsole angegeben, was bedeutet ob der Grenzwert unterschritten wurde oder nicht.
+
L'état dela sortie numérique est également indiqué dans la console, ce qui permet de savoir su le seuil a été atteint ou pas.
  
<pre class="brush:cpp">// Deklaration und Initialisierung der Eingang-Pins
+
<pre class="brush:cpp">// Déclaration et initialisation des broches d'entrées
 
int Analog_Eingang = A0; // X-Achse-Signal
 
int Analog_Eingang = A0; // X-Achse-Signal
 
int Digital_Eingang = 3; // Knopf
 
int Digital_Eingang = 3; // Knopf
Ligne 51 : Ligne 42 :
 
   pinMode (Digital_Eingang, INPUT);
 
   pinMode (Digital_Eingang, INPUT);
 
        
 
        
   Serial.begin (9600); // Serielle Ausgabe mit 9600 bps
+
   Serial.begin (9600); // Sortie série à 9600 bauds
 
}
 
}
 
   
 
   
// Das Programm liest die aktuellen Werte der Eingang-Pins
+
// Le programme lit les valeurs des broches d'entrée et les envoie à la sortie série
// und gibt diese auf der seriellen Ausgabe aus
+
 
void loop ()
 
void loop ()
 
{
 
{
Ligne 61 : Ligne 51 :
 
   int Digital;
 
   int Digital;
 
    
 
    
   //Aktuelle Werte werden ausgelesen, auf den Spannungswert konvertiert...
+
   //Les valeurs sont lues, sont converties en tension...
 
   Analog = analogRead (Analog_Eingang) * (5.0 / 1023.0);  
 
   Analog = analogRead (Analog_Eingang) * (5.0 / 1023.0);  
 
   Digital = digitalRead (Digital_Eingang);
 
   Digital = digitalRead (Digital_Eingang);
 
    
 
    
   //... und an dieser Stelle ausgegeben
+
   //... et envoyées à la sortie série.
   Serial.print ("Analoger Spannungswert:"); Serial.print (Analog, 4);  Serial.print ("V, ");
+
   Serial.print ("Tension analogique:"); Serial.print (Analog, 4);  Serial.print ("V, ");
   Serial.print ("Grenzwert:");
+
   Serial.print ("Limite:");
 
   
 
   
 
   if(Digital==1)
 
   if(Digital==1)
 
   {
 
   {
       Serial.println (" erreicht");
+
       Serial.println (" atteinte");
 
   }
 
   }
 
   else
 
   else
 
   {
 
   {
       Serial.println (" noch nicht erreicht");
+
       Serial.println (" pas encore atteinte");
 
   }
 
   }
 
   Serial.println ("----------------------------------------------------------------");
 
   Serial.println ("----------------------------------------------------------------");
Ligne 82 : Ligne 72 :
 
</pre>
 
</pre>
  
'''Anschlussbelegung Arduino:'''
+
'''Affectation des broches Arduino:'''
  
 
{| style="height: 58px; padding-left: 30px;" width="228"
 
{| style="height: 58px; padding-left: 30px;" width="228"
 
|-
 
|-
||digitales Signal
+
||Signal numérique
 
||=
 
||=
 
||[Pin 3]
 
||[Pin 3]
Ligne 98 : Ligne 88 :
 
||[Pin GND]
 
||[Pin GND]
 
|-
 
|-
||analoges Signal
+
||Signal analogique
 
||=
 
||=
 
||[Pin 0]
 
||[Pin 0]
 
|}
 
|}
  
'''Beispielprogramm Download<br />'''
+
'''Exemple de programme à télécharger'''
  
[[Média:Ard_Analoger_Sensor.zip|Ard_Analoger_Sensor.zip]]
+
[http://www.gotronic.fr/userfiles/www.gotronic.fr/files/Arduino/KY-025.zip KY-025.zip]
  
==Codebeispiel Raspberry Pi==
+
==<span id="Exemple_de_code_pour.C2.A0Raspberry_Pi" class="mw-headline">Exemple de code pour Raspberry Pi</span>==
<span style="color: #ff6600;">!! <span style="color: #ff0000;">Achtung</span> !! <span style="color: #99cc00;">Analoger Sensor</span>  !! <span style="color: #ff0000;">Achtung</span> !!</span>
+
<span style="color: #ff6600;">!! <span style="color: #ff0000;">Attention</span> !! <span style="color: #99cc00;">Capteur analogique</span>  !! <span style="color: #ff0000;">Attention</span> !!</span>
  
Der Raspberry Pi besitzt im Gegensatz zum Arduino keine analogen Eingänge bzw. es ist kein ADC (analog digital Converter) im Chip des Raspberry Pi's integriert. Dies schränkt den Raspberry Pi ein, wenn man Sensoren einsetzen möchte, wo nicht digital Werte ausgegeben werden [Spannungswert überschritten -> digital EIN | Spannungswert unterschritten -> digital AUS | Beispiel: Knopf gedrückt [<span style="color: #99cc00;">EIN</span>] Knopf losgelassen [<span style="color: #ff0000;">AUS</span>]], sondern es sich hier um einen kontinuierlichen veränderlichen Wert handeln sollte (Beispiel: Potentiometer -> Andere Position = Anderer Spannungswert)
+
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.
  
Um diese Problematik zu umgehen, besitzt unser ''Sensorkit X40'' mit dem '''KY-053''' ein Modul mit 16 Bit genauen ADC, welches Sie am Raspberry nutzen können, um diesen um 4 analoge Eingänge erweitern zu können. Dieses wird per I2C an den Raspberry Pi angeschlossen, übernimmt die analoge Messung und gibt den Wert digital an den Raspberry Pi weiter.
+
Pour contourner ce problème, Sensorkit X40 inclut le [[KY-053 Convertisseur analogique digital|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.
  
Somit empfehlen wir, bei analogen Sensoren dieses Sets das KY-053 Modul mit dem besagten ADC dazwischenzuschalten. Nähere Informationen finden Sie auf der Informationsseite zum [[KY-053 Analog Digital Converter|'''KY-053'''   Analog Digital Converter]]
+
Vous trouverez de plus amples informations à ce sujet dans la description du [[KY-053 Convertisseur analogique digital|module KY-053]].
  
<span style="color: #ff6600;">!! <span style="color: #ff0000;">Achtung</span> !! <span style="color: #99cc00;">Analoger Sensor</span>  !! <span style="color: #ff0000;">Achtung</span> !!</span>
+
<span style="color: #ff0000;">!!Attention !!</span> <span style="color: #99cc00;">Capteur analogique <span style="color: #ff0000;">!!</span></span> <span style="color: #ff0000;">Attention !!</span>
  
Das Programm nutzt zur Ansteuerung des ADS1115 ADC die entsprechenden ADS1x15 und I2C Python-Libraries der Firma Adafruit. Diese wurden unter dem folgenden Link [[https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]] unter der BSD-Lizenz [[https://opensource.org/licenses/BSD-3-Clause Link]] veröffentlicht. Die benötigten Libraries sind im unteren Download-Paket enthalten.
 
  
Das Programm liest die aktuellen Werte der Eingang-Pins und gibt diese in der Konsole als Wert in [mV] aus.
+
Ce programme utilise des librairies Python de la société Adafruit pour piloter les circuits ADS1115 (ADC) et ADS1x15 (I2C). 
  
Zudem wird ebenfalls der Zustand des digitalen Pins in der Konsole angegeben, was bedeutet ob der Grenzwert unterschritten wurde oder nicht.
+
Celles-ci se trouvent à la page [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code] sous [https://opensource.org/licenses/BSD-3-Clause licence BSD]. 
  
<pre class="brush:py">#
+
Le programme mesure la tension à l'aide du convertisseur ADS1115. Il lit la valeur de la tension à la sortie analogique et l'envoie vers le port série.
#!/usr/bin/python
+
 
 +
L'état de la sortie numérique est également indiqué dans la console, ce qui permet de savoir su le seuil a été atteint ou pas.
 +
 
 +
<pre class="brush:py">#!/usr/bin/python
 
# coding=utf-8
 
# coding=utf-8
 
+
 
#############################################################################################################
 
#############################################################################################################
 
### Copyright by Joy-IT
 
### Copyright by Joy-IT
 
### Published under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
 
### Published under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
 
### Commercial use only after permission is requested and granted
 
### Commercial use only after permission is requested and granted
 +
### Programme traduit par Go tronic
 
###
 
###
### Analog Sensor + ADS1115 ADC - Raspberry Pi Python Code Example
+
### Analog Sensor - Raspberry Pi Python Code Example
 
###
 
###
 
#############################################################################################################
 
#############################################################################################################
 
+
 
+
# Ce code utilise les librairies Python ADS1115 et I2C pour la Raspberry Pi
# Dieser Code nutzt die ADS1115 und die I2C Python Library fuer den Raspberry Pi
+
# Ces librairies sont publiées sous licence BSD sur le lien ci-dessous
# Diese ist unter folgendem Link unter der BSD Lizenz veroeffentlicht
+
 
# [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]
 
# [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code]
 
from Adafruit_ADS1x15 import ADS1x15
 
from Adafruit_ADS1x15 import ADS1x15
 
from time import sleep
 
from time import sleep
  
# Weitere benoetigte Module werden importiert und eingerichtet
+
# Les modules nécessaires sont importés et mis en place
 
import time, signal, sys, os
 
import time, signal, sys, os
 
import RPi.GPIO as GPIO
 
import RPi.GPIO as GPIO
Ligne 150 : Ligne 142 :
 
GPIO.setwarnings(False)
 
GPIO.setwarnings(False)
  
# Benutzte Variablen werden initialisiert
+
# Les variables utilisées sont initialisées
 
delayTime = 0.2
 
delayTime = 0.2
  
# Adresszuweisung ADS1x15 ADC
+
# attribution d'adresse ADS1x15 ADC
  
 
ADS1015 = 0x00  # 12-bit ADC
 
ADS1015 = 0x00  # 12-bit ADC
 
ADS1115 = 0x01  # 16-bit
 
ADS1115 = 0x01  # 16-bit
  
# Verstaerkung (Gain) wird ausgewaehlt
+
# Choix du gain
 
gain = 4096  # +/- 4.096V
 
gain = 4096  # +/- 4.096V
 
# gain = 2048  # +/- 2.048V
 
# gain = 2048  # +/- 2.048V
Ligne 165 : Ligne 157 :
 
# gain = 256  # +/- 0.256V
 
# gain = 256  # +/- 0.256V
  
# Abtasterate des ADC (SampleRate) wird ausgewaehlt
+
# Choix de la fréquence d'échantillonnage ADC (SampleRate)
# sps = 8    # 8 Samples pro Sekunde
+
# sps = 8    # 8 échantillons par seconde
# sps = 16  # 16 Samples pro Sekunde
+
# sps = 16  # 16 échantillons par seconde
# sps = 32  # 32 Samples pro Sekunde
+
# sps = 32  # 32 échantillons par seconde
sps = 64  # 64 Samples pro Sekunde
+
sps = 64  # 64 échantillons par seconde
# sps = 128  # 128 Samples pro Sekunde
+
# sps = 128  # 128 échantillons par seconde
# sps = 250  # 250 Samples pro Sekunde
+
# sps = 250  # 250 échantillons par seconde
# sps = 475  # 475 Samples pro Sekunde
+
# sps = 475  # 475 échantillons par seconde
# sps = 860  # 860 Samples pro Sekunde
+
# sps = 860  # 860 échantillons par seconde
  
# ADC-Channel (1-4) wird ausgewaehlt
+
# choix du canal ADC (1-4)
 
adc_channel = 0    # Channel 0
 
adc_channel = 0    # Channel 0
 
# adc_channel = 1    # Channel 1
 
# adc_channel = 1    # Channel 1
Ligne 181 : Ligne 173 :
 
# adc_channel = 3    # Channel 3
 
# adc_channel = 3    # Channel 3
  
# Hier wird der ADC initialisiert - beim KY-053 verwendeten ADC handelt es sich um einen ADS1115 Chipsatz
+
# initialisation du convertisseur
 
adc = ADS1x15(ic=ADS1115)
 
adc = ADS1x15(ic=ADS1115)
  
# Hier waehlt man den Eingangs-Pin des digitalen Signals aus
+
# Sélection de la broche d'entrée du signal numérique
 
Digital_PIN = 24
 
Digital_PIN = 24
 
GPIO.setup(Digital_PIN, GPIO.IN, pull_up_down = GPIO.PUD_OFF)
 
GPIO.setup(Digital_PIN, GPIO.IN, pull_up_down = GPIO.PUD_OFF)
Ligne 191 : Ligne 183 :
  
 
# ########
 
# ########
# Hauptprogrammschleife
+
# boucle de programme principale
 
# ########
 
# ########
# Das Programm liest die aktuellen Werte der Eingang-Pins
+
# Le programme lit les tensions en entrées et les transmet à la console.
# und gibt diese in der Konsole aus
+
  
 
try:
 
try:
 
         while True:
 
         while True:
                 #Aktuelle Werte werden aufgenommen
+
                 #Les valeurs de tension sont enregistrées
 
                 analog = adc.readADCSingleEnded(adc_channel, gain, sps)
 
                 analog = adc.readADCSingleEnded(adc_channel, gain, sps)
  
                 # Ausgabe auf die Konsole
+
                 # Envoi vers la console
 
                 if GPIO.input(Digital_PIN) == False:
 
                 if GPIO.input(Digital_PIN) == False:
                         print "Analoger Spannungswert:", analog,"mV, ","Grenzwert: noch nicht erreicht"
+
                         print "Tension analogique:", analog,"mV, ","Limite: pas encore atteinte"
 
                 else:
 
                 else:
                         print "Analoger Spannungswert:", analog, "mV, ", "Grenzwert: erreicht"
+
                         print "Tension analogique:", analog, "mV, ", "Limite: atteinte"
 
                 print "---------------------------------------"
 
                 print "---------------------------------------"
  
Ligne 218 : Ligne 209 :
  
 
</pre>
 
</pre>
'''Anschlussbelegung Raspberry Pi:'''
+
'''Brochage Raspberry Pi:'''
  
Sensor
+
Capteur
  
 
{| style="height: 85px; padding-left: 30px;" width="441"
 
{| style="height: 85px; padding-left: 30px;" width="441"
 
|-
 
|-
||digitales Signal
+
||Signal numérique
 
||=
 
||=
 
||GPIO 24
 
||GPIO 24
Ligne 239 : Ligne 230 :
 
||[Pin 06 (RPi)]
 
||[Pin 06 (RPi)]
 
|-
 
|-
||analoges Signal
+
||Signal analogique
 
||=
 
||=
 
||Analog 0
 
||Analog 0
Ligne 275 : Ligne 266 :
 
|}
 
|}
  
'''Beispielprogramm Download'''
+
'''Exemple de programme à télécharger'''
 
+
[[Média:RPi_AnalogSensor.zip|RPi_AnalogSensor.zip]]
+
  
 +
[http://www.gotronic.fr/userfiles/www.gotronic.fr/files/Raspberry/RPi_AnalogSensor.zip RPi_AnalogSensor.zip]
  
Zu starten mit dem Befehl:
+
Commande pour lancer le programme:
  
 
<pre class="brush:bash">sudo python RPi_AnalogSensor.py
 
<pre class="brush:bash">sudo python RPi_AnalogSensor.py
 
</pre>
 
</pre>

Version actuelle en date du 30 décembre 2016 à 15:16

Photo

ky-025.jpg

Données techniques / Description sommaire

Si un champ magnétique est détecté, la sortie digitale commute.

Les contacts Reed sont composés de deux lames de contact souples situées à l'intérieur d'un tube en verre. Ces lames se déplacent l'une vers l'autre si un champ magnétique est présent dans le voisinage (passage d'un aimant).

KY-025.png

Le contact se ferme en présence d'un champ magnétique.
Sortie numérique:  contact si un champ magnétique est détecté
Sortie analogique: identique à la sortie numérique (capteur tout ou rien)


LED1: indique que le capteur est alimenté en tension
LED2: indique qu'un champ magnétique est détecté

Brochage

KY-024broches.png

Fonctionnement du capteur

Ce module est composé de trois éléments fonctionnels. Le capteur situé à l'avant du module effectue la mesure, le signal analogique est ensuite envoyé sur l'amplificateur. Celui-ci amplifie le signal en fonction du gain déterminé par le potentiomètre et envoie le signal à la sortie analogique du module.

Il convient de noter que le signal est inversé: plus la valeur mesurée par le capteur est haute, plus la tension de sortie est faible.

La troisième partie est composée d'un comparateur qui commute la sortie numérique et la diode lorsque le signal tombe en dessous d'une certaine valeur. La sensibilité peut être ajustée au moyen du potentiomètre comme décrit ci-dessous:

Empfindlichkeit Potentiometer.jpg


Ce type de capteur ne délivre pas des valeurs absolues (par exemple, la température mesurée avec précision en ° C ou de la force du champ magnétique en mT), mais des valeurs relatives. On définit une valeur limite par rapport à une valeur normale donnée et le module émet un signal si cette limite est dépassée.

Ce fonctionnement est idéal pour la surveillance de la température (KY-028), les détecteurs de proximité (KY-024, KY 025, KY-036), la surveillance des alarmes (KY-037, KY-038) ou le détecteur de flamme (KY-026).

Exemple de code pour Arduino

Le programme lit la valeur de la tension à la sortie analogique et l'envoie vers le port série.

L'état dela sortie numérique est également indiqué dans la console, ce qui permet de savoir su le seuil a été atteint ou pas.

// Déclaration et initialisation des broches d'entrées
int Analog_Eingang = A0; // X-Achse-Signal
int Digital_Eingang = 3; // Knopf
 
void setup ()
{
  pinMode (Analog_Eingang, INPUT);
  pinMode (Digital_Eingang, INPUT);
      
  Serial.begin (9600); // Sortie série à 9600 bauds
}
 
// Le programme lit les valeurs des broches d'entrée et les envoie à la sortie série
void loop ()
{
  float Analog;
  int Digital;
   
  //Les valeurs sont lues, sont converties en tension...
  Analog = analogRead (Analog_Eingang) * (5.0 / 1023.0); 
  Digital = digitalRead (Digital_Eingang);
   
  //... et envoyées à la sortie série.
  Serial.print ("Tension analogique:"); Serial.print (Analog, 4);  Serial.print ("V, ");
  Serial.print ("Limite:");
 
  if(Digital==1)
  {
      Serial.println (" atteinte");
  }
  else
  {
      Serial.println (" pas encore atteinte");
  }
  Serial.println ("----------------------------------------------------------------");
  delay (200);
}

Affectation des broches Arduino:

Signal numérique = [Pin 3]
+V = [Pin 5V]
GND = [Pin GND]
Signal analogique = [Pin 0]

Exemple de programme à télécharger

KY-025.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 lit la valeur de la tension à la sortie analogique et l'envoie vers le port série.

L'état de la sortie numérique est également indiqué dans la console, ce qui permet de savoir su le seuil a été atteint ou pas.

#!/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
###
### 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
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

# Les variables utilisées sont initialisées
delayTime = 0.2

# 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)

# Sélection de la broche d'entrée du signal numérique
Digital_PIN = 24
GPIO.setup(Digital_PIN, GPIO.IN, pull_up_down = GPIO.PUD_OFF)

#############################################################################################################

# ########
# boucle de programme principale
# ########
# Le programme lit les tensions en entrées et les transmet à la console.

try:
        while True:
                #Les valeurs de tension sont enregistrées
                analog = adc.readADCSingleEnded(adc_channel, gain, sps)

                # Envoi vers la console
                if GPIO.input(Digital_PIN) == False:
                        print "Tension analogique:", analog,"mV, ","Limite: pas encore atteinte"
                else:
                        print "Tension analogique:", analog, "mV, ", "Limite: atteinte"
                print "---------------------------------------"

                # Reset + Delay
                button_pressed = False
                time.sleep(delayTime)



except KeyboardInterrupt:
        GPIO.cleanup()

Brochage Raspberry Pi:

Capteur

Signal numérique = GPIO 24 [Pin 18 (RPi)]
+V = 3,3V [Pin 1 (RPi)]
GND = Masse [Pin 06 (RPi)]
Signal analogique = Analog 0 [Pin A0 (ADS1115 - KY-053)]

ADS1115 - KY-053:

VDD = 3,3V [Pin 01]
GND = Masse [Pin 09]
SCL = GPIO03 / SCL [Pin 05]
SDA = GPIO02 / SDA [Pin 03]
A0 = s.o. [Sensor: analoges Signal]

Exemple de programme à télécharger

RPi_AnalogSensor.zip

Commande pour lancer le programme:

sudo python RPi_AnalogSensor.py