# Demande d'aide driver PmodHB5

**URL:** <https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281>\
**Category:** Français\
**Created:** [July 24, 2023, 3:41pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281 "2023-07-24T15:41:10Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 24, 2023, 3:41pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/1 "2023-07-24T15:41:10Z")

</div>

Bonjour

Je suis débutant avec Arduino et j'essaie d'utiliser le driver PmodHB5 ([https://digilent.com/reference/\_media/pmod:pmod:pmodHB5\_rm.pdf](https://digilent.com/reference/_media/pmod:pmod:pmodHB5_rm.pdf)), avec le moteur Diligent 6V: [Motoréducteur Digilent 6 V avec encodeur pour robotique](https://www.lextronic.fr/moteur-reducteur-avec-encodeur-3235.html) et une carte arduino Mega. Pour l'alimentation du driver j'utilise une batterie 6v 600mA.

Je voulais juste faire tourner le moteur j'ai donc fait le programme suivant:

```arduino
const int dir = 2;
const int vitesse = 3;
const int Mtr1SA = 4;
const int Mtr1SB = 5;

void setup() {
  pinMode(vitesse, OUTPUT);
  pinMode(dir, OUTPUT);
  pinMode(Mtr1SA, INPUT_PULLUP);
  pinMode(Mtr1SB, INPUT_PULLUP);
  Serial.begin(115200);

  analogWrite(vitesse, 0);
  analogWrite(dir, 0);
}

void loop() {
  analogWrite(vitesse, 127);
  delay(1000);
  analogWrite(vitesse, 0);
  delay(1000);
}

```

Malheureusement mon moteur ne bouge pas ☹  
Si vous avez des idées pour m'aider je suis preneur

bonne journée

---

<div class="post-metadata">

**Author:** ![lesept](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/lesept/32/238959_2.png) [@lesept](https://forum.arduino.cc/u/lesept)\
**Post date:** [July 24, 2023, 3:58pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/2 "2023-07-24T15:58:49Z")

</div>

Tu es dans le cas de gauche ?  
 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/4/7/2/4724a8104a14c22dfeb73cc5f15ff25fdd874791.png)

VCC est fourni par la carte Mega (5V) : c'est l'alimentation du composant (pont en H).  
L'alim du moteur se fait par le connecteur J3 (le bornier) :

 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/4/8/8/488e65cb8e5ff14c7c09f6c5d5bb0b98750ffd7c.jpeg)

([source](https://www.lextronic.fr/actualites/news/pilotage-dun-moteur-cc-a-l-aide-d-un-module-pont-en-h-pmodhb5-via-une-carte-arduino-uno))

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [July 24, 2023, 4:01pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/3 "2023-07-24T16:01:31Z")

</div>

Bonjour fredrouv

> [@fredrouv](#):
>
> Malheureusement mon moteur ne bouge pas ☹

J'ai essayé ton programme, il y a bien le PWM sur la pin 3 et un LOW sur la pin 2, donc ton devrait tourner. Un problème de câblage?  
Fais une photo en gros plan de ton montage.

Cordialement  
jpbbricole

---

<div class="post-metadata">

**Author:** ![coloneldeguerlasse](https://avatars.discourse-cdn.com/v4/letter/c/5e9695/32.png) [@coloneldeguerlasse](https://forum.arduino.cc/u/coloneldeguerlasse)\
**Post date:** [July 24, 2023, 4:01pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/4 "2023-07-24T16:01:54Z")

</div>

> [@fredrouv](#):
>
> Je voulais juste faire tourner le moteur

Avez vous testé le moteur tout seul, branché directement sur la batterie (i.e. sans Arduino ni driver)

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 24, 2023, 4:15pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/5 "2023-07-24T16:15:52Z")

</div>

Je suis côté gauche sur la carte Arduino, et droite vers le moteur

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 24, 2023, 4:16pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/6 "2023-07-24T16:16:43Z")

</div>

J''ai branché le sur M+ et M- (noir et rouge du moteur) sur la carte arduino et il tourne

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 24, 2023, 4:30pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/7 "2023-07-24T16:30:13Z")

</div>

J'avais bien testé le moteur avec l'alim de la carte Arduino mais pas ma batterie qui est morte....

J'en profite pour poser une question sur la batterie , je dois acheter quoi comme type de batterie pour alimenter deux moteurs?

Je peux me servir de la batterie pour alimenter la carte Arduino?

---

<div class="post-metadata">

**Author:** ![coloneldeguerlasse](https://avatars.discourse-cdn.com/v4/letter/c/5e9695/32.png) [@coloneldeguerlasse](https://forum.arduino.cc/u/coloneldeguerlasse)\
**Post date:** [July 24, 2023, 5:22pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/8 "2023-07-24T17:22:54Z")

</div>

> [@fredrouv](#):
>
> Je peux me servir de la batterie pour alimenter la carte Arduino?

Oui ... si elle est chargée et vivante . (Vin). Testez d'abord avec deux alims distinctes -risque de parasitage autrement-

> [@fredrouv](#):
>
> J'en profite pour poser une question sur la batterie , je dois acheter quoi comme type de batterie pour alimenter deux moteurs?

A priori, votre UNO mange 50 mA; les moteurs mangent chacun 240mA; mettons 300 mA (d'après votre lien pdf)  
Ca vous fait, avec un peu de marge, 700mA  
Ensuite, si vous voulez que ça dure une heure, il vous faut ... 700mAh (ou 350 mAh pour une demiheure).  
Une recherche google avec comme mots clés "700mAH" "6v" m'a ramené -entre autres- [Batterie 6V NiMH 700mAh | Émetteur et récepteur | Batteries pour modélisme | Batteries | Batterie-Boutique.fr](https://batterie-boutique.fr/fr/batterie-6v-nimh-700mah/) qui est à 41 euros .... (batterie à base d'or?)  
A ce prix là, j'espère que ma façon de chercher des batteries est une hérésie..

Edité: votre batterie de **600mA** ne serait elle pas de **600mAH**? Si c'est le cas, et vus les prix, vous pourriez tenter de la ressusciter.

---

<div class="post-metadata">

**Author:** ![terwal](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/terwal/32/1098571_2.png) [@terwal](https://forum.arduino.cc/u/terwal)\
**Post date:** [July 25, 2023, 8:52am UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/9 "2023-07-25T08:52:23Z")

</div>

> [@fredrouv](#):
>
> J'en profite pour poser une question sur la batterie , je dois acheter quoi comme type de batterie pour alimenter deux moteurs?

Déjà, il faut regarder comment tu va la charger.  
Comme tu en avais une de 6V, je suppose que tu possède un chargeur compatible NIMH?  
Quels sont les prises que ton chargeur accepte ?

Ensuite quelle autonomie minimal exige tu ?

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 25, 2023, 9:29am UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/10 "2023-07-25T09:29:33Z")

</div>

pour le moment je n'ai pas d'exigence de durée. Mais au moins une heure...

Actuellement j'utilise des lego EV3 pour faire une équipe de jeune participe a la robocup. Je regardai un peu ailleurs pour voir ce qu'on pourrait faire.

Oui c'etait un chargeur compatible NIMH que j'avais dans un coin.

Je viens de trouver également une lithium-ion 12V 3000MAh, si je peux passer par la carte Arduino, je vais pouvoir commencer à regarder comment marche les encodeurs. Si je trouve combien de PPR font mes encodeurs...

Sur la doc il y a plusieurs possibilités en fonction du diamètre du moteur ([https://digilent.com/reference/\_media/motor\_gearbox/magnetic-encoders.pdf?\_gl=1\*1ogj9a2\*\_ga\*NzQyMzE5ODcxLjE2ODk4NTk3OTM.\*\_ga\_JSPEFFCPBT\*MTY5MDIxNzE3Ni44LjEuMTY5MDIxNzI2NC40MC4wLjA.](https://digilent.com/reference/_media/motor_gearbox/magnetic-encoders.pdf?_gl=1*1ogj9a2*_ga*NzQyMzE5ODcxLjE2ODk4NTk3OTM.*_ga_JSPEFFCPBT*MTY5MDIxNzE3Ni44LjEuMTY5MDIxNzI2NC40MC4wLjA.))

En tout cas merci pour voter aide

---

<div class="post-metadata">

**Author:** ![terwal](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/terwal/32/1098571_2.png) [@terwal](https://forum.arduino.cc/u/terwal)\
**Post date:** [July 25, 2023, 11:57am UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/11 "2023-07-25T11:57:51Z")

</div>

> [@fredrouv](#):
>
> Oui c'etait un chargeur compatible NIMH que j'avais dans un coin.

et du coup, tu ne donne pas les types de prises qu'il peut utiliser.  
A moins que cela ne te dérange pas de racheter un nouveau chargeur ?

> [@fredrouv](#):
>
> Je viens de trouver également une lithium-ion 12V 3000MAh

Tu peux aussi l'utiliser, mais je crois qu'il vaut mieux passer par un abaisseur de tension à découpage pour abaisser la tension plus proche de la tension d'entrée minimal demandé par le régulateur de ton Arduino.  
Car sinon passer de 12V à 5V, demande de perdre la différence en chaleur.  
D'autre seront te conseiller un abaisseur à recommander.

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 25, 2023, 1:08pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/12 "2023-07-25T13:08:54Z")

</div>

C'est une vieille batterie que j'avais récupérer donc s'il faut en acheter une pourquoi pas.

L'arduino prend jusqu'à 12v donc je pense que je vais faire quelques tests déjà comme ca. Sauf si cela peut endommager le matériel.

---

<div class="post-metadata">

**Author:** ![terwal](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/terwal/32/1098571_2.png) [@terwal](https://forum.arduino.cc/u/terwal)\
**Post date:** [July 25, 2023, 1:28pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/14 "2023-07-25T13:28:46Z")

</div>

> [@fredrouv](#):
>
> C'est une vieille batterie que j'avais récupérer donc s'il faut en acheter une pourquoi pas.

Tu parle de quelle batterie ?  
Pour l'instant si tu achète une nouvelle batterie, rien ne dis que tu aura de quoi la recharger.

> [@fredrouv](#):
>
> L'arduino prend jusqu'à 12v donc je pense que je vais faire quelques tests déjà comme ca. Sauf si cela peut endommager le matériel.

L'arduino Mega prend entre 6 et 20V, donc 12V ne pose aucun problème.

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 25, 2023, 1:35pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/15 "2023-07-25T13:35:06Z")

</div>

Je parlais de celle qui ne fonctionne plus.

Je vais me lancer comme ca pour faire des tests, je verrai plus tard.  
Merci

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 26, 2023, 1:54pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/16 "2023-07-26T13:54:17Z")

</div>

Décidément j'ai du mal. J'ai plusieurs problèmes:  
-- Sens de rotation voici le code:

```arduino
//#define ENCODER_DO_NOT_USE_INTERRUPTS
#include <Encoder.h>

const int dir = 4;
const int vitesse = 5;
//const int Mtr1SA = 4;
//const int Mtr1SB = 5;
Encoder myEnc(2, 3);

long oldPosition = -999;

void setup() {
  pinMode(vitesse, OUTPUT);
  pinMode(dir, OUTPUT);
  
  Serial.begin(9600);

  analogWrite(vitesse, 0);
  analogWrite(dir, HIGH);
}

void loop() {
  analogWrite(dir, HIGH);
  delay(1000);  
  Serial.println("on demare");
  analogWrite(vitesse, 100);
  delay(1000); 
  analogWrite(vitesse, 0);
  delay(1000); 
  Serial.println("on change de sens");
  analogWrite(dir, LOW);
  analogWrite(vitesse, 250);
  delay(1000); 
  analogWrite(vitesse, 0);
}

```

Le moteur tourne toujours dans le même sens... J'ai bien branché le cable J1-1 en 4 sur la carte arduino (je l'ai même changé au cas ou....)

-- Problème sue les encodeurs:  
voici le programme:

```arduino

#include <Encoder.h>

const int dir = 4;
const int vitesse = 5;
//const int Mtr1SA = 4;
//const int Mtr1SB = 5;
Encoder myEnc(2, 3);

long oldPosition = -999;

void setup() {
  pinMode(vitesse, OUTPUT);
  pinMode(dir, OUTPUT);
  
  Serial.begin(9600);
  Serial.println("Basic encoder Test:");
  Serial.println(HIGH);
  Serial.println(LOW);

  analogWrite(vitesse, 0);
  analogWrite(dir, HIGH);
}

void loop() {
  long newPosition = myEnc.read();
  Serial.println(newPosition);
   
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    Serial.println(newPosition);
    Serial.println(dir);
  }
  
  if ( newPosition > -200 ) {
    analogWrite(vitesse, 127);
  }
  else {
    analogWrite(vitesse, 0);
  }
  
}

```

-- J'ai du mal a savoir combien de "tick" "compteur de l'encodeur" pour un tour d'axe. Si j'ai bien compris d'après la doc il y en a 6 par tour moteur avec une réduction de 52.734 cela ferai 6\*52.734=316 . Il semble pourtant que cela ne fait qu'un demi tour d'axe ....

-- Les pins de l'encodeur doivent bien être branché en 2 et 3? si je les branche en 4 et 5 (en modifiant dans le programme bien évidemment) je n'ai pas le même résultat

-- Je voulais contrôler le nombre de tick: arréter le moteur au bous de 200 tick par exemple mais il s'arrête au bous de 358. Est ce du à l'inertie? au temps de traitement? Peut on faire mieux?

Décidément je ne suis pas très doué....

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [July 26, 2023, 2:51pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/17 "2023-07-26T14:51:45Z")

</div>

Bonjour fredrouv

> [@fredrouv](#):
>
> J'ai du mal a savoir combien de "tick" "compteur de l'encodeur"

~~Pour les plus courants, genre:  
  ![image](https://europe1.discourse-cdn.com/arduino/original/4X/0/0/9/009dfbf5a340cabf0187c5cedab096c50c393d25.jpeg)  
C'est 11 ticks.  
Si ce n'est pas ce modèle, donnes un lien sur le tien.~~

> [@fredrouv](#):
>
> -- Les pins de l'encodeur doivent bien être branché en 2 et 3?

C'est mieux ces 2 pin sur un UNO on l'interruption.  
 ![image](https://europe1.discourse-cdn.com/arduino/original/4X/7/0/6/7066d1ab0dfba3849b42e516f62ba9a643277ee7.png)

> [@fredrouv](#):
>
> si je les branche en 4 et 5 (en modifiant dans le programme bien évidemment) je n'ai pas le même résultat

Oui, tu auras le même résultat.

> [@fredrouv](#):
>
> Je voulais contrôler le nombre de tick: arréter le moteur au bous de 200 tick par exemple mais il s'arrête au bous de 358. Est ce du à l'inertie? au temps de traitement? Peut on faire mieux?

C'est un résultat difficilement à obtenir, je n'y suis pas arrivé. Une option est d'alimenter le moteur, brièvement, en sens inverse afin de le "planter" et, il faut encore anticiper ce coups de frein.

Cordialement  
jpbbricole

---

<div class="post-metadata">

**Author:** ![fdufnews](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/fdufnews/32/238836_2.png) [@fdufnews](https://forum.arduino.cc/u/fdufnews)\
**Post date:** [July 26, 2023, 3:28pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/18 "2023-07-26T15:28:22Z")

</div>

> [@fredrouv](#):
>
> Si j'ai bien compris d'après la doc il y en a 6 par tour moteur

il y a effectivement 6 pôles d'après la doc, mais tu as 2 capteurs donc tu dois compter le double d'impulsions.

> [@jpbbricole](#):
>
> C'est un résultat difficilement à obtenir, je n'y suis pas arrivé. Une option est d'alimenter le moteur, brièvement, en sens inverse afin de le "planter" et, il faut encore anticiper ce coups de frein.

Il serait plus judicieux de lire la valeur des ticks et de faire ralentir le moteur à temps pour s'arrêter doucement.

---

<div class="post-metadata">

**Author:** ![jpbbricole](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jpbbricole/32/606025_2.png) [@jpbbricole](https://forum.arduino.cc/u/jpbbricole)\
**Post date:** [July 26, 2023, 5:29pm UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/19 "2023-07-26T17:29:09Z")

</div>

Bonsoir fredrouv

> [@fredrouv](#):
>
> Le moteur tourne toujours dans le même sens...

Remplaces tout tes commandes de direction `analogWrite(dir,` par `digitalWrite(dir` et l'inversion se fera.

A+  
Cordialement  
jpbbricole

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 27, 2023, 8:55am UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/20 "2023-07-27T08:55:54Z")

</div>

Bonjour,

> [@](#):
>
> Il serait plus judicieux de lire la valeur des ticks et de faire ralentir le moteur à temps pour s'arrêter doucement.

C'est mieux

```arduino
analogWrite(vitesse, max(0,min(abs(newPosition+200),127)));

```

avec ce code, j'arrive à -269, il faudra faire avec et voir pour anticiper ce décalage

> [@jpbbricole](#):
>
> Remplaces tout tes commandes de direction `analogWrite(dir,` par `digitalWrite(dir` et l'inversion se fera.

Merci ca marche, par contre quelle est la différence entre ces deux commandes?  
Si je modifie analogWrite par digitalWrite dans le code pour ralentir je suis à -401 au lieu de 269...

---

<div class="post-metadata">

**Author:** ![fredrouv](https://avatars.discourse-cdn.com/v4/letter/f/e19b73/32.png) [@fredrouv](https://forum.arduino.cc/u/fredrouv)\
**Post date:** [July 27, 2023, 9:09am UTC](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281/21 "2023-07-27T09:09:19Z")

</div>

Bonjour

> [@fdufnews](#):
>
> il y a effectivement 6 pôles d'après la doc, mais tu as 2 capteurs donc tu dois compter le double d'impulsions.

avec 632 s=cela semble plus juste, merci

[Next page](https://forum.arduino.cc/t/demande-daide-driver-pmodhb5/1151281.md?page=2)
