0% ont trouvé ce document utile (0 vote)
15 vues21 pages

Capteurs et moteurs Arduino : Guide complet

Le document présente divers capteurs et moteurs, notamment le capteur ultrasonique HC-SR04 et le capteur PIR HC-SR501, ainsi que leur fonctionnement, caractéristiques et schémas de câblage. Il décrit également comment contrôler un moteur à courant continu à l'aide d'un MOSFET et du CI L293D, avec des exemples de code pour Arduino. Enfin, des réglages pour la sensibilité et le délai du capteur PIR sont fournis, ainsi que des conseils pour le choix du MOSFET approprié.

Transféré par

Somda Aristide
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues21 pages

Capteurs et moteurs Arduino : Guide complet

Le document présente divers capteurs et moteurs, notamment le capteur ultrasonique HC-SR04 et le capteur PIR HC-SR501, ainsi que leur fonctionnement, caractéristiques et schémas de câblage. Il décrit également comment contrôler un moteur à courant continu à l'aide d'un MOSFET et du CI L293D, avec des exemples de code pour Arduino. Enfin, des réglages pour la sensibilité et le délai du capteur PIR sont fournis, ainsi que des conseils pour le choix du MOSFET approprié.

Transféré par

Somda Aristide
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Simulations

Capteur Ultrasonique
Présentation du module
Composant


Broches de connexion
 Vcc = Alimentation +5 V DC
 Trig = Entrée de déclenchement de la mesure (Trigger
input)
 Echo = Sortie de mesure donnée en écho (Echo output)
 GND = Masse de l'alimentation
Caractéristiques
 Dimensions : 45 mm x 20 mm x 15 mm
 Plage de mesure : 2 cm à 400 cm
 Résolution de la mesure : 0.3 cm
 Angle de mesure efficace : 15 °
 Largeur d'impulsion sur l'entrée de déclenchement : 10
µs (Trigger Input Pulse width)
Principe de fonctionnement

Le capteur ultrasonique HC-SR04 utilise les ultrasons pour


déterminer la distance d'un objet comme le font les chauves-
souris.
Il offre une excellente détection de la distance d’un objet
sans contact avec celui-ci. Il est livré dans un boîtier complet
avec un émetteur et un récepteur à ultrasons et est facile à
utiliser.
Le capteur ultrasonique HC-SR04 est illustré dans la figure
suivante :
Distance = ½ × vitesse du son × durée
La vitesse du son est environ égale à 340 m/s.

Ils fonctionnent de la manière suivante :


 l’Arduino envoie au capteur par un port numérique une
courte impulsion (10μs environ) à l’entrée « trigger » du
capteur ;
 cela déclenche l’émission d’un signal sonore très
court (8 oscillations environ) ;
 lorsque ce signal est parti, la sortie « echo » du capteur
passe à l’état HIGH ;
 dès que le signal sonore revient, il est détecté par le
capteur dont la sortie « echo » repasse à LOW
.
Pour connaitre la durée de l’impulsion sur le port d’entrée «
echo« , on utilise la fonction pulseIn

Remarque : si le signal retour n’est pas détecté,


la durée du signal « echo » est limitée à 36 ms
environ (cela dépend des modèles), soit 6m
environ.

Schéma de câblage
Programme
const int pingPin = 7; // Trigger Pin of Ultrasonic
Sensor
const int echoPin = 6; // Echo Pin of Ultrasonic Sensor

void setup()
{
[Link](9600); // Starting Serial Terminal
pinMode(pingPin, OUTPUT);
pinMode(echoPin, INPUT);

void loop()
{
long duration, cm;
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);

duration = pulseIn(echoPin, HIGH);


cm = microsecondsToCentimeters(duration);

[Link](cm);
[Link]("cm");
[Link]();
delay(100);
}

long microsecondsToCentimeters(long microseconds)


{
return microseconds / 29 / 2;
}

Détecteur de mouvement

HC-SR501 PIR Sensor


C’est un capteur infrarouge passif qui peut détecter la
présence d'êtres humains ou d'animaux. Le module HC-
SR501 PIR Sensor peut être utilisé avec des contrôleurs
comme Arduino, Raspberry, PIC, ARM, 8051, etc.

