25 mars 2019

Écran Sphérique - Étude - Fréquences des Rafraîchissements des LEDs


Suivant la position des LEDs RGB sur l'arc, leurs fréquences de rafraîchissement diffèrent. Plus on se rapproche de l'équateur, et plus le besoin des actualisations augmente. Afin de déterminer le nombre de pixels nécessaires sur l'axe horizontal, nous déterminons d'abord l'angle ϑ formé par la droite passant par l'origine et le pôle Nord, et celle passant par l'origine et notre pixel (position verticale voulue).
Comme nous sommes sur une sphère, n'importe quelle longueur de méridien (Arc) équivaut à la moitié de la longueur de l'équateur. Donc, en multipliant le sinus de l'angle, par le double du nombre total de pixels sur l'arc ( -1 car on garde un seul pôle), on détermine le nombre total nécessaire sur l'axe horizontal.
Le tableau suivant regroupe les calculs afin de déterminer le nombre de rafraîchissements de chacune des LEDs RGB suivant leur position et ainsi, connaitre le nombre total des pixels de l'écran.

LED VϑSinLED HErrRcy
Pôle Nord10,00,0001,0011,000,25%1
20,90,0166,2860,951,50%6
31,80,03112,56131,033,25%13
42,70,04718,84191,014,75%19
53,60,06325,12251,006,25%25
64,50,07831,38310,997,75%31
75,40,09437,64381,019,50%38
86,30,11043,89441,0011,00%44
97,20,12550,13501,0012,50%
108,10,14156,36560,9914,00%
119,00,15662,57631,0115,75%
129,90,17268,77691,0017,25%
1310,80,18774,95751,0018,75%
1411,70,20381,11811,0020,25%
1512,60,21887,26871,0021,75%
1613,50,23393,38931,0023,25%
1714,40,24999,48991,0024,75%
1815,30,264105,551061,0026,50%
1916,20,279111,601121,0028,00%
2017,10,294117,621181,0029,50%
2118,00,309123,611241,0031,00%
2218,90,324129,571301,0032,50%
2319,80,339135,501351,0033,75%
2420,70,353141,391411,0035,25%
2521,60,368147,251471,0036,75%
2622,50,383153,071531,0038,25%
2723,40,397158,861591,0039,75%
2824,30,412164,611651,0041,25%
2925,20,426170,311701,0042,50%
3026,10,440175,981761,0044,00%
3127,00,454181,601821,0045,50%
3227,90,468187,171871,0046,75%
3328,80,482192,701931,0048,25%
3429,70,495198,181981,0049,50%
3530,60,509203,622041,0051,00%
3631,50,522209,002091,0052,25%
3732,40,536214,332141,0053,50%
3833,30,549219,612201,0055,00%
3934,20,562224,832251,0056,25%
4035,10,575230,002301,0057,50%
4136,00,588235,112351,0058,75%
4236,90,600240,172401,0060,00%
4337,80,613245,162451,0061,25%
4438,70,625250,102501,0062,50%
4539,60,637254,972551,0063,75%
4640,50,649259,782601,0065,00%
4741,40,661264,522651,0066,25%
4842,30,673269,212691,0067,25%
4943,20,685273,822741,0068,50%
5044,10,696278,372781,0069,50%
5145,00,707282,842831,0070,75%
5245,90,718287,252871,0071,75%
5346,80,729291,592921,0073,00%
5447,70,740295,852961,0074,00%
5548,60,750300,043001,0075,00%
5649,50,760304,163041,0076,00%
5750,40,771308,213081,0077,00%
5851,30,780312,173121,0078,00%
5952,20,790316,063161,0079,00%
6053,10,800319,873201,0080,00%
6154,00,809323,613241,0081,00%
6254,90,818327,263271,0081,75%
6355,80,827330,833311,0082,75%
6456,70,836334,323341,0083,50%
6557,60,844337,733381,0084,50%
6658,50,853341,063411,0085,25%
6759,40,861344,303441,0086,00%
6860,30,869347,453471,0086,75%
6961,20,876350,523511,0087,75%
7062,10,884353,513541,0088,50%
7163,00,891356,403561,0089,00%
7263,90,898359,213591,0089,75%
7364,80,905361,933621,0090,50%
7465,70,911364,563651,0091,25%
Cancer7566,60,918367,103671,0091,75%
7667,50,924369,553701,0092,50%
7768,40,930371,913721,0093,00%
7869,30,935374,183741,0093,50%
7970,20,941376,353761,0094,00%
8071,10,946378,433781,0094,50%
8172,00,951380,423801,0095,00%
8272,90,956382,323821,0095,50%
8373,80,960384,123841,0096,00%
8474,70,965385,823861,0096,50%
8575,60,969387,433871,0096,75%
8676,50,972388,953891,0097,25%
8777,40,976390,373901,0097,50%
8878,30,979391,693921,0098,00%
8979,20,982392,913931,0098,25%
9080,10,985394,043941,0098,50%
9181,00,988395,083951,0098,75%
9281,90,990396,013961,0099,00%
9382,80,992396,853971,0099,25%
9483,70,994397,583981,0099,50%
9584,60,996398,223981,0099,50%
9685,50,997398,773991,0099,75%
9786,40,998399,213991,0099,75%
9887,30,999399,564001,00100,00%
9988,21,000399,804001,00100,00%
10089,11,000399,954001,00100,00%
Equateur10190,01,000400,004001,00100,00%
10290,91,000399,954001,00100,00%
10391,81,000399,804001,00100,00%
10492,70,999399,564001,00100,00%
10593,60,998399,213991,0099,75%
10694,50,997398,773991,0099,75%
10795,40,996398,223981,0099,50%
10896,30,994397,583981,0099,50%
10997,20,992396,853971,0099,25%
11098,10,990396,013961,0099,00%
11199,00,988395,083951,0098,75%
11299,90,985394,043941,0098,50%
113100,80,982392,913931,0098,25%
114101,70,979391,693921,0098,00%
115102,60,976390,373901,0097,50%
116103,50,972388,953891,0097,25%
117104,40,969387,433871,0096,75%
118105,30,965385,823861,0096,50%
119106,20,960384,123841,0096,00%
120107,10,956382,323821,0095,50%
121108,00,951380,423801,0095,00%
122108,90,946378,433781,0094,50%
123109,80,941376,353761,0094,00%
124110,70,935374,183741,0093,50%
125111,60,930371,913721,0093,00%
126112,50,924369,553701,0092,50%
Capricorne127113,40,918367,103671,0091,75%
128114,30,911364,563651,0091,25%
129115,20,905361,933621,0090,50%
130116,10,898359,213591,0089,75%
131117,00,891356,403561,0089,00%
132117,90,884353,513541,0088,50%
133118,80,876350,523511,0087,75%
134119,70,869347,453471,0086,75%
135120,60,861344,303441,0086,00%
136121,50,853341,063411,0085,25%
137122,40,844337,733381,0084,50%
138123,30,836334,323341,0083,50%
139124,20,827330,833311,0082,75%
140125,10,818327,263271,0081,75%
141126,00,809323,613241,0081,00%
142126,90,800319,873201,0080,00%
143127,80,790316,063161,0079,00%
144128,70,780312,173121,0078,00%
145129,60,771308,213081,0077,00%
146130,50,760304,163041,0076,00%
147131,40,750300,043001,0075,00%
148132,30,740295,852961,0074,00%
149133,20,729291,592921,0073,00%
150134,10,718287,252871,0071,75%
151135,00,707282,842831,0070,75%
152135,90,696278,372781,0069,50%
153136,80,685273,822741,0068,50%
154137,70,673269,212691,0067,25%
155138,60,661264,522651,0066,25%
156139,50,649259,782601,0065,00%
157140,40,637254,972551,0063,75%
158141,30,625250,102501,0062,50%
159142,20,613245,162451,0061,25%
160143,10,600240,172401,0060,00%
161144,00,588235,112351,0058,75%
162144,90,575230,002301,0057,50%
163145,80,562224,832251,0056,25%
164146,70,549219,612201,0055,00%
165147,60,536214,332141,0053,50%
166148,50,522209,002091,0052,25%
167149,40,509203,622041,0051,00%
168150,30,495198,181981,0049,50%
169151,20,482192,701931,0048,25%
170152,10,468187,171871,0046,75%
171153,00,454181,601821,0045,50%
172153,90,440175,981761,0044,00%
173154,80,426170,311701,0042,50%
174155,70,412164,611651,0041,25%
175156,60,397158,861591,0039,75%
176157,50,383153,071531,0038,25%
177158,40,368147,251471,0036,75%
178159,30,353141,391411,0035,25%
179160,20,339135,501351,0033,75%
180161,10,324129,571301,0032,50%
181162,00,309123,611241,0031,00%
182162,90,294117,621181,0029,50%
183163,80,279111,601121,0028,00%
184164,70,264105,551061,0026,50%
185165,60,24999,48991,0024,75%
186166,50,23393,38931,0023,25%
187167,40,21887,26871,0021,75%
188168,30,20381,11811,0020,25%
189169,20,18774,95751,0018,75%
190170,10,17268,77691,0017,25%
191171,00,15662,57631,0115,75%
192171,90,14156,36560,9914,00%
193172,80,12550,13501,0012,50%
194173,70,11043,89441,0011,00%
195174,60,09437,64381,019,50%
196175,50,07831,38310,997,75%
197176,40,06325,12251,006,25%
198177,30,04718,84191,014,75%
199178,20,03112,56131,033,25%
200179,10,0166,2860,951,50%
Pôle Sud201180,00,0001,0011,000,25%

