Pages: [1] 2   Go Down
Author Topic: [Aide] Voiture autonome  (Read 2715 times)
0 Members and 1 Guest are viewing this topic.
Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour @Toutes et @Tous,  smiley

Voilà je viens vous embêter avec mes questions car je suis sur le point de me lancer sur un projet de voiture autonome
(radiocommandée, pas réelle ….  smiley-razz )
Je vais avoir du temps avec les vacances.... mdr  smiley-lol smiley-lol

Il s’agit de la voiture Nikko Renault Maxi Mégane R/C Evolutions Séries
Batterie 9,7V / 650mAh (Nostalgie... quand tu nous tiens  smiley-lol)

Mon but final c’est de lui inclure :
-   des capteurs de ligne (Blanche/noire) -> pour suivre une piste
-   des capteurs infrarouges -> pour éviter les obstacles (je vais partir sur 3x gp2d120)
-   des Dels -> pour faire joli smiley-razz (style soucoupe volante ou K2000)


Aussi j’ai besoin de quelques petites précisions :

->Sur le moteur, il y a 3 fils : (photo n° 1050710_copie, photo n° 1050712_copie)
-   Un marron relié à un pôle du moteur
-   Un bleu relié à un pôle du moteur
-   Un noir relié à la carcasse du moteur

Et les trois sont reliés entre eux par des condensateurs marqués « 473 ». (schéma branchement_moteur)

Rassurez-moi, le fil noir ne sert que de Masse ? non ?  smiley-sweat smiley-roll-blue
Je pilote bien le moteur avec le Bleu et le Marron (- et + ) ou ( + et - ) ?  smiley-confuse


->Le servo moteur de direction comporte 7 fils !!!  smiley-eek smiley-eek (photo n° 1050715_copie, en bas à droite)
En avez-vous déjà vu des comme cela ?  smiley-eek-blue
Comment on fait pour les contrôler ???  smiley-confuse


Ensuite voici quelques questions d’électronique :  smiley-wink

->Pour pouvoir gérer la vitesse du moteur, je dois passer par un transistor sur lequel je balance un signal PWM plus ou moins rapide en fonction de la vitesse voulue ?   smiley-sweat
C’est çà, j’ai bon ?  smiley-red


->Si je veux inverser le sens de marche du moteur, je part sur des diodes avec le principe "d'inversion de feu de loco" ?  smiley-confuse