Caractéristiques (extrait)

 Wide range on input voltage varying from 4.V to 12V (+5V


recommended)
 Output voltage is High/Low (3.3V TTL)
 Lock time: 0.2 sec
 Has to operating modes - Repeatable(H) and Non-
Repeatable(H)
 Cover distance of about 120° and 7 meters
 Operating temperature from -20° to +80° Celsius

Réglages
Réglage de la sensibilité
En tournant le bouton du potentiomètre de réglage de la
distance dans le sens des aiguilles d'une montre, la plage de
la distance de détection augmente et la plage maximale de la
distance de détection est d'environ 0-7 mètres.
En le tournant dans le sens inverse des aiguilles d'une
montre, la plage de la distance de détection est réduite, et la
plage de la distance de détection minimale est d'environ 0-3
mètres.

Réglage du délai
Tournez le bouton du potentiomètre de réglage du délai dans
le sens des aiguilles d'une montre, vous pouvez également
constater que le délai de détection augmente. Le délai
maximum de détection peut atteindre 300 secondes.
Au contraire, si vous le tournez dans le sens inverse des
aiguilles d'une montre, vous pouvez raccourcir le délai avec
un minimum de 5 secondes.

Modes de déclenchement du HCSR501

Le HC-SR501 possède un cavalier qui permet de sélectionner


le mode de déclenchement. Le Jumper permet de
sélectionner deux modes de déclenchement.
H : Mode de déclenchement répétable
Après avoir détecté le corps humain ou un objet en
mouvement, le module émet un niveau élevé. Pendant la
période de retard qui suit, si quelqu'un entre dans la zone de
détection, la sortie reste à un niveau élevé.

L : Mode de déclenchement non répétable, le module émet


un niveau élevé lorsqu'il détecte le corps humain. Après le
délai, la sortie passe automatiquement d'un niveau élevé à un
niveau faible.
Pinouts
Programme

