GUIDE DE CONSTRUCTION Robot Chien

publicité
GUIDE
DE CONSTRUCTION
Voiture Autonome
Robobox
Niveau IV
Robot voiture
Le modèle de ce mois est la voiture autonome. Capable de se
déplacer et d’éviter les obstacles, elle vous permettra de découvrir
l’utilisation du capteur de distance, des roues et de la puce L293D.
2X Blocs Roues
2X Moteurs +
Réducteurs
1X Bloc lien
Pièces
10X Cables malemale
2X Roues
1X Puce L293D
Instructions
Nous vous conseillons de suivre pas à pas les étapes ci-dessous. Encore plus
de détails sont disponibles sur TeamRobobox.fr. N’hésitez pas à poser vos
questions sur le site si vous êtes bloqué, nous vous répondrons rapidement.
Pour ce montage vous aurez besoin de pièces de box précédentes,
notamment la Carte Uno, la breadboard et quelques fils . Bonne chance !
Etape 1
Voiture Autonome
_1_ M0NT4GE
Déballez tous les composants et vérifiez que le nombre de
pièces correspond au détail ci-dessus.
Vous devrez au cours de ce montage récupérer des pièces
d’anciens modèles comme la breadboard, des fils malefemelle, la carte Uno, le détecteur de distance et un
servomoteur.
Une fois votre montage terminé, n’hésitez pas à nous le
montrer sur Twitter ou Facebook ☺
Etape 3
Etape 2
1
2
2
1
Incrustez les moteurs
dans les « Blocs
Roues » puis clipsez
les roues à l’aide des
embouts
cylindriques.
Faites à présent glisser la
pile à l’intérieur du « Bloc
Pile » prévu à cet effet.
Etape 6
Etape 5
Etape 4
Voiture Autonome
_1_ M0NT4GE
Emboitez le détecteur de distance
sur la « Mini-Breadboard ». Il doit
être placé à la droite de la carte, car
sur la gauche nous installerons la
puce L293D (schéma 1.0 en page 5).
Reliez le « Bloc Pile » à un
« Bloc Corps » à l’aide du
« Bloc lien », puis ajoutez la
« Breadboard » équipée du
« Capteur Ultrason » à l’avant
de ce montage grâce à un
« Bloc triangle ».
Emboitez
les
deux
« Roues », puis ajoutez la
« Carte Uno » sur son
« Cardholder ».
Voiture Autonome
Pin 4
_1_ M0NT4GE
- Moteur
GND GND droit
+ Moteur
Pin 2
droit
Pin 5
5V
Schéma 2.0 –
Montage en série
du courant 5V
Pin 11
5V
Pin 12
Pin 8
- Moteur
gauche GND
GND
+
Moteur
gauche
Schéma 1.0 – Branchements L293D
Etape 7
5V
L’étape suivant est très délicate. Vous devez placer la puce
L293D tout à gauche de la « Mini Breadboard », les pins
avec des câbles male-male comme indiqué sur le schéma
1.0.
Vous remarquerez que vous ne possédez pas assez de pins
5V et GND sur votre carte, vous devrez alors effectuer un
montage en série pour récupérer le courant. Comme sur le
schéma 2.0 ci contre.
Voiture Autonome
_2_ PR0GR4M4T10N
Et voila ! Votre montage est terminé, il ne reste plus qu’à programmer votre
carte! Il est fortement conseillé de débrancher la carte du montage avant
d’envoyer le code dessus !
Etape 8
Ici nous verrons les instructions ‘logiciel’ c’est à dire le code qui sera envoyé
dans notre petite machine. Ce code va permettre à la voiture autonome de
suivre les instructions que nous désirons.
Afin de taper ce code, lançons le logiciel Arduino. C’est dans la grande fenêtre
blanche au centre que nous devrons écrire notre code. Vous pouvez recopier
directement le code à l’intérieur de l’interface Arduino mais nous vous
conseillons aussi de lire les explications ci-dessous. Bonne chance !
Le code de ce robot est beaucoup plus long que celui des précédents. N’hésitez
pas à la copier/coller à partir de notre site teamrobobox.fr et de suivre les
explications en parallèle.
#include <NewPing.h>
int pin1Moteur1 = 12;
int pin2Moteur1 = 8;
int pinPMoteur1 = 11;
int pin1Moteur2 = 2;
int pin2Moteur2 = 4;
int pinPMoteur2 = 5;
int TRIG_PIN = 10;
int ECHO_PIN = 9;
int DIST_MAX = 200;
int i = 90;
int distActuelle = 0;
int cm;
NewPing sonar(TRIG_PIN, ECHO_PIN, 200);
Nous allons tout d’abord définir
les variables globales que nous
utiliserons à travers le code ainsi
que les bibliothèques nécessaires.
Dans un premier temps nous
devons introduire la bibliothèque
NewPing.h.
Elle
permet
d’interagir avec le capteur de
distance et vous l’avez déjà
utilisée lors du précédent
montage.
Voiture Autonome
_2_ PR0GR4M4T10N
Ensuite nous créons un ensemble de 3 variables ‘pin moteur’ pour chaque
moteur, avec un rôle précis pour toutes :
- pin1moteur : instruction d’avancer (1 = avancer, 0 = ne rien faire)
- pin2moteur : instruction de reculer (1= reculer, 0 = ne rien faire)
- pinPmoteur : correspond à la puissance ( en % ) du moteur
Etape 9 a
Nous définissons ensuite des variables globales. Les variables TRIG_PIN et ECHO
sont associées au capteur de distance et ont la valeur des pins auxquels elles
seront reliées. La variable DIST_MAX est initialisée à 200 cm et correspond à la
distance maximum que le robot pourra capter. Enfin nous créons un objet sonar
qui reprend ces dernières variables.
Maintenant nous devons initialiser
notre programme, nous allons
void setup() {
seulement définir toutes les
pinMode(pin1Moteur1,OUTPUT);
variables ‘pin moteur’ créées plus
pinMode(pin2Moteur1,OUTPUT);
haut en ‘OUTPUT’ c’est-à-dire en
pinMode(pinPMoteur1,OUTPUT);
sortie.
pinMode(pin1Moteur2,OUTPUT);
pinMode(pin2Moteur2,OUTPUT);
Puis, nous détaillons la fonction
pinMode(pinPMoteur2,OUTPUT);
‘loop’, la boucle sans fin dans
}
laquelle nous procéderons en
plusieurs étapes :
void loop() {
1 – Récupérer la distance à laquelle
distActuelle = lectureDistance();
se
trouve l’objet en face de nous
if (distActuelle > 20){
2 – Si le robot se trouve à plus de
avance();
20 cm de l’objet devant lui alors il
}
peut avancer
if (distActuelle < 20){
3 – S’il se trouve à une distance de
recule();
moins de 20 cm alors il doit reculer
tourneDroite();
et tourner à droite
}
4 – Nous attendons enfin 300
delay(300);
millisecondes
}
Nous allons ensuite créer la
fonction dirMoteur qui sera utilisée
pour les fonctions avance(),
recule() et tourneDroite().
Etape 9 b
Voiture Autonome
_2_ PR0GR4M4T10N
La fonction dirMoteur prend 3
arguments : moteur, sens et
void dirMoteur(int moteur,int sens,int pc) pourcentage.
{
- Moteur : définit le moteur à
int pin1,etat1,pin2,etat2,pinP,puissance;
contrôler ( 1 ou 2)
- Sens : indique le sens du
if (moteur==1){
moteur, 1 pour l’avant, -1
pin1=pin1Moteur1;
pour l’arrière et 0 pour l’arrêt.
pin2=pin2Moteur1;
- Pourcentage : correspond à la
pinP=pinPMoteur1;
vitesse du moteur, 0% étant
}
l’arrêt et 100% étant la pleine
else {
vitesse.
pin1=pin1Moteur2;
pin2=pin2Moteur2;
Dans un premier temps nous
pinP=pinPMoteur2;
définissons
les
pins
}
correspondant au moteur choisi.
if (sens==1){
Dans un second temps nous
etat1=1;
définissons l’état correspondant
etat2=0;
au choix du sens, une valeur de 1
}
pour
la
variable
etat1
else if (sens==-1){
correspond à une avance, et une
etat1=0;
valeur de 1 pour la variable etat2
etat2=1;
correspond à un recul.
}
else {
Nous transformons ensuite la
etat1=0;
variable puissance d’une échelle
etat2=0;
de 0 à 100 à une échelle de 0 à
}
255 grâce à la fonction ‘map’.
puissance=map(pc,0,100,0,255);
analogWrite(pinP,puissance);
Enfin nous envoyons ces valeurs
digitalWrite(pin1,etat1);
aux pins, avec digitalWrite()
digitalWrite(pin2,etat2);
pour
pin1
et
pin2
et
}
analogWrite() pour pinP, ce qui
permet d’envoyer une valeur
comprise entre 0 et 255.
Voiture Autonome
_2_ PR0GR4M4T10N
Nous allons ici utiliser la fonction dirMoteur() pour créer nos 3 fonctions :
avance() , recule() et tourneDroite().
Etape 10
Pour créer la fonction avance() nous appelons deux fois la fonction
dirMoteur() comme ceci :
dirMoteur( 1 , 1 , 100 );
- Demande au moteur 1
- D’aller tout droit
- À 100% de sa vitesse max
void avance(){
dirMoteur(1,1,100);
dirMoteur(2,1,100);
}
Pour faire avancer le second moteur
nous changeons juste la première
variable :
dirMoteur(2,1,100);
void recule(){
dirMoteur(1,0,100);
dirMoteur(2,0,100);
delay(2000);
dirMoteur(1,-1,100);
dirMoteur(2,-1,50);
}
Vous
comprenez
ainsi
assez
facilement comment vont s’orchestrer
les prochaines fonctions, la fonction
recule() arrête les moteurs :
dirMoteur(1,0,100);
Puis les fait reculer :
void tourneDroite(){
delay(1000);
dirMoteur(1,-1,100);
dirMoteur(2,0,0);
delay(1000);
dirMoteur(1,-1,100);
dirMoteur(2,1,50);
delay(1000);
}
dirMoteur(1,-1,100);
Enfin, la fonction tourneDroite() suit
la même logique en faisant reculer
une roue et en arrêtant l’autre.
Voiture Autonome
Etape 11
int lectureDistance() {
delay(70);
unsigned int uS =
sonar.ping();
cm = uS /
US_ROUNDTRIP_CM;
if(cm == 0){
lectureDistance();
}
else{
return cm;
}
_2_ PR0GR4M4T10N
Pour terminer, nous créons la fonction
lectureDistance() que nous avons déjà
aperçue dans le passé.
Cette fonction permet de récupérer la
distance lue par le capteur de distance.
Vous remarquerez qu’à l’intérieur de la
fonction nous faisons appel à elle-même
! Cela peut paraître contre-intuitif mais
est tout à fait possible.
Nous indiquons au programme, que tant
que la distance mesurée (cm) n’est pas
supérieure à 0 alors on doit relancer la
fonction.
Le challenge de ce mois?
Nous vous proposons de corser les choses en permettant à votre robot de voir
tout autour de lui. Vous aurez besoin d’un servo moteur utilisé dans une des
box précédents ! Bonne chance !
...COMPLETED
Voiture Autonome _3_ N0T35_D’ELECTR0N1QUE
Le transistor
Le transistor est un composant basique de la plupart des montages
électroniques. Lorsque nous branchons une LED sur une pile, le courant passe
directement au travers et nous ne pouvons pas le contrôler. Le transistor lui, va
permettre de moduler ce courant et de l’adapter à nos besoins.
Cette action est rendue possible par son branchement à une autre source de
courant qui modifiera la résistance dans le montage.
Au cœur du transistor se trouve un matériau ‘semiconducteur’, c’est-à-dire un matériau qui ne transmet le
courant que lorsqu’il est lui-même relié à une source de
courant. On utilise aujourd’hui principalement du Silicium.
Un transistor a donc trois extrémités :
- La base b
- L’émetteur e
- Le Collecteur c
e b c
Il existe deux types de transistors : PNP qui nécessite une tension négative à la
base (b) pour laisser passer le courant. NPN qui nécessite une tension positive à la
base (b) pour laisser passer le courant.
On peut illustrer l’utilisation d’un transistor grâce au montage ci dessous.
Lorsqu’on augmentera la tension au pin3 et le courant passera à travers le circuit
(et la LED), le transistor agit comme un interrupteur. Pourquoi alors ne pas
simplement utiliser le pin3 pour moduler le courant que l’on envoie à travers la
LED et se passer du transistor?
Et bien parce que le courant généré
par la source 5V est beaucoup plus
fort que celui généré par le pin3.
Le transistor agit alors comme un
amplificateur de courant. Le rapport
entre le courant dans notre circuit et
le courant issu du pin3 est appelé le
gain en courant.
pin3
1KΩ
b
5V
e
c
GND
Voiture Autonome _3_ N0T35_D’ELECTR0N1QUE
Le pont-H
Les transistors permettent donc de gérer le courant
qui traverse un composant (LED, buzzer ou encore
moteur). Mais dans un montage un peu plus
complexe, le pont-H, permet un usage encore plus
intéressant.
A la différence des LEDs, les moteurs ont la
particularité de pouvoir fonctionner quelque soit le
sens du courant. En revanche en faisant varier le
sens du courant on modifiera le sens de rotation du
moteur.
+
t1
M
t2
-
Si t1 et t3 sont ouverts : un courant positif
traverse le moteur
Si t2 et t4 sont ouverts : un courant négatif
traverse le moteur
Si plus de 2 transistors sont ouverts : le courant
ne circule pas
Si t1 et t2 ou t3 et t4 sont fermés : le montage
court-circuite
t3
-
En utilisant un montage avancé, à l’aide de 4
transistors, nous pouvons modifier à distance le
sens du courant qui traversera le moteur. Ce
montage, illustré à droite, est appelé un pont-H.
Sur nos schémas :
t4
+
t1
t4
M
t2
t3
-
Voiture Autonome _3_ N0T35_D’ELECTR0N1QUE
Le L293D
Pour éviter d’avoir beaucoup de fils, et donc faciliter le montage, il existe des
composants contenant eux-mêmes un ou plusieurs pont-H. C’est le cas du L293D.
Le L293D permet de gérer la puissance et la direction de deux moteurs grâce à
deux pont-H intégrés.
Le pin a peut recevoir deux états : HIGH ou LOW. Lorsque a reçoit un signal HIGH
le moteur sur le côté gauche devient utilisable. Le pin p agit de la même manière
pour le moteur droit.
Les pins b et g sont les pins qui contrôlent le sens du moteur gauche :
- Lorsque b est HIGH et g LOW : Le moteur tourne dans le sens horaire
- Lorsque b est LOW et g HIGH : Le moteur tourne dans le sens antihoraire
- Lorsque b et g sont HIGH – HIGH ou LOW-LOW rien ne se passe.
En reprenant les schémas de la page précédente b HIGH correspond à t1 et t3
fermés et g LOW correspond à t1 et t3 ouverts. Les pins j et o font de même pour
l’autre moteur.
Le pin h reçoit la source
de courant destinée au
moteur (Vss). Elle peut
aller jusqu’à 36V et
1200mA (600mA par
channel).
Le pin i reçoit lui le
courant pour le contrôle
interne du composant
soit 5V (Vcc).
Les pins d, e, l et m sont
eux connectés à la terre.
M
Vss
a
i
b
j
c
k
d
l
e
m
f
n
g
o
h
p
Vcc
M
Téléchargement