Mise en oeuvre - Chapitre 2 (nouvelle version)

Le forum du Snootlab Starter Kit

Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude Laetitia » Lun 17 Déc 2012 12:06

Bonjour,

Aujourd'hui nous allons apprendre à fabriquer un détecteur de luminosité avec seuil de fonctionnement et affichage.

Ce montage sera constitué d'un capteur de luminosité, de trois LEDs pour l'affichage, et d'un potentiomètre qui vous servira à fixer le seuil de fonctionnement. Plus clairement, quand la valeur mesurée à l'aide de la photorésistance sera inférieure à la valeur de consigne donnée par le potentiomètre, notre montage n'affichera rien sur les LEDs.
Nous aurons donc besoin d'un amplificateur opérationnel, qui jouera le rôle de comparateur entre le seuil fixé et la valeur lue sur la photorésistance.

- MATÉRIEL -

- Arduino Uno (x1)
- Photorésistance (x1)
- Résistance 1 KOhm (x2)
- Résistance 150 Ohms (x4)
- Résistance 10 KOhms (x1)
- Amplificateur Opérationnel LM358 (x1)
- LEDs (x3)
- Potentiomètre rotatif (x1)
- Breadboard (x2)

- SCHÉMA -

Schéma_STKch2.png
Schéma_STKch2.png (41.74 Kio) Vu 4335 fois


- CODE -

Code: Tout sélectionner
/*
 Starter Kit - Chapitre 2 (nouvelle version)
 Détecteur de luminosité avec affichage à LEDs et seuil de déclenchement.
 */

// Déclaration des pins auxquelles sont attachées les différents composants
#define photo 0        // photorésistance > A0
#define pot 1          // potentiomètre > A1
#define rouge 2        // LED rouge > D2
#define jaune 3        // LED jaune > D3
#define vert 4         // LED verte > D4
#define AOP 12         // sortie du comparateur > D12

// Déclaration des variables relatives à la photo-résistance
unsigned int luminosite = 0;
unsigned int lum;

// Déclaration du seuil déterminé par le potar
unsigned int seuil = 0;

void setup()
{                             
  pinMode(rouge, OUTPUT);            // Positionner les pins reliées aux LEDs en sortie
  pinMode(jaune, OUTPUT);
  pinMode(vert, OUTPUT);
  pinMode(AOP,INPUT);              // Positionner la pin en sortie du comparateur en entrée
}

void loop()
{
  seuil = analogRead(pot);
  luminosite = analogRead(photo);            // Valeur reçue sur la photoresistance
  lum = map(luminosite, 0, 1023, 1023, 0);   // Ré-étalonnage

  if(digitalRead(AOP) == LOW)              // Si on est en dessous du seuil de détection fixé
  {                                        // par le potentiometre circulaire, éteindre l'affichage
      digitalWrite(rouge, LOW);
      digitalWrite(jaune, LOW);
      digitalWrite(vert, LOW);
  }
  else
  {
    digitalWrite(rouge, LOW);      // RAZ affichage
    digitalWrite(jaune, LOW);
    digitalWrite(vert, LOW);
   
    if (lum > 100)                            // allumage des LEDS progressivement en fonction
    {                                         // de la luminosité (seuils à personnaliser si besoin)
      digitalWrite(vert, HIGH);
      if (lum > 300)
      {
        digitalWrite(jaune, HIGH);
        if (lum > 600)
        {
          digitalWrite(rouge, HIGH);
        }
      }
    }
  }
  delay(250);                              // Attendre 1/4 seconde avant de recommencer
}


- EXPLICATIONS -

La photorésistance
La photorésistance est un composant dont la résistance varie lorsque l'intensité lumineuse augmente.
Loi d'Ohm a écrit:U = R x I, avec U : tension aux bornes du composant (V), R : résistance du composant (Ω), I : intensité du courant traversant le composant (A).

On voit donc bien que si la résistance augmente, la tension aussi, et inversement. Or on récupère cette tension sur la pin A0 de l'Arduino, avec la fonction analogRead() qui transcrit l'information sous forme de nombre de 0 à 1023 (2^10 bits, 1024 valeurs) : 5V = 1023, 0V = 0, etc.
On peut utiliser telle quelle la valeur reçue mais pour cette fois, on va ré-étalonner les valeurs de manière à ce qu'une basse tension corresponde à une basse luminosité, et inversement, ceci grâce à la fonction map() ;)

L'amplificateur opérationnel
L'amplificateur opérationnel joue ici le rôle de comparateur. Il calcule la différence de tension entre ses deux entrées : si elle est positive (la valeur lue sur la photorésistance est supérieure au seuil fixé par le potentiomètre), la sortie passe à l'état HAUT (allumage des LEDs) ; si elle est négative, la sortie est à l'état BAS (extinction des LEDs).
Essayez de tourner le potentiomètre pour changer la valeur du seuil, vous verrez les LEDs s'éteindre ou s'allumer en fonction !


C'est tout pour cette fois ! J'espère que ce tutoriel vous aura plu, et bonne bidouille en attendant le prochain !
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 291
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude cyprien » Ven 1 Mar 2013 13:46

Bonjour,
J’aimerais faire un montage plus simple, sans le potentiomètre. Quelle est la résistance à mettre devant la photorésistance ? Comment puis-je calculer cela (Je débute en électronique). J'ai trouvé cela, est-ce le bon document à trouver ? Est-ce la datasheet ?
Merci pour vos réponses :)
cyprien
 
Messages: 4
Inscription: Jeu 14 Fév 2013 10:59

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude apprenti » Mer 1 Mai 2013 19:01

:lol:
merci de votre service gratuit
apprenti
 
Messages: 1
Inscription: Jeu 7 Mar 2013 14:07

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude DAVID » Jeu 16 Mai 2013 23:12

