Aller au contenu


Photo
- - - - -

Problème robot Arduino


  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris
  • Interests:Programmation et robotique

Posté 27 février 2014 - 02:32

Salut tout le monde ! :D

Si je fais appelle a vos connaissances aujourd’hui c'est car autrement je crois que je vais finir par explosé mon robot à coups de marteau ^^

J'ai construit il y a peut un petit robot eviteur d'obstacles basé sur Arduino et comportant, pour l'instant, qu'un capteur ultrasonique ( SRF04 ) à l'avant et mes moteurs sont pilotés à l'aide d'un L293NE.

J'ai donc fais mon propre shield moteur basé sur ce CI Comme ceci avec comme Vcc1, les 5V de l'arduino et comme Vcc2, 7,2V provenant d'une batterie externe.

J'ai ensuite rédigé mon code ( ce qui devais s’avèré très simple étant donné la simplicité d'utilisation des différents composants ) et j'ai ensuite testé le robot.

C'est la que les ennuis on commencés. Tous d'abord, la distance en centimètre provenant de mon capteur et s'affichant sur le moniteur série ne fonctionne plus bien ( J'avais fais le test à part et tout marchais nickel ), en effet les donné qui s'affiche sont désormais à peut près aléatoire et reste de temps en temps bloqué sur une valeur ( faible en général ).

Ensuite vient le problème des moteurs, ils ne fonctionnent pas du tout comme je voudrais qu'ils fonctionne. Quand j'allume mon robot, ils se mettent à tourner dans des sens et surtout à des vitesses différentes alors que dans mon code, il n'y a aucune notion de vitesse qui rentre en compte.



Sinon, mes moteurs sont des petits moteurs 3V classiques.

Voila mon code ( J'ai une librairie incluse pour le capteur ) :

#‎include <DistanceSRF04.h>

DistanceSRF04 Dist;
int distance;

int motor1Pin1 = 4; // pin 2 on L293D
int motor1Pin2 = 5; // pin 7 on L293D
int enable1Pin = 3; // pin 1 on L293D
int motor2Pin1 = 7; // pin 10 on L293D
int motor2Pin2 = 6; // pin 15 on L293D
int enable2Pin = 2; // pin 9 on L293D

void setup() {

Serial.begin(9600);
Dist.begin(13,12);

// set the motor pins as outputs:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enable2Pin, OUTPUT);
// set enablePins high so that motor can turn on:
digitalWrite(enable1Pin, HIGH);
digitalWrite(enable2Pin, HIGH);

}

void loop() {

distance = Dist.getDistanceCentimeter();
Serial.print("\nDistance in centimers: ");
Serial.print(distance); 
delay(50); //make it readable

// check the average distance and move accordingly

if (distance <= 10){
// go backwards
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH); 

} 

if (distance > 25) {
// go forward
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH); 

}
}


#2 Lamos

Lamos

    Nouveau membre

  • Membres
  • 35 messages
  • Gender:Male
  • Location:Avignon, France
  • Interests:Robotique, Electronique, programmation, modelisme 3D, musique, et bien d'autre!!

Posté 27 février 2014 - 02:48

Salut, j'ai fait exactement le même robot (le robot que tout les débutants font :D) et j'ai eu a peu près les même problèmes...
Concernant les moteurs, aucun moteur n'est pareil si tu règles 2 même moteur sur une vitesse x ils n'iront pas a la même vitesse et dans ton cas feront tourner lamentablement ton robot donc a toi de régler la vitesse manuellement... Après pour le capteur ultrason c'est sûrement un court circuit moi j'avais galérer pour sa...
A+
Il existe 10 types de personnes, celles qui savent lire le binaire et les autres.

#3 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris
  • Interests:Programmation et robotique

Posté 27 février 2014 - 02:53

Merci de ta reponse ;)

Pour ce qui est de la vitesse des moteurs, les miens ne tourne vraiment pas DU TOUT à la même vitesse c'est a dire qu'un peut aller a la vitesse max tandis que l'autre être pratiquement à l’arrêt. En plus, il y a une variation dans la vitesse de ceux ci donc je ne pensent pas que ca soit lié seulement a la différence entre mes deux moteurs :/

Sinon pour ce qui est du capteur, je vais vérifié les éventuels court circuits :)

#4 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 172 messages
  • Gender:Male
  • Location:Autriche

Posté 27 février 2014 - 03:41

Merci de ta reponse ;)/>

Pour ce qui est de la vitesse des moteurs, les miens ne tourne vraiment pas DU TOUT à la même vitesse c'est a dire qu'un peut aller a la vitesse max tandis que l'autre être pratiquement à l’arrêt. En plus, il y a une variation dans la vitesse de ceux ci donc je ne pensent pas que ca soit lié seulement a la différence entre mes deux moteurs :/

Sinon pour ce qui est du capteur, je vais vérifié les éventuels court circuits :)/>


