Le B.A.-BA - Capteurs, buzzer et servomoteur

Le forum du Snootlab Starter Kit

Le B.A.-BA - Capteurs, buzzer et servomoteur

Message non lude Laetitia » Jeu 26 Déc 2013 15:24

Ce tutoriel est en trois parties : [1] - [2] - [3]

Allez, on est repartis, allons étudier quelques autres composants du Starter Kit : il est important que vous connaissiez bien vos différents outils ainsi que les différentes manières de les utiliser afin que vous puissiez être autonome sur vos montages.

    - Les capteurs -
Les boutons poussoir

symbole_BP.png
symbole_BP.png (3.33 Kio) Vu 2920 fois

Comprendre le fonctionnement de ces interrupteurs est instinctif, je noterai juste qu'ils sont à l'état ouvert au repos, c'est-à-dire quand vous n'appuyez pas dessus. Dans le cas contraire, un contact se forme et c'est cette information qui sera récupérée sur les pins digitales de l'Arduino, sous la forme d'un niveau logique HIGH ou LOW.

Comme pour les LEDs, il existe plusieurs manières de les brancher, et donc d'interpréter le signal relevé : voici un schéma récapitulatif.

pushbutton_wiring.png
pushbutton_wiring.png (74.21 Kio) Vu 2963 fois

Les boutons branchés avec les câbles jaune et orange utilisent les résistances de pull-up internes à l'Arduino, et délivrent un signal respectivement HIGH et LOW lorsque l'on appuie sur le bouton. Ceux branchés avec les câbles bleu et vert nécessitent des résistances externes et délivrent un signal respectivement LOW et HIGH.

La photorésistance

symbole_photores.png
symbole_photores.png (1.96 Kio) Vu 2920 fois

La photorésistance est une résistance variable, au même titre que le potentiomètre, sauf qu'au lieu d'agir sur un bouton pour modifier sa valeur, on agira sur la luminosité ambiante ! Voilà pour le branchement :

photores_wiring.png
photores_wiring.png (24.93 Kio) Vu 3039 fois

...pour interpréter le résultat obtenu avec analogRead(), il suffit de savoir que la résistance augmente avec la luminosité : vous devriez avoir une valeur inférieure à 100 lorsque votre photorésistance se trouve dans un endroit sombre ou que vous mettez votre main au-dessus, et une valeur dépassant les 1000 si vous braquez une lampe torche dessus.

Le capteur de température

Pas de symbole ici (et ce sera le cas pour tous les composants qui suivront à une exception près), la représentation schématique de composants particuliers peut se faire de différentes manières suivant les constructeurs, et se résument la plupart du temps à un bloc avec le bon nombre de pattes qui en sortent :lol:

Le capteur de température LM35 est très pratique à utiliser avec Arduino : il s'alimente avec une tension comprise entre +4 et +20V, il est calibré en °Celsius et délivre une tension directement proportionnelle à la température, elle augmente de 10mV/°C. Cela signifie que pour chaque degré supplémentaire, la tension s’élèvera de 10mV, par rapport à votre masse électrique (GND). Ex : 24°C = 240mV.

Pour le branchement c'est assez simple :

LM35_wiring.png
LM35_wiring.png (25.44 Kio) Vu 3039 fois

Interpréter la tension de sortie d'un capteur :

