Carte sapin de noël

De Wiki d'activités IMA

Cahier des charges

Présentation générale du projet

Il vous est demandé de créer une carte électronique de type sapin de noël. Il existe des versions analogiques avec des composants traversants [1]. Il vous est demandé de réaliser une version CMS avec un micro-contrôleur ATMega328P alimenté par une pile de 9V. Utilisez toutes les sorties PWM du micro-contrôleur pour les diverses décorations (bougies, guirlandes électriques, étoile clignotante, etc).

S'agissant d'un objet de décoration, un certain soin sera apporté à l'esthétique de la carte. En premier lieu la carte doit être découpée en forme de sapin stylisé et les éléments de décoration pourront être soulignés par des dessins gravés sur la carte.

La carte comportera un sonar ultrason (capteur et récepteurs ultrason de surface) pour interagir avec l'utilisateur. Le sapin ne fonctionnera que si une présence est détectée à une distance moyenne. Un mode de fonctionnement différent (e.g. animations plus rapides, extinction des bougies) peut être prévu si un obstacle est détecté très proche pendant un court laps de temps.

Le programme sera écrit en C pour avr-gcc.

Liste de matériel

  • 1 Micro-contrôleur ATMega328P
  • 142 LEDs (vertes, jaunes, rouges, oranges, bleues)
  • 1 régulateur de tension 5V
  • 46 résistances
  • 7 condensateurs
  • 6 transistors NPN

Avancement du Projet

Esthétique et décorations

Croquis de la décoration du sapin


Pour avoir une meilleure idée de l'allure du sapin pour ce projet, la première étape est de faire un rapide plan avec la forme et les décorations. L'idée que je vais suivre est de réaliser un sapin avec 5 couleurs de LEDs différentes : des LEDs vertes pour représenter le sapin lui-même (les contours), et des LEDs jaunes, ambres, bleus et rouges pour les décorations (étoile, lumières, bougies et guirlandes). Le croquis serait donc le suivant [1] :



Je vais donc utiliser 80 LEDs vertes, 12 LEDs rouges, 14 LEDs bleus, 16 LEDs oranges et 20 LEDs jaunes. Le reste des composants seront disposés dans les espaces libres. Par la suite, je réaliserai au Fabricarium une façade au sapin pour masquer/protéger le circuit et ne laisser apparaître que les LEDs. Pour cela j'utiliserai du plexiglas, ou du carton/bois avec la découpeuse laser, ou directement à l'imprimante 3D. Puis je réaliserai un socle pour que le sapin tienne droit.


[1] Par la suite pour des contraintes électriques, quelques LEDs ont été supprimées.

Choix des composants

Vous trouverez la liste complète et référencée dans les livrables ci-dessous.

Micro-contrôleur
Atmel - ATMega328P-AU

Concernant le micro-contrôleur, le cahier des charges nous impose un ATMega328P, je prendrai donc l'ATMEGA328P-AU d'Atmel. Il possède une vitesse de processeur de 20MHz, une taille de mémoire programme de 32KB, une mémoire RAM de 2KB, 32 broche(s) dont 23 entrées/sorties et sa tension d'alimentation doit être entre 1.8 et 5.5V


Ce micro-contrôleur compte également 6 sorties PWM (OC0A, OC1A, OC2A, OC0B, OC1B, OC2B) aux broches 1, 7, 8, 11, 12 et 13.


Alimentation

Le micro-contrôleur doit être alimenté entre 1.8 et 5.5V. Or le cahier des charges nous demande une alimentation par une pile de 9V. Je vais donc utiliser un régulateur de tension pour ajuster l'alimentation.

Schéma de l'alimentation de la carte

Autres composants

Pour les besoins électriques du circuit, j'ai également utilisé d'autres composants :

  • Transistors : 6 x NPN MMBT3904 (sot23)
  • Résistances : 24 de 43Ω + 5 de 68Ω + 3 de 82Ω + 7 de 160Ω + 6 de 1kΩ + 1 de 1MΩ
  • Capacités : 2 de 22pF + 3 de 100nF + 1 de 10µF + 1 de 100µF

