Pont en H, 12c motor driver

Bonjour, je suis actuellement en création d'un programme mais je rencontre un probléme.

Mon but est de, a l'aide d'un moteur et d'un pont en H (12c motor driver), piloter une plaque de compression qui devra compacter une canette et, changer de sens de rotation quant une tension de surintensité sera localiser.

J'aimerais savoir quelle commande utiliser sur arduino pour lancer le moteur dans le sens 1 et, une fois la tension de surintensité localiser changer le sens de rotation.

Merci pour votre future réponse :wink:

lien sur votre driver?

c'est celui ci?

la doc indique comment mettre la direction

Oui, c'est celui ci :slight_smile:

tout est dans la doc de référence

 void MotorDirectionSet(unsigned char Direction)
Description: Adjust the direction of the motors
Direction:can be Forward/Reverse rotating.

exemple tiré de cette page de doc

#include <Wire.h>

void setup(){
  Wire.begin(); // join i2c bus (address optional for master)
  delayMicroseconds(10000); //wait for motor driver to initialization
}
 
void loop(){
    MotorSpeedSetAB(100,20);
    delay(10);                  // this delay needed
    MotorDirectionSet(0b1010);  // 0b1010  Rotating in the positive direction
    delay(1000);
    MotorDirectionSet(0b0101);  // 0b0101  Rotating in the opposite direction
    delay(500);
}

Merci pour la rapidité de la réponse :slight_smile:

Malheureusement, j'ai lancer un des programmes pour faire changer le sens de rotation mais arduino m'indiquent 4 erreur.

Premiérement, j'ai choisit ce programme :

#include <Wire.h>
.......
.......
< Driver functions >
.......
.......

void setup() {
Wire.begin(); // join i2c bus (address optional for master)
delayMicroseconds(10000); //wait for motor driver to initialization
}

void loop() {

MotorSpeedSetAB(100,100);//when driving a stepper, the speed should be set to 100;
delay(10);
MotorDirectionSet(0b0001);
delay(4);
MotorDirectionSet(0b0011);
delay(4);
MotorDirectionSet(0b0010);
delay(4);
MotorDirectionSet(0b0110);
delay(4);
MotorDirectionSet(0b0100);
delay(4);
MotorDirectionSet(0b1100);
delay(4);
MotorDirectionSet(0b1000);
delay(4);
MotorDirectionSet(0b1001);
delay(4);
}

J'ai lancer le programme, mais les erreurs suivantes sont apparus :

sketch_dec08a:2: error: expected unqualified-id before '...' token
sketch_dec08a.ino: In function 'void loop()':
sketch_dec08a:15: error: 'MotorSpeedSetAB' was not declared in this scope
sketch_dec08a:17: error: 'MotorDirectionSet' was not declared in this scope

Un grand merci pour ton aide et la qualité de tes réponses :slight_smile:

le programme que tu m'a envoyé m'a également indiqué quelques erreurs :

sketch_dec08a.ino: In function 'void loop()':
sketch_dec08a:9: error: 'MotorSpeedSetAB' was not declared in this scope
sketch_dec08a:11: error: 'MotorDirectionSet' was not declared in this scope

Vous découvrez la programmation?

Les
....
....

Dans le code d'exemple ça veut dire insérez ici ce qu'il faut pour que tout marche - par exemple la librairie qui va déclarer la fonction MotorSpeedSetAB ou le code des fonctions

Allez jeter un œil sur tout le code ici

Merci :slight_smile:

Je dispose déja de la librairie Wire.

Je vais tout de suite essayer ce programme merci pour tout :slight_smile:

Je viens d‘essayer ce programme, un grand merci ce programme semble fonctionner(compilation reussit).

j‘essaierait de faire fonctionner le moteur quant je l‘aurais à disposition, je te tient au courant :)

par contre, y a pas moyen de baisser la taille du programme. J‘ai l‘habitude de faire des petits programme et travailler sur un programme de 170 lignes me perturbe.

Si il n‘y a pas moyen de changer la taille, je ferait avec, ce n‘est pas un probleme tres important.

Cependant, j‘ai chercher dans le doc de reference mais je n‘ai trouver aucun moyen pour que, à la place de changer le sens apres un temps, le sens change quant le moteur degage une certaine intensite qui sera mesurer a partir d‘un capteur d‘intensite.

Encore merci pour l’aide que tu me fournit !

Vous pouvez mieux structurer le code - déplacer toutes les fonctions dans un autre onglet de l'IDE et créer un .h référençant les fonctions en extern que vous importez dans votre code

Votre fichier de travail sera "plus petit" - le code des fonctions sera dans l'autre onglet

merci pour l‘astuce, je vais voire ce que je peux en faire :)

essayez avec ce que je mets en pièce jointe.

Je ne sais pas si ça fonctionne mais c'est un peu l'idée, j'ai juste copié collé les trucs à mettre dans le .h et dans le .cpp et dans la partie principale et rajouté les include qui vont bien

à voir si ça fait votre bonheur

testGroveI2C.zip (2.91 KB)

Un grand merci pour ce programme ^^

Par contre, je lance lequelle sur arduino des 3 recues.

Merci pour toute ton aide !

Salut, je viens de tester ce programme : Grove_I2C_Motor_Driver/I2CMotorDriverDemoCode.ino at master · Seeed-Studio/Grove_I2C_Motor_Driver · GitHub

Mon moteur est brancher sur M2+/M2- et Mon pont en h sur a2 de l'arduino.

Je lance le programme tout semble fonctionner mais rien ne se passe sur mon moteur.

Merci de ton aide ^^

Bonjour,

Arthur27:
... Mon pont en h sur a2 de l'arduino.

Qu'est ce que tu entends par là?

La carte est alimentée comment?

Merci pour la rapidité de tas reponse.

Mon arduino uno est connecte sur mon pc et le pont en H sur la broche A2 De l'arduino.

Le moteur est trés faible, je ne suis pas censer avoir besoin d'une alimentation pour le faire tourner.

Merci pour la rapidité de tas réponse :slight_smile:

Mon arduino uno est relier sur mon pc et mon I2C Motor driver sur la broche A2 de l'arnuino.

Mon moteur consomme trés peu, je n'ai pas besoin d'une alimentation pour le faire tourner.

La carte est connectée en I2c, je ne vois pas bien ce que vient faire A2 (ou alors quelque-chose m'échappe)
Même si le moteur consomme très peu, on n'a pas (encore) inventé le moteur qui fonctionne sans alimentation.

Tu as raison, de base j'étais sur la broche I2C mais sa ne fonctionnait pas, j'ai chercher des infos sur internet et j'ai vu A2 (j'ai dut mal comprendre). Bien entendu sa ne fonctionne toujours pas.

J'ai oublier de repasser sur la broche I2C aprés ^^

Tout me semble bien brancher, c'est bizarre que sa ne fonctionne pas car le probléme ne semble pas venir du programme.

Tu pourrais faire un croquis de ton câblage. Parce que là c'est quand même assez confus...