Bonjour, je suis dans un projet dans lequel je dois programmer un pont en H, malheuresement je n'arrive pas le faire marcher. Je fait ce projet pour ami alors j'ai des contraintes à respecter tout d'abord mon moteur nécessite 10A, j'ai donc un pont en H en conséquences. Mon ami un peu radin m'a donc tout fournie (essentiellement de la récup), j'ai une carte arduino uno, un luxmètre et une alimentation.
Maintenant le problème principal est donc le pont en H voici le lien de ce fameux pont en H : Cdiscount
Je me retrouve donc dans une impasse, si quelqu'un peut donc m'aider ça serait avec plaisir.
Bonjour, excusez-moi de la réponse très tardive, je suis étudiant et j'ai eu une semaine très chargée ce qui m'a empêché de me repencher sur le sujet cette semaine mais, pour ce qui s'agit du code voici ce que j'avais fait :
int lux = A0;
int motor1 = 8;
int motor2 = 9;
void setup() {
Serial.begin(9600);
pinMode(lux,INPUT);
pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);
}
void loop(){
int val = analogRead(lux);
if(val > 500){
digitalWrite(motor1,HIGH);
digitalWrite(motor2,LOW);
}if(val <200){
digitalWrite(motor1,LOW);
digitalWrite(motor2,HIGH);
}
}
Pour ce qu'il du câblage de la carte arduino au pont en H j'ai connecté le port 8 sur le port DIR 1 de la carte et j'ai connecté le port 9 au port PWM1 de la carte, j'ai également branché le port 5V de l'arduino sur le port 5V de la carte et le GND sur le GND de la carte. En ce qui concerne les branchements du moteur, je l'ai branché directement sur la carte avec l'alimentation et la terre branché sur les ports motor1 de la carte. Et pour finir l'alimentation 12V est branché sur les ports Power et GND du pont en H.
En espérant que toutes mes informations sont claires pour vous.
Je n'ai malheureusement pas cette carte pour tester, mais ton programme fonctionne très bien.
Pourtant partant du fait que les pin sont bien spécifiques, DIR1 et PWM1 et, que dans ton programme, tu inverses ces 2 signaux afin de changer de sens, ce n'est, peut-être pas tout à fait juste, j'ai un peu modifié ceci.
L'inversion de sens ne se fait que sir la pin DIR1 (8 HIGH ou LOW) et la commande de marche PWM1 (9 de 0-255).
Essaies ceci, pour l'exemple, si val < 200, le moteur tourne légèrement moins vite.
int lux = A0;
int portDir = 8;
int portPwm = 9;
void setup()
{
Serial.begin(9600);
//pinMode(lux, INPUT);
pinMode(portDir, OUTPUT);
pinMode(portPwm, OUTPUT);
}
void loop()
{
int val = analogRead(lux);
if (val > 500)
{
digitalWrite(portDir, HIGH);
analogWrite(portPwm, 255); // Possible de régler la vitesse de 0-255
}
if (val < 200)
{
digitalWrite(portDir, LOW);
analogWrite(portPwm, 150); // Possible de régler la vitesse de 0-255
}
}
Si ça ne fonctionne pas, essaies sur les positions du MOTOR 2 avec DIR2 et PWM2.
Bonjour ce pont en H fonctionne normalement trés bien je l'ai utilisé de nombreuses fois.
Cependant avant de mettre une condition de fonctionnement dans le programme il serait bon de le tester inconditionnellement dans les deux sens .
ou alors a la limite de coller un serial.print pour etre sur que le programme passe au bon endroit.
Il se passe quoi si la valeur est 350 ??? bah rien ....
sortir des valeurs nulles dans le setup pour avoir un arret au lancement serait aussi un plus.