Vous êtes-vous déjà demandé comment diable contrôler un solénoïde 12V, un moteur ou une lampe avec un Arduino ? Ce n’est pas la faible puissance fournie par les sorties de votre microcontrôleur qui va vous sauver la mise, bien au contraire !  Le sujet de cet article concerne un composant très intéressant pour contrôler de petites puissances via un microcontrôleur (ESP, Arduino…) ou micro-ordinateur (Banana, Raspberry Pi…). Ce composant miracle est connu sous le doux nom de transistor. Et pas n’importe lequel ! Le transistor Darlington TIP120 !

La raison pour laquelle j’écris spécifiquement sur ce transistor, c’est parce qu’il est facilement disponible et trouvable chez les revendeurs électroniques et autres chinoiseries (à bon entendeur !). Il est également possible d’utiliser n’importe quel transistor NPN Darlington comme le BD651 qui fonctionne exactement de la même façon.

Comment ça marche ?

Contrôle de puissance avec Arduino via un TIP120.

Contrôle de puissance avec Arduino via un TIP120.

AVERTISSEMENT : Je suis sur le point de vraiment simplifier au maximum le rôle d’un transistor, dans le but précis de l’utiliser dans une situation spécifique qui est le contrôle d’un élément demandant du courant qui n’est pas délivrable par un microcontrôleur. Ici, on utilisera le transistor comme un commutateur (ou switch pour les anglophones).

Si vous ne connaissez pas du tout les transistors, ce sont des composants qui ont deux types de fonctionnement simple : commuter ou amplifier. Le composant possède 3 pattes : un “In” appelé le Collecteur, un “Out” appelé l’Émetteur et un “Control” appelé la Base. Lorsque vous envoyez un signal HAUT à la base (pin de contrôle), le transistor commute et permet au courant de circuler du collecteur (In) à l’émetteur (Out). Dans ce cas de commutation, le transistor est “utilisé comme un relais statique” (je n’aime pas dire ça, mais bon, c’est pour imager !).

Alors pourquoi ne pas utiliser un relais statique ? Car le relais commute lentement, s’use vite et ne tiens pas sur des variations de fréquences élevées. L’avantage du transistor est que le composant est purement électronique (tout se passe sur la composition des matériaux à l’intérieur du transistor), il ne contient pas d’éléments mécaniques en mouvement ! De plus, il est possible de faire de la modulation d’amplitude (PWM) avec un transistor, ce qui est impossible avec un relais statique !

On connecte donc notre moteur, solénoïde ou lampe à la tension positive V+, mais pas à la masse. La masse est connectée au collecteur du transistor. Lorsque notre Arduino envoie un signal HAUT (HIGH) à la base du transistor, il commute le transistor (reliant le collecteur et l’émetteur) et termine ainsi le circuit pour le moteur, solénoïde ou lampe.

 

A quoi sert la diode ?

Ce type de transistor est commuté par le courant et non par la tension, donc nous devons nous assurer de fournir le bon courant à la base pour le commuter. Il est donc nécessaire d’avoir une résistance connectée de l’Arduino à la base pour limiter le courant au courant nécessaire. Vous pouvez voir que dans 2 des 3 illustrations, qu’il y a une diode parallèle à l’appareil que nous alimentons. Chaque fois que vous alimentez un appareil avec une bobine, comme un relais, un solénoïde ou un moteur, vous avez besoin de cette diode.

En effet, que se passe-t’il lorsque vous arrêtez d’alimenter la bobine du moteur ou du solénoïde ? L’alimentation ne fournit plus de courant, mais le moteur fini de tourner. Le moteur devient donc générateur pendant quelques instants. La tension à ses bornes s’inverse et augmente (parfois énormément, on peut avoir jusqu’à 100V !), puis retombe. Cela ne dure que quelques microsecondes, mais cela suffit à tuer notre transistor. En marche normale du moteur, la diode, qui ne laisse passer que le courant, est dans le “mauvais sens”. Le courant passe uniquement par le moteur.

