This is an old revision of the document!


Diode électroluminescente

Connaissances nécessaires: [HW] Controller module, [HW] User Interface Module, [ELC] LED Resistor Calculation, [AVR] Registers, [AVR] Digital Inputs/Outputs, [LIB] Pins

Théorie

LED avec pattes de 5 mm

La diode électroluminescente est un semi-conducteur qui émet de la lumière lorsqu’on lui applique une tension. L’acronyme pour diode électroluminescente est DEL (LED en Anglais). Il existe différentes combinaisons de couleurs de diodes et les diodes peuvent émettre une lumière blanche. Tout comme une diode classique, la LED a deux contacts – une anode et une cathode. Schématiquement, l’anode est marquée d’un “+” et la cathode d’un “-“.

Symbole schématique de la LED et de sa polarité

Lorsqu’on applique une tension, l’anode de la LED est connectée à la tension positive tandis que la cathode est connectée à la tension négative. La tension de la LED dépend de sa couleur : longueur d’onde la plus longue (rouge) ~ 2V, longueur d’onde la plus courte (bleu) ~ 3V. En général, l’énergie d’une LED n’excède pas la dizaine de milliWatts, cela signifie que le courant électrique doit être dans la même gamme. Lorsqu’on applique une tension ou un courant trop important, la LED peut griller.

Si la LED est utilisée spécifiquement pour l’éclairage, il est conseillé d’utiliser des circuits électroniques spécifiques qui régulent le courant ainsi que la tension qui conviennent aux LEDs. Néanmoins les LEDs sont le plus souvent utilisées comme des voyants et elles sont directement alimentées par les broches du micro-contrôleur. La tension d’alimentation (et donc le courant) pour les micro-contrôleurs est habituellement plus importante que la tension (et donc le courant) nécessaire à la LED, il est donc nécessaire de connecter des résistances en série aux LEDs, résistances qui réduisent le courant et créent la baisse de tension nécessaire. Les instructions permettant de calculer la résistance correcte sont dans le chapitre Electronique.

Il existe une grande variété de LEDs. Les LEDs à pattes les plus communes ont un corps de 3mm ou 5mm de diamètre ainsi que deux longues broches de connexion en métal. La broche la plus longue est celle de l’anode, la plus courte celle de la cathode. Les LED destinées aux circuits fabriqués par la technique SMD (Surface Mounted Device) porte le symbole en forme de T sur la partie inférieure afin d’indiquer la polarité, où la partie supérieure du T marque la position de l’anode.

Polarité des pattes et la SMD des LEDs

Homelab : entrainement 1

Le module de contrôle du Home laboratory contient une seule LED rouge, dont l’anode est connectée à une résistance d’alimentation de puissance à +5V et la cathode est connectée à ATmega128 à la barrette numéro PB7. Afin d’allumer et d’éteindre cette LED, la sortie PB7 doit être définie et doit être configurée une fois en haut et une fois en bas. Cela signifie que si la barrette est définie en position haute, la LED s’éteint et si elle est configurée en position basse la LED s’allume. Fondamentalement il serait possible de connecter la LED de manière à ce que l’anode soit reliée à la barrette du microcontrôleur et la cathode soit reliée à la terre (qui fait le même effet qu’une résistance) – dans ce cas lorsque la barrette est en position haute la LED s’allume et vice et versa.

Tous les exercices pratiques pour le home lab, y compris l’utilisation de la LED, sont basés sur la librairie des barrettes du laboratoire. Cette librairie contient les types de données des barrettes, dont les adresses des registres liées aux barrettes ainsi que le bitmask des barrettes. Si pour créer une barrette de type variable dans le programme et ensuite l’initialiser en utilisant la fonction macro PIN, la barrette peut être utilisée librement avec cette variable (pin) dans n’importe quel programme sans qu’il soit nécessaire d’utiliser les déclarations. Ci-dessous deux programmes d’instanciation, qui réalisent exactement la même fonction, sauf que l’un est créé sur la base de la librairie Home Lab, alors que l’autre ne l’est pas.

