Commander une Del avec Ardublock Déscriptif de la carte Arduino Installer Ardublock Faire de la musique avec Arduino Commander un Servomoteur Contrôler un robot avec le LM293 et un joystick utiliser un Joystick Contrôler un moteur avec le LM293 Photoresistance et hystérésis interrupteur et rebond Mesurer un champ électrique Communiquer en 433MHz Commander une diode en fonction de la lumière avec Arduino Oscilloscope avec Processing commander l’Arduino par IR Communiquer sans fil avec Arduino Fabriquer une PlacTest pour Arduino
Accueil du site | Accessibilité | Rechercher | Menu | Contenu | Plan du site | | Contact

°°TechNoLand°°

°°TechNoLand°°

 
Voir en ligne

Contrôler un moteur avec le LM293

13 avril 2011 - Dernier ajout 15 novembre 2015
par chamayou

Un moteur se met en mouvement quand il reçoit de l’électricité.

- La carte Arduino ne délivre pas assez de courant pour alimenter un moteur,
- Pour changer le sens de rotation, il faut inverser la polarité.

On utilisera donc un composant électronique qui règle ces deux problèmes : Le LM293

 Solution 1 : le Rotorshield de SnootLab

Librairie Snootor à télécharger

Explications de fonctionnement sur le forum SnootLab

//Librairies necessaires
#include <Wire.h>
#include <snootor.h>

// Declaration
SnootorDC Motor_1;
SnootorDC Motor_2;
int i;

void setup(){
// Initialization
Serial.begin(115200);
Wire.begin();
 Motor_1.init(1);
 Motor_2.init(2);
 Serial.println("init ok");
}

void loop(){
 Serial.print("Round ");
 Serial.println(i++);
 SC.dump();

// run forward at maximal speed
 Motor_1.setSpeed(2);
 Motor_2.setSpeed(255);
 Motor_1.run(FORWARD);
 Motor_2.run(FORWARD);
 delay(2000);

// stop for 2 seconds
 Motor_1.run(RELEASE);
 Motor_2.run(RELEASE);
 delay(2000);

// run backward at maximal speed
 Motor_1.setSpeed(2);
 Motor_2.setSpeed(255);
 Motor_1.run(BACKWARD);
 Motor_2.run(BACKWARD);
 delay(2000);

 // stop for 2 seconds
 Motor_1.run(RELEASE);
 Motor_2.run(RELEASE);
 delay(2000);
}

 Solution 2 : LM293 sur une plaque de test

source : zem.fr

Commande du LM293 :

On testera ici avec un seul moteur : accélération dans un sens puis accélération dans l’autre :

On utilise analogWrite(pin,valeur) pour envoyer le signal pwm. la valeur est comprise entre 0 et 255.

int motor_enablePin = 10; //pwm
int motor_in1Pin = 8;
int motor_in2Pin = 7;

void setup()
{
  //on initialise les pins du moteur
 pinMode(motor_in1Pin, OUTPUT);
 pinMode(motor_in2Pin, OUTPUT);
 pinMode(motor_enablePin, OUTPUT);
}

void loop()
{
// accélération dans un sens
for (int i=0 ; i<256 ; i++)
// on "écrit" la vitesse (i) sur la patte 10 de l’Arduino
{
analogWrite(motor_enablePin,i);
digitalWrite(motor_in1Pin,HIGH);
digitalWrite(motor_in2Pin,LOW);
delay(100) ;
// le délai détermine la pente de l’accélération (en ms)
}

delay(1000) ;

// accélération dans l'autre sens
for (int i=0 ; i<256 ; i++)
// on "écrit" la vitesse (i) sur la patte 10 de l’Arduino
{
analogWrite(motor_enablePin,i);
digitalWrite(motor_in1Pin,LOW);
digitalWrite(motor_in2Pin,HIGH);
delay(100) ;
}

}

 Commander la sortie PWM par un potentiomètre :

Exemple d’un potentiomètre sur l’entrée 5 et un moteur sur la 9.

int motor = 9;
int potenciometer = 5;

void setup(){
 pinMode(9,OUTPUT);
 pinMode(5,INPUT);
}

void loop(){
 int value = analogRead(potenciometer);//lecture valeur (0 à 1023)
 int motor_speed = value/4;//PWM (0 à 255)
 
 analogWrite(motor,motor_speed);
 
}

Ressources : Descriptifs de composants électroniques :

- la résistance

- Le code de couleurs des résistances

- la diode

- Le pont en H

- Les fonctions logiques

- Les symboles électroniques

- Contrôler un servomoteur


calle

calle