bonsoir.je n'arrive pas a utiliser les codes fournit par snootlab ni ce du tuto ni ce de git hub .
DAVID
 
Messages: 5
Inscription: Jeu 16 Mai 2013 21:05

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude phil » Ven 17 Mai 2013 17:27

Bonjour,
Est ce que tu peux préciser ton problème ?
Est ce que le code ne compile pas, est ce que cela en produit pas l'effet escompté ?....
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude DAVID » Lun 20 Mai 2013 17:04

MERCI DE REPONDRE .IL Y DES ERREURES QUAND JE LE COMPILE.'snootordc' does not name type
car4dc :37: error : 'MFL' was not declared on this scope etc ;;;
DAVID
 
Messages: 5
Inscription: Jeu 16 Mai 2013 21:05

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude phil » Mar 21 Mai 2013 09:50

Bonjour,

Est ce que tu peux preciser de quel code il s'agit ?

Quelle est la version de l'IDE arduino que tu utilise. Quel est le type de ton Arduino (uno, mega, duemilanove...)

Est ce que tu as bien sélectionné le type de carte dans le menu Tools==> Board ?

Est ce que c'est un exemple de la librairie Snootor ?

Est ce que tu as correctement installé la librairie ? https://github.com/Snootlab/Snootor
Pour info il faut cliquer sur le bouton ZIP (juste au dessus de files) et deziper le contenu de l'archive dans le repertoire "libraries" de ton sketchbook. Attention, il faut que les fichiers et repoertoires de la lib (c'est a dire details.txt, [examples], keywords.txt, readme.txt, snootor.cpp snootor.h snootor_common.h snootor_dc.cpp snootor_dc.h snootor_defines.h snootor_motor.cpp snootor_motor.h snootor_step.cpp snootor_step.h) soient situés dans un repertoire nommé "Snootor" pour que ça marche

Si tout est ok tu devrai trouvé dans l'IDE arduino dans le menu file=>Exemple un menu "Snootor" qui contient tous les exemples de la lib...
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude DAVID » Mar 21 Mai 2013 12:52

La version ide 1.0.4 avec une carte uno. J' ais tous paramétré correctement je pense ,car avec les codes blink etc, ça fonctionne .J' ais installé correctement la librairie comme vous l 'avez decrit.
car4dc:30 :error: 'snootordc' does not name a type
car4dc.pde: in member fonction ' void car:: init()':
 cardc:37: error : 'MFL' was not declared in this scope
etc il y en a beaucoup je n' ais pas tous recopier
DAVID
 
Messages: 5
Inscription: Jeu 16 Mai 2013 21:05

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude phil » Mar 21 Mai 2013 12:57

Pouvez vous me dire quel est le code que vous essayez de compiler ?
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude DAVID » Mar 21 Mai 2013 16:42

le snootor-master ,car4dc et tous ce du dossier .j' ais acheté un rotoshield sootlab que je veux utiliser avec quatre moteur dc.
DAVID
 
Messages: 5
Inscription: Jeu 16 Mai 2013 21:05

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude phil » Mar 21 Mai 2013 17:07

Perso j'ai obtenu ce genre d'erreur quand je n'ai pas bien nommer le répertoire de la librairie.

Il FAUT que le répertoire de la lib s'appelle "Snootor" et PAS "Snootor-master"
JE vous rappelle le chemin d'acces de librairie <repertoire du sketchbook>\libraries\Snootor
En suite si on fait un dir de ce repertoire on doit obtenir

Code: Tout sélectionner
 Répertoire de E:\docs\arduino102\libraries\Snootor

21/05/2013  10:43    <REP>          .
21/05/2013  10:43    <REP>          ..
21/05/2013  10:43               725 details.txt
21/05/2013  10:43    <REP>          examples
21/05/2013  10:43             1 256 keywords.txt
21/05/2013  10:43               944 readme.txt
21/05/2013  10:43             6 852 snootor.cpp
21/05/2013  10:43               638 snootor.h
21/05/2013  10:43             1 634 snootor_common.h
21/05/2013  10:43             7 199 snootor_dc.cpp
21/05/2013  10:43             2 253 snootor_dc.h
21/05/2013  10:43             1 585 snootor_defines.h
21/05/2013  10:43               212 snootor_motor.cpp
21/05/2013  10:43               758 snootor_motor.h
21/05/2013  10:43             7 535 snootor_step.cpp
21/05/2013  10:43             4 531 snootor_step.h
              13 fichier(s)           36 122 octets
               3 Rép(s)  25 046 335 488 octets libres


Dans mon cas mon sketchbook est dans E:\docs\arduino102


Pouvez vous verifier ce point ?
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude DAVID » Mer 22 Mai 2013 09:21

ç est bon j'ais reussi a televerser sans erreures.j'ais modifier la syntaxe du dossier.maintenant il ne se passe rien aucune des leds m1,m2,m3,m4 ne s' allume .Comment lancer le programe sur la carte .je suis tres debutant desole pour mes question de base.
DAVID
 
Messages: 5
Inscription: Jeu 16 Mai 2013 21:05

Re: Mise en oeuvre - Chapitre 2 (nouvelle version)

Message non lude phil » Mer 22 Mai 2013 16:12

Est que vous pourriez faire dans l'IDE Arduino la manip suivante :
Une fois le code téléversé, allez dans outils, moniteur série et sélectionner 115200 pour la vitesse (et éventuellement le bon port série)

Normalement, il y a des trucs qui vont s'afficher(les messages générés par serial.print et serial.println)

Est ce que vous pouvez poster le résultat (normalement on peut faire un copier collé) ?
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19


Retourner vers Starter Kit

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité