Ardu? No!Coin élec ≫ La diode ≫ La led

La led

Les leds (light emitting diode) ou le terme français dels (diode électroluminescente) sont des diodes qui, lorsqu'elles sont traversées par un courant, émettent de la lumière. On les utilise toujours en direct (0V pour les éteindre). On en trouve maintenant de toutes les couleurs, et avec des puissances importantes ce qui permet de faire des éclairages privés ou publics. Ce sont des éléments donnant de la lumière avec de bons rendements.

Comme ce sont des diodes, elles en partagent les caractéristiques, mais des paramètres importants s'y rajoutent. On fera particulièrement attention à:
- la couleur: une attention particulière pour les leds blanches car il y a des blancs jour, des blancs froids, des blancs chauds... Pour les blancs, il vaut mieux donner la couleur en °K.
- l'angle de diffusion: certaines leds émettent dans un cône de 15°, d'autres sur 180°...
- le flux lumineux (la puissance lumineuse) qui est exprimé en lumens
- la tension lorsqu'elle est allumée VF: pour une diode ordinaire elle était de l'ordre de 0,6V à 1V. Pour les leds elle est au moins de 1,5V (vieilles leds rouges), mais bien souvent la tension est plutôt aux alentours de 2V pour les leds de couleur et de 3V pour les blanches. Il est possible de trouver des leds rouges avec un VF de 4V. Il est donc utile d'avoir la caractéristique.
- le courant IF pour allumer correctement la led. Pour les leds, on avait le plus souvent un courant de 20mA, mais avec les leds "haute luminosité", on est plus souvent à 5mA pour les leds qui servent de témoin. Pour les leds qui servent à l'éclairage, on monte bien plus haut.
- la tension inverse est en général faible, ce n'est pas rare d'avoir seulement 5V. Mais on a normalement jamais de leds alimentées en inverse.

Brochage des leds traversantes

Il y a trois moyens de trouver l'anode et la cathode d'une led traversante: la patte la plus courte, le méplat, et la broche sur laquelle est soudée la diode indiquent la cathode:

Leds adressables

Il faut noter qu'il existe des leds tricolores bleu-vert-rouge ce qui permet de choisir la couleur finale en dosant chacune des trois composantes. Certaines sont adressables, cela veut dire qu'il y a dedans un processeur qui permet avec une seule pin d'un Arduino de commander la couleur d'autant de leds que l'on veut. C'est assez pratique pour le câblage. On peu citer par exemple la WS2811, les NeoPixels. Ces diodes existent en composants uniques, en bandes, en anneaux...

Allumer une led avec une Arduino

Il existe sur la Uno, la Nano, la Mega une diode déjà câblée sur la broche numéro LED_BUILTIN . On peut aussi donner le numéro 13, mais LED_BUILTIN est plus lisible.

Pour allumer une led externe avec une arduino qui délivre 5V (3,3V avec une minipro), il faut mettre une résistance en série pour fixer le courant. Le schéma est le suivant:

Notez que l'on peut inverser la place de la led et de la résistance.

Pour déterminer la valeur de la résistance, il faut avoir la tension directe de celle-ci (VD) et le courant que l'on désire (ID). Quand la sortie est à 0V (programmée à LOW), il ne passe aucun courant dans la résistance et dans la led, cette dernière est éteinte, quelle que soit la valeur de R. Quand on programme la sortie à VDD (5V), le courant va passer dans la résistance et on aura:

La loi des maille donne VR = VDD - VD. Si on veut un courant ID dans la diode, il y aura le même courant dans la résistance. On connaît la tension et le courant dans la résistance, on peut donc en connaître sa valeur: R = VR / ID = (VDD - VD) / ID.

Le courant maximal que l'on peut faire passer dans la led est d'environ 20mA à cause du microcontrôleur.

Supposons que l'on veuille allumer une diode rouge ayant une tension directe de 2V sous un courant de 5mA, il faut choisir une résistance de (5V - 2V) / 0,005mA = 600Ω. Comme il faut prendre une résistance qui existe (de préférence pas au delà de la série E12), on choisira par exemple une 680Ω.

Pour le programme, il faut initialiser la broche de l'Arduino en sortie, cela se fait en principe dans le setup, et on déclare souvent le nombre LED comme constante une fois pour toutes avant le setup. Pour allumer la led, il faut mettre un état HIGH et un LOW l'éteindra.

const uint8_t LED = 2; // Broche de la led

void setup() {
  ...
  pinMode(LED, OUTPUT);
  ...
}

void loop() {
  ...
  digitalWrite(LED, HIGH); // Allume la led
  ...
  digitalWrite(LED, LOW); // Éteint la led
  ...
}

On peut aussi mettre l'ensemble led et résistance entre la sortie et l'alimentation. Le schéma est le suivant (on peut toujours permuter la place de la résistance et de la led):

La détermination de la valeur de la résistance est la même, mais le fonctionnement est inversé: quand la sortie est à 0V la diode est allumée, et quand on met du 5V la led est éteinte. Cela ne change que très peu la programmation. Le programme de tout à l'heure devient:

const uint8_t LED = 2; // Broche de la led

void setup() {
  ...
  pinMode(LED, OUTPUT);
  ...
}

void loop() {
  ...
  digitalWrite(LED, LOW); // Allume la led
  ...
  digitalWrite(LED, HIGH); // Éteint la led
  ...
}

On peut aussi définir les mots ALLUMEE et ETEINTE pour clarifier la lecture:

const uint8_t LED = 2; // Broche de la led
#define ALLUMEE LOW
#define ETEINTE HIGH

void setup() {
  ...
  pinMode(LED, OUTPUT);
  ...
}

void loop() {
  ...
  digitalWrite(LED, ALLUMEE);
  ...
  digitalWrite(LED, ETEINTE);
  ...
}

Si on utilise des leds avec des rendements élevés, on peut profiter de la résistance de pull-up des sorties pour fixer le courant. Cela ne va pas faire un éclairage très violent. Le schéma est alors le suivant:

Il est alors interdit de mettre la broche LED en sortie à 5V. Pour allumer la led, on met la broche en INPUT_PULLUP, ce qui va mettre du 5V via de la résistance de pull-up (environ 35kΩ pour une Uno). Pour éteindre la led, je conseille fortement de mettre la broche en INPUT, cela enlève la résistance. Le programme peut devenir:

const uint8_t LED = 2; // Broche de la led
#define ALLUMEE INPUT_PULLUP
#define ETEINTE INPUT

void setup() {
  ...
  pinMode(LED, OUTPUT);
  ...
}

void loop() {
  ...
  pinMode(LED, ALLUMEE);
  ...
  pinMode(LED, ETEINTE);
  ...
}

Sur la video suivante un clignotement montre que c'est possible même avec une seule sortie.

Le programme est le suivant:                                                                

void setup() {
  Serial.begin(115200);
}


void loop() {
  pinMode(14, INPUT_PULLUP);
  delay(500);
  pinMode(14, INPUT);
  delay(500);
}

Note: pour faire passer plus de courant dans la led, on peut mettre plusieurs entrées en parallèle (on ne doit pas mettre de sorties en parallèle, mais ici ce sont des entrées).