Aller au contenu


Photo
- - - - -

Projet Robot tondeuse (Et oui, encore un!)


15 réponses à ce sujet

#1 C17

C17

    Nouveau membre

  • Membres
  • 9 messages

Posté 31 juillet 2012 - 01:13

Bonjour à tous,

Voilà, Comme pas mal de monde, j'ai dans l'idée de créer un petit robot tondeuse.

Cependant j'aurai besoin d'un peu d'aide technique car je ne m'y connais pas en robotique...

Pour info je suis informaticien, j'ai déjà programmé sur microcontrôleurs (Jennic et BasicStamp), donc pour la partie programmation ça devrait être plus facile pour moi.

Alors à mon avis l'idéal est d'aller étape par étape...


La première étape est la réalisation du chassis et du système de propulsion.

J'ai donc besoin d'un système à 3 roues, dont deux motorisées et qui avance entre 5 et 7 Km/h, et pouvant supporter 5 à 7 Kilos.
Pour le chassis je vais le faire en plexiglasse (35 cm * 40 cm)
Pour les roues, j'avais pensé à ceci (inspiré du projet tom02 dans ce forum)
Pour le contrôleur moteur et la gestion j'ai donc pensé comme Tom02 à de l'Adruino (contrôleur)

Par contre, pouvez-vous me conseiller pour les moteurs de propulsion? et comment les attacher correctement aux roues?

Un grand merci d'avance!

#2 C17

C17

    Nouveau membre

  • Membres
  • 9 messages

Posté 31 juillet 2012 - 02:36

Au fait, vous savez me dire la différence entre un moteur avec et sans encodeur? :)

#3 R1D1

R1D1

    Modérateur et Membre passionné

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

Posté 31 juillet 2012 - 02:48

Salut et bienvenue !

(pense à te présenter ;))

Je ne m'y connais pas en tondeuse robotisée, mais ça me semble un gros projet pour partir de zéro. Ne t'es-t-il pas possible de partir d'une base existante à automatiser ?

En tout cas, au sens large, un encodeur est un système qui code une information (d'où son nom). En robotique, une des applications de ce genre de système est le capteur de vitesse de rotation ou de distance parcourue pour un moteur ou une roue. Une possibilité consiste à utiliser un système optique qui compte le nombre d'impulsions d'une roue crantée ou d'un disque à segments et en déduit une estimation de la grandeur pré-citée.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#4 Roboteer

Roboteer

    Membre

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 31 juillet 2012 - 02:59

Au fait, vous savez me dire la différence entre un moteur avec et sans encodeur? :)


Bonjour C17,

Un encodeur (le vrai mot est codeur), encodeur c'est le franglais d'encoder ;-)
Un codeur va te permettre d'avoir une information de retour sur la position du moteur, en l’occurrence l'angle de rotation du moteur. Avec cette information, tu peux en déduire la position et la vitesse du moteur. Ainsi ,connaissant le rapport de réduction (si ton moteur est un moto-réducteur comme c'est souvent le cas) et le rayon de ta roue (et donc la distance parcourue par tour de roue: 2*PI*R) tu peux connaitre la distance parcourue par chaque roue, et donc la distance parcourue par le robot et son angle: tu peux avec un peu de trigo en déduire des coordonnées X, Y dans un plan. C'est l'odométrie.
Dans un deuxième temps, tu pourras avec cette information faire ce qu'on appelle une boucle fermée, un retour d'information qui va te permettre de déterminer l'erreur de position ou de vitesse entre ce que tu as demandé (consigne) et la position et/ou vitesse réelle. C'est ce qu'on appelle l'asservissement. Ex: tu veux que ton robot avance à la vitesse de 100 tours/min. Or le calcul avec l'information codeur te donne 105 tours /min. Ton asservissement (souvent un P.I.D (voir la définition sur Wikipédia)) va calculer qu'il faut réduire ta commande par rapport à la consigne pour attendre 100. la commande peut devenir pa

#5 Roboteer

Roboteer

    Membre

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 31 juillet 2012 - 03:04

Au fait, vous savez me dire la différence entre un moteur avec et sans encodeur? :)


Bonjour C17,

