Processeur Arduino chauffe énormément

Bonjour à toutes et tous, J'ignore si je suis sur le bon post mais bon je ne suis pas un habitué des forums veuillez m'excuser. Merci de me rediriger si nécessaire.
Voilà je dispose de 2 cellules IR avec des contacts en Normalement Fermé(pas d'autres possibilité sinon changer les cellules IR), j'entre sur mon Arduino Nano de la façon traditionnelle via PULLUP. Le montage au niveau programmation fonctionne parfaitement en résumé, les 2 contacts des barrière IR sont fermé, rien ne se passe. Lorsque le contact NF d'une des cellule s'ouvre, un relai s'enclenche et reste enclenché. Si par contre l'autre cellule IR ouvre son contact NF alors une tempo de 30 seconde est lancée afin de laisser le relai encore enclenché et puis se coupe après la tempo. Le problème que je rencontre est que le processeur de mon Arduino Nano chauffe énormément lorsque les cellules sont en service (Contact NF cellule 1 fermé sur PIN 2 et Contact NF de la cellule 2 fermé sur PIN 3). Est-il possible que mon problème viennent du fait que ce sont des contact NF et non NO ? car quand je déconnecte les contacts cellules NF le processeur refroidit immédiatement. Vous allez me dire de placer un relai inverseur, ok mais je n'aime pas que le relai reste enclenché en permanence. Y aurait-il une autre solution ? Merci pour votre aide .
Bien à vous
Pol

Bonjour,

Comment sont alimentées les cellules?

Bonjour, elles sont alimentée en 12V CC mais au niveau des 2 contacts NF j'utilise la masse et le 5V de la carte pour le PULLUP externe.
Merci pour votre aide

Le fait que le contact soit normalement fermé n'explique pas que la nano chauffe (sauf si la résistance de pullup est vraiment trop faible).
Quelle est la valeur des résistances de pullup?
La nano est alimentée comment?
Il y a d'autres choses connectées sur la nano?

Dans le programme les entrées ne serait-elles pas définies par OUTPUT? Dans ce cas cela fonctionne, mais consomme environ 100mA par "entrée". (J'ai fait l'essai!)

Comme quoi, il faut le code

Quelle est la valeur des résistances de pullup?
La nano est alimentée comment?

Comme quoi,il faut le schéma de câblage.

Voici le code utilisé et le schéma de câblage en pièce jointe
Non il n'y a rien d'autre mis à part le relai qui est connecté sur D1 via un transistor BC547B
Merci beaucoup

//déclaration des variables
int IR_Entree = 3;         // Infra rouge cellule entrée
int Etat_IR_Entree = 0;         //Etat de la cellule entrée
int IR_Lit = 4;            //Infra rouge cellule lit
int Etat_IR_Lit = 0;            // Infra rouge cellule lit
int Relai = 2;            // Sortie Relai
int Etat_Relai = 0;        //Etat sortie relai
int result;              //Resultat pour redirection vers CASE
int val_1 = 0;           // ON initialise la valeur_1
int Compteur_1 = 0;   //On initialise le compteur_ 1
int Compteur_2 = 0;   //On initialise le compteur_2

void setup()
{
//définition des modes
 pinMode(IR_Entree, INPUT_PULLUP ); //mode lecture IR_Entrée 
 pinMode(IR_Lit, INPUT_PULLUP); //mode lecture IR_Lit
 pinMode(Relai, OUTPUT); //mode écriture pour Relai

}
void loop()
{

//________________________________________


 
     Etat_IR_Lit = digitalRead (IR_Lit);    // On lit l'entrée IR_LIt
     if (Etat_IR_Lit==HIGH).  //test si NF de l'IR est ouvert (le processus ne commence que si une des 2 
                                             cellules est coupée
     { 
      Compteur_1 = Compteur_1 + 1; // On incrémenté le compteur 1 si le NF de la cellule 1 s'ouvre
      if (Compteur_1=1) // Si le compteur = 1 alors
      {
       Compteur_1= 1;   // Le compteur reste à 1
      }
     }

     Etat_IR_Entree = digitalRead (IR_Entree);
     if (Etat_IR_Entree==HIGH)//test si IR actif
     {
      Compteur_2 = Compteur_2 + 1; // On incrémenté le compteur 2 si le NF de la cellule 2 s'ouvre
      if (Compteur_2=1).  // Si le compteur = 1 alors
      {
       Compteur_2 = 1; // le compteur 2 reste à 1
      }
     }

   
   result = Compteur_1 + Compteur_2; // On additionne les compteurs 
   switch (result) // et en fonction du résultat on switch vers case 1 ou 2
  {
   case 1:

   digitalWrite(Relai,HIGH); //Relai activé
   break;

     case 2:
delay(40000); // On temporise pendant 40 secondes
digitalWrite(Relai,LOW); //Relai activé
delay(500);
Compteur_1 = 0;// On remet le compteur 1 à 0
Compteur_2 = 0;// On remet le compteur 2 à 0

   break;
  }
  }

Schémas de cablâge.pdf (123 KB)

12V cest un peu élevé pour alimenter la nano. Cest normal que le régulateur chauffe un peu.
Après ça dépend de ce que tu appelles "énormément"

Sur le schéma de câblage il y a un inter entre la pin 2 et la masse.

Dans le code, il y a:

int Relai = 2; // Sortie Relai
pinMode(Relai, OUTPUT); //mode écriture pour Relai
digitalWrite(Relai,HIGH); //Relai activé

Relais activé et inter sur 2 fermé, c'est un court-circuit de 100mA. Et ça fait 0,5W

Bonjour, merci beaucoup pour vos réponse, quand je dis chauffer, il est impossible de laisser son doigt sur le circuit il est bouillant, bon pas au point de crâmer mais quand même... à la longue je penses que ce sera le cas si je laisse comme cela. Mais j'essaye en diminuant la tension à 5 V pour voir ce que ca donne.
Je ne comprend pas la dernière phrase de Vileroi :"Relai s activé et inter sur 2 fermé" quel serai la solution idéale pour vous ?
Merci
Pol

Bonjour à toutes et tous je vous remercie beaucoup pour le temps que vous avez passé sur mon problème.
Je viens de me rendre compte en contrôlant l'ensemble du montage que j'avais fait une erreur dans le câblage de mon Arduino je m'excuse d'avance pour vous avoir embêter inutilement. Merci beaucoup.
Prenez soins de vous
Pol