Lorsque la tension s’inverse au borne du moteur, la diode devient passante et laisse passer le courant. Le courant passe donc à travers la diode et retourne dans la bobine du moteur. L’énergie est évacuée par échauffement à travers le système diode-bobine. On appelle cela une “diode de roue libre”. Le mieux est d’avoir une diode suffisamment rapide pour réagir aux pics qui peuvent soudaines survenir lors d’un arrêt brusque du moteur, et assez “forte” pour supporter la charge. Une diode comme la 1N4001 ou le SB560 devrait faire l’affaire. Assurez-vous également que la diode est dans le bon sens (la bande du côté V+). Si elle est dans le mauvais sens, le courant passera normalement par la diode et le moteur ne risquera pas de tourner.

Limites du composant

Les transistors comme le TIP120 sont vraiment parfaits pour contrôler les appareils haute puissance de votre microcontrôleur, mais ils ont quelques limites. Cette configuration de transistor est seulement utile pour commuter le courant continu, donc n’essayez pas ceci avec une source de tension alternative ! De plus, les transistors ont également des limites de tensions et de courant. Le TIP120 peut gérer une commutation jusqu’à 60V, et l’ampérage est limité à 5A. Si vous voulez jouer avec le feu, le TIP120 peut supporter jusqu’à 8A en impulsions séparées de 300 μs. Pour des courants approchant les 5A, je recommande vivement de visser le composant sur un radiateur.

Attention si vous utilisez plusieurs TIP120 ! Ne les vissez / soudez / collez pas au même dissipateur thermique ! Le dos du composant est connecté à la base du transistor. En faisant cela, vous risquez de commuter plusieurs TIP120 en même temps, voir même de court-circuiter votre micro-contrôleur ! Dans le cas d’une commutation de courant supérieure à 5A ou d’un courant alternatif, il faut passer sur du relais adapté.

Avantage du binôme Arduino-TIP120 grâce au PWM !

Vous connaissez les sorties PWM sur votre Arduino ? Si si ! La pin qui vous permet d’analogWrite (broche, valeur). Eh bien, PWM n’est pas réellement une sortie analogique. L’Arduino est en train de pulser (très rapidement) entre 0 et 5V de sorte que la tension moyenne se situe quelque part entre 0 et 5V. Ces sorties sont sur 8 bits. 0 corresponds à 0V et 255 corresponds à 5V. Et ce qui est classe avec le TIP120, c’est qu’il supporte le PWM et retransmet linéairement l’information de pilotage ! Le PWM peut être transmis à travers le transistor, ce qui nous permet de faire varier la lumière, de contrôler la vitesse d’un moteur, exactement comme si ces composants été reliés directement à l’Arduino ! Tout ce que vous devez faire pour en profiter est de vous assurer que la base du TIP120 est connectée à une broche PWM de votre microcontrôleur !

Dans la vidéo ci-dessous, la lampe s’allume puis la lumière s’estompe doucement. La lampe est pilotée en PWM via le TIP120. Il s’agit d’une lampe 12V DC de 15W. J’aurai pu faire simple en vous donnant le code pour juste allumer ou éteindre la lampe, mais c’est trop simple (juste à envoyer HIGH ou LOW sur la pinoche de contrôle du TIP120…). Au lieu de ça, faisons évoluer le signal tel une sinusoïdale entre 0 et 255 sur la pin n°9.

Contrôle lampe via TIP120
#define TIP120Pin 9

void setup(){
  pinMode(TIP120Pin, OUTPUT);
}

void loop(){
  for(int i = 0; i<360; i++){
    //conversion d'un angle 0-360 en radian (utile pour la fonction sin)
    float rad = i*3.14159/180;

    //calculate sin of angle as number between 0 and 255
    int sinOut = constrain((sin(rad) * 128) + 128, 0, 255); 
     
    analogWrite(TIP120Pin, sinOut);
     
    delay(15);
  }

 

Dans quels projets utiliser le TIP120 ?

Ce composant peut être utilisé dans une grande multitudes de projets ! Contrôle de lumières pour la domotique, contrôle puissance pour une pompe doseuse, pilotage d’un moteur, déclencher des événements à l’aire d’un capteur de mouvement IR, etc… Voici un exemple de projet reposant entièrement sur des TIP120 : Love Song Machine.

Benoît Jellimann.

Source principale (avec accord) :  BildR.org

  •  
  •  
  •  
  •  
  •  
    2
    Partages
  • 2
  •  
  •  
  •  

Recevez les bons outils pour débuter dans l'univers DIY et l'impression 3D !