(heu, je sais c'est pas ça, mais je parle juste du "principe"  smiley-wink )


-> je compte baser mon détecteur de ligne sur 2x5 leds (5 lots d’émettrice/réceptrice)  smiley
cependant sur le net, il y a tout pleins d'idée et de versions smiley-cry, j’hésite entre :
- Une led émettrice : led de couleur blanche || Une led réceptrice : une photorésistance
ou
- Une led émettrice : led infrarouge || Une led réceptrice : led réceptrice infrarouge

qu'en pensez-vous ?
En avez vous déjà monter ? créer ?  smiley-surprise
quels ont été vos résultats ?  smiley-confuse



MERCI @toutes celles et @tous ceux qui auront pris le temps de me lire.  smiley-lol smiley-lol
Je suis ouvert à toutes vos réflexions  smiley-mr-green

@plus  smiley-wink







* Branchement_moteur.jpg (3.96 KB, 190x92 - viewed 18 times.)

* S1050710_copie.jpg (57.41 KB, 336x366 - viewed 26 times.)

* S1050712_copie.jpg (55.12 KB, 346x336 - viewed 27 times.)

* S1050715_copie.jpg (451.46 KB, 1024x744 - viewed 43 times.)
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui la masse métalique du moteur ne sert à rien.
les 3 condensateurs sont des 47nF.

Le contrôle d'un moteur à 2 directions se fait avec un pont en H qui comporte 4 transistors.
Il faut que tu mesures le courant max du moteur (en charge, en forçant un peu sur l'axe) et la tension de fonctionnement.

Je te conseille un pont en H intégré à base de MOSFET et d'éviter le vieux L298 bipolaire qui t'obligera à dissiper de la chaleur et d'utiliser une tension supérieure de 1 à 2V au besoin du moteur.
Perso avec des micros moteurs j'utilise le Toshiba TB6612FNG sur un module breakout de Sparkfun.


Pour le capteur de ligne j'utilise celui-ci : http://www.pololu.com/catalog/product/960 dont je n'utilise que 5 capteurs.

Pour le suivit de ligne, tout les bricolage de code ne donne que des résultats décevant. Une seule solution marche bien c'est la régulation PID.
Voir l'artcile sur le site de Pololu : http://www.pololu.com/docs/0J21/7
C'est pour un autre contrôleur que l'Arduino mais le principe est facile a porter.
Le résultat est là :


Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@barbudor :  MERCI \^^/ pour ta réponse  smiley-lol
tu as pratiquement répondu à toutes mes questions en un post  smiley-eek smiley-eek
MERCI beaucoup ! je regarde tout cela et je reviens  smiley-wink

@plus
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ayé j'ai commandé le matos, j'attends les colis  smiley-lol

@barbudor : tu pourrais m'en dire plus concernant le pilotage du pont en H pour le contrôle des moteurs ?  smiley-grin
ça doit pas être compliqué, mais j'en ai jamais fait.... smiley-red
Merci d'avance   smiley-wink
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Pas compliqué du tout
Si tu prends un composant comme le TB6612, il y a 2 pont en H à l'intérieur.

Pour chaque pont tu as 3 entrées :
- PWM
- IN1
- IN2
Tu as la table de vérité à la page 4 de la datasheet

Mais l'utilisation la plus simple c'est :
- PWM = controle de vitesse par une broche PWM. A 0, arret.
- IN1 et IN2 = controle de sens, en mettant toujours IN1 opposé à IN2.
  Pour IN1 et IN2, tu peux soit utiliser 2 pins distinctes (ca en fait 3 avec PWM) ce qui te permet si besoin de gérer tous les cas de la tabel de vérité
  Sur mon robot je n'utilise qu'un pin de controle et un inversue 74'04 pour une IN2 soit toujours à l'opposé de PIN1.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@barbudor : Merci pour ta réponse si rapide  smiley-lol
à voir ton explication, ce n'est pas si dur que cela !!  smiley-wink

Pour mon projet j'ai :
 - un moteur (pour avancer et reculer)
 - un servo-moteur (pour la direction)

donc je prends pour mon moteur : PWM, IN1, IN2 (avec IN1 != IN2, je pense qu'en programmant cette sécurité, on est sur de pas faire des bétises) -> 3broches

Par contre pour le servo-moteur, là c'est plus dur !!  smiley-eek-blue smiley-eek-blue
Il possède 6 fils !  smiley-cry smiley-cry

sur ce site il explique que : http://nikkoevolution.fr/article/article_fiche.php?articleID=278

- le fil rouge : +
- le fil noir : -
ceci ça va  smiley-lol mais après ça ce corse :
- le fil bleu : masse
- le fil blanc : milieu de potentiomètre
- le fil vert : borne de potard
- le fil jaune : borne de potard

car sur ce servo, on a un retour du potard....

mais chez moi, les fils sont de couleurs différentes.... (dans l'ordre : blanc,gris,violet,bleu)  smiley-eek-blue smiley-eek-blue
je pense qu'il va falloir démonter tout... smiley-sweat smiley-sweat smiley-cry

et ensuite je pense que je commanderai le servo via la platine TB6612 (avec le 2ème pont)  smiley-wink

Pour info j'ai trouver un code correspondant à la platine TB6612 :

Code:
//motor A connected between A01 and A02
//motor B connected between B01 and B02

int STBY = 10; //standby

//Motor A
int PWMA = 3; //Speed control
int AIN1 = 9; //Direction
int AIN2 = 8; //Direction

//Motor B
int PWMB = 5; //Speed control
int BIN1 = 11; //Direction
int BIN2 = 12; //Direction

void setup(){
  pinMode(STBY, OUTPUT);

  pinMode(PWMA, OUTPUT);
  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);

  pinMode(PWMB, OUTPUT);
  pinMode(BIN1, OUTPUT);
  pinMode(BIN2, OUTPUT);
}

void loop(){
  move(1, 255, 1); //motor 1, full speed, left
  move(2, 255, 1); //motor 2, full speed, left

  delay(1000); //go for 1 second
  stop(); //stop
  delay(250); //hold for 250ms until move again

  move(1, 128, 0); //motor 1, half speed, right
  move(2, 128, 0); //motor 2, half speed, right

  delay(1000);
  stop();
  delay(250);
}

void move(int motor, int speed, int direction){
//Move specific motor at speed and direction
//motor: 0 for B 1 for A
//speed: 0 is off, and 255 is full speed
//direction: 0 clockwise, 1 counter-clockwise

  digitalWrite(STBY, HIGH); //disable standby

  boolean inPin1 = LOW;
  boolean inPin2 = HIGH;

  if(direction == 1){
    inPin1 = HIGH;
    inPin2 = LOW;
  }

  if(motor == 1){
    digitalWrite(AIN1, inPin1);
    digitalWrite(AIN2, inPin2);
    analogWrite(PWMA, speed);
  }else{
    digitalWrite(BIN1, inPin1);
    digitalWrite(BIN2, inPin2);
    analogWrite(PWMB, speed);
  }
}

void stop(){
//enable standby 
  digitalWrite(STBY, LOW);
}

Voilà @plus  smiley


* S1050715_copie.jpg (451.46 KB, 1024x744 - viewed 38 times.)
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ce que je comprend de cet article c'est que le servo Nikko n'est pas un servo traditionnel.
C'est pas tant que l'on a un retour, c'est qu'il n'a pas l'électronique d'asservissement

Un servo nomal reçoit une alimentation ( + et - )
Un signal de commande sous la forme d'une impulsion de période total 20ms et dont la durée de l'état haut varie entre 1,5ms et 2,5ms.
A 1,5ms le servo est tout a gauche, a 2ms il est au milieu à 2,5ms il est tout a droite.

Cela marche grâce à une petite carte électronique dans le servo qui compare la longueur de l'impulsion à la position du servo (via le potentiomètre).

Dans le cas du servo Nikko, pas de carte de contrôle.
Tu as accès directement à la commande du moteur et au potentiomètre.

Comment faire ?

- Pour la commande du moteur, il te reste un pont en H de dispo dans le TB6612
- Le potar tu relie une borne au +5V, l'autre borne au GND et la borne du milieu à une entrée analogique da l'Arduino.
Et puis il va falloir faire ta régulation tout seul

C'est à dire que dans la loop() tu va :
- lire la position du potar (analogRead) qui donne une valeur entre 0 et 1023
- calculer la différence avec la consigne c'est à dire la valeur que tu veux atteindre (genre 0 tout à gauche, 512 milieu, 1023 tout à droite)
- En fonction de la différence (signe + ou - et amplitue (valeur absolue) tu va commander le moteur du servo

Le mieux étant là d'utiliser le fameux algorithme PID qui est un peu plus compliqué que prendre en compte la différence de valeur instantanée.

Maintenant comment repérer les fils ?

Tu va devoir sonder avec un ohmmètre, en plaçant le moteur vers le milieu (pas en butée)
Tu devrais trouver :
- 2 fils qui ont entre eux une résistance ni nulle ni infinie et une résistance infinie avec les 4 autres fils : c'est le moteur
- 3 fils qui ont entre eux une résistance ni nulle ni infinie et une résistance infinie avec les 3 autres fils : c'est le potentiometre

Sur les 3 fils du potentiomètre, tu trouve celle du milieu (BC) telle que résistance(B1, BC) + résistance(BC, B2) = résistance(B1, B2)

Celui qui reste c'est la masse...

Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir

 Il serait peut plus simple d'acheter un servo "classique".

 Yankee76
Logged

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@barbudor :   smiley-eek Woo !
MERCI pour tes explications si détaillées !! j'en demandais pas tant  smiley-lol smiley-lol
j'étais même prêt à démonter ce simili servo  smiley-wink

Et oui comme tu le dis ce n'est pas un servo "servomoteur" ,
quand je le regarde (sans le démonter  smiley-wink ) on voit très bien le moteur sans carte électronique

Je vais appliquer ce que t'as dit, et sinon .... ben je prendrais un tournevis  smiley-lol smiley-lol

@yankee76 : je suis d'accord avec toi surtout que j'en ai commandé pour mon hexapode...  smiley-lol
mais (ben oui, y-a toujours un mais smiley-wink ) je voulais utiliser les "composants" de ma voiture (dans la mesure du possible smiley-wink )

@plus
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour @toutes et @tous  smiley-grin

voilà donc j'ai avancé un peu dans mon projet, il ne reste plus que le chassis de la voiture, son moteur et son servo de direction avec sa direction. (c'est super léger  smiley-eek)

de plus je connais maintenant le code couleur des fils du servo de direction  smiley-lol (Merci barbudor) :

- gris -> borne moteur
- Blanc -> borne moteur
- violet -> masse moteur

- Rouge -> borne potentiomètre
- Bleu -> borne potentiomètre
- Noir -> borne du milieu du potentiomètre (celle qui varie  smiley-red... enfin vous comprenez  smiley-lol )

j'ai plus qu'à m'atteler à créer un programme de gestion de la direction, et ensuite un programme pour qu'elle suive sa ligne  smiley-grin
(ça me changera de mon programme du serpent, que j'arrive toujours pas à finaliser...  smiley-mad )

@plus pour de nouvelles aventures dans le monde fantastique de la robotique  smiley-lol smiley-lol
tchô  smiley-wink
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour @toutes et @tous les Arduinautes  smiley-lol

voilà j'ai un souci avec le Module TB6612FNG :


car j'ai 2 moteurs :
 - le premier pour avancer et reculer piloté sur A01, A02 avec PWMA, AIN1, et AIN2, son alimentation de 9,6V sur VM
(ça c'est ok  smiley-lol )
- le deuxième sert à la direction mais celui-ci ne peut être piloté que sous 6V  smiley-red
or si je le branche sur B01, B02 avec PWMB, BIN1, et BIN2
il sera alors alimenté grâce à VM qui est en 9,6V !!!  smiley-eek (là c'est pas bon  smiley-sweat )

il y aurait-il un moyen de garder le câblage mais de rajouter une petite chose entre mes bornes moteur de direction et B01, B02 afin qu'il soit sous une tension <=6v....  smiley-red

Si ma question vous parait co**e, désolé mais je suis encore un Rookie smiley-red  smiley-wink
(et puis tant que l'on apprend des choses en posant des questions, elles ne sont jamais c***e heu... inutiles  smiley-lol)

@plus et Merci  smiley-wink
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour

Solution simple : prendre un 2eme module

Solution stupide (mais j'en vois pas d'autre) : mettre 2 séries tête bèches de 5 x 1N4007 pour faire chuter la tension.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Faraday Member
**
Karma: 34
Posts: 5091
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour

Solution simple : prendre un 2eme module

Solution stupide (mais j'en vois pas d'autre) : mettre 2 séries tête bèches de 5 x 1N4007 pour faire chuter la tension.

Bonsoir Barbudor,
 idée rapide peut etre finalement pas viable, mais les sorties BO1 B02 selon le sens sont en inversion de courant (principe du H)
je me demande si l'emploi d'un couple de regulo 7806/7906 ne serait pas utilisable ?
pas le courage ce soir de verifier  smiley-mr-green
Logged

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir Ami(e)s Arduinaute smiley

Solution simple : prendre un 2eme module
ça je peux faire, j'en avais acheté un de + (au cas ou) smiley
mais c'est dommage d'en avoir 2 pour seulement 2 moteurs (au lieu de 4)  smiley-red smiley-confuse

Solution stupide (mais j'en vois pas d'autre) : mettre 2 séries tête bèches de 5 x 1N4007 pour faire chuter la tension.
je peux aussi mais c'est pas un peu à la "barbare" ?  smiley-kiss

je me demande si l'emploi d'un couple de regulo 7806/7906 ne serait pas utilisable ?
là par-contre je connais pas  smiley-razz

Merci @vous deux

si vous avez d'autres réponses ou des précisions, n'hésitez pas smiley-wink
@plus
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Dans l'Espace
Offline Offline
Sr. Member
****
Karma: 1
Posts: 294
ArduinoBot builder \^^/
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon ben ....

après des tests, en élevant graduellement la tension, le moteur de direction tient bon le 9v  smiley-red

acceptez toutes mes excuses, pour vous avoir embêter avec ma question...  smiley-red smiley-red

@plus

je vous tiendrais au courant en fonctions des évolutions  smiley-wink
Logged

Proverbe Tibétain : Un mensonge est un saut du haut du toit

Pages: [1] 2   Go Up
Jump to: