Introduction: Mini Robot Arduino+l293D+HC-SR04

Club Genie Electrique ENIT Tunis:

A Fin de réaliser notre Mini robot, nous avons eu beaucoup à apprendre et à mettre en pratique pour ce projet(des logiciels,des composants...), ce qui a pour but de nous familiariser avec une situation concrète que nous serons amenès à rencontrer réguliérement dans notre futur métier.

Step 1: Step1:Les Logiciels

Eagle

Eagle (Easily Applicable Graphical Layout Editor) est un logiciel de conception assistée par ordinateur de circuits imprimés. Il comprend un éditeur de schémas, un logiciel de routage de circuit imprimé avec une fonction d’auto-routage, et un éditeur de biblioth `ques. Le logiciel est fourni avec une série de bibliothéques de composants de base.

Arduino IDE
Ce logiciel permet de programmer,notre arduino, dans un langage s’apparentant á du C/C++, bien plus commun que l’assembleur.

ISIS de Proteus
Le logiciel ISIS de Proteus est principalement connu pour éditer des schémas électriques. Par ailleurs, le logiciel permet également de simuler ces schémas ce qui permet de déceler certaines erreurs dés l’étape de conception. Indirectement, les circuits électriques concus grâce à ce logiciel peuvent être utilisé dans des documentations car le logiciel permet de contrôler la majorité de l’aspect graphique des circuits.

Step 2: Les Composants

L293D

Dans son principe de base, le pont H est un assemblage de 4 transistors (2 PNP et 2 NPN) monté de telle facon que le courant puisse passer soit dans un sens, soit dans l’autre au travers de la charge (un moteur continu par exemple).En inversant le sens du courant dans le moteur, ce dernier changera de sens de rotation.

Capteur ultra-son(HC-SR04)
Le capteur HC-SR04 utilise les ultrasons pour déterminer la distance d’un objet. Il offre une excellente plage de détection sans contact, avec des mesures de haute précision et stables. Son fonctionnement n’est pas influencé par la lumière du soleil ou des matériaux sombres, bien que des matériaux comme les vêtements puissent être difficiles à détecter.

Step 3: La Carte De Puissance

Notre carte de puissance est basée sur le circuit intégrer L293D. En effet, ce circuit nous permet de commander nos moteurs dans les deux sens.Notre carte contient aussi un régulateur 5V nous nous permet d’alimenter l’arduino ( ceci nous a permis de résoudre le problème de l’alimentation indépandante de l’arduino). On a mis des diode LED pour nous donner une information précises sur les pins qui sont entrain de fonctionner.

Step 4: Partie Programmation

Dans cette partie nous allons vous donner l’algorithme que nous avons adopté

CODE ARDUINO

int motor1_enablePin = 10; //pwm
int motor1_in1Pin = 9; int motor1_in2Pin = 8;

int motor2_enablePin = 6; //pwm int motor2_in1Pin = 4; int motor2_in2Pin = 5;

// capteur à ultrasons: int trigPin = 12; int echoPin = 11;

int Mspeed = 0; // a variable to hold the current speed value int seuil = 30; // distance minimale pour laquelle on accepte un obstacle

long distance; boolean sensRotation;

void look (void){ // évaluation de la distance de l'obstacle

long temps;

// Nous envoyons un signal haut d'une durée de 10 microsecondes, en sandwich // entre deux signaux bas. Des ultrasons sont émis pendant que le signal est haut

digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);

// Lors de la réception de l'écho, le module HC-SR04 émet // un signal logique haut (5 v) dont la durée est égale au // temps écoulé entre l'émission et la réception de l'ultrason. pinMode(echoPin, INPUT); temps = pulseIn(echoPin, HIGH);

distance = temps * 340/(2*10000); }

void setup() {

//on initialise les pins du moteur 1 pinMode(motor1_in1Pin, OUTPUT); pinMode(motor1_in2Pin, OUTPUT); pinMode(motor1_enablePin, OUTPUT);

//on initialise les pins du moteur 2 pinMode(motor2_in1Pin, OUTPUT); pinMode(motor2_in2Pin, OUTPUT); pinMode(motor2_enablePin, OUTPUT);

pinMode(echoPin, INPUT); pinMode(trigPin, OUTPUT); digitalWrite(trigPin, LOW); // on choisit aléatoirement le sens de la rotation look (); randomSeed(distance); sensRotation = random(2); }

void loop() {

Mspeed = 255; // vitesse du moteur 0 à 1023

look(); // y a-t-il un obstacle devant?

if (distance > seuil){

// marche avant: SetMotor2(255, true); SetMotor1(255, false);

delay(100); }

else { // on a détecté un obstacle // nouvelle vérification pour éviter les faux positifs look(); if (distance <= seuil){ // obstacle confirmé, on tourne sur place

SetMotor2(255, false); SetMotor1(255, true); delay(1000); SetMotor2(255, false); SetMotor1(255, false); delay(4000); } }

} //Fonction qui set le moteur1 void SetMotor1(int speed, boolean reverse) { analogWrite(motor1_enablePin, speed); digitalWrite(motor1_in1Pin, ! reverse); digitalWrite(motor1_in2Pin, reverse); }

//Fonction qui set le moteur2 void SetMotor2(int speed, boolean reverse) { analogWrite(motor2_enablePin, speed); digitalWrite(motor2_in1Pin, ! reverse); digitalWrite(motor2_in2Pin, reverse); }

Step 5: Mini Robot

Sensors Contest 2017

Participated in the
Sensors Contest 2017

Microcontroller Contest 2017

Participated in the
Microcontroller Contest 2017