/*

PIR sketch

a Passive Infrared motion sensor connected to pin 2 lights the LED on the built-in LED

/*

const int ledPin = LED_BUILTIN; // choose the pin for the LED

const int inputPin = 2; // choose the input pin (for the PIR sensor)
void setup() {

pinMode(ledPin, OUTPUT); // declare LED as output

pinMode(inputPin, INPUT); // declare pin as input

void loop()

int val = digitalRead(inputPin); // read input value

if (val == HIGH) // check if the input is HIGH

digitalWrite(ledPin, HIGH); // turn LED on if motion detected

delay(500);

digitalWrite(ledPin, LOW); // turn LED off

Moteurs

Commande d’un moteur à courant continu à l’aide :


 Arduino (Signal PWM)
 MOSFET

On utilise un moteur de type 775 - 12V.

Choix d’un MOSFET qui convient pour la commande du moteur

1. MOSFET N-channel : Les MOSFET de type N sont

généralement préférés pour la commande de moteurs, car ils

offrent un meilleur rendement lorsque utilisés dans un circuit

de commutation à la masse (low-side switching). Vous les

placez entre le moteur et la masse.

2. Le MOSFET doit supporter la tension d'alimentation du moteur.

Par exemple, si vous alimentez un moteur avec 12V, il est

préférable de choisir un MOSFET avec une tension de drain-


source (Vds) de 20V ou plus pour garantir un fonctionnement

sécurisé.
3. Courant drain (Id)

Le MOSFET doit être capable de supporter le courant maximal


que le moteur consomme.

Exemple : Si votre moteur consomme 3A, choisissez un


MOSFET qui peut supporter au moins 3A (en général, il est
recommandé d'avoir une marge de sécurité, donc un MOSFET
supportant 5A ou plus est souvent préférable).

4. Gate Threshold Voltage (Vgs(th))

Le voltage nécessaire pour activer le MOSFET est important. Un


Arduino fournit une sortie de 5V sur ses broches PWM. Vous
devez donc choisir un MOSFET qui peut être activé avec une
tension de porte (Vgs) de 5V.

5. Rds(on) (résistance à l'état passant)

La résistance Rds(on) doit être aussi faible que possible pour minimiser les pertes par
dissipation de chaleur lors de la commutation. Plus Rds(on) est faible, mieux c'est.
Idéalement, un MOSFET avec une Rds(on) inférieure à 50 mΩ fourni de bonnes
performances.

Conclusion :

IRLZ44N

 Tension Vds : 55V


 Courant Id : 47A
 Rds(on) : 22 mΩ
Matériel requis

 Arduino UNO - x1

 MOSFET IRLZ44N - x1
 Résistance 1k Ohm - x1
 Potentiomètre 10K Ohm - x1
 12V Power Source

Schéma

Modèle sous TINKERCAD


Techniquement, l'Arduino UNO possède six broches PWM (3, 5, 6, 9,
10, 11).

Les broches 3, 9, 10 et 11 produisent un signal PWM de 490 Hz,


tandis que les broches 5 et 6 produisent un signal PWM de 980 Hz.
Pour un contrôle de la vitesse à haute fréquence, utilisez les broches
5 ou 6 ; pour une vitesse normale, n'importe quelle autre broche
PWM fonctionnera.

Code

const int motorPin = 9; // Pin Where the Gate of MOSFET is Connected

void setup()

pinMode(motorPin, OUTPUT); // MotorPin is Configured as OUTPUT

void loop()
{

int potValue = analogRead(A0); // Analog Value from Potentiometer

// Mapping the Pot value and passing it directly to the MotoPin as a dutycycle of
PWM

analogWrite(motorPin, map(potValue, 0, 1023, 0 , 255));

App 3

Commande d’un moteur à courant continu


à l’aide du CI L293D

Schéma de câblage

Code

// Motor A connections
int ENA = 9; // L293D Enable Pin

int IN1 = 8; // L293D IN1 Pin

int IN2 = 7; // L293D IN2 Pin

void setup()

pinMode(ENA, OUTPUT); // Set ENA as OUTPUT

pinMode(IN1, OUTPUT); // Set IN1 as OUTPUT

pinMode(IN2, OUTPUT); // Set IN2 as OUTPUT

digitalWrite(IN1, LOW); // Make the Arduino Pin 8 Low

digitalWrite(IN2, LOW); // Make the Arduino Pin 7 Low

void loop() {

// Rotate Motor Clockwise for 4 Seconds

analogWrite(ENA, 255); // Enable the L293D IC

digitalWrite(IN1, HIGH); // Make PIN 8 of the Arduino High

digitalWrite(IN2, LOW); // Make PIN 7 of the Arduino LOW

delay(4000); // wait for 4 Se

// Rotate Motor counter-Clockwise for 4 Seconds

digitalWrite(IN1, LOW); // Make PIN 8 of the Arduino LOW


digitalWrite(IN2, HIGH);// Make PIN 7 of the Arduino HIGH

delay(4000);

// Stop Rotating the Motor

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

delay(1000);

// Turn on motors

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

// Accelerate from minimum to maximum speed

for (int i = 0; i < 256; i++) {

analogWrite(ENA, i);

delay(20);

// Decelerate from maximum speed to minimum

for (int i = 255; i >= 0; --i) {

analogWrite(ENA, i);

delay(20);

}
// Now turn off motors

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

delay(1000);

APP4 :
Code

/*

* Brushed_H_Bridge_simple sketch

* commands from serial port control motor direction

* + or - set the direction, any other key stops the motor

*/

const int in1Pin = 5; // H-Bridge input pins

const int in2Pin = 4;

void setup()

[Link](9600);

pinMode(in1Pin, OUTPUT);

pinMode(in2Pin, OUTPUT);

[Link]("+ - to set direction, any other key stops motor");

void loop()

{
if ( [Link]()) {

char ch = [Link]();

if (ch == '+')

[Link]("CW");

digitalWrite(in1Pin,LOW);

digitalWrite(in2Pin,HIGH);

else if (ch == '-')

[Link]("CCW");

digitalWrite(in1Pin,HIGH);

digitalWrite(in2Pin,LOW);
}

else if (ch != '\n' && ch != '\r') // ignore cr or lf

[Link]("Stop motor");

digitalWrite(in1Pin,LOW);

digitalWrite(in2Pin,LOW);

Vous aimerez peut-être aussi