"Avec la formule, LED_V(1) "et "LED_V(201)" valent normalement "0". Mais nous ajoutons tout de même une LED afin d'afficher les pôles.

Pour un tour complet, les LEDs des pôles n'affichent qu'un seul pixel, et celles au niveau de l'équateur en affichent 400. Cela aura un impacte sur la luminosité globale de l'écran sphérique. Il nous faut pour cela trouver des LEDs RGB avec une forte luminosité.
Les LEDs qui devront afficher le plus grand nombre de pixels, seront aussi celles qui auront leur vitesse de déplacement élevée. Ainsi, en essayant d'optimiser la ventilation (forme mécanique), nous pourrons les "suralimenter".
En décomposant le nombre d'actualisations suivant la position de la LED sur l'arc, on peut représenter l'écran sphérique en deux dimensions. Chacun des carrés représente un pixel (400 × 201 pixels). Cette représentation est appelée Projection Sinusoïdale.
Pour un écran sphérique de résolution 400 ⨉ 201, nous avons un total de 50932 pixels. Pour passer d'une image rectangulaire à une projection sinusoïdale, nous perdons 36.65% des pixels originaux.

24 mars 2019

Algorithme de Prim (1930)

L'Algorithme de Prim a été développé en 1930 par le mathématicien tchèque Vojtech Jarnik puis a été redécouvert et republié par Robert C. Prim et Edsger W. Dijkstra en 1959. Il consiste à trouver l'arbre couvrant minimum.
Imaginez que vous devez relier plusieurs villes en électricité, câble téléphonique ou chemins de fer. Quelle solution me donne une distance totale minimum ?? (distance minimum ≈ argent minimum) 
1️⃣️
On choisit un point au hasard. Il est le premier point de notre arbre.
2️⃣️
On choisit le point le plus proche de notre arbre afin de le relier.
3️⃣️
On répète l'étape 2 jusqu'à ce que tous les points soient dans notre arbre.
La recherche du point le plus proche est la fonction cruciale de cet algorithme. D'elle, dépend la performance globale.

