Problème alimentation carte arduino UNO

Bonjour, j’ai besoin d’aide car je réalise une porte automatique pour un poulailler. Cela fonctionne bien quand la carte arduino UNO est connecté au port USB de l’ordinateur. Mais, quand je connecte la carte a une alimentation externe, le moteur ne réagit pas correctement.. j’utilise une alimentation de 12V (j’ai essayé aussi avec du 5V). Avez vous une solution ? Merci

Quelle(s) alimentation(s)?
Quel est le schema de votre materiel ?
(si vous alimentez un gros moteur avec une minipile, et en plus, un arduino, ils vont mourir de faim)

Bonjour tim1013

Qu'entends tu par "pas correctement"?
C'est quel type de moteur et comment est il commandé depuis l'Arduino.
Où est connectée l'alimentation du moteur?

A+
Cordialement
jpbbricole

Par pas correctement, je sous entend que le moteur ne respecte pas le code. Normalement, le moteur doit s’ouvrir et se fermer à une certaine heure, mais il le fait à plusieurs reprises, n’importe quand. Rien de logique.
C’est un servomoteur (DS3240 MG) qui a une plage de fonctionnement de 4,8 à 6,8 V. Il est relié à une carte arduino. UNO. Quand je teste le programme avec l’ordinateur, le moteur tourne et revient à sa position initiale. Mais quand je débranche l’usb et connecte à une alimentation externe de 12V, plus rien ne fonctionne comme cela devrait être.

Mais quelle est l'alim externe.

J’ai utilisé la prise jack de la carte pour alimenter. Les fils du moteur sont reliés à la GND (fil rouge), Vin(brun) et l’orange connecté sur un port

Donc le moteur tourne normalement mais pas quand tu veux?
Si tu pouvais donner le schéma de ton montage et le code ça serait un plus pour essayer de t'aider, je pense :slight_smile:

C’est une prise 12V trouvé à partir d’un boîtier.

Malheureusement ce genre d'information n'est pas pertinente.
Déjà parce que chacun interprète ce qu'il veut par boitier, pour moi c'est une alimentation de PC par exemple :slight_smile: .

C’est exactement ça, il tourne mais ne respecte pas les heures que je lui indique. Voici mon code :
#include <Servo.h>
Servo leServo1;
unsigned int heurereinitialisation;
unsigned int fermeturesoir;
unsigned int ouverturematin;
unsigned int t;
unsigned int t1;
unsigned int t2;
int pinServo1= 9;
void setup() {

fermeturesoir=22; //fermeturesoir correspond à l'heure ou la porte se fermera(heure en heure)
ouverturematin=6; //ouverturematin correspond à l'heure ou la porte se fermera(heure en heure)
heurereinitialisation=22; //heurereinitialisation correpond à l'heure à laquelle vous téléverser le programme sur la carte, Vous devez changez ce paramètre à chaque fois que téléverser le programme(heure en heure)

leServo1.attach(pinServo1);
ouverturematin=24-heurereinitialisation+ouverturematin;
fermeturesoir=fermeturesoir-heurereinitialisation;
fermeturesoir=fermeturesoir+1;
ouverturematin=ouverturematin+1;

}

void loop(){
t2=0;
while (t2 < 24){
t2=t2+1;
t1=0;
if (t2==ouverturematin){
leServo1.write(0);
delay(2000); }
if (t2==fermeturesoir) {
leServo1.write(220);
delay(2000); }
while (t1 < 3600 ){
t1=t1+1;
t=0;
while (t < 2 ){
t=t+1;
delay(500);
}}}}

Il faut utiliser les balise < code > pour le code, que tu trouve au dessus du champ de saisie de ton message.
Si besoin regarde le post sur les bonnes pratiques

Bonjour,
Il faut lire et appliquer le message d'accueil.