Un encodeur (le vrai mot est codeur), encodeur c'est le franglais d'encoder ;-) va te permettre d'avoir une information de retour sur la position du moteur, en l’occurrence l'angle de rotation du moteur. Avec cette information, tu peux en déduire la position et la vitesse du moteur. Ainsi ,connaissant le rapport de réduction (si ton moteur est un moto-réducteur comme c'est souvent le cas) et le rayon de ta roue (et donc la distance parcourue par tour de roue: 2*PI*R) tu peux connaitre la distance parcourue par chaque roue, et donc la distance parcourue par le robot et son angle: tu peux avec un peu de trigo en déduire des coordonnées X, Y dans un référentiel plan de ton robot. C'est l'odométrie.
Dans un deuxième temps, tu pourras avec cette information faire ce qu'on appelle une boucle fermée, un retour d'information qui va te permettre de déterminer l'erreur de position ou de vitesse entre ce que tu as demandé (consigne) et la position et/ou vitesse réelle. Cette erreur va te permettre de calculer la commande à envoyer au moteur pour la réduire le plus possible.C'est ce qu'on appelle l'asservissement.
Ex: tu veux que ton robot avance à la vitesse de 100 tours/min (C'est un asservissement en vitesse. Tu peux faire la même chose en position). Or le calcul avec l'information codeur te donne 105 tours/min. Ton asservissement (souvent un P.I.D (voir la définition sur Wikipédia)) va calculer qu'il faut réduire ta commande par rapport à la consigne pour attendre 100. la commande peut devenir par exemple 95 ou 96 en fonction des calculs... Et cette boucle se fait en permanence lors du mouvement à chaque période prédéfinie car l'erreur change tout le temps. C'est l'échantillonnage.

Voilà, j'espère avoir été assez clair.

Roboteer

#6 Melmet

Melmet

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 519 messages
  • Gender:Male
  • Location:Saint-Sozy (46200)

Posté 31 juillet 2012 - 06:07

Bonjour C17,

Un encodeur (le vrai mot est codeur), encodeur c'est le franglais d'encoder ;-) va te permettre d'avoir une information de retour sur la position du moteur, en l’occurrence l'angle de rotation du moteur. Avec cette information, tu peux en déduire la position et la vitesse du moteur. Ainsi ,connaissant le rapport de réduction (si ton moteur est un moto-réducteur comme c'est souvent le cas) et le rayon de ta roue (et donc la distance parcourue par tour de roue: 2*PI*R) tu peux connaitre la distance parcourue par chaque roue, et donc la distance parcourue par le robot et son angle: tu peux avec un peu de trigo en déduire des coordonnées X, Y dans un référentiel plan de ton robot. C'est l'odométrie.
Dans un deuxième temps, tu pourras avec cette information faire ce qu'on appelle une boucle fermée, un retour d'information qui va te permettre de déterminer l'erreur de position ou de vitesse entre ce que tu as demandé (consigne) et la position et/ou vitesse réelle. Cette erreur va te permettre de calculer la commande à envoyer au moteur pour la réduire le plus possible.C'est ce qu'on appelle l'asservissement.
Ex: tu veux que ton robot avance à la vitesse de 100 tours/min (C'est un asservissement en vitesse. Tu peux faire la même chose en position). Or le calcul avec l'information codeur te donne 105 tours/min. Ton asservissement (souvent un P.I.D (voir la définition sur Wikipédia)) va calculer qu'il faut réduire ta commande par rapport à la consigne pour attendre 100. la commande peut devenir par exemple 95 ou 96 en fonction des calculs... Et cette boucle se fait en permanence lors du mouvement à chaque période prédéfinie car l'erreur change tout le temps. C'est l'échantillonnage.

Voilà, j'espère avoir été assez clair.

Roboteer


belle expliquation, j'aurais pas trouver plus simple :Alex_01:

Ne demande jamais à un robot de faire ce que tu peux faire toi même. :nono: :laugh1:


#7 C17

C17

    Nouveau membre

  • Membres
  • 9 messages

Posté 31 juillet 2012 - 07:09

Bonjour,

Merci pour les infos :)

En fait, dans un premier temps j'aimerai juste faire un robot qui roule, avec un système de détecteur d'obstacles.

Par après il faudrait ajouter un système filoguidé pour les limites, et le faire balader de manière aléatoire en ligne droite à l'intérieur.

Quand ça fonctionnera, j'essaierai de placer un système de coupe (j'avais pensé à un fil à la place d'une lame, comme dans les coupes-bordures), et à mon avis c'est pas plus compliqué :ignat_02:


Donc si j'ai bien compris, si j'ai des roues de 12 cm et que je veux aller à 5 Km/h, if faut que j'ai un moteur qui tourne à environ 221 tours min.

Pour les deux moteurs je vais prendre ceci
Pour les roues je vais prendre ceci

Par contre, pour contrôler le moteur, vous pouvez me conseiller un peu (au niveau hardware)?

#8 C17

C17

    Nouveau membre

  • Membres
  • 9 messages

Posté 02 août 2012 - 03:00

quelqu'un aurait un petit tuto ou quelques explications sur comment connecter un moteur de type 'encodeur' sur de l'Arduino (au niveau technique) ?

:bye:

#9 R1D1

R1D1

    Modérateur et Membre passionné

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

Posté 02 août 2012 - 03:26

quelqu'un aurait un petit tuto ou quelques explications sur comment connecter un moteur de type 'encodeur' sur de l'Arduino (au niveau technique) ?

:bye:


On ne connecte pas un moteur directement sur une carte de commande : l'ampérage requis pour faire fonctionner le moteur risque de détruire la carte de commande. Il faut passer par un étage de puissance (transistor, pont en H, etc ...) :

Microcontrôleur (Arduino ou autre) --> Carte de puissance --> Moteurs

Par contre, si tes moteurs possèdent des encodeurs (donc des capteurs de vitesse / position), eux sont probablement connectables directement sur la carte du microcontrôleur (puisqu'ils renvoient une information codée avec une faible tension et un faible courant).
Sur le lien que tu nous as donné pour le moteur, il y a une section "Using the Encoder" qui écrit les connexions :

These leads have stripped, unterminated ends that can be soldered or crimped to make solder free connectors. The Hall sensor requires an input voltage, Vcc, between 3.5 and 20 V and draws a maximum of 10 mA. The A and B outputs are square waves from 0 V to Vcc approximately 90° out of phase. The frequency of the transitions tells you the speed of the motor, and the order of the transitions tells you the direction.


R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#10 C17

C17

    Nouveau membre

  • Membres
  • 9 messages

Posté 02 août 2012 - 10:09

Merci pour la réponse, je pense avoir compris, c'est cool j'avance!

Alors donc si j'utilise du arduino, ce que j'ai besoin entre le moteur et la carte, c'est ceci.

Pour résumer, le moteur est connecté à la carte 'Motor Driver', et la vitesse des moteurs est définie par les pin Digital 7 à 10 de l'arduino connectée aux pin M1Dir/M2Dir/M1PWM/M2PWM.

Par contre, La vitesse du moteur est directement contrôlée par les fils de l'encodeur connectés à la carte Arduino.

Donc mes qestions sont:

- Est-ce que mon raisonnement est correct?
- Est-ce que la carte choisie est la mieux adaptée?
- J'ai vu qu'il y avait deux type de cartes, les 'Moteurs Drivers' et 'Moteurs Controleurs'... C'est quoi la différence???
- Dernière petite question... Y'a quoi comme différence entre un moteur 'Encodeur' et un moteur pas à pas?

:dance2:

#11 C17

C17

    Nouveau membre

  • Membres
  • 9 messages

Posté 17 août 2012 - 08:30

Voilà, j'ai commandé les pièces (moteurs, arduino, driver moteur, roues, axes et détecteur de distance infrarouge)

Donc je vais déjà pouvoir faire quelque chose qui roule!

Par contre pour le système filoguidé, j'ai déjà cherché sur internet mais je n'ai pas trouvé grand chose... Quelqu'un aurait un schéma ou des infos là dessus?

:bye:

#12 R1D1

R1D1

    Modérateur et Membre passionné

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

Posté 17 août 2012 - 09:59

Par contre, La vitesse du moteur est directement contrôlée par les fils de l'encodeur connectés à la carte Arduino.

Pas exactement. Le cerveau, dans ton robot, c'est l'Arduino. C'est elle qui va dire "rotation sens horaire à 200 tr/min" (dans son langage). Le retour de l'encodeur, c'est pour dire à l'Arduino : "ma roue a tourné à 195 tr/min". C'est ensuite à l'Arduino de décider quoi faire de cette information.
Exemple : tu es à la neige et tu veux lancer une boule de neige mais tu n'as pas de gants. Tu prends de la neige dans ta main, tu sens que c'est froid. Une réaction usuelle est de lâcher ce qui est trop froid (information trop froid -> lâcher) mais tu peux décider de garder la neige en main (information trop froid + envie de lancer une boule de neige -> garder la neige en main).
Là c'est pareil. L'encodeur te dit que ta roue tourne à une certaine vitesse, à toi de décider quoi faire de cette info. Tu as le droit de l'ignorer. Mais quand tu demandes à ton moteur de tourner à 200 tr/min et qu'il ne tourne qu'à 195, tu peux avoir envie de faire quelque chose pour vraiment avoir 200 tr/min à la sortie de ton moteur (enfin, tes roues en l'occurrence).

- Est-ce que la carte choisie est la mieux adaptée?
- J'ai vu qu'il y avait deux type de cartes, les 'Moteurs Drivers' et 'Moteurs Controleurs'... C'est quoi la différence???

- Mieux adaptée : ca dépend de l'ampérage que consomme tes moteurs en fonctionnement. J'avoue ne pas aimer assez l'électrotech pour pouvoir te donner une réponse fiable, mais en gros, il faut que ton contrôleur laisse passer assez d'ampérage (donc que tes moteurs consomment moins de 3A chacun).
- Je pense que Motor Driver concerne le composant qui contient l'électronique de puissance (pont en H, etc) et Motor Controller la carte avec le Motor Driver et les composants qui gravitent autour.
Dans les deux cas, un autre avis est à prendre. ;)


Pour le système filoguidé : il s'agit "simplement" d'une manette ? Donc en gros, si tu as une carte avec divers boutons, joysticks, etc ... tu peux récupérer l'état de chaque capteur (les boutons sont des capteurs de contact en fait) et tu obtiens une commande. Je pense que dans les systèmes du commerce, il y a des traitements pré-calculés dans la manette et les trames de commmunications sont adaptées à l'utilisation, mais c'est sûrement faisable à la main. Reste à définir quels sont les informations que tu veux envoyer à ton robot.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#13 C17

C17

    Nouveau membre

  • Membres
  • 9 messages

Posté 17 août 2012 - 10:19

Merci pour les infos,

A mon avis la carte driver ne sera malhereusement pas adaptée aux moteurs que j'ai pris (Moteurs 6A et carte 3A (max 5A en pointe))...

Est-ce que tu penses que l'on pourrait résoudre ce problème? (par exemple avec un système de transistor qui augmente la puissance envoyée au moteur?
ou si c'est juste un problème de composant qui risque de griller résoudre ce problème avec un système de dissipation de chaleur (genre petit refroidisseur alu à coler sur les puces)?

Pour le système filoguidé à mon avis ce n'est pas le bon terme que j'utilise, je voulais dire que le robot devait suivre un fil sur le sol et non être télécommandé par fil

#14 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 17 août 2012 - 10:48

Pour le système filoguidé à mon avis ce n'est pas le bon terme que j'utilise, je voulais dire que le robot devait suivre un fil sur le sol et non être télécommandé par fil


Salut

j'ai des idées pour le detecteur de fil enterré (FE on va dire)

On devrais pouvoirs dettecter le champs electromagnetique du courant passant dans le FE

j'ai fait un petit dessin c'est plus facile !


Capture.JPG

mais il faut faire des testes!

a quelle distance

quelle genre de signal renvois la bobine

Combien de spire

a mon avis il faut envoyer un signal carrer de X nombre hz dans le FE pour que le robot ne le confonde pas avec un cable de 220

bref ce n'est qu'une idée , a toi de faire tes recherche maintenant ;)

#15 C17

C17

    Nouveau membre

  • Membres
  • 9 messages

Posté 17 août 2012 - 12:47

J'ai trouvé ceci

ça me semble assez simple et réalisable...

Vous en pensez quoi?

#16 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 28 avril 2014 - 10:47

J'ai trouvé ceci

ça me semble assez simple et réalisable...

Vous en pensez quoi?

Je déterre se topic l'un d'entre vous a t'il essayé ?



Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users