N’ayons pas peur des mots, le circuit intégré ULN2803 est génial !

En fait, le ULN2803 est tout simplement un réseau de 8 transistors NPN darlington intégrés dans un boitier de 18 broches. Et ce petit boitier tout intégré va vous faire gagner de la place sur votre circuit imprimé, du temps de réalisation (18 broches à souder contre 24 avec des transistors indépendants).

C’est le compagnon idéal pour alimenter une série de LED haute intensité, des relais, un gros afficheur 7 segments, … ou tout autres chose dans le même esprit. Il permet même l’utilisation une alimentation externe. Et ce type de circuit coute entre 1€ et 2€

Attention cependant à ces petites choses :

  • Le ULN2803 ne gère pas le PWM, c’est soit ON soit OFF. Par contre, rien ne vous empêche sur une LED haute intensité de mettre la cathode sur l’ULN2803 et l’anode sur un transistor PNP BC327 qui, lui, gère le PWM.
  • Le circuit intègre 8 transistors, pas de bus de communication, il vous faudra dont 8 sorties de votre Arduino pour commander tous les transistors. Cela dit, vous pouvez ajouter un autre circuit intégré, le CD4017 pour vous affranchir des 8 sorties.

De façon schématique, voilà ce que le circuit intégré a dans le ventre :

Schéma-interne-ULN2804Schéma interne ULN2803

  • IN1 à IN8 sont les entrées à relier à votre Arduino
  • OUT1 à OUT8 sont les sorties à relier à votre composant (led, relais, …)
  • GND est le 0V. Si vous utilisez une alim externe, reliez les GND de l’Arduino et de l’alim ensemble.
  • COM est le 5V de l’Arduino ou de l’alimentation externe.

Au niveau de la datasheet (datasheet-uln2803a), voilà ce qu’elle nous apprend :

  • L’alimentation des entrées se fait en 5V
  • Les sorties peuvent délivrer maximum 500mA et 50V (alim externe)

Ce qui nous laisse pas mal de marge pour mettre une batterie de relais ou des LED haute intensité. Pour ma part, je l’ai récemment utilisé pour commuter 8 LED blanches 1W avec Zoubiz. C’est un projet que nous vous présenterons prochainement.

Piloter des LED avec l’ULN2804

J’annonce tout de suite la couleur, ce qu’on va faire est inutile (sauf si vous mettez des led 1W), mais c’est uniquement pour voir les branchements. Rien ne vous empêche de remplacer la led par un autre composant.

Pour notre exemple nous aurons besoin de :

  • 1 circuit intégré ULN2803
  • 8 LED + résistance
  • 1 carte Arduino (j’utilise une mega car je n’ai plus que celle là sous la main)

Voici comment se branche le circuit :

ULN2804-avec-8-LED-Alim-ArduinoULN2803 avec 8 LED – Alim Arduino

Pour le programme, nous allons faire quelque chose de très basique, puisque nous allons allumer les led chacune leur tour :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* 
 * TEST DU CUIRCUIT INTEGRE ULN2803 
 * www.worldofgz.com
 */
 
//Attribution des pins 
#define LED_1 31
#define LED_2 33
#define LED_3 35
#define LED_4 37
#define LED_5 39
#define LED_6 41
#define LED_7 43
#define LED_8 45
 
//Stockage des led dans un array
int led[] = {LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8};
 
void setup() {
  //Configuration des sorties
  for (int i=0; i < = 7; i++){
    pinMode(led[i], OUTPUT);
  }
}
 
// the loop routine runs over and over again forever:
void loop() {
  for (int i=0; i <= 7; i++){
    digitalWrite(led[i], HIGH);  //Allumage de la LED
    delay(500);                  //Attente
    digitalWrite(led[i], LOW);   //Extinction de la led
  }
}

En cadeau, voila comment se branche une alimentation externe :

ULN2804-avec-8-LED-Alim-externeULN2803 avec 8 LED – Alim externe

What else ?

Comme nous l’avons vu, l’ULN2803 a de nombreux avantages, mais pour certaines applications, il pourrait s’avérer inutilisable. C’est le cas, si vous avez un projet de 25 LED 1W à gérer en PWM (merci Zoubiz !). Dans ce cas, sachez qu’il existe des drivers multichannels avec un bus de communication. Par exemple le TLC5940 gère 16 canaux en PWM avec une interface série. De plus, ils peuvent se mettre en cascade et ainsi, avec 5 pins de l’Arduino, vous pouvez gérer une quantité impressionnante de LED !

Quant à nous, le tuto sur les relais est le plus consulté depuis la création du blog, nous verrons dont très prochainement comment piloter 8 relais avec l’ULN2803. Rien de très sorcier !