= 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 de LEDS

#figure(
    grid(
        columns: 2,     // 2 means 2 auto-sized columns
        gutter: 2mm,    // space between columns
        image("/assets/led_driver_V1.png", width: 100%),
        image("/assets/led_driver_V2.png", width: 100%),
    ),
    caption: "Driver utilisé dans la V1 à gauche et celui utilisé dans la V2 à droite"
)

Pour la V1 du PCB j'ai utilisé une approche à 1 petit driver par canal (donc 2 par LED et 8 en tout) alors que pour la V2 je suis passé sur un plus gros driver qui peut gèrer deux canaux à la fois (4 en tout)

Le driver de la V1 est le :

mfr nbr: ZXLD1366ET5TA
Mouser nbr: 522-ZXLD1366ET5TA

Prix unitaire: 2,13 CHF tot: 17,04CHF

Le driver de la V2 est le :

mfr nbr: ALT80800KLPATR
mouser nbr: 250-ALT80800KLPATR

Prix unitaire: 1,43 tot: 5,7CHF

Le driver de la V1 peut en théorie supporter 1A ce qui est suffisant pour un seul canal de LED et son form factor a beau être petit, ses composants accessoires ne le sont pas et la dissipation thermique du package peut laisser à désirer car il n'y a pas de pad sous le composant en plus de sa petite taille.

En plus cette option est très onéreuse comparé à la V2 mais elle permet de contrôler individuellement chaque canal de led et les chips sont assez simple à driver.

Le driver de la V2 est bien moins onéreux et peut en plus gèrer 2.5A donc deux canaux de LEDS à pleine balle sans soucis. Comme dans notre cas, en théorie on n'a que le canal chaud et froid à driver indépendemment ca ne pose pas de problème.

Cependant il est tout de même plus difficile à implémenter comparé à celui de la V1.

==== Composants accessoires

Pour la V1 je ne vais pas trop m'étendre dessus à part pour dire que la résistance de 10K était trop grande et qu'il manquait une pull down de 4.7k. 

La première erreur fait qu'il était impossible d'éteindre la LED même avec un PWM très bas et la seconde est plus subtile, le soucis est que quand le MCU démarre ou redémarre les pins de contrôles sont laissées flottantes et donc VREF qui est de base autout de 1.2V prime et allume les drivers ce qui fait que les leds flashent au démarrage ce qui est pénible et quand on flash le MCU elles restent allumées.

Pour la V2 en plus des capacités de découplage selfs et diodes normales il y a quelques petits détails supplémentaire. 

+ Je ne voulais plus utiliser de capaciteurs electrolythiques car leur durée de vie est limitée surtout dans des environnements plutôts chauds ce qui est notre cas. Cela veut dire que j'ai choisi de partir sur des capa céramiques en série pour atteindre la capacité demandée dans certains cas.
+ La self est le composant le plus massif mais impossible de trouver plus petit avec le courant qui peuvent passer qui aient une resistance interne pas trop horrible. Le but n'est pas d'avoir un four sur mon PCB par ce que j'ai voulu trouver l'inductance la moins chère possible.
+ J'ai ajouté des resistance de ballast qui empêchent le courant qui passe dans les leds de dépasser les 800-850ma. Cela permet d'éviter que le driver envoie un courant correct mais désequilibré ce qui pourrait endommager une led.

=== Alimentation (bucks)

#figure(
    grid(
        columns: 2,     // 2 means 2 auto-sized columns
        gutter: 2mm,    // space between columns
        image("/assets/BucksV1.png", width: 100%),
        image("/assets/BucksV2.png", width: 100%),
    ),
    caption: "Bucks utilisés dans la V1 à gauche et ceux de la V2 à droite"
)

Pour l'alimentation de mon circuit, comme on travaille avec une tension relativement élevée (entre 40 et 55V) on doit descendre la tension pour nos composants accessoires. Les drivers de leds ont un buck interne donc pas besoin de s'en soucier.

Dans la V1 on avait uniquement besoin de 3.3V pour l'électronique et de 12V pour le ventilateur. C'est pour ca que il y a moins de chips.

L'erreur a été de choisir un très vieux driver le buck 12V et une self beaucoup trop petite. Cela a rendu le PCB plus gros que nécessaire à cause des immenses capacités et cela bloquait le circuit entier car la demande en courant était proche du court circuit à cause du mauvais dimensionnement des composants. Le buck 3.3V n'avait pas de problème et fonctionnait très bien.

Dans la V2 on a un peu plus de complexité à cause des circuits supplémentaires et de features ajoutées.

On a besoin de deux bucks 3.3v différents car dans le second PCB on peut alimenter le MCU sans forcément changer la batterie. Cela veut dire qu'on doit avoir un chip qui convertis le 5V du VBUS quand l'USB est connecté et un chip qui fait convertis la tension de la batterie en 3.3V en opération normale.

En plus de ca, dans la V1 chaque chip prenait la tension de la batterie et l'adaptait. Désormais c'est le buck 12V qui descend la tension et le buck 3.3V part des 12V pour descendre à 3.3V. Cela permet de grandement réduire le prix du chip et des composants accessoires nécessaires pour chaque buck.

Le bukc 12V a été remplacé par une version bien plus récente qui demande des composants externes biens plus cohérents et qui prend des ordres de magnitudes moins de place tout en gardant les mêmes capacités de courant.

Dernière subtilité, l'écran ajouté dans la V2 du PCB a besoin d'une alimentation 14V et donc j'ai choisi de prendre un boost qui part des 3.3V et qui monte la tension à 14V. J'ai choisi de partir de 3.3V car cela permet d'alimenter l'écran même sans que la batterie soit connectée.

==== Switch automatique d'alim 3.3v

Une des features ajoutées dans la V2 du PCB est la possibilités d'utiliser toutes les fonctions du PCB à part les LEDS directement depuis une alimentation USB.

#figure(
  image("/assets/psu_autoswitch.png", width:50%),
  caption: [chip d'autoswitch des alimentations],
)

Cela permet de ne pas avoir besoin de brancher la batterie pour debugger ou se balader dans les menus de la lampe ce qui est très pratique.

C'est ce chip qui s'occupe de changer automatiquement l'alimentation 3.3V avec une priorité pour le 3.3V qui vient de la batterie car il peut delivrer plus de courant et cela permet de retirer l'USB a tout moment si la batterie est branchée.

=== BMS

#figure(
  image("/assets/bms.png", width:100%),
  caption: [Circuit de protection de la batterie],
)

Le bms est le composant le plus pénible de tout le circuit car il demande énormément de composants passifs et il est très facile de faire des erreurs.

Dans la première version du PCB, il y avait un certain nombre d'erreurs, la pire êtant que j'avais branché regsrc à VBATT ce qui a tué le chip. Dans certains schematics simplifiés il était indiqué qu'on pouvait le faire mais après relecture de la documentation, quand on dépasse les 25V de VBATT il était demandé d'utiliser un mosfet suiveur pour décendre la tension.

# A suivre 







