This commit is contained in:
2026-03-22 15:24:29 +01:00
parent ff63e45d0b
commit 240c220c38
15 changed files with 311 additions and 10 deletions

BIN
.DS_Store vendored

Binary file not shown.

BIN
Rapport/.DS_Store vendored

Binary file not shown.

269
Rapport/Rapport.typ Normal file
View File

@@ -0,0 +1,269 @@
= Projet de semestre CSH
= Lumière vidéo 200W bicolore
Ceci est le rapport de mon second projet PCB.
== Qu'est ce que c'est
Je suis photographe en dehors des cours et un des outils qui est absolument indispensable en interieur c'est une ou plusieurs bonnes sources de lumière.
Comme je ne fais pas que de la photo mais aussi de la vidéo, cette source de lumière doit être constante (donc pas un flash) et en général plus de puissance on a plus on est contents.
Ca peut paraitre bizarre d'avoir des chiffres comme 100-200-500W pour des lampes, mais en photo et vidéo on utilise des diffuseurs de lumière pour avoir un rendu plus doux des ombres et cela réduit fortement l'intensité lumineuse effective et donc on a souvent besoin de beaucoup de puissance.
J'ai déja une lampe de 100W et clairement cela ne suffit pas et je suis obligé d'utiliser des "softbox" plus petites sinon c'est simplement inutilisable. Donc j'aurai vraiment un besoin de plus de watts.
En plus de ca j'aurais besoin qu'elle soit portable car pour le moment je suis obligé d'utiliser une prise secteur pour ma lampe de 100W et c'est assez insupportable en plus de rendre une utilisation en exterieur virtuellement impossible.
== Contraintes
Pour que le projet rentre dans le cahier des charges du cours il faut implémenter :
- Un MCU
- Une interface homme machine physique (boutons ecrans speakers etc.)
- Une commuication (I2C, SPI etc.) avec un capteur ou composant.
Dans notre cas, on ne devrait pas avoir de soucis à faire rentrer ces contraintes dans le projet.
Avec ce nouveau projet on a aussi plus de possibilités. *Si le projet les justifient* on peut par exemple :
- Faire un PCB plus grand que 3x3
- Utiliser autre chose que du FR-4 (ex alu pour la temperature)
- Utiliser des composants un peu plus marrants
- Utiliser 4 couches au lieu de 2
(Possibilités à faire valider par les profs évidemment)
== Choix des composants externes
=== Leds
Mfr nbr: CTM-22-4018-90-36-TWD6-F3-3
Mouser nbr: 896-CTM224189036TWD6
Ici j'aurais adoré pouvoir trouver une LED seule qui fasse bicolore et 200W. Maleureusement je n'ai pas trouvé de composants du genre sur mouser digikey ou conrad.
Il faut donc se rabattre sur la seconde option : Utiliser une matrice de leds.
Par chance il existe des leds plutôt puissantes qui tiennent sur leur propre PCB en aluminium comme par exemples celle la :
#figure(
image("/assets/LED.png", width: 50%),
caption: [Image prise de la datasheet avec mesures de la LED],
)
Chaque pièce peut sortir jusqu'à 50W. 25W par canal de couleur. Pour contrôler la température il faut donc alimenter plus ou moins un canal par rapport à l'autre.
Il faut donc 4 leds pour arriver aux 200W.
Cette option est un peu moins bonne qu'utilise une seule led de 200W car cela prend plus de place et selon la distance avec le sujet on pourrait voir les 4 sources mais je pense que avec une telle puissance cela ne va pas se voir du tout.
=== Refroidissement
Avec des LED aussi puissantes, la gestion de la chaleur est absolument critique.
On va dimensionner le refroidissement en partant du principe que les leds convertissent 20% de l'énergie en lumière et 80% en chaleur ce qui est une estimation plutôt conservatrice. Cela veut dire qu'il faut dissiper environs 160W de chaleur tout en fardant les leds en dessous de 85 degrés qui est la valeur max recommandée dans la datsheet.
En partant du principe que notre circuit va fonctionner dans une température ambiante de 30 degrés celsius, notre budget est donc de 55 degrés.
Le RTH(ou Rθ) de nos leds est de 0.27 donc une montée de 13.5 degrés. L'epoxy thermique a un RTH de 0.1 donc 5 degrés.
Pour le radiateur on a donc le droit à 36 degrés de budget et donc 36.5 /160 = à peu près 0.22.
Et en fait 0.22 de RTH pour un radiateur c'est très peu, en réalité des radiateurs passifs avec ce genre de resistances thermique ca n'existe pas vraiment (dans une taille raisonnable) donc il va falloir prévoir du refroidissement actif en plus.
==== Radiateur
Pour donner une idée, voici les deux radiateurs qui viennent avec les processeurs Intel et AMD. Ce sont ceux qui sont livrés avec les processeurs que l'on peut overclock et donc les plus puissants de leur gamme.
#figure(
grid(
columns: 2, // 2 means 2 auto-sized columns
gutter: 2mm, // space between columns
image("/assets/INTEL_rad.png", width: 100%),
image("/assets/AMD_rad.png", width: 100%),
),
caption: "radiateurs de processeurs intel et AMD"
)
Le ventirad Intel n'a un TDP que de 65W tandis que l'option AMD a un TDP de l'option AMD est de 140W.
Le TDP est une unité de mesure un peu bancale utilisée pour les radiateurs de CPU, mais déja on peut voir que avec nos 160W de leds on est au dela quoi qu'il arrive.
ChatGPT a estimé ces deux radiateurs entre 0.45 et 0.60 pour le intel et 0.35 à 0.5 pour l'option AMD et c'est avec un ventilo car sans on arrive vite dans les 1.7-2.
Et même si on va dans les radiateurs vraiment balèzes comme :
#figure(
image("/assets/Noctua_rad.png", width:50%),
caption: [Radiateur Noctua réputé pour être très performant],
)
Noctua nous indique qu'il est adapté à une charge dans les 180W. Ce qui en théorie nous irait mais c'est déja à la limite et il est absolument immense ce qui rend l'idée de faire une lampe portable ridicule...
En plus de cela, la surface que les leds représentent est de environs 60x60mm ce qui est beaucoup plus grand que les 38x40mm que propose l'option Noctua.
Alors on pourrait aussi ne pas utiliser un radiateur de processeur. Il existe pleins d'options qui pourraient peut-être nous aller ou on pourrait même le faire nous même. Cependant, ces options sont beaucoup plus onéreuses et souvent plus volumineuses. L'objectif de refroidir des choses plutôt petites et plates qui chauffent beaucoup est typiquement la raison d'être des radiateurs de CPU et il en existe tellement que les prix sont beaucoup plus intéressants.
Maintenant on a toujours pas d'option acceptable donc il va falloir creuser un peu plus. Je me suis dit qu'il nous restait une option c'est les radiateurs de processeurs de serveurs. Et oui, le radiateur noctua n'a pas beaucoup de surface côté processeur car les processeurs classiques intel et AMD sont plutôt petits, mais ce n'est pas le cas des processeurs de serveurs depuis plusieurs années.
J'ai donc trouvé mon bonheur en cherchant des radiateurs de serveurs avec ce modèle : *Le Dynatron A51 !*
Lien digitec : https://www.digitec.ch/fr/s1/product/dynatron-a51-refroidisseur-cpu-1u-pour-socket-sp6-passif-27-mm-ventirad-processeur-39319613
#figure(
image("/assets/radiateur.png", width:50%),
caption: [Dynatron A51],
)
C'est un radiateur en cuivre fait pour être utilisé dans des serveurs fins (1U). il est beaucoup moins volumineux que les autres options disponibles, il a un TDP de 200W donc normalement ca devrait passer avec du refroidissement actif et la surface de contact est tout simplement énorme :
#figure(
image("/assets/radiateur_specs.png", width:50%),
caption: [Dynatron A51],
)
On peut voir que de la pâte thermique est appliqués de base sur une surface de 72x52. mais la surface de refroidissement est plus grande que ca et cela veut aussi dire que ca nous laisse même de la place pour le PCB.
La seule chose à prendre en compte c'est que le flux d'air attendu par ce genre de radiateurs est dans le sens de ses ailettes et non de haut en bas ce qui veut dire que selon la configuration du ventilateur on pourrait faire des sacrifices en performance.
==== Ventilateur
Ici le choix est asez vite fait.
J'avais deux options de classe de ventilateur comme la tension nominale de ma batterie est de 48V.
+ Un ventilateur 48V "plug and play"
+ Un ventilateur 12V qui demande de l'électronique supplémentaire
Techniquement un ventilateur 48V supporterait très certainement les 55V de la batterie pleine et clairement l'option "facile" serait d'en utiliser un. Cependant il y a deux énormes problèmes avec cette option.
+ La plupart des ventilateurs 48V sur Mouser ou Conrad sont des ventilateurs qui font un bruit PAS POSSIBLE et qui n'ont pas des dimensions très intéressantes
+ Ils sont étonnemment chers. Je pense que en grande quantité cela doit être différent mais la clairement même financièrement ce n'est pas intéressant.
J'ai donc décidé d'ajouter un Buck à mon projet pour pouvoir utiliser des ventilateurs classiques 12V même si cela ajoute une petite complexité au PCB.
Et comme ventilateur j'ai choisi le Noctua NF-P12. La raison est que c'est un ventilateur peu onéreux mais très silencieux et qui est utilisé sur des radiateurs de processeurs Noctua.
#figure(
image("/assets/Noctua_fan.png", width:30%),
caption: [Noctua NF-P12],
)
Lien Digitec : https://www.digitec.ch/fr/s1/product/noctua-ventilateur-nf-p12-redux-1700-pwm-120-mm-1-x-ventilateur-pc-12826297
=== Batterie
WIP
== Choix des composants du circuit
=== MCU
C'est le cerveau de notre circuit. J'ai choisi le RP2040
Mfr nbr : SC0914(13)
Mouser nbr : 358-SC091413
#figure(
image("/assets/RP2040_schem.png", width:50%),
caption: [Schematic du RP2040],
)
J'ai choisi ce MCU car j'ai de l'experience avec, il est extrèmement abordable et il est facile à intègrer.
Si il y avait besoin de connection sans fil, de très faible consommation ou de beaucoup de calculs de floats la reflexion aurait été différente mais pour notre application il est largement suffisant.
Raspberry Pi propose un
#link("https://pip-assets.raspberrypi.com/categories/814-rp2040/documents/RP-008279-DS-1-hardware-design-with-rp2040.pdf?disposition=inline")[
guide
]
très complet qui donne des indications précieuse sur comment bien intègrer le RP2040 dans notre design.
Cependant, ce MCU demand un certain nombre de composants accessoires pour bien fonctionner.
==== Composants accessoires
#figure(
image("/assets/RP2040_components.png", width:50%),
caption: [Schematic de la flash et du crystal],
)
Pour fonctionner, le RP2040 a besoin d'un certain nombre de composants supplémentaires que certains MCU concurrents emportent avec eux (Ex des ESP32) en voici la liste :
+ Des capa de découplage
+ Des switchs de reset et de bootsel
+ Une flash
+ Un oscillateur
+ Une entrée USB pour flasher le firmware
Pour les capa, en principe on devrait en avoir un par pin d'alimentation mais le guide fournis par raspberry indique que on peut s'en sortir avec un peu moins.
Pour les switchs de RST et de BOOT on en reparle dans la partie IHM mais seul le switch de BOOT est obligatoire car sans lui on ne peut pas reprogrammer le MCU.
Pour la flash il y a des options proposées dans la documentation de Raspberry mais j'ai préfèré en choisire une générique sur Mouser
Mfr nbr: IS25LP032D-JNLE-TR
Mouser nbr: 870-IS25LP032DJNLETR
C'est une flash de 32Mb ou 4MB ce qui suffit largement pour notre utilisation. elle est même plutôt overkill mais c'est pour autoriser plus tard l'utilisation d'un écran et donc pouvoir stocker de petites images pour une UI.
Pour l'oscillateur j'ai choisi le même que celui utilisé avec les raspberry pico.
Mfr nbr: ABM8-272-T3
Mouser nbr: 815-ABM8-272-T3
Et pour l'USB il faut simplement deux resistances de 27 ohm comme indiqué dans la documentation de Raspberry pour complèter l'impédence interne des pistes D+ et D-.
=== Drivers LED
Mfr nbr: ZXLD1366ET5TA
Mouser nbr: 522-ZXLD1366ET5TA
Pour driver ces leds il faut se concentrer sur les besoins des leds. Ces dernières ont besoin de :
+ 34V à 37V mais normalement 36V
+ 700mA par canal avec un max à 850mA
+ Deux inputs différents pour contrôler la température de la couleur
Un choix a été fait, une batterie de 13 cellules en série sera utilisée pour que même avec des cellules vides on reste correctement en dessus des 36V de la Led et que le driver n'aie que besoin de décendre la tension et aussi de ne pas demander trop d'ampères sur des cellules 18650 qui n'aiment pas en donner beaucoup.
Mais une autre approche aurait été de partir d'une batterie avec moins de cellules en série et choisir un driver qui booste la tension au prix de plus de courant et une efficience peut-être inférieure.
L'option la plus simple avec ces contraintes serait de trouver deux drivers de leds qui peuvent chacuns driver les 100W de chaque canal de leds. Cependant je n'en ai pas trouvé et donc il a fallu passer sur la seconde option.
La seconde option est d'avoir un driver par canal par led. 8 driver au total ce qui veut dire que chaque driver doit simplement gèrer 25W au grand maximum et donc 0.7mA.
Pour cette option, le ZXLD1366ET5TA est donc parfait. Le seul inconvénient c'est que le package est petit et donc il pourrait chauffer facilement et cela multiplie par 4 le nombre de composants accessoires à utiliser et donc on prend beaucoup de place.
==== Composants accessoires
Le coût de ce driver de leds se trouve surtout sur les composants dont il a besoin. Pour qu'il fonctionne correctement il a besoin de :
+ Un gros capa de decouplage
+ Une grosse inductance
+ Une grosse diode
+ Une resistance de config
+ Un capa pour le soft start de la led
Et pour driver le composant directement depuis le Rp2040 qui n'a pas de DAC intègré il faut des composants supplémentaires mais qui sont plus classiques.
+ Un filtre passe-bas (capa + resistance)
+ Une resistance de pull-down pour eviter que les leds s'allument le temps que le MCU démarre.
Pour les capa si c'était à refaire je pense que j'essaierais de trouver des options non electrolythiques même si c'est parfois difficile de trouver des options qui ne sont pas trop chères.

