(→Liens avec le quotidien) |
|||
(15 versions intermédiaires masquées) | |||
Ligne 1 : | Ligne 1 : | ||
{{avertissement}} | {{avertissement}} | ||
- | {{vidéo|numérovidéo = <videoflash type="mediaspip" num ="1">http://mediaspip.ptitdeb.infini.fr/IMG/ | + | {{vidéo|numérovidéo = <videoflash type="mediaspip" num ="1">http://mediaspip.ptitdeb.infini.fr/IMG/flv/ping_lumineux-2.flv|400|300</videoflash>}} |
==Présentation du projet Arduino== | ==Présentation du projet Arduino== | ||
- | Évaluation de la distance entre un obstacle et le capteur | + | |
+ | |||
+ | - | ||
+ | - | ||
+ | |||
+ | |||
+ | Évaluation de la distance entre un obstacle et le capteur à ultrason. | ||
+ | |||
+ | Puis affichage grâce a trois LED. | ||
==Liste du matériel== | ==Liste du matériel== | ||
Ligne 17 : | Ligne 25 : | ||
==réalisation du projet== | ==réalisation du projet== | ||
===Explication=== | ===Explication=== | ||
+ | |||
+ | Le capteur à ultrasons ne permet pas de capter des distances supérieures à 10m. | ||
+ | |||
+ | Ce module ultrasons est équipé d'un émetteur et d'un récepteur à ultrasons, ainsi que l’électronique de traitement associée. | ||
+ | |||
+ | Il dispose de 4 broches : | ||
+ | * le +5V | ||
+ | * Le trigger (trig) | ||
+ | * L'echo (echo) | ||
+ | * La masse (GND) | ||
+ | |||
+ | Attention, lors de la mise sous tension du capteur, brancher la masse en premier. | ||
+ | |||
+ | La broche trigger reçoit une impulsion (état haut, +5V) de 10us ou plus. Ce qui entraîne l'emission d'une trame à 40KHz. | ||
+ | |||
+ | Une fois que la trame à rebondit sur un obstacle, elle est reçue par le capteur. | ||
+ | |||
+ | La broche "echo" renvoie un état haut (+5V) de durée égale à la durée qu'a mis la trame d'ultrasons pour faire l'aller-retour entre le capteur et l'obstacle. | ||
+ | |||
+ | Une surface plane et face au capteur sera détectée plus facilement. | ||
+ | |||
===Schéma Fritzing=== | ===Schéma Fritzing=== | ||
+ | |||
+ | [[Image:Schema_ping_arduino_.jpg|600px]] | ||
+ | |||
+ | [[Image:Schema_ping_arduino_-.jpg|600px]] | ||
+ | |||
===Le Code=== | ===Le Code=== | ||
- | // | + | // définition des pins |
Ligne 28 : | Ligne 62 : | ||
int echo = 4; | int echo = 4; | ||
- | // Fonction de setup, affectations en | + | // Fonction de setup, affectations en entrée ou sortie des pins I/O |
Ligne 39 : | Ligne 73 : | ||
} | } | ||
- | /* Fonction de chenillard, | + | /* Fonction de chenillard, paramétrable en rentrant un entier |
correspondant au temps d'attente en millisecondes entre chaque | correspondant au temps d'attente en millisecondes entre chaque | ||
- | + | décalage de led */ | |
void chenillard(int tempo) | void chenillard(int tempo) | ||
Ligne 76 : | Ligne 110 : | ||
- | // | + | // déclaration initialisation des variables internes compteur et temps. |
Ligne 87 : | Ligne 121 : | ||
/* EMMISION ECHO | /* EMMISION ECHO | ||
- | Tant que le capteur ne | + | Tant que le capteur ne retourne pas d'echo, on envoie une trame |
- | d'ultrasons toutes les 65ms, un intervalle | + | d'ultrasons toutes les 65ms, un intervalle inférieur causerait des |
- | + | interférences entres deux trames successives */ | |
while(digitalRead(echo)==LOW) | while(digitalRead(echo)==LOW) | ||
Ligne 109 : | Ligne 143 : | ||
// CALCUL TEMPS ECHO EN MS | // CALCUL TEMPS ECHO EN MS | ||
/*Comptage des millisecondes durant lesquelles le signal | /*Comptage des millisecondes durant lesquelles le signal | ||
- | + | d’écho reste a l’état haut. C'est l'image du temps que mets | |
la trame d'ultrasons pour faire l'aller-retour entre | la trame d'ultrasons pour faire l'aller-retour entre | ||
- | + | l’émetteur/capteur et l'obstacle */ | |
if(digitalRead(echo)==HIGH) | if(digitalRead(echo)==HIGH) | ||
Ligne 122 : | Ligne 156 : | ||
} | } | ||
- | /* En fonction du temps | + | /* En fonction du temps d’écho, donc de la distance de l'objet, |
affichage de différentes combinaisons avec les leds, actives sur | affichage de différentes combinaisons avec les leds, actives sur | ||
- | + | état bas : digitalWrite(led,LOW) allume la led */ | |
if(ctr<=1) // affichage pour 0 ou 1ms | if(ctr<=1) // affichage pour 0 ou 1ms | ||
Ligne 164 : | Ligne 198 : | ||
==Pour aller plus loin== | ==Pour aller plus loin== | ||
+ | |||
+ | http://www.generationrobots.com/fr/content/65-les-capteurs-a-ultrasons-pour-les-robots | ||
==Liens avec le quotidien== | ==Liens avec le quotidien== | ||
- | + | Les capteurs à ultrasons sont utilisés pour : | |
- | + | ||
- | + | * Les radars de recul sur les voitures. | |
- | + | * Détecteurs d'obstacles à distance sur les robots. | |
+ | * etc. |
Sommaire |
- -
Évaluation de la distance entre un obstacle et le capteur à ultrason.
Puis affichage grâce a trois LED.
Le capteur à ultrasons ne permet pas de capter des distances supérieures à 10m.
Ce module ultrasons est équipé d'un émetteur et d'un récepteur à ultrasons, ainsi que l’électronique de traitement associée.
Il dispose de 4 broches :
Attention, lors de la mise sous tension du capteur, brancher la masse en premier.
La broche trigger reçoit une impulsion (état haut, +5V) de 10us ou plus. Ce qui entraîne l'emission d'une trame à 40KHz.
Une fois que la trame à rebondit sur un obstacle, elle est reçue par le capteur.
La broche "echo" renvoie un état haut (+5V) de durée égale à la durée qu'a mis la trame d'ultrasons pour faire l'aller-retour entre le capteur et l'obstacle.
Une surface plane et face au capteur sera détectée plus facilement.
// définition des pins
int led1 = 8;
int led2 = 12;
int led3 = 13;
int commande = 7;
int echo = 4;
// Fonction de setup, affectations en entrée ou sortie des pins I/O
void setup() {
pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(commande, OUTPUT); pinMode(echo, INPUT);
}
/* Fonction de chenillard, paramétrable en rentrant un entier correspondant au temps d'attente en millisecondes entre chaque décalage de led */
void chenillard(int tempo) {
unsigned int cheni=0; do { if(cheni==0) { digitalWrite(led1, LOW); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); }else if(cheni==1) { digitalWrite(led1, HIGH); digitalWrite(led2, LOW); digitalWrite(led3, HIGH); }else if(cheni==2) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, LOW); } delay(tempo); cheni++; }while(cheni!=3);
}
// ******* MAIN *******
// déclaration initialisation des variables internes compteur et temps.
unsigned int ctr=0, time=0;
// Tache de fond
void loop() {
/* EMMISION ECHO
Tant que le capteur ne retourne pas d'echo, on envoie une trame
d'ultrasons toutes les 65ms, un intervalle inférieur causerait des interférences entres deux trames successives */
while(digitalRead(echo)==LOW) { if(time==65) //emmission test toutes les 65ms { digitalWrite(commande, HIGH); delay(1); //impulsion 1 ms digitalWrite(commande, LOW); time=0; } else { time++; delay(1); } }
// CALCUL TEMPS ECHO EN MS /*Comptage des millisecondes durant lesquelles le signal d’écho reste a l’état haut. C'est l'image du temps que mets la trame d'ultrasons pour faire l'aller-retour entre l’émetteur/capteur et l'obstacle */
if(digitalRead(echo)==HIGH) { while(digitalRead(echo)==HIGH) { ctr++; delay(1); } }
/* En fonction du temps d’écho, donc de la distance de l'objet, affichage de différentes combinaisons avec les leds, actives sur état bas : digitalWrite(led,LOW) allume la led */
if(ctr<=1) // affichage pour 0 ou 1ms { chenillard(70); } else if((ctr>1)&&(ctr<=2)) //affichage pour 2ms { chenillard(200); }else if((ctr>2)&&(ctr<=3)) //affichage pour 3ms { digitalWrite(led1,LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); } else if((ctr>3) && (ctr<=4)) //affichage pour 4ms { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, HIGH); } else if((ctr>4) && (ctr<=5)) //affichage pour 5ms { digitalWrite(led1, LOW); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); }else if(ctr>5) // //affichage pour plus de 5ms { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); } ctr=0; // initialistation compteur pour mesure suivante
}
chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino
http://www.generationrobots.com/fr/content/65-les-capteurs-a-ultrasons-pour-les-robots
Les capteurs à ultrasons sont utilisés pour :
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique