Arduino projet robot

Le problème vient du delai tout va mal dès que j'ajoute un delai où que ce soit

j'ai de la nouveauté c'est en fait surement un probleme de branchement ou de pin car quand je remplace les moteurs par des leds tout marche parfaitement...

Vous ne pouvez pas alimenter les moteurs juste par les pins...

Comment faut-il faire ?

Lien vers vos moteurs ?
Avez vous lu le tuto d’eskimon sur les moteurs - commencez par la base: Le moteur à courant continu

Bonjour,

Comment dit JML, il ne faur pas commander les moteurs directement par la carte arduino, il faut passer par une carte de commande qui va gerer la commande et la puissance, genre moteur shield.

Mon but serait d'y arriver sans shield car je sens que je suis pas très loin. Voila mon problème , avec le code ci dessous le code fonctionne bien les moteur s'arretent quand le capteur détecte un aimant mais je voudrais qu'il s'arrete pendant une seconde alors je rajoute un delai mais les moteurs ne démarrent jamais comme si on était toujours dans le cas que le capteur détecte un aimant.

int moteurR = 3;
int moteurL = 5;
int valeur1=160;
int valeur0=0;
int heState = 0;
long randNumber;
int hePin = 4;

  
void setup()
{
  pinMode(moteurR, OUTPUT);
  pinMode(moteurL, OUTPUT);
  pinMode(hePin, INPUT);
}
  
void loop()
{
  heState = digitalRead(hePin);
      
  if (heState == HIGH)
  { analogWrite(moteurR, valeur1);
    analogWrite(moteurL, valeur1);

  }

  if (heState == LOW) 
  { analogWrite(moteurR, valeur0);
    analogWrite(moteurL, valeur0);
    delay(1000);

  }
}

mais c'est quoi votre moteur?

Moteur récupéré sur ce robot : Pololu - Elenco 21-880 Line-Tracking Mouse

OK ce sont donc sans doute des moteurs classique à courant continu.. avez vous lu Le mouvement grâce aux moteurs - les tutos d'eskimon. (commencez par la partie Le moteur à courant continu)

ces moteurs ne s'alimentent pas directement depuis une pin et vous avez de la chance si elle n'a pas encore grillée...

il vous faut un mosfet/transistor et une diode de roue libre au moins - éventuellement une Résistance en plus...

le fait que ça déconne c'est que le moteur tire sans doute trop de courant sur votre pin. c'est pour ça que ça fonctionne avec une LED....

il vaut mieux le mosfet/transistor ou un shield moteur peut remplacer ? il me faudrait le plus simple

lisez le tuto d'eskimon et vous aurez votre réponse

vous y verrez notamment cela:

je vais utiliser un shield qui me parait bien plus simple pour moi

est-ce que ceci pourrait aller ? : http://image.noelshack.com/fichiers/2018/44/2/1540908374-20181030-150502.jpg

Je ne sais pas du tout ce que c'est mais c'etait dans le robot de base

votre image:

y'a bcp de choses là dessus... sans doute le line tracker, un buzzer. les pins marquée L et R avec + et - sont peut-être pour les 2 moteurs.

Qu'est-ce qui est marqué sur la puce principale? (ils ont sans doute intégré les circuits sur cette carte quelque part - mais à mon avis ce n'est pas la grosse puce qui doit être "l'intelligence" - un microcontrôleur EM78P156EP ? )

Bonjour

Antoine_b89:
je vais utiliser un shield qui me parait bien plus simple pour moi

Des petits trucs comme ça permettent de commander 2 moteurs, avant/arrière pour 3x rien.

Cordialement
jpbbricole

Le shield c'est une solution de facilité sur tu as une carte UNO ou Mega : tu enfiches et c'est presque tout.
Le mot "presque" est important car les cas d'incompatibilités avec ces cartes sont loin d'être rares.

Comme te le répète inlassablement JML : IL FAUT LIRE LE TUTO D'ESKIMON --> les majuscules sont bien là pour dire que je HURLE.

On ne relie JAMAIS une sortie de microcontrôleur directement à un moteur ni à un bobinage.
Une sortie de micro atmega ne peut pas délivrer plus de 20 mA et encore dans des conditions idéales, la réalité est bien plus faible.

A la coupure du courant dans un bobinage, un moteur c'est un bobinage, il se produit une tension dîte de Lentz qui peut faire quelques dizaines de volts comme plus de 1000V, si tu ne mets pas la diode de roue libre tu tues le transistor.

Si le moteur ne doit tourner que dans un seul sens un simple transistor suffit (avec sa diode de roue libre bien évidement).
Pour des faibles courant un transistor bipolaire convient pour des courant élevé un transistor Mosfet est préférable. J'ai bien dit transistor Mosfet car le mosfet est un transistor.

Si le moteur doit tourner dans les deux sens il faut le commander avec un pont en H.
Il existe des dizaines de modèles, pour en choisir un faut connaître le courant max du moteur.

Le courant max du moteur est celui de démarrage, pas celui quand il tourne. Le courant de démarrage est égal à celui moteur bloqué quand le courant n'est limité que pas la résistance du bobinage.

A partir d'ici il faut savoir si le moteur pourra se trouver en situation où il est bloqué, ou pas.
S'il peut être bloqué le transistor où le pont doit pouvoir supporter le courant de blocage en régime permanant.

Si le moteur ne sera jamais bloqué le courant max au démarage ne sera présent qu'un temps très bref car dès que le moteur va commencer à tourner le courant diminuera. Dans ce cas pour choisir un transistor ou un pont il faut regarder le courant max impulsionnel qui est plus élevé que le courant permanent.

Shield ou module ?
Avec un module il faudra câbler mais le prix sera bien inférieur.

Je vais commander un shield et lire le tuto en attendant. Merci