Il n'est pas du tout recommandé d'alimenter un moteur à partir de la carte microcontrôleur (que ce soit une carte Arduino ou d'un autre fournisseur).
Un moteur peut trop consommer de courant et aussi un moteur peut trop polluer l'alimentation 5 V.

Quelle USB ?
L'USB de type 2 ne peut fournir que 500 mA, l'USB de type 3 peut fournir jusqu'à 3 A.

Alimentation par la pin Vin.
Il n'y a pas deux cartes microcontrôleur identiques, mais avec un régulateur 5 V, en général sur Vin, il faut appliquer une tension supérieure à 7 V. Sur une carte arduino de type UNO, nano, 9 V est un bon compromis.
Si on entre sur Vin on trouve un régulateur de tension, ce régulateur à une puissance limitée, il n'est ABSOLUMENT pas prévu pour délivrer du courant en quantité, il est prévu pour alimenter le microcontrôleur et quelques charges légères.

Si tu lui mets 12V en entrée et que tu tires trop de courant il va chauffer (P=UI) et se mettre en sécurité.
D'où la recommandation de ne pas dépasser 9 V.

Je pense que tu as compris que si tu veux une aide efficace, il faut que tu nous donnes la liste du matériel, un schéma de câblage (papier, crayon, règle pour tirer des traits droits et scan ou photo conviennent parfaitement, ah j'ajoute qu'un schéma se lit,quand on peut le faire, tous les schémas ne s'y prêtent pas, de la gauche vers la droite) .
Il faut aussi faire un bilan des courants dans les différentes charges.
.

Voici ce que j’ai utilisé.


 #include <Servo.h>
 Servo leServo1;
  unsigned int heurereinitialisation;
  unsigned int fermeturesoir;
  unsigned int ouverturematin;
  unsigned int t;
  unsigned int t1;
  unsigned int t2;
  int pinServo1= 9;
void setup() {
 
fermeturesoir=22;                    //fermeturesoir correspond à l'heure ou la porte se fermera(heure en heure)
ouverturematin=6;                    //ouverturematin correspond à l'heure ou la porte se fermera(heure en heure)
heurereinitialisation=22;             //heurereinitialisation correpond à l'heure à laquelle vous téléverser le programme sur la carte, Vous devez changez ce paramètre à chaque fois que téléverser le programme(heure en heure)
 
leServo1.attach(pinServo1);
ouverturematin=24-heurereinitialisation+ouverturematin;
fermeturesoir=fermeturesoir-heurereinitialisation;
fermeturesoir=fermeturesoir+1;
ouverturematin=ouverturematin+1;
 
}
 
void loop(){
t2=0;
while (t2 < 24){
  t2=t2+1;
  t1=0;
  if (t2==ouverturematin){
    leServo1.write(0);
    delay(2000);  }
  if (t2==fermeturesoir) {
    leServo1.write(220);
    delay(2000); }
while (t1 < 3600 ){
   t1=t1+1;
   t=0;
while (t < 2 ){
   t=t+1;
   delay(500);
  }}}}

Sur ce genre d'alimentation il y a des indications sur le flan du boitier, qui donne les capacités de l'alimentation, comme par exemple 12V et l'intensité maximal qu'elle peut délivrer.

A titre d'indication dans le lien que je t'ai donné, je crois qu'il y ait fait mention, sur le raccourcis clavier pour indenter correctement ton code dans L'IDE d'Arduino.

Je comprend. J’ai été trop floue en effet.
J’utilise :

  • Carte Arduino UNO
  • alimentation externe prise jack (voir photo envoyé ci dessus)
    Servo moteur DS 3240 (40Kg)

Pour ce qui est du câblage j’ai que 3 fils à recorder, car j’ai alimenté le moteur à partir de l’arduino
Le code que j’utilise a été envoyé juste au dessus
J’envoie ci dessous une photo de mon montage complet.

Oui, c’est du 12V / 1A

Quand je teste mon programme, le moteur tourne bien, et dans les deux sens. Mais, quand je connecte à l’alimentation externe, plus rien ne fonctionne comme le code le demande.. je dois essayer une alimentation 9V au lieu de 12V?

Il faut connaitre la valeur du courant max consommé par le servo pour savoir où on met les pieds.

Proposition de manip :
Dans une configuration qui fonctionne :
Un multimètre positionné en ampèremètre en série avec un des fils d'alim du servo.
Tu envoies une valeur de consigne, tu forces sur l'axe pour faire quitter la position de consigne et tu notes le courant max.

Au moins on saura où on en est question mA .

Pour la carte, que je suppose être une UNO ou équivalent -> il faudrait préciser, il est préférable de prendre une alim 9 V plutôt qu'une 12 V.
Mais pas de fuite en avant avec la fièvre acheteuse.

Si sans le servo la carte et le restant du montage fonctionnent bien, une autre solution est pour le servo d'acheter un convertisseur step-down pour abaisser la tension de 12 V à 5V (ton servo accepte de 5V à 7,4 V).
C'est à mon avis le meilleur choix.
Le convertisseur protègera la carte électronique des pollutions du servo et si le servo consomme 1 A sous 6 V soit 6 W, coté alimentation 12 V avec un convertisseur la puissance sera toujours de 6 W et le courant prélevé ne sera que de 0,5 A (aux pertes de rendement près).

Renseignement sur les convertisseurs : voir dans Tuto et cours le lien vers l'excellant blog d'H Bachetti.
NB : Les tutos, écrits par des membres de ce forum, sont tous excellants.