Est-ce que tu as bien une masse commune pour ton circuit ? Tes soucis ressemblent à un problème de référence (masse). Peux-tu nous montrer le schéma de câblage de ton robot ?
Ton code me semble globalement bon, par contre, le commentaire pour "distance < 10" ne devrait-il pas être "go left" (ou "go right") ? Puisque si avancer correspond à mettre le pin1 sur LOW et pin2 sur HIGH, ça devrait être l'inverse pour reculer.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#5 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris
  • Interests:Programmation et robotique

Posté 27 février 2014 - 04:10

Est-ce que tu as bien une masse commune pour ton circuit ? Tes soucis ressemblent à un problème de référence (masse). Peux-tu nous montrer le schéma de câblage de ton robot ?


J'ai regardé, à priori j'ai bien toutes les masses connectés ensembles sur mon schéma. Pour ce qui est du cablage de mon robot, c'est exactement Ca que j'ai fait. J'ai regardé d'autres schéma d'utilisation du L293NE et certaine personne connecte les deux " enable pins " directement au 5V de l'arduino. Est ce important ? Et peut t'on toujours contrôler la vitesse des moteurs après ça ?

Ton code me semble globalement bon, par contre, le commentaire pour "distance < 10" ne devrait-il pas être "go left" (ou "go right") ? Puisque si avancer correspond à mettre le pin1 sur LOW et pin2 sur HIGH, ça devrait être l'inverse pour reculer.


Si, tu a raison, je vais modifier ca ;)

PS: J'ai pas trouvé de court circuit au niveau du capteur

#6 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris
  • Interests:Programmation et robotique

Posté 27 février 2014 - 08:59

Je viens de faire un essais d'un code pour tester le bon fonctionnement de mon L293NE et le résultat fut catastrophique.

EN effet je me suis rendu compte que peut importe le code, il n'y a plus qu'un seul moteur qui marche et il ne marche que dans un seul sens de rotation. J'accuse donc mon CI d'avoir pris un peut chaud ( Il est prevut pour 1.2A par channel max et je tire environ 2A sur chaque ). Qu'en pensez vous ?


De plus, je crois que de part son dysfonctionnement, il entraîne le dysfonctionnement des autres systèmes notamment le capteurs qui arrête de capter quand le moteur se met en marche.

PS: A votre avis il vaut mieux que je change totalement de CI pour prendre un L298N ( Que j'ai jamais été foutu de faire fonctionné ) ou je remplace juste le miens ?

Peut être qu'en réduisant la vitesse des moteurs le courant consommé sera moindre mais comment faire pour réguler la vitesse avec ce CI ?

#7 microrupteurman2

microrupteurman2

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 2 041 messages
  • Gender:Male
  • Location:33
  • Interests:Tout

Posté 27 février 2014 - 09:26

Salut,

Tu peut trouver des shields a trois fois rien en cherchant un peu.

Good luck pour la suite
 
 
 

#8 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 8 231 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 28 février 2014 - 12:32

Salut,

Dans ton cas il faut reprendre points par points ... et y aller doucement. Le plus gros piège c'est de vouloir tout assembler et que ça fonctionne du premier coup alors qu'en général malheureusement ça ne fonctionne pas du premier coup pour une petite erreure x ou y ... Mon conseil c'est vraiment d'y aller pas à pas et de reprendre les étapes :

Commence par refaire marcher ton capteur et en fonction de sa valeur faire alumer la led qui est sur ta arduino. ( donc avec que ton capteur de brancher sur ta arduino) Normalement ça ne te prendra pas longtemps et ça validera le fait que de ce côté tu es bon ;)

Ensuite tu prends ta carte moteur et tu vérifie à la main ( sans carte arduino ) que tu es capable de bien faire tourner tes moteurs dans les différents sens.

Ensuite tu mets que ta carte moteur et les moteurs brancher à ta arduino et tu vérifie que tu es capable avec différents programme de faire tourner tes moteurs dans chacun des sens.

et ainsi de suite ;) fait ça n'hésie pas à prendre des vidéo pendant tes tests ;) et revient ici poser tes questions si tu en a!

Concernant ta consommation, d'où tire tu les 2A ? Pour moi le L293 doit être adapté à ton robot ... par contre attention au survoltage des moteurs cc. Certes ça se fait ^^ mais ça diminue leur durée de vie.

Bref à bientôt!

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#9 Newbies

Newbies

    Membre passionné

  • Membres
  • PipPipPip
  • 487 messages
  • Gender:Male
  • Location:Paris
  • Interests:Programmation et robotique

Posté 28 février 2014 - 01:08

Problème résolut !

J'ai finalement changé le CI et c'est la que je me suis rendu compte que je n'avais pas connecté la deuxième masse ( celle attachée au dissipateur ) à la masse commune. R1D1 avait donc raison, il sagissait bien d'un problème de masses ;)

Je posterais des photos du robot que je trouve, pour une fois, assez jolie :)

Sinon, des idées de fonctions à rajouté sur un petit robot de ce type ? Sachant qu'il est déjà prévu de rajouté d'autres capteurs.

Encore une fois MERCI LES GARS !




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users