Il est nécessaire de connaître l'échelle maximale et la résolution du système qui reçoit l'information (ici l'Arduino, plus précisément son CAN). Dans notre cas, l'échelle maximale est 5V, et la résolution 1024 (10 bits).

A partir de là, il faut connaître le pas du capteur, ici 10mV/°C = 0,01V/°C. Cela va nous permettre de mettre en forme l'équation de l'information.
En effet, information = ((((valeur_reçue)*pleine_échelle)/résolution)/pas_capteur)

Dans notre cas, cela donne température = ((((valeur_reçue)*5)/1024)/0,01)

Il ne reste plus qu'à insérer cette ligne dans votre code pour faire des relevés précis, et à imaginer les applications que vous voulez y ajouter !

Le capteur de vibrations

Wikipedia a écrit:"La piézoélectricité (du grec "piézein" : presser, appuyer) est la propriété que possèdent certains corps de se polariser électriquement sous l’action d’une contrainte mécanique et réciproquement de se déformer lorsqu’on leur applique un champ électrique."

La première propriété est utilisée dans le cas de notre capteur de chocs, la deuxième est utilisée dans les buzzers (voir plus bas). Il est nécessaire cependant de bien lire la datasheet du capteur pour choisir la résistance à mettre en parallèle, ici 10 MOhms.
Dès que la lame du capteur subira une déformation liée à une accélération ou à un choc, le capteur générera une tension, proportionnelle aux g reçus (le g étant une unité de mesure d'accélération, 1 g = 9.81m/s²). Cette tension générée, que l'on récupère aux bornes de la résistance, est appliquée aux bornes d'une entrée analogique, il ne reste plus qu'à récupérer la valeur correspondante avec un analogRead() !

Voilà ce que ça donne en termes de branchements :

MEAS_wiring.png
MEAS_wiring.png (77.22 Kio) Vu 3039 fois

Le capteur d'inclinaison (tilt)

Le tilt agit comme un interrupteur : relevé vers ses pins (intérieur), il est fermé et passant, abaissé vers l'extérieur il est ouvert et ne laisse pas passer le courant. Voici un schéma extrait de la datasheet, pour mieux comprendre comment c'est fait à l'intérieur :

tilt_intern.png
tilt_intern.png (4.25 Kio) Vu 3039 fois

Cette vue en coupe permet aussi de voir que les deux pins du haut sont reliées ainsi que les deux du bas, si vous avez un doute quant au sens dans lequel le placer, il y a une flèche "UP" sur la face opposée à celle d'où sortent les broches.

On le branche donc ainsi :

tilt_wiring.png
tilt_wiring.png (24.23 Kio) Vu 3039 fois

...et il suffit d'un digitalRead() pour récupérer l'état du tilt, HIGH lorsqu'il est incliné et LOW au repos.

    - Le buzzer -
symbole_buzzer.png
symbole_buzzer.png (1.83 Kio) Vu 2920 fois

Comme expliqué un peu plus haut, le buzzer se sert de l'effet piézoélectrique pour "fabriquer" du son à partir d'une tension. Le branchement est donc simple :

buzzer_wiring.png
buzzer_wiring.png (29.29 Kio) Vu 3039 fois

Note : sur le schéma le buzzer est branché directement sur la breadboard, mais c'est un connecteur femelle qu'il y a au bout du vôtre : branchez-le à votre Arduino ou à votre breadboard avec des câbles ;)

L'IDE Arduino a été conçue de manière à avoir une commande simple pour envoyer du son sur un buzzer, la fonction tone().
Celle-ci génère un signal carré (rapport cyclique 50%), d'une fréquence donnée, sur la pin spécifiée. On peut préciser une durée d'émission, sinon le son continuera jusqu'à l'appel de la fonction noTone(). On ne peut générer qu'un son à la fois : si vous jouez déjà un son sur une broche, appeler la fonction tone() sur une autre n'aura aucun effet, sur la même en revanche l'appel changera la fréquence du son émis.

> Syntaxe

tone(pin, fréquence)
tone(pin, fréquence, durée)

> Paramètres

pin : la pin sur laquelle vous voulez générer le signal
fréquence : la fréquence du son en Hertz (unsigned int)
durée : la durée du son en millisecondes, optionnelle (unsigned long)

Si vous voulez émettre des notes précises, il existe un fichier répertoriant les notes de B à D# (Si à Ré dièse) sur huit octaves, dispo ici, vous n'avez qu'à l'inclure dans votre sketch pour simplement appeler les notes correspondantes quand vous coderez votre mélodie !

:!: L'utilisation de la fonction tone() perturbe l'utilisation de la PWM sur les pins 3 et 11 (sauf sur l'Arduino Mega). Il est impossible de générer des sons d'une fréquence inférieure à 31 Hz. Pour les détails techniques, c'est ici (en anglais).

    - Le servomoteur -
Le moteur inclus dans le Starter Kit est un petit servomoteur de modélisme. Il n'est pas conçu pour des applications nécessitant une très grande force (tirer un char d'un kg...), mais il est possible de contrôler précisément la rotation de l'axe, entre 0 et 180°. Il existe des servomoteurs à rotation continue, qui permettent de régler la vitesse de rotation de l'axe.

Les servomoteurs ont trois fils : alimentation, masse et signal. Les fils d'alimentation et de masse sont respectivement rouge et noir (occasionnellement marron), à relier au 5V et au GND de l'Arduino ; celui du signal est habituellement jaune, orange ou blanc, à relier à une pin digitale de l'Arduino.

servo_wiring.png
servo_wiring.png (28.41 Kio) Vu 3039 fois

Le servo lui aussi est muni d'un connecteur femelle, utilisez des câbles pour le relier à votre Arduino !

Attention cependant, les servos demandent beaucoup de puissance, si vous avez besoin d'en commander plus d'un ou deux vous aurez peut-être besoin d'une alimentation supplémentaire (autre que le 5V de l'Arduino). Pensez à bien relier ensemble les masses de votre Arduino et de votre alimentation externe.

L'IDE Arduino comprend une librairie permettant de commander les servos avec des instructions simples. Voici un exemple simple, pour montrer la démarche :

Code: Tout sélectionner
// Inclusion de la librairie dans le sketch
#include <Servo.h>

// Déclaration de l'objet Servo
Servo monservo;

void setup()
{
  monservo.attach(3); // désignation de la pin reliée au servo
  monservo.write(90); // mise à angle droit
}

void loop()
{
}

:!: Sur les cartes autres que la Mega, l'utilisation de la librairie désactive la PWM sur les pins 9 et 10, qu'il y ait ou non un servo sur ces pins. Pour plus de détails sur l'utilisation de la librairie je vous invite à aller fouiller dans sa documentation sur le site Arduino...

Et voilà, c'est tout pour aujourd'hui, la prochaine fois je vous parlerai des derniers composants du Starter Kit, et vous serez parés pour vos bidouillages ;)
"If it's itchy, scratch it !" - "DIY or die"

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

Retourner vers Starter Kit

Qui est en ligne

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

cron