Réalisation de la plaque PCB

Réalisation de la plaque de base avec Inkscape


La première difficulté rencontrée a été de réaliser la plaque de base du PCB. En effet, l'objectif du projet est que la carte soit en forme de sapin, or les logiciels de conception de circuits imprimés ne proposent pas une telle forme. Pour cela j'ai donc dû installer et découvrir le logiciel Inkscape qui est un logiciel professionnel de dessin vectoriel permettant de réaliser des fichiers .svg (Scalable Vector Graphics). Pour réaliser une base de PCB, il a donc fallu dessiner la forme désirée avec deux calques ("board" pour la partie cuivre et "silkscreen" pour les sérigraphies) ayant des caractéristiques bien définies (couleur, contour, épaisseur...).


Contrôle des LEDs

Toutes les sorties PWM du micro-contrôleur doivent être utilisées pour les diverses décorations, soit 6. Selon la décoration choisie sur le schéma ci-dessus, je vais donc réaliser 6 groupes :

  • 2 pour les LEDs vertes qui seront toujours allumées en même temps avec une luminosité vacillante pour simuler du mouvement (OC2A + OC2B).
  • 1 pour les LEDs rouges (OC1A) et 1 pour les LEDs bleues de la guirlande qui clignoteront en alterné. (OC1B)
  • 1 pour les LEDs jaunes qui clignoteront pour représenter des lumières ou boules lumineuses. (OC0A)
  • 1 pour les LEDs oranges dont la luminosité vacillera pour simuler des bougies. (OC0B)

Pour alimenter, programmer et cadencer le micro-contrôleur, ainsi que pour contrôler les LEDs, on obtient alors le schéma suivant :

Schéma de contrôle des LEDs avec les transistors


Utilisation de transistors

Une façon simple de contrôler autant de LEDs avec seulement 6 broches est d'utiliser des transistors NPN. En effet, l'idée est de mettre des LEDs en série, sur plusieurs broches en parallèle connectées au collecteur de chaque transistor, et à l'alimentation 9V de la pile. La base est ensuite connectée aux sorties PWM pour activer et désactiver le transistor. L'émetteur est enfin relié à la masse. Selon les spécifications des LEDs (différentes pour chaque couleur), on peut brancher plus ou moins de LEDs sur chaque transistor. Je pars sur un courant dans chaque LED d'environ 15mA qui sera suffisant pour allumer la LED sans risquer de la griller si on dépasse Ifmax=20mA. On obtient donc pour chaque catégorie de LEDs :

  • Vertes (2.1<Vf<2.5V / If=15mA ) = 4 LEDs en série x 20 branches (2 transistors) ; Résistances de 43Ω
  • Bleues (3.3<Vf<4.0V / If=15mA ) = 2 LEDs en série x 7 branches (1 transistors) ; Résistances de 160Ω
  • Rouges (1.95<Vf<2.5V / If=15mA ) = 4 LEDs en série x 3 branches (1 transistors) ; Résistances de 82Ω
  • Oranges (2.1<Vf<2.5V / If=15mA ) = 4 LEDs en série x 4 branches (1 transistors) ; Résistances de 43Ω
  • Jaunes (2.0<Vf<2.5V / If=15mA ) = 4 LEDs en série x 5 branches (1 transistors) ; Résistances de 68Ω

A la base de chaque transistor, je place une résistance de 1kΩ pour protéger les sorties de l'ATMega et le transistor.

Le schéma de contrôle des LEDs est alors le suivant :

Schéma de contrôle des LEDs avec les transistors


Ce montage est facile à mettre en place, mais il a cependant des inconvénients :

  • Tout d'abord il compte plusieurs LEDs en série, ce que implique que si une LED grille, toute la série ne fonctionnera plus
  • De plus, le fait qu'il y ait de nombreuses branches de LEDs en parallèle qui s'allumeront toutes en même temps et reliées à l'alimentation, le montage sera plutôt gourmand en courant et risque de se détériorer avec le temps.

