Alimenter mon moteur 5V

Portrait de pablol1000

Bonjour, 

je suis étudiant et participe à un projet de porte de poulailler automatisé fonctionnant par énergie solaire. Je vous expose mon problème:

Je cherche à faire fonctionner un moteur 28BYJ-48 5VDC alimenté par une batterie de 12V rechargé elle même par un panneau solaire de 20V. Les 3 composants sont connectés séparément sur le contrôleur de charge. La sortie "accessoire" du contrôleur crache du 12V or il me faut du 5V pour alimenter mon moteur. J'ai donc bêtement essayé de connecter un régulateur de tension LM7805 pour abaisser mes 12V à 5V pour alimenter le moteur, mais mon moteur ne fonctionne pas et en plus il a surchauffé!

Quelle est la différence entre un régulateur de tension et une résistance? Dois-je utiliser l'un plutot que l'autre?

Je précise que quand je l'alimente via la sortie 5V de la carte Arduino, cela fonctionne. J'ai aussi bien vérifié que la tension en sortie de mon régulateur de tension était bien de 5V et c'est le cas.

Merci pour votre aide!

Portrait de Louis.D

Après vérification dans mes archives je me suis complètement loeurer sur la caractéristiques moteurs

Le moteur dont tu nous parle est un moteur pas à pas, il n'est pas fait pour fonctionner sur une alimentation continue. Il lui faut un driver et un micro controleur du type Arduino par exemple ou attiny85 mais plus délicat à mettre en place.L'énorme avantage d'un moteur pas à pas c'est que tu peux le faire tourner d'un nombre exacte de tour et pour se moteur de x/4096 ème de tour soit 5.17859 seconde d'angle.

Le nombre de pas par tour est de 512 x 8.

Tu peux voir la vidéo pour le faire fonctionner ici :

http://les-electroniciens.com/videos/arduino-ep18-comment-utiliser-un-mo....

Par contre j'ai pu constater que les libraries fournies avec Arduino sont complètement fausses et ne donnent pas le maximum de puissance au moteur ni la même étendue de vitesse surtout dans le maximum de tours par minute.

Si tu veux utiliser ce système je pourrais te fournir le programme qui est vraiment optimisé. Même la vidéo de ce site contient des erreurs mais permet de le faire tourner !

Sans library mais avec un Arduino Uno par exemple on peut le faire tourner jusqu'à 16 tours par minutes avec un couple correcte.

L'énorme avantage d'un moteur pas à pas c'est que tu peux le faire tourner d'un nombre exacte de tour et pour se moteur de x/4096 ème de tour.

Portrait de pablol1000

Ok, je suis navré j'aurai dû donner plus de détails...

J'ai déjà la carte Arduino avec le programme qui convient. De ce côté là tout fonctionne. Le problème vient de l'alimentation du moteur via le driver. Le driver doit être connecté au moteur (logique), à l'Arduino via les 4 pins qui gère les bobines du moteur et enfin à une alimentation 5VDC.Si je décide de prendre l'alimentation de l'Arduino pour alimenter le moteur (via le driver), le moteur tourne bien et obéit à mon programme. Cependant je souhaite l'alimenter indépendamment par une batterie qui crache du 12VDC, il faut donc que j'abaisse la tension en sortie de la batterie à 5VDC avant de la relier à mon driver non? J'ai essayé avec un LM7805 et cela ne fonctionne pas.

Portrait de Louis.D

Le driver ULN2003 peux fonctionner directement en 12 V (il suffit lire sur le driver lui même 5-12 V) par contre avec une alimentation externe il faut relier les masses le 0 Volt de l'Arduino (ou le négatif si tu préfères) et le 0 Volt (ou encore une fois le négatif si tu préfères) de ta source de 12 Volt !!!!

Portrait de pablol1000

Le driver peut fonctionner en 12V, même avec un moteur de 5V ? Parce que moi je n'ai qu'un moteur 28BYJ-48 5VDC...

Portrait de Louis.D

A non désolé mais le  driver accepte 12 Volt pardonne mon erreur, par contre as tu essayé de coupler les masses ? 

Portrait de Louis.D

Voici un code sans library stepper qui donne une vitesse jusqu'à 16 tours par minute et un couple bien plus grand ! Il est aussi possible de donner un nombre de tours avec decimales et en négatif pour inverser le sens de rotation.

La vitesse mini est 1 tour par seconde et maxi 16.

// Raccorder la pin 8 à IN1, la pin 9 à IN2, la pin 10 à IN3, la pin 11 à IN4

int IN1 = 8, IN2 = 9, IN3 = 10, IN4 = 11;
int Pas, Sens = 1, Const= 953;
long Tempo, xPas;
float Vitesse, NbrTour;
void setup() {
  pinMode(IN1, OUTPUT);pinMode(IN2, OUTPUT);pinMode(IN3, OUTPUT);pinMode(IN4, OUTPUT);
  digitalWrite(IN1, HIGH);digitalWrite(IN2, LOW);digitalWrite(IN3, LOW);digitalWrite(IN4, LOW);
}

void loop() { /* C'est ici dans le loop que tu peux donner tes instructions de vitesse, sens et tours avec ou sans décimal exemple -1.75 = 1 tour 3/4 en arrière */

  Vitesse = 16; //Tours/minute
  NbrTour = 1;
  ExecutePas(NbrTour);
// Ou  ExecutePas(1);
  delay(1000);
  Vitesse = 4.5;
  NbrTour = -1.75;
    ExecutePas(NbrTour)
; // Ou  ExecutePas(-1.75);
  delay(1000);
}

void ExecutePas(float Tours) {
  xPas = 4096 * Tours;
  Tempo = Const * 16 / (Vitesse);
 if (Tempo < Const) Tempo = Const;
  if (xPas < 0) {xPas = -xPas; Sens = -1;}
  else {Sens = 1;}
 
  while (xPas >= 0) {
    Pas += Sens; xPas -= 1;
    if (Pas > 8 ) Pas = 1;
    if (Pas < 1 ) Pas = 8;
    switch (Pas) {
      case 1: digitalWrite(IN4, LOW);  break;
      case 2: digitalWrite(IN2, HIGH); break;
      case 3: digitalWrite(IN1, LOW);  break;
      case 4: digitalWrite(IN3, HIGH); break;
      case 5: digitalWrite(IN2, LOW);  break;
      case 6: digitalWrite(IN4, HIGH); break;
      case 7: digitalWrite(IN3, LOW);  break;
      case 8: digitalWrite(IN1, HIGH); break;
    }
    delayMicroseconds(Tempo);
  }
}

Le code dans void ExecutePas(float Tours) { remplace la library qui est déplorablement fausse testez en demandant 2 tours exactes à la vitesse 10 tours par minutes et testez le couple en bloquant la sortie moteur à la main et faire de même avec mon code (il n'y a pas photo  !)

Tu peux trouver ICI une autre façon de codé mais sensiblement plus difficile à comprendre bien que très documentée.