//
// Homelab controller module LED test program.
// The code is base on homelab library.
//
#include <homelab/pin.h>
 
//
// LED pin configuration.
//
pin debug_led = PIN(B, 7);
 
//
// Main program
//
int main(void)
{
	// Configuring LED pin as an output
	pin_setup_output(debug_led);
 
	// Lighting up LED
	pin_clear(debug_led);	
}
//
// Homelab controller module LED test program.
// The code directly accesses registers.
//
#include <avr/io.h>
 
//
// Main program
//
int main(void)
{	
	// Configuring LED pin as an output
	DDRB |= (1 << 7);	
 
	// Lighting up LED
	PORTB &= ~(1 << 7);
}

Le premier exemple utilise la librairie concernant les barrettes (pin.h file). Tout d’abord une barrette de type variable dénommée debug_led est définie dans le programme, elle contient les informations à propos de la barrette LED. Dans le programme principal cette barrette est configurée en tant que sortie en utilisant la fonction pin_setup_output puis la barrette est configurée en position basse grâce à la fonction pin_clear. Ceci à pour effet que le LED rougeoie. Dans le second exemple les variables ne sont pas utilisées, la configuration de la sortie LED et l’allumage est réalisée en changeant la direction du bus de la barrette B et les valeurs de sortie du registre. Le lecteur qui en connaît un peu plus sur les notifications AVR, tel que dans les exercices précédents il n’est pas nécessaire de donner la commande afin d’allumer la LED, puisque la valeur de sortie par défaut est 0, ceci dit toutes les étapes sont respectées.

Quelle est la différence entre utiliser la librairie et les enregistrements ? La différence est le confort – la librairie est plus facile, parce qu’il n’est pas nécessaire de connaître le nom des registres et leurs effets par cœur. Le bénéfice le plus important de la librairie est l’adaptabilité. En utilisant les registres il est nécessaire de changer les noms et bitmask des registres tout au long du programme a chaque changement de barrette. En utilisant la librairie, cela peut être fait qu’une seule fois au début du programme lors de l’initialisation de la variable de la barrette. L’utilisation des registres n’a pas d’avantage significatif – l’utilisation des barrettes est direct n’est pas réalisé à travers la mémoire du programme et des fonctions nécessitant du temps. Cependant, les nouvelles versions des compilateurs AVR-GCC sont tellement évolués qu’ils transforment les fonctions de la librairie en commandes directes identiques à celles utilisées en manipulant les registres comme si cela était fait dans le programme. Il est nécessaire de préciser que la capacité de transformation des compilateurs est une force seulement quand on a affaire à des variables constantes, et non pas pour les variables qui évoluent pendant le travail.

Homelab : entrainement 2

En plus du module de contrôle, les LEDs sont aussi localisées sur la carte entrée-sortie digitale. Elles sont électriquement reliées de la même manière que les LEDs du module, cela signifie que la cathode est reliée à la barrette AVR. La LED rouge est connectée à la barrette numéro PC5, la jaune en PC4 et la verte en PC3. Notre librairie Home Lab basée sur le programme modèle suivant :

//
// Homelab digital module LED's test program.
//
#include <homelab/pin.h>
 
//
// LED's pin configuration.
//
pin led_red    = PIN(C, 5);
pin led_yellow = PIN(C, 4);
pin led_green  = PIN(C, 3);
 
//
// Main program
//
int main(void)
{
	// Configuring LED pins as an output
	pin_setup_output(led_red);
	pin_setup_output(led_yellow);
	pin_setup_output(led_green);	
 
	// Lighting up green LED
	pin_clear(led_green);	
 
	// Turn off red and yellow LED
	pin_set(led_red);
	pin_set(led_yellow);
}

ARM-CAN practice

:!: To-do

fr/examples/digi/led.1268054334.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0