Utilisation de multiplexeurs

Malgré un long travail sur cette solution, choisie en accord avec mon tuteur de projet, j'ai appris par la suite qu'un tel circuit ne remplirait pas la fonction demandée. En effet, le courant requis pour alimenter un si grand nombre de LEDs serait trop important pour la pile. Celle-ci serait vidée en quelques minutes, voire peut-être même secondes.

Une autre solution, meilleure en termes de consommation et de contrôle, était d'utiliser des multiplexeurs. La technique du multiplexage permet de sélectionner n'importe quelle LED indépendamment des autres. Cette technique est utilisée notamment par les matrices de LEDs. De plus, le multiplexage permet d'éclairer chaque LED à la suite très rapidement en utilisant le persistance rétinienne. Cela requiert donc bien moins de courant et puissance que si les LEDs s'allument toutes en même temps, avec le même rendu visuel. Pour finir, les LEDs ne sont pas en série, ce qui implique que si une LED grille, les autres continueront de fonctionner sans problème.

Pour ce faire, j'aurais utilisé le composant TLC5916 pour contrôler les LEDs grâce aux signaux de contrôle PWM de l'ATMega.

Malheureusement, la découverte de ce problème de fonctionnement s'est faite trop tard, et il était impossible en si peu de temps de réaliser cette autre solution. De plus, la commande des composants se faisant plus tôt, je n'aurais pas pu avoir les composants nécessaires à ce circuit.


Programmation

En utilisant des multiplexeurs, il est possible d'utiliser une librairie ShiftPWM, permettant de contrôler facilement les LEDs. Le programme aurait alors été développé comme suit :

  • Initialisation du micro-contrôleur, des timers et des LEDs
  • Génération des signaux de contrôle PWM pour chaque driver de LED
  • Définition de différents cas d'utilisation

Livrables

Schématique

Pour la réalisation de la schématique et du PCB, j'ai utilisé le logiciel Fritzing.

PCB face supérieure
PCB face inférieure

Liste de composants

Quantité Description Vendeur Fabricant Référence Fabricant URL
1 Atmega328P Farnell Atmel ATMEGA328P-AU http://fr.farnell.com/atmel/atmega328p-au/mcu-8bit-atmega-20mhz-tqfp-32/dp/1715486
1 Quartz 16MHz 12.5PF Farnell Epson Q22FA23800181 FA-238 http://fr.farnell.com/epson/q22fa23800181-fa-238-16-mhz-12-5pf/quartz-fa-238-16mhz-50ppm-12pf/dp/1712816
80 Leds vertes CMS Farnell Kingbright KPH-1608CGCK http://fr.farnell.com/kingbright/kph-1608cgck/led-50mcd-vert-570nm/dp/2426210
20 Leds jaunes CMS Farnell Kingbright KPH-1608SYCK http://fr.farnell.com/kingbright/kph-1608syck/led-150mcd-jaune-590nm/dp/2426217
12 Leds rouges CMS Farnell Kingbright KPH-1608SURCK http://fr.farnell.com/kingbright/kph-1608surck/led-80mcd-rouge-630nm/dp/2426216
16 Leds oranges CMS Farnell Kingbright KPH-1608SECK http://fr.farnell.com/kingbright/kph-1608seck/led-180mcd-orange-601nm/dp/2426214
14 Leds bleus CMS Farnell Kingbright KPH-1608QBC-D http://fr.farnell.com/kingbright/kph-1608qbc-d/led-100mcd-bleu-465nm/dp/2426212
6 Transistor bipolaire NPN Farnell Fairchild Semiconductor MMBT3904 http://fr.farnell.com/fairchild-semiconductor/mmbt3904/transistor-npn-sot-23/dp/9846727
1 Régulateur de tension 5V Farnell STMicroelectronics L7805ACD2T-TR http://fr.farnell.com/stmicroelectronics/l7805acd2t-tr/regulateur-5v-cms/dp/1467759

Programme C

Carte électronique