Algorithmes similaires : Algorithme de Borůvka - Algorithme de Kruskal.

23 mars 2019

Écran Sphérique - Étude - Diamètre de l'Arc


Il existe de nombreuses références pour les LEDs. Leur forme peut varier mais également leur diamètre. Ainsi, ce paramètre, mais également le nombre, impactent sur la longueur de l'arc.


LEDsØ (mm)
122,533,558
2515,330,638,245,853,576,4122,2
5131,863,779,695,5111,4159,2254,6
7547,194,2117,8141,3164,9235,5376,9
10163,7127,3159,2191,0222,8318,3509,3
12578,9157,9197,4236,8276,3394,7631,5
15195,5191,0238,7286,5334,2477,5763,9
175110,8221,5276,9332,3387,7553,9886,2
201127,3254,6318,3382,0445,6636,61 018,6
225142,6285,2356,5427,8499,1713,01 140,8
251159,2318,3397,9477,5557,0795,81 273,2
275174,4348,9436,1523,3610,5872,21 395,5
301191,0382,0477,5573,0668,5954,91 527,9
325206,3412,5515,7618,8721,91 031,31 650,1
351222,8445,6557,0668,5779,91 114,11 782,5
375238,1476,2595,2714,3833,31 190,51 904,8
401254,6509,3636,6763,9891,31 273,22 037,2
425269,9539,9674,8809,8944,71 349,62 159,4
451286,5573,0716,2859,41 002,71 432,42 291,8
475301,8603,5754,4905,31 056,21 508,82 414,1
501318,3636,6795,8954,91 114,11 591,52 546,5
525333,6667,2834,01 000,81 167,61 667,92 668,7
551350,1700,3875,41 050,41 225,51 750,72 801,1
575365,4730,8913,51 096,31 279,01 827,12 923,4
601382,0763,9954,91 145,91 336,91 909,93 055,8
625397,3794,5993,11 191,81 390,41 986,33 178,0
651413,8827,61 034,51 241,41 448,32 069,03 310,4
675429,1858,21 072,71 287,21 501,82 145,43 432,7
701445,6891,31 114,11 336,91 559,72 228,23 565,1
Le tableau indique le diamètre de l'arc suivant le diamètre de la LED et le nombre utilisé.






