Lectures Avec Les Senseurs - Pololu QTR-1A Guide Utilisateur

Détecteur de ligne
Table des Matières

Publicité

calibration des senseurs peu permet de produire des lectures sensiblement plus fiable, ce qui aura pour effet de simplifier votre propre code par
la suite. En conséquence, nous recommandons de réaliser une phase de calibration dans la routine d'initialisation de votre application.
Ce peu simplement être réaliser durant une période de temps fixe durant laquelle vous effectuer des appels récurrents à la méthode calibrate().
Durant cette phase de calibration, vous devrez exposer chaque senseur de réflectance aux lectures les plus claires et foncées auxquels il seront
exposés. Par exemple, si vous réalisez un suiveur de ligne, vous aurez besoin de le faire glisser progressivement au dessus de la ligne durant la
phase de calibration de sorte que chaque senseur puisse avoir l'occasion de faire une lecture sur la surface la plus réflective (la plus claire) et de
la surface la moins réfléchissante (la plus sombre).
Un exemple de routine de calibration peut être:
#include <QTRSensors.h>
// créer un objet pour votre type de senseur (RC ou Analogique)
// Dans cet exemple, il s'agit de trois senseur sur les
// entrées analogiques 0 à 2 (donc les broches digitales de
// 14 à 16)
QTRSensorsRC qtr((char[]) {14, 15, 16}, 3);
// QTRSensorsA qtr((char[]) {0, 1, 2}, 3);
void
setup()
{
// optionnel: attendre une action de l'utilisateur comme
// la pression d'un bouton.
// Puis démarrer la phase de calibration et déplacez le
// senseurs au dessus des deux surfaces avec les reflectances
// opposées (extrêmes) que votre application rencontrera:
int
i;
for
(i
=
0; i
<
250; i++)
{
qtr.calibrate();
delay(20);
}
// optionnel: signaler que la phase de calibration est
// achevée et attendre une action de l'utilisateur
// (comme par exemple, la pression d'un bouton)
}

Lectures avec les senseurs

Cette bibliothèque offre différentes approches pour lire les senseurs:
1. Vous pouvez obtenir les valeurs brutes des senseurs en utilisant la méthode read(), qui reçoit un argument optionnel qui vous permet
d'effectuer une lecture avec les diodes émettrices éteintes (note: l'extinction des diodes émettrices est uniquement possible pour les
senseurs QTR-8x).
2. Vous pouvez obtenir les valeurs calibrées en utilisant la méthode readCalibrated(), qui dispose également d'un argument optionnel
vous permetant de faire une lecture avec les LED IR éteintes. Les valeurs calibrées ont toujours une valeur située entre 0 à 1000, où 0
étant considérée comme la plus réfléchissante (ex: la plus blanche) que la surface la plus réfléchissante rencontrée durant la phase de
calibration -ET- 1000 étant la surtface la moins réfléchissante (ex: plus noir) que la surface la moins réfléchissante rencontrée durant la
phase de calibration.
3. Les applications de détection de ligne peuvent demander la position de la ligne en utilisant la méthode readLine(). readline() accepte
un premier argument booléen optionnel qui indique la couleur de la ligne (ligne noire sur fond blanc -ou- ligne blanche sur fond noir).
Le second argument optionnel indique si les LEDs Infrarouge doivent être allumées ou éteintes durant la mesure. readLine() utilise les
valeurs de calibration pour chaque senseur et retourne un entier qui indique la position supposée de la ligne. Si vous utilisez N senseurs,
une valeur 0 retournée signifie que la ligne est sous le senseur 0 (ou au-delà du senseur 0) et retourne une valeur 1000x(N-1) si la ligne
est sous le senseur N-1 (ou entre le senseur N-1 -dernier senseur) ou au-delà de ce dernier).
Lorsque vous déplacez le senseur perpendiculairement à la ligne, la position de la ligne changera de façon monotone entre 0 et 1000 * (N-1)
ou vice versa. Changer de façon monotone indique le la valeur croit (ou décroit) constamment dans le même sens.
Cette position de ligne peut être utilisée pour dans un contrôle PID en boucle fermée.
Une routine élémentaire permettant de suivre une ligne en utilisant les valeurs du senseur et effectuer le suivit de ligne pourrait ressembler à
ceci:
void
loop()
{
unsigned int
sensors[3];
// obtenir les valeurs calibrées du senseur (dans un tableau de senseur)
// ainsi que la position de la ligne dans une gamme de valeur de
// 0 à 2000, avec 1000 retournée pour la ligne au milieu du senseur.
int
position
=
qtr.readLine(sensors);
// Si tous les senseurs ont une très faible réflectance, alors prendre
// un action appropriée pour cette situation.
if
(sensors[0]
> 750 &&
// Réaliser une pendant ~5 secondes
sensors[1]
> 750 &&
sensors[2]
>
750)

Publicité

Table des Matières
loading

Ce manuel est également adapté pour:

Qtr-1rcQtr-l-1aQtr-l-1rcQtr-3aQtr-3rcQtr-8a ... Afficher tout

Table des Matières