View File

@@ -1,4 +1,4 @@
= Projet 2 Lumière photo
= Projet 2 - Lumière photo 200W
Et c'est reparti pour un tour avec un nouveau projet.
@@ -13,9 +13,14 @@ Ce projet doit inclure :
Possibilités :
- Utiliser un PCB 4 couches si nécessaire ou dans une autre matière si besoin (Ex un PCB alu pour des raisons de température)
- Utiliser des composants intéressants qui pourraient demander un peu de budget (dans la limite du raisonnable évidemment)
- Faire le projet qu'on veut !
Avec ce nouveau projet on a aussi plus de possibilités. *Si le projet les justifient* on peut par exemple :
- Faire un PCB plus grand que 3x3
- Utiliser autre chose que du FR-4 (ex alu pour la temperature)
- Utiliser des composants un peu plus marrants
- Utiliser 4 couches au lieu de 2
(Possibilités à faire valider par les profs évidemment)
== Idée de projet :
@@ -79,7 +84,7 @@ Ce modèle est de loin le plus intéressant : CTM-22-4018-90-36-TWD6-F3-3
Mouser nbr: 896-CTM224189036TWD6
#image("assets/image-4.png")
#image("assets/LED.png")
C'est un module LED bicolore qui peut envoyer jusqu'à 25W sur chaque channel donc 50W au total.
@@ -416,12 +421,11 @@ L1 de 100uH le ventilo ne tire que 0.1A donc BWVS00404018101M00 mouser nbr: 603-
Comme on utilise un FET en low side (du côté GND de la batterie), on a le risque de griller des composants qui ne sont pas sur le même circuit au moment ou le GND est coupé.
Il faut donc isoler les lignes de communications entre le MCU et les bucks et les drivers de led avec des optocoupleurs.
Il faut donc isoler toute communication entre le BMS et le MCU.
J'ai trouvé ce modèle qui me parait pas mal :
On a isolé le bus I2C avec un composant qui fait exactement ce travail le ISO1540 qui coute super cher mais c'est la seule veritable option.
Modèle TLP155E(TPL,E)
Digikey nbr : TLP155E(TPLE)TR-ND
Pour isoler la ligne ALERT du BMS il va falloir utiliser un optocoupler très simple comme le PC817 mouser nbr: 852-PC817X1CSP9F
==== Specs
@@ -509,7 +513,12 @@ Il a une monture verticale donc il faut la même chose pour le potentiomètre
Pour le potentiomètre j'ai trouvé ca :
modèle : PDB12-H4151-104BF
Mouser nbr : 652-PDB12-H4151104BF
Mais en fait il n'est pas dans l'orientation que je pensais donc il faut plutôt prendre ce modèle :
mouser nbr:
Il a une réponse linéraire ce qui est pas mal comparé à d'autres options un peu plus cheap. il peut se monter verticalement également
@@ -517,6 +526,8 @@ Pour tout ce qui est boutons d'interraction avec les composants comme le bootsel
Mouser number: 611-PTS636SKG25JSMTR
=== Ecran
Pour l'écran dans un premier temps on ne va pas trop s'embêter car le projet est déja assez complexe comme ca. Il y aura des GPIO disponibles en plus et je pense que l'écran ne sera pas une priorité
@@ -558,6 +569,27 @@ Dernière version de mon kicad :
#image("assets/Kicad.png")
=== Contraintes
#image("assets/contraintes.png")
=== Erreurs ou faiblesses du design
==== Points à corriger absolument
+ Le design de contrôle PWM ventilateur qui est trop simpliste et à peine utilisable
+ Le rail 12V qui est inutilisable et qui force la carte entière en quasi court circuit si on ne le désactive pas
+ (peut-être) Revoir le placement d'un capa du buck 3.3V
+ Inversion des pins 5-7 de la flash (grossière erreur)
+ Mauvais choix de resistances pour le filtre PWM des drivers de leds (10k -> 1k)
+ Manque d'une pulldown de 4.7kR sur la pin ADJ des drivers de led pour ne pas laisser la pin flottante quand le MCU démarre
==== Points généraux
+ Potentiomètre et encodeur un peu proches
+ Footprint du RP2040 qui force un PCB très cher chez eurocircuit
+ Design avec 8 drivers pénible et qui prend beaucoup de place (un design avec seulement deux drivers un peu plus chers mais qui peuvent encaisser les 100W chacuns serait bien plus idéal et pourrait potentiellement amener un PCB plus petit ce qui rembourserait le surcôut des drivers eux mêmes)
+ Buck 12V un peu archaique plutôt gros et qui demande des capa énormes donc une place disproportionnée pour son utilité sur le circuit

BIN
Rapport/assets/AMD_rad.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB