Projet 8 Commande de Moteur et Contrôle de Vitesse
Description

Il existe de nombreuses façons de commander un moteur. Notre voiture robot utilise la solution la plus courante–L298P–qui est un excellent circuit intégré de commande de moteur haute puissance produit par STMicroelectronics. Il peut commander directement des moteurs CC, des moteurs pas à pas biphasés et quadriphasés. Le courant de commande peut atteindre 2A, et la borne de sortie du moteur utilise huit diodes Schottky haute vitesse comme protection.
Nous avons conçu un shield basé sur le circuit du L298p. La conception empilée réduit la difficulté technique d’utilisation et de commande du moteur.
Spécifications
Schéma de Circuit pour la Carte L298P

Tension d’entrée de la partie logique : CC 5V
Tension d’entrée de la partie commande : CC 7-12V
Courant de fonctionnement de la partie logique : <36mA
Courant de fonctionnement de la partie commande : <2A
Dissipation de puissance maximale : 25W (T=75℃)
Température de fonctionnement : -25℃~+130℃
Niveau d’entrée du signal de commande : niveau haut 2.3V<Vin<5V, niveau bas\0.3V<Vin<1.5V

Faire Bouger le Robot
D’après le schéma de circuit ci-dessus, la broche de direction du moteur A est D12, et la broche de vitesse est D3 ; D13 est la broche de direction du moteur B, D11 est la broche de vitesse.
Nous savons comment contrôler les ports numériques selon le tableau suivant.
PWM décide que 2 moteurs s’activent pour faire fonctionner la voiture robot. La valeur PWM est dans la plage 0-255. Plus le nombre est grand, plus le moteur tourne vite.
Robot Tank |
Moteur (A) |
Moteur (B) |
|---|---|---|
Avant |
Tourner dans le sens des aiguilles d’une montre |
Tourner dans le sens des aiguilles d’une montre |
Arrière |
Tourner dans le sens inverse des aiguilles d’une montre |
Tourner dans le sens inverse des aiguilles d’une montre |
Tourner à gauche |
Tourner dans le sens inverse des aiguilles d’une montre |
Tourner dans le sens des aiguilles d’une montre |
Tourner à droite |
Tourner dans le sens des aiguilles d’une montre |
Tourner dans le sens inverse des aiguilles d’une montre |
Arrêt |
Arrêt |
Arrêt |
Composants

Schéma de Connexion

Remarque : le bloc terminal 4 broches est marqué avec la sérigraphie 1234. Le fil rouge du moteur arrière droit est connecté à la borne 1, le fil noir est relié à la borne 2. Le fil rouge du moteur avant gauche est attaché à la borne 3, le fil noir est relié au port 4.
Code de Test
/*
keyestudio Mini Tank Robot V2.1
leçon 8.1
commande de moteur
http://www.keyestudio.com
*/
#define ML_Ctrl 13 //définir la broche de contrôle de direction du moteur gauche
#define ML_PWM 11 //définir la broche de contrôle PWM du moteur gauche
#define MR_Ctrl 12 //définir la broche de contrôle de direction du moteur droit
#define MR_PWM 3 //définir la broche de contrôle PWM du moteur droit
void setup()
{
pinMode(ML_Ctrl, OUTPUT);//définir la broche de contrôle de direction du moteur gauche en sortie
pinMode(ML_PWM, OUTPUT);//définir la broche de contrôle PWM du moteur gauche en sortie
pinMode(MR_Ctrl, OUTPUT);//définir la broche de contrôle de direction du moteur droit en sortie
pinMode(MR_PWM, OUTPUT);//définir la broche de contrôle PWM du moteur droit en sortie
}
void loop()
{
digitalWrite(ML_Ctrl,LOW);//définir la broche de contrôle de direction du moteur gauche à LOW
analogWrite(ML_PWM,200);//définir la vitesse de contrôle PWM du moteur gauche à 200
digitalWrite(MR_Ctrl,LOW);//définir la broche de contrôle de direction du moteur droit à LOW
analogWrite(MR_PWM,200);//définir la vitesse de contrôle PWM du moteur droit à 200
//avant
delay(2000);//délai de 2s
digitalWrite(ML_Ctrl,HIGH);//définir la broche de contrôle de direction du moteur gauche à HIGH
analogWrite(ML_PWM,200);//définir la vitesse de contrôle PWM du moteur gauche à 200
digitalWrite(MR_Ctrl,HIGH);//définir la broche de contrôle de direction du moteur droit à HIGH
analogWrite(MR_PWM,200);//définir la vitesse de contrôle PWM du moteur droit à 200
//arrière
delay(2000);//délai de 2s
digitalWrite(ML_Ctrl,HIGH);//définir la broche de contrôle de direction du moteur gauche à HIGH
analogWrite(ML_PWM,200);//définir la vitesse de contrôle PWM du moteur gauche à 200
digitalWrite(MR_Ctrl,LOW);//définir la broche de contrôle de direction du moteur droit à LOW
analogWrite(MR_PWM,200);//définir la vitesse de contrôle PWM du moteur droit à 200
//gauche
delay(2000);//délai de 2s
digitalWrite(ML_Ctrl,LOW);//définir la broche de contrôle de direction du moteur gauche à LOW
analogWrite(ML_PWM,200);//définir la vitesse de contrôle PWM du moteur gauche à 200
digitalWrite(MR_Ctrl,HIGH);//définir la broche de contrôle de direction du moteur droit à HIGH
analogWrite(MR_PWM,200);//définir la vitesse de contrôle PWM du moteur droit à 200
//droite
delay(2000);//délai de 2s
analogWrite(ML_PWM,0);//définir la vitesse de contrôle PWM du moteur gauche à 0
analogWrite(MR_PWM,0);//définir la vitesse de contrôle PWM du moteur droit à 0
//arrêt
delay(2000);//délai de 2s
}//*****************************************
Résultat du Test
Connectez selon le schéma de connexion, téléchargez le code et mettez sous tension, la voiture intelligente avance et recule pendant 2s, tourne à gauche et à droite pendant 2s, s’arrête pendant 2s et alterne.
Explication du Code
digitalWrite(ML_Ctrl,LOW) : le sens de rotation du moteur est décidé par le niveau haut/bas et les broches qui décident le sens de rotation sont des broches numériques.
analogWrite(ML_PWM,200) : la vitesse du moteur est régulée par PWM, et les broches qui décident la vitesse du moteur doivent être des broches PWM.
Pratique d’Extension
Ajustez la vitesse que PWM contrôle le moteur, et connectez de la même manière.

