Partie 2 - Choix techniques
Index :
- Partie 1: Post-mortem V0, objectifs et spécifications des V1
- Partie 2 (vous êtes ici) : Choix techniques
- Partie 3: Conception électronique
- Partie 4: Conception mécanique
- Partie 5: Conception logicielle
- Partie 6: Pré-série industrielle (construction de 200 lanternes)
- Partie 7: Post-mortem & conclusion
En déroulant les spécifications posées dans la Partie 1, on peut décider de solutions techniques réelles. Ce post déroule ces solutions techniques choisies et les justifications qui accompagnent ces choix.
Châssis
Je veux une lanterne cylindrique, format canette, pour plusieurs raisons :
- standard facile à se procurer
- répartition des forces équilibrée
- pas d’angles aigus autour desquels les rubans risqueraient de s’abimer
- compact à ranger dans un sac.
Pour la matière, je voudrais une matière légère et résistante, donc soit du plastique, soit de l’aluminium. Dans mon cas d’utilisation, un tube en plastique est plus adapté, car cette matière n’est pas électriquement conductrice, et plus légère que du métal.
J’ai choisi de m’orienter vers des tubes en PVC format évacuation d’eau, qui sont très communs à sourcer et à travailler. Les diamètres standards utiles dans mon cas peuvent être de 20 mm à 80 mm, par incréments de 10 mm.
Les diamètres les plus agréables sont le 40 mm, 50 mm et 60 mm (une canette standard est entre 55 mm et 60 mm).
Je sais déjà que j’utiliserai des batteries 18650 ou 21700, car elles sont extrêmement matures, solides durables, communes à sourcer et installer… Ce sont des batteries cylindriques, qui seront donc installées verticalement dans le tube
Un tube de 40 mm ne peut accepter que des configurations de batterie 2x18650 ou 1x21700, ce qui est trop peu pour mon utilisation.
Afin de garder un peu de marge pour l’épaisseur des Leds et la protection autour, le choix sera un tube de diamètre 50 mm, avec une paroi de 2 mm d’épaisseur. L’épaisseur de 2 mm est un bon compromis entre la solidité et la place interne du tube.
La hauteur du tube sera fixée à 120 mm, qui est le meilleur compromis en termes de taille/sensation/visuel, et permet de contenir largement les batteries et le circuit.
Choix d’un tube PVC 120 mm de haut, diamètre externe 50 mm, diamètre interne 46 mm
Ce tube posera des contraintes de conduction de chaleur, et limitera la capacité du système à être utilisé à forte puissance.
Pièces sur mesure
Les extrémités du tube seront refermées par des pièces sur mesure. Ces pièces auront des formes complexes, et ne nécessiteront pas de résistance particulière.
Ces pièces seront fabriquées en PLA par FDM (Dépôt de Matière Fondue, c.-à-d. impression 3D) pour avoir une grande liberté de formes et un coût réduit. Leur utilisation ne sera pas affectée par les faiblesses de la FDM (fragilité le long des couches, faible résistance a la chaleur…) et du PLA (dégradation dans l’eau, au soleil…).
Éclairage
Caractéristiques communes
Afin de minimiser le temps d’assemblage, on utilisera un ruban LED plutôt que des LED individuelles à souder. De plus la plupart des rubans LED sont équipés d’un dos autocollant, ce qui résout le problème de comment les fixer. Ils sont également sectionnables tous les quelques centimètres, et visuellement jolis pour les versions COB.
Les rubans sont aussi majoritairement pilotables en CV (constant voltage) plutôt que CC (constant current), ce qui est plus facile à calibrer pour une alimentation électronique.
Afin de réduire la taille des composants électriques, le courant utilisé devra rester faible (< trois ampères), ce qui implique une tension d’alimentation plus élevée. De plus, l’intensité lumineuse ne doit pas chuter sur la distance du ruban, ce qui tant à arriver avec des tensions plus basses (< 9 V) sur de longs rubans. Cela peut être résolu en soudant une alimentation des deux cotés, mais ça ajoutera des contraintes structurelles et d’assemblage en plus.
Mon choix se porte donc sur des rubans 12 V, plus simples à gérer que du 24 V avec l’électronique que je prévois d’utiliser, et qui ne nécessiteront pas d’être alimentés par les deux bouts.
L’équation pour le maximum de la longueur d’un ruban enroulé autour d’un tube sera :
$$ L \leq \frac{H}{p} \cdot \pi \cdot D $$
Avec $L$ la longueur du ruban pour couvrir le tube de haut en bas, $H = 120 mm$, $D = 50 mm$, et $p$ la largeur du ruban.
Donc la longueur du ruban devra être inférieur ou égale à $19634.375 / p$.
Lanterne jaune
Pour la lanterne jaune, la couleur doit se rapprocher d’un jaune bougie (1800 - 2000 kelvin).
La densité de leds n’est pas très importante dans ce cas, la différence est visuellement minime et la consommation similaire entre les hautes et basses densités.
La largeur du ruban peut aller de 5 mm à 10 mm, les rubans plus larges conduisant mieux la chaleur et l’électricité, mais sont visuellement moins beaux. Utiliser un ruban plus fin reviendra aussi à utiliser plus de ruban lorsqu’il est enroulé autour du tube. Un ruban plus fin conduira moins bien la puissance et dissipera moins bien la chaleur.
Mes précédents prototypes utilisaient des rubans 480 L/M de 8 mm de large.
J’ai donc choisi 480 Leds/mètres à 12 V, format COB, ruban de 8 mm de large, consommation annoncée de 1 A/m.
La longueur du ruban sera $L ≤ 19634.375 / 8$, c’est-à-dire $L ≤ 2454.3 mm$.
La lampe jaune sera donc équipée d’un ruban de 2.45 mètres.
Sa consommation sera donc de $2.45 m * 1 A/m = 2.45 A$, autrement dit en Watt $2.45 A * 12 V = 29.4 W$.
Mesures réelles
Mesures réelles sur des échantillons de ruban jaune sur banc d’essai, longueur de 2.5 m :
| Luminosité | Voltage | Ampérage | Puissance |
|---|---|---|---|
| Minimum | 9.5 V | 0.05 A | 0.475 W |
| Typique | 10.88 V | 0.35 A | 3.8 W |
| Maximum | 12 V | 1.35 A | 16.2 W |
Lanterne colorée
Pour la lanterne colorée, je veux au moins 100 L/m pour avoir un résultat visuellement plaisant et facile à installer. Je voudrais aussi pouvoir contrôler individuellement chaque pixel. Cela oriente le choix vers un ruban RGB indexable COB.
La largeur du ruban peut aller de 5 mm à 10 mm, les rubans plus larges conduisant mieux la chaleur et l’électricité, mais sont visuellement moins beaux. Utiliser un ruban plus fin reviendra aussi à utiliser plus de ruban lorsqu’il est enroulé autour du tube, mais donnera plus de Leds à contrôler.
J’ai donc choisi 160 Leds/mètres à 12 V, format COB, ruban de 5 mm de large, consommation annoncée de 0.42 A/m, contrôlable avec le protocole WS2812B.
Le choix aurait également pu être un ruban identique de 240 L/m, mais son prix était prohibitif par rapport à la différence visuelle, et la documentation en plus peu fiable sur ses caractéristiques physiques, et la mémoire nécessaire augmente rapidement.
La longueur du ruban sera $L ≤ 19634.375 / 5$, c’est-à-dire $L ≤ 3926.875 mm$.
La lampe colorée sera donc équipée d’un ruban de 4 mètres, ce qui donnera $4 m * 160 L/m$ = 640 Leds individuellement contrôlables.
Sa consommation sera donc de $4 m * 0.42 A/m = 31.68 A$, autrement dit en Watt $1.68 * 12 V = 20 W$.
Mesures réelles
Mesures réelles sur des échantillons de ruban RGB sur banc d’essai, programmé en blanc (pire cas), longueur de 4M :
| Luminosité | Voltage | Ampérage | Puissance |
|---|---|---|---|
| Minimum | 12 V | 0.07 A | 0.845 W |
| Typique | 12 V | 0.65 A | 7.8 W |
| Maximum | 12 V | 2.6 A | 31.2 W |
La vraie densité de Leds est plutôt de 162.6 L/m.
Consommation typique
Résumé des caractéristiques des rubans et la puissance demandée pour un temps d’utilisation de 5H :
| Type | Consommation typique | Consommation maximum | Puissance d’alimentation pour 5H d’utilisation typique |
|---|---|---|---|
| Jaune | 3.8 W | 16.2 W | 19 WH |
| Colorée | 7.8 W | 31.2 W | 39 WH |
Protection des Leds
Des rubans déjà protégés existent en IP67, mais ceux que j’ai sélectionnés sont indiqués en IP20 et n’existent pas avec un meilleur IP.
Pour protéger les Leds de l’environnement, elles doivent être recouvertes par une couche transparente.
Possibilité d’un tube en plastique rigide transparent : difficile à intégrer, doit être épais pour être solide, retient la chaleur. Mais facile à intégrer sans plus de travail : couper un cylindre d’acrylique est aussi difficile que couper un cylindre PVC donc l’intégration est facilitée. Cette option a l’avantage de la solidité et étanchéité, mais ce genre de plastique a tendance à se rayer facilement, et ajoute un diamètre conséquent à la lampe.
Un tube en verre est exclu, car il casserait à la première chute.
Possibilité d’utiliser de la gaine thermorétractable transparente. J’en ai déjà testé avec succès sur plusieurs prototypes.
En utilisant une gaine très épaisse, on obtient le meilleur compromis efficacité/ergonomie. Le résultat est solide, agréable en main et assez élastique pour absorber des chocs.
Quelques problèmes par contre :
- Retient la chaleur, par design. Ces gaines rétrécissent à la chaleur, donc elles ne sont pas vraiment conductrices, et surchauffent la lampe. Ça diminue beaucoup l’efficacité en éclairant fort.
- Complexité a l’installation : couper des bouts à la bonne taille, c’est simple, mais il faut les enfiler au-dessus les leds (en évitant la poussière et autres trucs), chauffer le tout (ce qui peut déformer le tube PVC si on chauffe trop), et découper l’excès après rétractation (ce qui prend du temps)
- Vieilli mal : moins facile à rayer que de l’acrylique, mais terni et se détend un peu à long terme. Se répare facilement en la passant rapidement sous un flux d’air chaud, et en nettoyant la gaine à l’eau.
- Maintenance destructive : Impossible de réparer un problème avec les Leds sans couper la gaine et en mettre une nouvelle. C’est un petit problème, mais à garder en tête quand même.
J’ai décidé d’utiliser la gaine thermorétractable transparente, car les autres options ne me paraissaient pas adaptées.
C’est cependant un choix dont je ne suis pas convaincu, mais qui a résisté au test du temps et de l’utilisation, donc il était rétrospectivement plutôt bon.
Un autre choix ?? (click to expand)
Utiliser une gaine plus fine et rigide est également possible. Ce type de gaine est plutôt utilisé comme wrap de batterie Li-ion, et retient beaucoup moins la chaleur.
Elle est par contre rigide après rétractation et transmet les chocs directement au ruban Led, et est bien moins agréable à tenir et regarder.
Les Leds utilisées étant toutes COB, leur gaine de diffusion permet déjà d’absorber des chocs, ce qui rend cette option possible.
Alimentation
Batteries
Pour supporter les deux types de lampe avec le même matériel, on aura besoin d’une batterie qui peut fournir 39 WH minimum. En imaginant un rendement minimum de 90%, ça demande une batterie de 43 WH minimum.
Comparaison des formats de batteries li-ion :
| Format | Diamètre (mm) | Hauteur (mm) | Capacité (AH) | Voltage type (V) | C rate | Prix (€) |
|---|---|---|---|---|---|---|
| 18650 | 18 | 65 | 2 - 3.5 | 3.7 | 0.2 - 1 | 0.9 - 9 |
| 21700 | 21 | 70 | 3 - 5 | 3.7 | 1 - 4 | 1.4 - 10 |
Possibilités de configuration selon le tube choisi :
- 4 x 18650 Li-ion, maximum a environ 3.5 AH par cellule, c’est-à-dire 4 * 3.7 V * 3.5 AH = 51.8 WH
- 3 x 21700 Li-ion, maximum a environ 5 AH par cellule, c’est-à-dire 3 * 3.7 V * 5 AH = 55.5 WH
| Type de batterie | Capacité (WH) | Configuration | voltage min (V) | voltage standard (V) | voltage max (V) | Ratio de conversion à 12 V |
|---|---|---|---|---|---|---|
| 4x18650 | 51.8 | 1S4P | 3 | 3.7 | 4.2 | 285% - 400% |
| 2S2P | 6 | 7.4 | 8.4 | 143% - 200% | ||
| 4S1P | 12 | 14.8 | 16.8 | 71% - 100% | ||
| 3x21700 | 55.5 | 1S3P | 3 | 3.7 | 4.2 | 285% - 400% |
| 3S1P | 9 | 11.1 | 12.6 | 95% - 133% |
Li-ion 3S ou 4S pour maximiser l’efficacité autour de 12V : la conversion sera plus efficace s’il y a peu de différence de voltage.
La configuration 4S1P est théoriquement la meilleure d’un point de vue électronique, car elle a seulement besoin d’un buck converter et est plus proche que les autres configurations du voltage cible. C’est théoriquement la configuration la plus efficace en composants électrique et en rendement, mais elle donnera une autonomie plus faible de 3.7 WH.
Elle a cependant besoin d’une batterie en plus à assembler, ce qui ajoute un fil et une plaquette de nickel à souder. Cela ajoute du temps de construction et augmente le potentiel de casse des fils entre batteries. De plus les 18650 ont un courant un peu faible pour tenir la charge du ruban de Leds, ce qui ajoute au risque d’emballement thermique des batteries Li-ion.
La configuration 3S1P des 21700 est plus adapté dans ce cas, car avec une batterie en moins à assembler avec un gain de capacité, on gagne également en temps de construction et fiabilité. Les 21700 peuvent fournir plus d’Ampères que les 18650, ce qui permettra de maintenir une meilleure stabilité du voltage à forte luminosité. Cette configuration nécessite par contre un circuit buck/boost pour convertir une entrée de 9 V à 12.6 V en tension stable de 12 V, ce qui demande un peu plus de composants électroniques et est un peu moins efficace qu’un simple buck.
Un autre choix ?? (click to expand)
Début 2025, un nouveau format de batterie Li-ion a été mis à disposition des consommateurs : le 4680. Son nom devrait être 46800 pour suivre les conventions, mais elle a été créée par Tesla qui font vraiment ce qu’ils veulent.
Initiallement réservée aux véhicules électriques, elle serait idéale pour une lanterne :
| Format | Diamètre (mm) | Hauteur (mm) | Capacité (AH) | Voltage type (V) | C rate | Prix (€) |
|---|---|---|---|---|---|---|
| 4680 | 46 | 80 | 15 - 20 | 3.7 | 1 | 17 - 28 |
Pour le moment leur prix est très élevé, mais ce format commence à être adopté à plus grande échelle. Il offre une capacité d’environ 74 WH, ce qui est absolument fou à cette échelle !
Seul bémol, les courants et conversions de voltage nécessiteront des composants bien plus gros et chers que ceux utilisés actuellement dans la lampe. Par contre, une seule batterie ne nécessitera pas d’équilibreur, et un chargeur plus petit devrait suffire.
Une possibilité à garder en tête pour un projet utilisant une tension plus basse autour de 3 V ou 5 V !
Afin de faciliter l’assemblage, ajout d’un connecteur JST XH 4P 2.54mm pour brancher/débrancher la batterie. Cela Évite de souder les « hot wires » de batteries, qui provoquent beaucoup de problèmes de cours circuits lors de l’assemblage. Le connecteur est également plus résiliant que des fils simplement soudés et facilite l’assemblage et l’entretient.
Ce type de connecteur est prévu jusqu’à 3 A. Ajout d’un port femelle à souder sur le circuit (étape manuelle d’assemblage en plus).
Référence de batterie choisi : INR21700 M50LT : 4930 mAh, 14.4 A. Non protégés. Avec wrap.
Ces batteries proviennent d’un stock issu d’un projet automobile annulé, et sont donc moins chers, mais pas neufs, avec des restes de soudure (pas important dans notre cas). Prix de gros TTC : 1.85€ par batterie (achat de 640 unités) sur NKON.
Le wrap est essentiel, car les batteries sont physiquement très proches et sans cette couche isolante, elles seraient en cours circuit entre elles. La partie extérieure métallique des batteries de ce type est reliée au pôle -, et doit donc être isolé électriquement de l’extérieur. Dans mon cas, les batteries sont très proches et branchées en série. Si les parties métalliques se touchent, la batterie sera détruite.
Le wrap permet d’éviter ce cas. Utiliser un wrap non transparent permettrait de vérifier visuellement qu’il n’y a pas de risque de contact.
Le poids d’une batterie est approximativement de 60 g à 80 g, donc la batterie totale fera de 180 g à 240 g.
Conclusion: pack de batterie pouvant donner jusqu’à 14.4 A pic, 54.7 WH de capacité (4.93 A/H * 3.7 V * 3).
Durée de fonctionnement estimée :
| Lampe | Luminosité | Consommation (W) | Durée (optimiste) |
|---|---|---|---|
| Jaune | Minimum | 0.475 | 115H |
| Typique | 3.8 | 14.4H | |
| Maximum | 16.2 | 3.4H | |
| Colorée | Minimum | 0.84 | 65H |
| Typique | 7.8 | 7H | |
| Maximum | 31.2 | 1.75H |
Ce sont des estimations qui ignorent les pertes, mais sont indicatives du fait que les batteries choisies correspondent aux objectifs d’autonomie.
Dans la réalité, les batteries ne seront pas utilisées à 100% de leur capacité non plus pour optimiser leur durée de vie.
Port de charge
Je veux un port compact, solide, supportant charge et communication USB, et permettant la charge rapide. Ça implique de relier les fils de puissance VBUS et GND, les fils de donnée D+ et D-, et les fils de négociation PD (PowerDelivery) CC1 et CC2.
Possibilité d’utiliser un port USB soudé sur la carte et prévoir que les pièces plastiques puissent laisser passer ce port, avec un joint pour l’étanchéité, comme sur certains téléphones.
Ou utiliser un port déporté, sur un autre circuit ou même un composant totalement à part.
Le port déporté est plus facile à gérer pour moi, plus facile à se procurer, à remplacer, plus facile à étanchéifier.
J’ai décidé d’utiliser un port USB-C étanche déporté avec 6 fils de contrôle (VBUS, GND, D+, D-, CC1, CC2). VBUS pour la puissance, D+ et D- pour la communication, CC1 et CC2 pour la négociation de puissance. Puissance max par le fil de VBUS : 3 A.
Ce port ajoute un composant à visser sur un capuchon et six fils à souder sur le circuit.
Je veux protéger électriquement le port de l’environnement et des mauvais usages :
- cours circuit
- voltage trop haut (> 20 V)
- ESD (Décharge Électrostatiques)
- Cours circuit vers VBUS
J’utiliserai le composant TPD8S300 de TexasInstruments, dédié à la protection des ports USB-C, sauf de la ligne VBUS. Pour la ligne VBUS, ajout d’une diode ESD de 22 V.
Négociation de puissance de charge
Pour négocier la puissance en entrée sur le port USB (utilisation du PowerDelivery), besoin d’un composant dédié. Je veux choisir un composant très répandu, pour lequel des drivers ont déjà été faits, et avec un coût et taille faible.
- Choix initial du RT1715, qui n’a jamais fonctionné avec mes circuits.
- Changement pour le FUSB302 (ON Semi) qui a la même empreinte et pins.
Ce composant peut négocier en PD2.0 tous les PDO standard (jusqu’à 20V 3A) et des PDO spéciaux jusqu’à 100 W (20 V 5 A). Il est également capable de changer de rôle (source -> sink / sink -> source), ce qui permet d’implémenter le mode batterie externe.
Les PDO au-dessus de 20 V 3 A sont disponibles pour les chargeurs standard qu’avec une circuiterie VCONN, que j’ai décidé de ne pas ajouter, mon port USB étant limité à 3 A, et les batteries ne pouvant pas fournir assez de courant.
Le système aura donc accès à de nombreuses configurations de voltages et ampères en entrée (PDO).
Chargeur et équilibrage
Composant de charge
Le système doit pouvoir charger une batterie 3S1P depuis une entrée port USB-C (5V-20V négociable via PD).
- Choix initial de BQ25703A, qui prend en entrée de 3.5 V à 24 V, et une sortie de 4.48 V à 20.8 V. Support I2C et Mode OTG qui permet d’envoyer une tension sur le port USB (mode batterie externe). Excellentes performances annoncées autour de 12V.
- Changement pour le composant BQ25713 qui propose une meilleure résolution OTG, et est plus moderne.
Ce composant est un chargeur de batteries Li-ion, associé à un ensemble de capteurs intégrés, un watchdog, un mode sommeil et un mode OTG qui permet de l’utiliser comme générateur de tension réglable, de 3 V à 22 V. Il peut également gérer jusqu’à 20 V 6 A (c.-à-d. 120 W), ce qui est au-dessus de ce que les batteries peuvent fournir, ce qui laisse une bonne marge de sécurité.
Le mode OTG peut générer une tension précise associé à une limite de courant sur la ligne VBUS, pour alimenter le port USB en puissance. Associé à notre composant de négociation USB PD, la lampe pourra donc faire batterie externe.
Équilibreur de batteries
Avec le chargeur, il faut prévoir un composant pour équilibrer les batteries entre elle, pour qu’elles restent toujours a la même différence de voltage. Un équilibreur est obligatoire quand on utilise plusieurs batteries en série.
Critères : support 3S, I2C, peu de composants, petit format.
- Oriente vers un équilibreur passif, qui nécessite moins de composants, mais qui est aussi moins efficace. Les batteries seront équilibrées uniquement lors de la charge pour compenser ce manque d’efficacité.
- Choix du BQ76905 (adresse 0x08), équilibreur pour 2 à 5 cellules, multiples capteurs. Taille très réduite !
Ce composant peut même servir de BMS, et propose de nombreuses sécurités, que je ne vais pas utiliser, car elles sont redondantes avec celles du BQ25713 et je manque déjà de place sur le circuit.
Il est également possible de l’utiliser comme watchdog hardware, mais j’ai loupé cette possibilité lors du design.
Alimentation des Leds
Contrôleur d’intensité
J’avais prévu au départ d’ajouter un composant dédié, et là, il y a eu une réalisation : le mode OTG du module de charge de batterie remplit déjà ce rôle ! Il peut produire une tension programmable entre 3 V et 20 V, avec un maximum de 6 A, parfait pour ce que je veux.
Afin de supporter à la fois le mode batterie externe et alimenter les Leds avec la même sortie OTG, j’ai besoin d’ajouter une porte USB-C, et une porte alimentation externe, qui me permettent de choisir ou envoyer la puissance générée par le chargeur.
Seul bémol de cette méthode : on ne peut plus charger et allumer la lampe en même temps, ce qui est un bon trade-off selon moi.
Il faudra aussi prévoir en software que le contrôle de la luminosité des rubans ne sera pas linéaire, car ils seront contrôlés par CV plutôt que CC.
Portes de puissance
Afin de choisir si on veut envoyer de la puissance aux Leds ou au port USB, il faut deux portes :
- La porte USB qui doit laisser passer de 3 V à 20 V, et supporter le fast role swap.
- La porte de puissance des Leds. Je vais créer une porte sur mesure à base de MOSFET P-channel.
Le premier prototype utilisait une low side gate, plus avantageuse niveau puissance et composants.
Cette low side gate a produit des cas où j’ai vu des fuites de puissance par les fils de signal de mes Leds, ce qui a brulè plusieurs circuits.
La high side gate est bien plus sûre, car elle isole complètement les Leds, sans possibilité de fuite de courant. Elle est cependant un peu moins efficace et produit une petite baisse de tension et un échauffement quand le courant est fort.
Notes sur les Low/High side gates
La porte pour le port USB a été choisi parmi les composants standard pour ce genre d’applications : Composant UCS3205T-E/Q8A
Ce composant ajoute une protection anti-survoltage sur la ligne VBUS, et des fonctions de FRS (Fast Role Swap) pour le mode batterie externe. Il permet également de décharger le power rail et isoler le chargeur du port USB, ce qui rend le système moins dangereux pour les chargeurs qui se brancheront dessus.
Ce choix ajoute un danger de bug destructif : Si les deux portes de puissance sont passantes en même temps :
- La puissance peut passer directement du port USB aux Leds. Si un voltage supérieur au maximum des Leds (12 V) a été négocié, les Leds seront détruites.
- La puissance peut passer directement des Leds au port USB. Si les Leds sont alimentées (de 9 V à 12 V), le port USB le sera aussi, et tout appareil branché dessus à ce moment pourrait être endommagé.
Pour éviter ces cas, plusieurs mesures ont été prises :
- Les portes sont désactivées par défaut. En cas de crash ou reboot non prévu, les portes restent inactives
- Sécurité software. Des sections critiques ont été ajoutées dans le code autour de ces ports, pour forcer une utilisation correct.
- La porte des Leds est unidirectionnelle, on ne peut pas injecter de la puissance via le port des Leds.
Choix du microcontrôleur
Inventaire des besoins
Le choix du microcontrôleur est surement le plus important des choix techniques. Ce composant va déterminer les fonctions principales que la lanterne pourra effectuer.
Les critères les plus importants sont :
- Interface USB : Permettra la mise à jour et le débogage via le port USB.
- Faible consommation : Allongera l’autonomie du système en marche et en veille.
- RAM et processeur puissant : Donnera de la liberté aux programmeurs dans le développement de modes assez lourds.
- Beaucoup de GPIO : Nécessaire pour gérer l’ensemble des composants sur le circuit.
Autres critères de moindre importance :
- Protocoles de communication : Bluetooth, Wifi, etc pour permettre de futurs développements.
- Environnement de développement stable : pas de danger d’arrêt de support avant plusieurs années.
- Peu de composants externes : Peu de composants en plus à intégrer sur le circuit.
Inventaire du nombre de GPIO nécessaires, selon les choix déjà en place :
- 2 pour le bus de communication (I2C)
- 5 pour les portes de puissance (2 pour activation, 1 pour statut, 2 pour contrôle OTG)
- 3 pour le chargeur BQ25713 (OTG_En, Charge_OK, Proc_Hot)
- 1 pour le statut du TPD8S300
- 1 pour USB PD avec le FUSB302 (interrupt)
- 1 pour l’équilibreur BQ76905 (statut)
- 1 pour le bouton
- 1 pour le signal de contrôle du ruban LED (sur la version RGB)
- 3 PWM pour l’indicateur RGB
Au total, au minimum 19 GPIO, c’est-à-dire un microcontrôleur assez gros.
Sélection du microcontrôleur
J’ai développé mon premier prototype avec un NRF52840 de NordicSemi, qui coche toutes les conditions ci-dessus :
- Consommation fantastique (< 1 µA en mode sommeil)
- contrôleur USB 2.0 intégré
- CPU à 64 MHz + FPU, et RAM de 256 KB + 1 MB de Flash
- Module radio de 2.4 GHz.
- Fonctionnalité DMA : Essentiel pour contrôler sans blocage des longs rubans WS2812B.
- Fonctionnalité PDM : Parfait pour gérer un microphone.
- 48 GPIO : Plus qu’il n’en faut
Certains modèles ESP32 sont très proches, mais la consommation en mode sommeil n’est pas aussi bonne. J’ai décidé de rester sur le NRF52840, plus cher, mais plus adapté.
De préférence, je voudrais utiliser la version QFN plutôt que BGA (Ball Grid Array), car elle est plus petite, moins chère et sera moins chère à intégrer. Les BGA nécessitent des traitements spéciaux sur les PCB, ce qui ajoute un coût non négligeable. Malheureusement, la version QFN n’a pas de pins USB D+ et D-, ce qui la rend inutilisable pour mon cas.
La version WLCSP serait aussi une très bonne solution, mais nécessiterait une intégration avec des “Via in Pads” + traitement spécial pour BGA, donc encore plus complexe et cher à intégrer.
J’ai donc fait mon design autour de la version aQFN, qui est le meilleur équilibre coût/fonctionnalité.
Les modes de connectivité (eg: Bluetooth) ne sont pas obligatoires, ce qui ferait tomber la consommation et permettrait d’enlever l’antenne, qui coute relativement cher et prend de la place. J’ai décidé de la garder quand même pour laisser plus d’options aux développeurs.
Le fait d’avoir plus de GPIO disponibles sur le microcontrôleur que nécessaire m’a donné la possibilité d’ajouter des GPIO libres, ce qui transforme le PCB d’un contrôleur de lampe à une carte programmable générique pouvant gérer un pack de batteries 3S, avec sortie de puissance programmable.
Signal USB
L’entrée USB du microcontrôleur ne supporte que de 4.2 V à 5.5 V, mais avec la négociation PD le rail VBUS peut monter jusqu’à 20 V.
Il faut donc un convertisseur qui prend de 5 V à 20 V et sort un signal entre 4.2 V et 5.5 V.
Cette piste est censée n’être qu’un signal de branchement et donc ne transporte presque pas de courant donc le composant peut être tout petit (50 mA max est suffisant). Je prévois quand même d’utiliser cette piste comme alimentation de secours si les batteries viennent à décéder ou être déconnectées, et donc ce composant devra fournir le courant nécessaire au système complet (hors Leds). Ça représentera environ 200 mA standard, avec des pics potentiels a 500 mA.
J’ai choisi un LDO AP2205-50W5-7, qui peut prendre en entrée de 5 V à 24 V, et sort une tension de 5 V à maximum 250 mA.
Un LDO à un seuil de conversion de 0.4 V, et je compte donc sur le fait qu’il soit passant si son voltage d’entée est inférieur à 5.4 V pour obtenir tout de même 5 V. Un meilleur choix aurait été un LDO avec une sortie de 4.2 V directement, mais je n’en ai pas trouvé avec les bonnes caractéristiques.
Alimentation
Le NRF52840 a deux modes d’alimentation : variable avec convertisseur interne (demande plus de composants, plus robuste) ou fixe 3.3 V avec alimentation externe (bien plus efficace, demande une alimentation stabilisée 3.3 V externe).
J’ai choisi l’option 2, car d’autres composants du système auront besoin d’une alimentation de 3.3 V.
L’équilibreur fourni également une sortie 3.3 V stabilisée très faible consommation, mais elle n’est pas exploitable avec le NRF52840, qui consomme trop au démarrage. Consommation attendue : 3.3 V, pic de conso jusqu’à 500 mA au démarrage et en cas d’utilisation du Bluetooth.
Le composant choisi devra aussi consommer le minimum possible en mode sommeil.
Choix du TPS629206 : Composant avec consommation extrêmement basse au repos, et capable de fournir des pics jusqu’à 500 mA à 3.3 V.
Ajout d’un porte pour isoler les composants dormants du rail 3.3 V, pour économiser encore plus de consommation au repos. Cette porte permettra en plus de réinitialiser ces composants en cas de crash.
Interface utilisateur
Afin de maximiser la durée de vie et la solidité de la lampe, le point de contrôle doit être le plus solide possible.
| Type | Solidité / 5 | Qualité d’utilisation / 5 | Sureté / 5 | Durabilité / 5 | Efficacité énergétique / 5 | Moyenne |
|---|---|---|---|---|---|---|
| Potentiomètre | 1 | 4 | 5 | 3 | 2 | 3 |
| Bouton Tactile | 5 | 3 | 1 | 5 | 1 | 3 |
| Potentiomètre + bouton | 1 | 5 | 5 | 4 | 4 | 3.8 |
| Bouton poussoir | 4 | 3 | 5 | 4 | 5 | 4.2 |
Détail des catégories :
- Solidité : Résistance générale aux chocs, à l’humidité, à la poussière
- Qualité d’utilisation : Facilité de prise en main par un utilisateur
- Sureté : A quel point les commandes utilisateurs sont bien prises en compte (eg: est ce que ce composant a tendance à produire des appuis fantômes, est ce qu’il prend bien en compte toutes les actions utilisateur, etc)
- Durabilité : Durée de vie a long terme. Les pièces mécaniques mobiles s’usent plus vite.
- Efficacité énergétique : Consommation électrique en fonctionnement.
Dans mes recherches pour le bouton idéal, j’ai trouvé un bouton avec Led RGB intégrée, ce qui permet de rassembler l’interface utilisateur et l’indicateur de statut de la lampe.
J’ai donc choisi un bouton poussoir 16 mm avec Led RGB intégrée, étanche et résistant aux chocs.
Ce composant ajout une étape de vissage lors de l’assemblage et cinq fils de plus à souder (4 pour la led, 2 pour le bouton).
Le système n’aura pas d’interrupteur général, ce qui limitera l’autonomie en mode sommeil, mais permet d’utiliser moins de composants exposés. Le microcontrôleur choisi permet déjà d’avoir une bonne autonomie en mode sommeil, ce n’est donc pas si grave.
Le Bluetooth du NRF52840 pourra aussi être utilisé pour du contrôle utilisateur avancé.
Le debouncing et autres traitements seront réalisés en software, afin de garder une certaine généricité de la carte électronique.
Capteurs
Pour profiter des GPIO restantes du NRF52840, j’ai cherché des capteurs à intégrer. Les capteurs doivent fonctionner dans un environnement scellé (l’intérieur de la lampe), ne pas nécessiter d’entretien, et ne pas trop consommer.
Les capteurs de gaz sont par exemple exclus, car ils sont très chers et ne pourraient pas fonctionner dans le tube.
Les capteurs de température sont déjà présents dans les composants électriques principaux.
Microphone
Un microphone MEMS placé sur le circuit permet de coder des modes audio réactifs ou supporter des commandes vocales basiques.
Son efficacité sera réduite, parce qu’il sera dans un tube fermé hermétiquement, mais il devrait tout de même capter les basses fréquences.
Supporter ce composant nécessite d’utiliser 2 GPIO en plus.
Centrale inertielle.
Une centrale inertielle avec gyroscope et accéléromètre permet de coder des animations réactives aux déplacements dans l’espace.
L’ajout d’un magnétomètre aurait été un plus, mais c’est un composant très cher, surtout pour l’utilité qu’il aurait eu dans une lanterne.
J’ai pris le même modèle que dans la board Seeed Sense, par simplicité (LSM6DS3).
Supporter ce composant nécessite 2 GPIO de plus pour des interrupts, et il doit être relié à la ligne I2C.
Résumé des choix techniques
Résumé des choix d’ensemble :
| Composant | Fonction principale | Pourquoi ce choix |
|---|---|---|
| Tube PVC | Châssis principal | Facile à sourcer, solide, léger, pas conducteur |
| Ruban Leds COB 12V | Éclairage | Autocollant, voltage élevé, joli |
| Gaine thermorétractable transparente | Protection des Leds | Léger, durable, agréable en main |
| Batteries 21700 | Alimentation | Techno mature, bonne densité énergétique |
| Port USB-C en facade | Charge / Mise à jour | Étanche, robuste, générique |
| Bouton RGB | Interface utilisateur | Intègre indicateur + commande, étanche, robuste |
Résumé des composants électriques principaux et leurs fonctions :
| Composant | Fonction principale | Pourquoi ce choix | Alternatives écartées | Adresse I2C |
|---|---|---|---|---|
| NRF52840 | Microcontrôleur | Puissant, faible consommation, mature | ESP32 | X |
| FUSB302 | Négociation USB PD | Petite empreinte, driver mature, I2C, coût bas | RT1715 (problèmes de compatibilité) | 0x22 |
| BQ25713 | Charge Li-ion et mode OTG | Résolution OTG améliorée, I2C, marge 6 A | BQ25703A (plus ancien, moins précis) | 0x6B |
| BQ76905 | Équilibrage passif 3S | Format miniaturisé, I2C, redondance sécurité | Équilibreur actif (composants + coût) | 0x08 |
| TPS629206 | Régulation 3.3 V MCU | Courant bas, pics 500 mA | Convertisseurs buck classiques, LDO | X |
| UCS3205T | Porte USB-C / FRS | Intégré pour USB-C, protection VBUS, décharge rail | MOSFETs discrets (plus de composants) | X |
| LSM6DS3 | Centrale inertielle | Facile a source, drivers matures | 0x6A | |
| TPD8S300 | Sécurité USB | Commun, mature | X | X |
On peux complèter le schéma des choix électronique, qui servira au design électronique de la partie 3 :
La lampe fera 12 cm de haut pour 5 cm de large (sans compter les leds et la gaine).
La couleur de la lampe jaune sera 2000K, et la lampe colorée aura entre 580 et 640 pixels contrôlables.
Les batteries choisies permettront d’utiliser théoriquement la lanterne jaune pendant 14 heures, et la colorée pendant 7 heures.
L’utilisateur agira sur la lampe grâce au bouton poussoir, qui servira également de retour de statut et niveau de batterie grâce a sa Led RGB.
La lampe pourra agir comme batterie externe, et sera équipée d’un microphone, d’une IMU et utilisable en Bluetooth.
Dans la Partie 3, je reviendrai sur le design électronique dans les détails.