Carte sapin de noël : Différence entre versions
(→Avancement du Projet) |
(→Avancement du Projet) |
||
(36 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 14 : | Ligne 14 : | ||
:* 1 Micro-contrôleur ATMega328P | :* 1 Micro-contrôleur ATMega328P | ||
− | :* | + | :* 142 LEDs (vertes, jaunes, rouges, oranges, bleues) |
− | :* 1 | + | :* 1 régulateur de tension 5V |
− | :* | + | :* 46 résistances |
− | :* | + | :* 7 condensateurs |
− | :* | + | :* 6 transistors NPN |
==Avancement du Projet== | ==Avancement du Projet== | ||
Ligne 33 : | Ligne 33 : | ||
− | Je vais donc utiliser 80 LEDs vertes, 12 LEDs rouges, 14 LEDs bleus, 16 LEDs | + | 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. | 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. | ||
Ligne 58 : | Ligne 58 : | ||
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. | 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. | ||
− | [[Fichier: | + | [[Fichier:Alim_FG2.png|800px|Schéma de l'alimentation de la carte]] |
=====Autres composants===== | =====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 PCB=== | ||
+ | [[Fichier:PlaquePCB.PNG|400px||thumb|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...). | 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=== | ===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 : | 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. | + | * 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 et 1 pour les LEDs bleues de la guirlande qui clignoteront en alterné. | + | * 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. | + | * 1 pour les LEDs jaunes qui clignoteront pour représenter des lumières ou boules lumineuses. ('''OC0A''') |
− | * 1 pour les LEDs | + | * 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 : | ||
+ | |||
+ | [[Fichier:MicroControleur_FG2.png|800px|Schéma de contrôle des LEDs avec les transistors]] | ||
+ | |||
+ | |||
====Utilisation de transistors==== | ====Utilisation de transistors==== | ||
− | Une façon simple de contrôler autant de LEDs avec seulement 6 broches est d'utiliser des transistors NPN. | + | 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 : | ||
+ | |||
+ | [[Fichier:CircuitLED_FG2.png|800px|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==== | ====Utilisation de multiplexeurs==== | ||
− | Une autre | + | 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== | ==Livrables== | ||
Ligne 92 : | Ligne 138 : | ||
Pour la réalisation de la schématique et du PCB, j'ai utilisé le logiciel ''Fritzing''. | Pour la réalisation de la schématique et du PCB, j'ai utilisé le logiciel ''Fritzing''. | ||
+ | |||
+ | [[Fichier:PCB_face_sup.png|400px|left|PCB face supérieure]] | ||
+ | [[Fichier:PCB_face_inf.png|400px|right|PCB face inférieure]] | ||
===Liste de composants=== | ===Liste de composants=== | ||
Ligne 104 : | Ligne 153 : | ||
| http://fr.farnell.com/atmel/atmega328p-au/mcu-8bit-atmega-20mhz-tqfp-32/dp/1715486 | | 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 | | Leds vertes CMS | ||
| Farnell | | Farnell | ||
− | | | + | | Kingbright |
− | | | + | | KPH-1608CGCK |
− | | http://fr.farnell.com/ | + | | http://fr.farnell.com/kingbright/kph-1608cgck/led-50mcd-vert-570nm/dp/2426210 |
|- | |- | ||
− | | | + | | 20 |
| Leds jaunes CMS | | Leds jaunes CMS | ||
| Farnell | | Farnell | ||
− | | | + | | Kingbright |
− | | | + | | KPH-1608SYCK |
− | | http://fr.farnell.com/ | + | | http://fr.farnell.com/kingbright/kph-1608syck/led-150mcd-jaune-590nm/dp/2426217 |
|- | |- | ||
− | | | + | | 12 |
| Leds rouges CMS | | Leds rouges CMS | ||
| Farnell | | Farnell | ||
− | | | + | | Kingbright |
− | | | + | | KPH-1608SURCK |
− | | http://fr.farnell.com/ | + | | http://fr.farnell.com/kingbright/kph-1608surck/led-80mcd-rouge-630nm/dp/2426216 |
|- | |- | ||
− | | | + | | 16 |
− | | Leds | + | | Leds oranges CMS |
| Farnell | | Farnell | ||
− | | | + | | Kingbright |
− | | | + | | KPH-1608SECK |
− | | http://fr.farnell.com/ | + | | http://fr.farnell.com/kingbright/kph-1608seck/led-180mcd-orange-601nm/dp/2426214 |
|- | |- | ||
| 14 | | 14 | ||
| Leds bleus CMS | | Leds bleus CMS | ||
| Farnell | | Farnell | ||
− | | | + | | Kingbright |
− | | | + | | KPH-1608QBC-D |
− | | http://fr.farnell.com/ | + | | http://fr.farnell.com/kingbright/kph-1608qbc-d/led-100mcd-bleu-465nm/dp/2426212 |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | | | + | | 6 |
− | | | + | | Transistor bipolaire NPN |
| Farnell | | Farnell | ||
− | | | + | | Fairchild Semiconductor |
− | | | + | | MMBT3904 |
− | | http://fr.farnell.com/ | + | | http://fr.farnell.com/fairchild-semiconductor/mmbt3904/transistor-npn-sot-23/dp/9846727 |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| 1 | | 1 |
Version actuelle datée du 13 février 2017 à 15:20
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
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
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.
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
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 :
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 :
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.