/*
keyestudio Mini Tank Robot V2.1
leçon 8.2
commande de moteur pwm
http://www.keyestudio.com
*/
#define ML_Ctrl 13 //définir la broche de contrôle de direction du moteur gauche
#define ML_PWM 11 //définir la broche de contrôle PWM du moteur gauche
#define MR_Ctrl 12 //définir la broche de contrôle de direction du moteur droit
#define MR_PWM 3 //définir la broche de contrôle PWM du moteur droit
void setup()
{
pinMode(ML_Ctrl, OUTPUT);//définir la broche de contrôle de direction du moteur gauche en OUTPUT
pinMode(ML_PWM, OUTPUT);//définir la broche de contrôle PWM du moteur gauche en OUTPUT
pinMode(MR_Ctrl, OUTPUT);//définir la broche de contrôle de direction du moteur droit en OUTPUT
pinMode(MR_PWM, OUTPUT);//définir la broche de contrôle PWM du moteur droit en OUTPUT
}
void loop()
{
digitalWrite(ML_Ctrl,LOW);//Définir la broche de contrôle de direction du moteur gauche à LOW
analogWrite(ML_PWM,100);//Définir la vitesse de contrôle PWM du moteur gauche à 100
digitalWrite(MR_Ctrl,LOW);//Définir la broche de contrôle de direction du moteur droit à LOW
analogWrite(MR_PWM,100);//Définir la vitesse de contrôle PWM du moteur droit à 100
//avant
delay(2000);//définir 2s
digitalWrite(ML_Ctrl,HIGH);//Définir la broche de contrôle de direction du moteur gauche au niveau HIGH
analogWrite(ML_PWM,250);//Définir la vitesse de contrôle PWM du moteur gauche à 100
digitalWrite(MR_Ctrl,HIGH);//Définir la broche de contrôle de direction du moteur droit au niveau HIGH
analogWrite(MR_PWM,250);//Définir la vitesse de contrôle PWM du moteur droit à 100
//arrière
delay(2000);//définir 2s
digitalWrite(ML_Ctrl,HIGH);//Définir la broche de contrôle de direction du moteur gauche au niveau HIGH
analogWrite(ML_PWM,250);//Définir la vitesse de contrôle PWM du moteur gauche à 100
digitalWrite(MR_Ctrl,LOW);//Définir la broche de contrôle de direction du moteur droit au niveau LOW
analogWrite(MR_PWM,250);//Définir la vitesse de contrôle PWM du moteur droit à 100
//gauche
delay(2000);//définir 2s
digitalWrite(ML_Ctrl,LOW);//définir la broche de contrôle de direction du moteur gauche à LOW
analogWrite(ML_PWM,250);//définir la vitesse de contrôle PWM du moteur gauche à 200
digitalWrite(MR_Ctrl,HIGH);//définir la broche de contrôle de direction du moteur droit à HIGH
analogWrite(MR_PWM,250);//définir la vitesse de contrôle PWM du moteur droit à 100
//droite
delay(2000);//définir 2s
analogWrite(ML_PWM,0);//définir la vitesse de contrôle PWM du moteur gauche à 0
analogWrite(MR_PWM,0);//définir la vitesse de contrôle PWM du moteur droit à 0
//arrêt
delay(2000);//définir 2s
}//******************************************************************
Téléchargement du code réussi, les moteurs tournent plus vite.