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