[RESOLU] ]Moteur 28BYJ-48 qui chauffe à l'arrêt.

Bonjour à tous,

Je travaille sur un projet pour tourner automatiquement les pages d'une liseuse avec une télécommande hf.
J'utilise pour ça un moteur 28BYJ-48 et sa carte de pilotage à base de ULN2003 (J'avais auparavant utilisé un servo, mais c'était trop bruyant)

Tout fonctionne correctement si ce n'est que le 28BYJ-48 chauffe à l'arrêt (Probablement dans les limites prévues par le constructeur; Pour maintenir sa position ?) J'ai baissé la tension d'alimentation en deçà des préconisations constructeur, ça chauffe un peu moins, mais ça chauffe toujours hors je n'aime pas les trucs qui chauffent..
Quand je mets sous tension l'ensemble Uno/récepteur de telco/et la carte de pilotage, les leds de la carte de pilotage sont éteintes, le moteur n'est pas alimenté et il ne chauffe pas. Quand je donne l'ordre au moteur avec la télécommande de faire une rotation, il s’exécute, ensuite les led de la carte restent allumées, le moteur est alimenté et il chauffe. Question: est-il possible de manière logiciel de demander à la carte de pilotage de ne plus alimenter les moteurs ? (Je sais que je vais perdre la position).
Merci.

hello
et ton prg, c'est quoi ?

(entre balises) voir ICI

#include <YK04_Module.h>
#include <Stepper.h>

//pour un moteur de 200 pas par tour branché sur les broches 2, 3, 4, 5
Stepper moteur(300, 8, 10, 9, 11);
#define A_PIN  4
#define B_PIN  2
#define C_PIN  5
#define D_PIN  3

YK04_Module* module;

// the setup function runs once when you press reset or power the board
void setup() {
  Serial.begin(9600);
  module = new YK04_Module(A_PIN, B_PIN, C_PIN, D_PIN);
  moteur.setSpeed(100); //30 tours par minute
}

// the loop function runs over and over again forever
void loop() {
  const YK04_Module::Button button = module->multipleRead();
  String buttonTitle;
  if (button == YK04_Module::Button::A) {
    moteur.step(1000); // descend vers la vitre
delay(500); // maintien le contact du doigt sur la liseuse  a raccourcir si inutile 
moteur.step(-1000); // demonte pour sortir du champ de vision
    buttonTitle = "A";
 
  } else if (button == YK04_Module::Button::B) {
      moteur.step(1000);
delay(100);
moteur.step(-1000);

    buttonTitle = "B";
  } else if (button == YK04_Module::Button::C) {
      moteur.step(1000);
delay(100);
moteur.step(-1000);

    buttonTitle = "C";
  } else if (button == YK04_Module::Button::D) {
    buttonTitle = "D";
      moteur.step(1000);
delay(100);
moteur.step(-1000);

  } else {
    buttonTitle = "NOT";
  }
  Serial.println("YK04, Multiple Reading: " + buttonTitle);
  delay(500); // To delay the output of information.
}

hello
j'ai modifié ton programme ( vers la fin) regardes les commentaires

#include <YK04_Module.h>
#include <Stepper.h>

//pour un moteur de 200 pas par tour branché sur les broches 2, 3, 4, 5
Stepper moteur(300, 8, 10, 9, 11);
#define A_PIN  4
#define B_PIN  2
#define C_PIN  5
#define D_PIN  3

YK04_Module* module;

// the setup function runs once when you press reset or power the board
void setup() {
  Serial.begin(9600);
  module = new YK04_Module(A_PIN, B_PIN, C_PIN, D_PIN);
  moteur.setSpeed(100); //30 tours par minute
}

// the loop function runs over and over again forever
void loop() 
{
  const YK04_Module::Button button = module->multipleRead();
  String buttonTitle;
  if (button == YK04_Module::Button::A) 
  {
    moteur.step(1000); // descend vers la vitre
    delay(500); // maintien le contact du doigt sur la liseuse  a raccourcir si inutile
    moteur.step(-1000); // demonte pour sortir du champ de vision
    buttonTitle = "A";
  } 
  else if (button == YK04_Module::Button::B) 
        {
          moteur.step(1000);
          delay(100);
          moteur.step(-1000);
          buttonTitle = "B";
          } 
          else if (button == YK04_Module::Button::C) 
                {
                  moteur.step(1000);
                  delay(100);
                  moteur.step(-1000);
                  buttonTitle = "C";
                } 
                else if (button == YK04_Module::Button::D) 
                      {
                        buttonTitle = "D";
                        moteur.step(1000);
                        delay(100);
                        moteur.step(-1000);
                      } 
                      else 
                          {
                            buttonTitle = "NOT";
                            digitalWrite(A_PIN,LOW);//si le moteur chauffe toujours à l'arret
                            digitalWrite(B_PIN,LOW);//remplacer les LOW par des HIGH
                            digitalWrite(C_PIN,LOW);
                            digitalWrite(D_PIN,LOW);
                          }
                      Serial.println("YK04, Multiple Reading: " + buttonTitle);
                      delay(500); // To delay the output of information.
}

Bonjour dfgh et merci pour ton aide.

J'ai testé, c'est pareil, que l'on mette LOW ou HIGHT, les pin A et B sont toujours alimentés (moteur qui chauffe et leds allumées sur la carte du ULN2003).
Il n'y que quand je déconnecte manuellement les pins A et B que je n'ai plus d'alim (on s'en doute !)

Si tu as une autre idée je suis preneur !

édit: En relisant le code (je n'ai que de maigres compétences en la matière) il me semble qu'en faisant une action sur digitalWrite(A_PIN,LOW),etc on agit sur l'action de la télécommande et pas sur les pins 8/9/10/11 qui eux commandent réellement l'ULN2003 ?

oups désolé, avec l'habitude, je n'ai pas regardé assez sérieusement ton code

digitalWrite(8,LOW);//si le moteur chauffe toujours à l'arret
digitalWrite(9,LOW);//remplacer les LOW par des HIGH
digitalWrite(10,LOW);
digitalWrite(11,LOW);

Excellent !

Plus d'alimentation des enroulements à l'arrêt, plus de chauffe intempestive.

Merci bien pour ton aide.