Souhaitant avoir 201 LEDs sur l'arc, les diamètres à partir de 5 mm sont à éviter. En effet, le diamètre devient trop conséquent et les contraintes mécaniques avec. Je pense m'orienter vers des LEDs entre 3 mm et 3.5 mm. Ce qui me donnerait un diamètre entre 382 mm et 445,6 mm.

15 mars 2019

Écran Sphérique - Étude - Modulation Binaire


Une autre méthode que le PWM (vue dans la précédente publication), rarement vue (hormis de par la personne qui me l'a enseigné que je salue au passage) et pourtant bien plus performante, la Modulation Binaire - Binary Modulation. Elle se révèle vraiment efficace surtout lorsqu’il s’agit de contrôler un grand nombre de sorties avec un fort échantillonnage (résolution).


À chaque cycles, on compare le nombre de cycles enregistrés dans la variable "Cycle" à la constante "CycleMax" dépendant à l'échantillonnage désiré. Pour n = 4 bits, nous aurons CycleMax = n = 4. Si "Cycle" est supérieur ou égal, on le réinitialise à 0. Puis on applique, à la sortie "Out", l’état du bit de la variable "Value" indexé par le compteur "Cycle".


La variable "Period", correspondant à la période du prochain cycle,  est le résultat de "IntialPeriod" multiplié par 2 à la puissance "Cycle". Enfin, on incrémente le compteur "Cycle".

Si vous avez bien suivi l'algorithme, vous aurez compris que la constante "InitialPeriod" doit être initialisée avec la plus petite période, correspondant au temps entre Cycle = 0 et Cycle = 1.

Notre rapport cyclique "Rcy" est bien modulé en conséquence par la variable "Value".
Avec cet algorithme nous avons besoin de beaucoup moins de cycles que celui du PWM et son traitement est quasiment similaire. Le tableau ci-contre résume le nombre nécessaire suivant l’échantillonnage et la méthode utilisée.

La Modulation Binaire permet un gain (traitement global et/ou énergie) non négligeable que ce soit sur un microcontrôleur ou un FPGA.
Cycles
Échantillonnage
n (bit)
PWM
Modulation Binaire
4
15
4
5
31
5
6
63
6
7
127
7
8
255
8
9
511
9
10
1023
10
11
2047
11
12
4095
12
13
8191
13
14
16383
14
15
32767
15
16
65535
16

Remarque : Pourquoi partir du bit de poids faible plutôt que celui de poids fort ?

Car en partant du bit de poids faible, nous passons par la multiplication (décalage des bits vers la gauche) plutôt que la division. Et nous nous abstenons, ainsi, d'une éventuelle division par 2 d'un nombre impaire (Si le calcul de "InitialPeriod" était mauvais).

Cependant, si le nombre de sorties est vraiment conséquent et l'échantillonnage élevé, afin de mieux répartir la charge globale sur le temps, nous pouvons diviser  équitablement  les sorties en deux listes. Chacune partant du bit de poids opposé. Ainsi, on évite la charge "brusque" demandée lors des cycles à faible période.

Écran Sphérique - Étude - Contrôle de l’Intensité Lumineuse


Pour contrôler l’intensité traversant chacune des leds RGB, et ainsi, varier sa couleur, une méthode bien connue est la modulation de la largeur des impulsions - PWM - Pulse Width Modulation.

Nous voyons que la tension moyenne résultante (en bleu) est proportionnelle au « temps haut » th et à la période T du signal. C’est ce que l’on appelle le rapport cyclique - Rcy.
Afin de moduler cette largeur des impulsions, nous utilisons un circuit programmable (microcontrôleur par exemple) et nous modifions l’état de sa sortie (« 0 » ou « 1 ») suivant un temps prédéfini.


À chaque cycle, on compare le nombre de cycle enregistré dans la variable "Cycle" à la constante "CycleMax" dépendant à l'échantillonnage désiré. Pour 4 bits, nous aurons CycleMax = 2^n - 1 = 2^4 - 1 = 15. Si "Cycle" est supérieur ou égal, on le réinitialise à 0. Puis on applique, à la sortie "Out", le résultat de la comparaison entre "Value" et "Cycle". Enfin, on incrémente notre compteur "Cycle". En modifiant la valeur d’entrée "Value" (0 → 15), alors nous modifions le rapport cyclique RCY en conséquence.
Plus nous utilisons de bits pour coder une valeur, plus le besoin en nombre de cycles grandit (2^n - 1) où n est le nombre de bits. Ce qui augmente considérablement le traitement du circuit programmable si l’on code une valeur sur 8 bits (255), 12 bits (4095) ou 16 bits (65535). Heureusement, beaucoup de ces circuits simplifient les traitements par accélération matérielle (électronique dédiée). Mais ces systèmes permettent de contrôler seulement un nombre limité de sorties.

La Modulation Binaire est une autre approche, bien meilleure lorsqu'il s'agit de contrôler un grand nombre de sorties avec un échantillonnage élevé.

Écran Sphérique - Étude - LEDs (Diode électroluminescente)


Les premières LED à être commercialisées ont produit de la lumière infrarouge, rouge, verte puis jaune. L'arrivée de la LED bleue, associée aux progrès techniques et d'assemblage, permet de couvrir la bande des longueurs d'onde d'émission s’étendant de l'ultraviolet (350 nm) à l’infrarouge (2 000 nm). De nombreux appareils sont munis de LED composites (trois LED réunies en un composant : rouge, vert et bleu) permettant d'afficher de très nombreuses couleurs.

LED RGB

Afin de contrôler une couleur à afficher, des leds RGB (Red, Green, Blue) seront utilisées. Elles permettent d’afficher une grande quantité de couleurs suivant l’intensité du courant les traversant.

Pour coder l’information d’un pixel, la majorité des logiciels utilisent 8 bits par couleur (2^8 = 256 nuances) soit un total de 24 bits (2^24 = 16 777 216 couleurs).

Bien que cela représente un grand nombre de couleurs, celui-ci est faible comparé à celles visibles par l’œil humain. Essayez de passer de la couleur (R=255, G=255, B=128) à (R=255, G=255, B=129). Vous verrez la différence ! Enfin non ! :) Car la majorité des écrans permettent d’afficher les couleurs avec une profondeur de 36 bits (3 x 12), voir 48 bits (3 x 16). Et par des algorithmes internes, le rendu et l’animation entre trames sont améliorés (Composition d’une image intermédiaire inexistante, voir plus, par le mélange de deux images).