Go Down

Topic: Faire varier la vitesse de moteur  (Read 1 time) previous topic - next topic

Myp

Bonjour je voudrais savoir comment je peut peut faire varier la vitesse de mes moteur sachant que je suis brancher en alimentation continu, on ma parler de pmw mais je sait pas c'est es que ca s'integre au programme ?

voici mon programme je n'ai que les photo désoler

https://drive.google.com/open?id=10NjeaTL0Pc5tBzebFh4PLD7JH6mCkoIt

https://drive.google.com/open?id=1Z1fmxL9H1JWzG1Wc6UPABrnXiuX32biY

j'ai une carte arduino mega
un carte de puissance

et une plateforem arduino

voila a quoi ressemble le robot
https://drive.google.com/open?id=1XsGj-_fI5Jhn6wnKkeH12ZSCgSYvSOFt

lesept

Tu as déjà un fil de discussion dans la partie anglaise du forum...

Le PWM, comme le reste, s'insère dans ton code. Cherches des tutos sur Internet il y en a plein !
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Myp

merci pour ton aide ...
jai vu dans les video il utilise un composant pour changer la vitesse mais moi c'est une voiture je doit integrer dans les programme la vitesse des moteur

esque tu peut au moins me guider meme par une video ?

Christian_R

Le PWM consiste à hacher le courant sous forme d'impulsions de largeur variable.
Cherche Pulse Width Modulation
Christian

Myp

oui j'ai bien compris sa mais comment je peut le mettre dans mon programme parceque mes roue tourne tous a la meme vitesse

jfs

La balle est dans ton camp, à toi de coder selon les conseils qui t'ont été donné.

Si tu n'as pas le niveau je ne peux que te conseiller de suivre des tutos pour débuter et de revenir une fois ceux ci intégrés et compris.
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

Myp

dacord jai une question esue je peut faire un pwm sans le modile ln298n ? sachant que j'ai une ma carte de puissance en haut ?

68tjs

Tuto d'Eskimon à lire et étudier.

Leptro

bonjour,
ce code se compile sans erreur?

comment se comporte le véhicule après télé versement?


Myp

BONJOUR j'ai refait le programme et j'ai ajouter  un pwm mais sa marche par tout le moteur tourne a la meme vitesse

alors ce programme fai marcher la 4 moteur a plaine vitesse

/*
:Author: Abdullah
:Date: 06/04/2018
:Revision: v1.1
:License: Public Domain
*/

// 1. les constante des pin moteur
const int motorAVD = 32; //Moteur Avant Droit
const int motorARRD = 34; // Moteur Arriere Droit
const int motorAVG = 36; // Moteur Avant gauche
const int motorARRG = 38; // Moteur Arriere Gauche

const int motorAVD1 = 33;
const int motorARRD1 = 35;
const int motorAVG1 = 37;
const int motorARRG1 = 39;



void setup() {
   
    Serial.begin(9600);
   
   
    // indique les rôle des pin moteur
    pinMode(motorAVD,OUTPUT);
    pinMode(motorARRD,OUTPUT);
    pinMode(motorAVG,OUTPUT);
    pinMode(motorARRG,OUTPUT);


   
    pinMode(motorAVD1,OUTPUT);
    pinMode(motorARRD1,OUTPUT);
    pinMode(motorAVG1,OUTPUT);
    pinMode(motorARRG1,OUTPUT);
}



void loop() {
   // Avancer
    digitalWrite(motorAVD,HIGH);
    digitalWrite(motorARRD,HIGH);
    digitalWrite(motorAVG,HIGH);
    digitalWrite(motorARRG,HIGH);

 delay(1000);
//RECULER

    digitalWrite(motorAVD,LOW);
    digitalWrite(motorARRD,LOW);
    digitalWrite(motorAVG,LOW);
    digitalWrite(motorARRG,LOW);
   

    digitalWrite(motorAVD1,HIGH);
    digitalWrite(motorARRD1,HIGH);
    digitalWrite(motorAVG1,HIGH);
    digitalWrite(motorARRG1,HIGH);
 delay(1000);

 // Tourner a Droite

    digitalWrite(motorAVD,LOW);
    digitalWrite(motorARRD,HIGH);
    digitalWrite(motorAVG,LOW);
    digitalWrite(motorARRG,LOW);
   
    digitalWrite(motorAVD1,LOW);
    digitalWrite(motorARRD1,LOW);
    digitalWrite(motorAVG1,HIGH);
    digitalWrite(motorARRG1,HIGH);
   
   // Tourner a Gauche
    digitalWrite(motorAVD,LOW);
    digitalWrite(motorARRD,HIGH);
    digitalWrite(motorAVG,LOW);
    digitalWrite(motorARRG,LOW);
   
    digitalWrite(motorAVD1,HIGH);
    digitalWrite(motorARRD1,HIGH);
    digitalWrite(motorAVG1,LOW);
    digitalWrite(motorARRG1,HIGH);
 

 
 
 
 
   
   
   exit(0);
   
}

   

lesept

C'est normal, tu ne fais pas de PWM. Relis le tuto que je t'ai indiqué, tu y trouveras ce code (à adapter à ton besoin):

Code: [Select]
Voici donc un programme qui fait varier la vitesse du moteur avec les valeurs 0%, 25%, 50%, 75% et 100%
pendant 3 secondes chacune :


int pinMoteur=5; //pin de commande relié au transistor

void setup() {
  pinMode(pinMoteur,OUTPUT); // pin de commande en mode sortie
}

void loop() {
  for (int pourcentage=0;pourcentage<=100;pourcentage+=25){//boucle de variation en %
    int valeur=map(pourcentage,0,100,0,255); //conversion en valeur
    analogWrite(pinMoteur,valeur); // pin de commande en mode impulsion
    delay (3000); // attente de 3 secondes
  }
}


Dans la seconde page du tuto, il propose une fonction de gestion du moteur :

Code: [Select]
Voici un programme qui va gérer chaque moteur grâce à une fonction que l'on va appeller actionMoteur.
Cette fonction va prendre  3 arguments :

- Le moteur concerné : moteur 1 ou 2.
- Le sens de rotation : 1 ou -1 (sens contraire). Tout autre nombre entier stoppera le moteur.
- Le pourcentage de puissance : entre 0% et 100%.

Cette fonction actionMoteur va ensuite analyser ces arguments pour envoyer les bonnes informations aux pins
rattachés au L293D.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Myp

je me suis tromper de programe voici le nouveau

// variabes

const int IN1 = 32;
const int IN2 = 34;
const int IN3 = 36;
const int IN4 = 38;
const int IN5 = 33;
const int IN6 = 35;
const int IN7 = 37;
const int IN8 = 39;
const int ENA = 2;
const int ENB = 3;
const int ENC = 4;
const int END = 5;

void setup() {

  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
  pinMode (IN5, OUTPUT);
  pinMode (IN6, OUTPUT);
  pinMode (IN7, OUTPUT);
  pinMode (IN8, OUTPUT);
  pinMode (ENA, OUTPUT);
  pinMode (ENB, OUTPUT);
  pinMode (ENC, OUTPUT);
  pinMode (END, OUTPUT);
 
  // put your setup code here, to run once:

}

void loop() {

 

  analogWrite(ENA, 100);
  analogWrite(ENB, 255);
  analogWrite(ENC, 255);
  analogWrite(END, 255);

  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, HIGH);
 
  // put your main code here, to run repeatedly:

}

Go Up