Little Job Project : matrice de led

Yep!

Ben voilà !!! A force de parler de l'arduino autour de moi et au boulot, on m'a confié un petit taff pas fort compliqué en soi, mais qui demande reflexion et conseil.

Alors voilà le contexte, l'entreprise va fêter prochainement ses 50 ans et à cette occasion, les pontes ont pleins d'idées qui leur passent par la tête. Tant mieux me diriez vous :wink:

L'idée génerale, celle dont je suis associée, serait d'éclairer une petite statuette (15/20 cm) par 3 rangées de 19 leds chacune. Une rangée de leds bleues, une de leds rouges et une dernière de leds vertes, soit au total 57 leds.
Le fonctionnement serait d'activer les rangées une à une, puis par deux et pour finir les trois selon un cycle binaire en définitive (001, 010, 011, 100, 101, 110, 111).

J'aimerais naturellement associer à ce projet un arduino, tout en considérant que l'alimentation génerale sera une pile de 9 volts et que l'ampérage du montage doit consommer le moins possible.

Je me pose donc plusieurs questions :

La première est liée à une contrainte : Les rangées de leds seront sous une plaque de plexi de 20 mm d'épais !!!

  • Quelles leds alors ?
    - Comment gérer les différentes tension des leds (bleues/rouges) ?

Si je pars sur une Tiny, laquelle serait le mieux adapté ? Comment la programmer, bit bang ou hardware ? Devrais-je penser au bootloader ?

Je pensais à l'arduino car je peux aussi proposer d'autres options auquelles les hierarchiques n'avaient pas forcément pensées au départ : led rgb, séquences multiples/aléatoires, boutons de sélection.

Le coût a naturellement son importance.

Donc si vous avez des idées pour me donner un coup de main, je suis tout ouïe :wink:

@+

Zoroastre.

Bonsoir,

La première chose que je relève:
Ton alimentation une pile de 9V qui délivre 100mA pour alimenter 57 Leds max!...
Non sa va pas, faudra revoir l'alimentation.

Sinon de prime abord, si les leds sont commandés en 3 groupes distincts, il suffit de définir les 3 sous-ensembles qui seront commander par un driver. Chaque driver commander par 1 sortie digitale de l'arduino avec un ptit code de compteur binaire sur 3 bits.
1 driver de 19 leds bleues = 380mA
1 driver de 19 leds rouges = 380mA
1 driver de 19 leds vertes = 380mA
donc en résumé si toutes les leds sont en parallèles et allumé à la séquence (111) cela sous entend que le montage consommera 960mA...
si les drivers de led alimentent des branches de 3 leds cela donnerai:
1 driver de 9.6V pour 6 x 3 leds bleues = 120mA
1 driver de 9.6V pour 6 x 3 leds rouges = 120mA
1 driver de 9.6V pour 6 x 3 leds vertes = 120 mA
donc à la séquence (111) le montage consommera 340mA sous une tension de 9.6V accessible avec une batterie de 9.6V de modèle réduit, je pense que c'est mieux!

Désolé de mon approche brouillon du projet.

---- Edit ----
J'ai corrigé mon erreur de calcul, j'avais noté 320mA pour l'exemple des leds en parallèle alors que l'on obtient plutôt 19 x 20mA = 380mA.

Yep!

Merci pour ta réponse tsim79.

Je suis désolé de te dire que tes calculs sont faux.

Une led a besoin d'être traversée par un courant d'environ 20 mA pour s'éclairer. Elle ne consomme pas 20 mA.

Donc 19 leds en série consomme 20 mA.

Le montage consomme grosso modo 3x20 mA + arduino + composants éventuels.

Par contre, j'hesite entre un ATTiny2313 et un ATTiny45 ou 85. Ces dernières ont l'air plus aisés à programmer en passant part un 368.

Pour les leds, je suis loin d'être un spécialiste, mais vu le nombre de led, un angle de diffusion de 30° me semble pas trop mal.
La puissance, je ne vois pas trop, j'ai peur d'avoir trop de diffraction dans une plaque de plexis (20 mm), même si elle est transparente, ce n'est pas pareil qu'une vitre. Là je suis dans le flou :grin:

@+

Zoroastre.

zoroastre:
Yep!

Merci pour ta réponse tsim79.

Je suis désolé de te dire que tes calculs sont faux.

Une led a besoin d'être traversée par un courant d'environ 20 mA pour s'éclairer. Elle ne consomme pas 20 mA.

Donc 19 leds en série consomme 20 mA.

Le montage consomme grosso modo 3x20 mA + arduino + composants éventuels.

Par contre, j'hesite entre un ATTiny2313 et un ATTiny45 ou 85. Ces dernières ont l'air plus aisés à programmer en passant part un 368.

Pour les leds, je suis loin d'être un spécialiste, mais vu le nombre de led, un angle de diffusion de 30° me semble pas trop mal.
La puissance, je ne vois pas trop, j'ai peur d'avoir trop de diffraction dans une plaque de plexis (20 mm), même si elle est transparente, ce n'est pas pareil qu'une vitre. Là je suis dans le flou :grin:

@+

Zoroastre.

Ok certe mes calculs sont faux! Je veux bien d'accord, donc tu veux juste 3 x (19 leds en série) OK...
Si on part du principe que les caractéristique d'une led standard sont U led = 2v pour I led = 20mA:
donc dans la branche de leds rouge tu auras 20mA pour allumé les 19 leds sous une tension de 19 x 2 volts = 38v sous 20mA avec une pile de 9V délivrant 100mA!!! tout sa juste pour un regroupement, après lorsque les 3 regroupement sont allumés ensemble sa ferait du 38 Volt pour 60mA... :astonished: je ne sais peut etre pas que tu as prévu d'utiliser un booster DC!?
Moi je m'excuse de mettre trompé, j'ai fait mon calcul en me basant sur la loi des mailles! Donc en fonction du type de montage des leds (parallèles ou série) il me semble que cela modifiait le besoin en tension et courant... :drooling_face:

----- Edit -----
J'ai modifié un peu mon post précédent, sinon oui je crois que le Attiny45 suffit largement puisqu'au final tu n'as besoin que de 3 sorties digitales, et pour l'évolution plus tard, il te restera encore 2 fils pour commander une led RGB en I2C, voir d'autres périphériques en I2C.

Yep!

Là d'accord :wink:

Je suis parfaitement d'accord sur le problème de l'alimentation. La tension de chutte des leds s'additionne.
Nous sommes conscient de ce problème et l'évoquerons mardi prochain.

Cependant, avec ou sans accu, nous voulons présenter quelque chose et montrer que c'est réalisable.
En fait l'alimentation est une vrai/faux problème dans le sens où je peux multiplier les rangées, çà pénalisera l'ampérage bien sûr.

L'ATTiny45 est un bon candidat :wink: Je m'oriente plutôt vers un ATTiny2313 plus souple grace à nombre de sortie plus important et 4 pwm.

Pour le choix des leds, j'aimerais bien une réference ou deux. Vous achetez où vos leds et comment les choisissez-vous ???
Il faudrait qu'elles aient une chutte de tension minimale et une puissance maximale !!!

EDIT1 : J'oubliais, les leds doivent faire 3mm (rouge/vert/bleue).

@+

Zoroastre.

Bonjour a tous,
projet parfaitement realisable avec alimentation par pile 9V a la condition d'utiliser des led a haut rendement.
par exemple : la TLSU156P de Toshiba va donner une puissance lumineuse de 30mcd a 1mA !
Elle coute 0,15€ la piece chez Farnell.
Un petit peu de recherche sur leur site et tu vas trouver ce que tu cherches.
C'est plus cher que sur eBay mais on ne parle pas de la meme chose.
J'aime bien les led qui clignotent pour montrer que le programme ne s'est pas plante.
J'ai realise un montage alimente avec une batterie de 3V6, une led SMD HPL (haut pouvoir lumineux) avec 10K (10000R) en serie qui etait alimentee pendant 2ms toutes les secondes. Le "flash" lumineux etait parfaitement visible et la longivite de la batterie pas compromise !
Bon travail
Jacques

N.B.: je n'ai pas d'interet a conseiller Farnell. C'est juste pour votre info !

Yep!

Merci JMe87 !

Je retient donc "led à haut rendement"

Quand je regarde les specs de la TLSU156P, j'ai du mal à comprendre ceci :

Intensité lumineuse: 900mcd
...
Intensité lumineuse min.: 153mcd
Intensité lumineuse min. à If: 153mcd
Intensité lumineuse typique: 450mcd

Quelle valeur dois-je prendre en réference ???

@+

Zoroastre.

PS :

J'aime bien les led qui clignotent pour montrer que le programme ne s'est pas plante.

C'était pour moi la seul utilité des leds. S'en servir comme éclairage (halo coloré), c'est nouveau pour moi !!!

Je ne vois pas spécialement de problème... à partir d'une pile 9V, on dit qu'on met 3 leds en série ce qui donne une tension VF de 6.6V, on rajoute une résistance toujours en série pour absorber la tension restante (R = 2/IF), 6 ou 7 branches de (trois leds+R) en parallèle sur un NPN ou mosfet, en gérant bien ta PWM, tu alimentes tes trois transistors l'un après l'autre et un quatrième temps "mort" pour gérer la luminosité, tu auras une conso de l'ordre de 6 x IF la moitié du temps. si IF = 1mA, ça fait une conso moyenne de 3mA + arduino (?). Je ne sais pas combien de temps tient une pile 9V (dans les 800mAH je crois), je dirais le montage tient grossomodo 80 heures à 10mA moyen, à tester bien sûr.

19 leds obligatoirement? 18 c'est pas possible?

Zoroastre,
tu ne dois pas regarder les tableaux de chiffres mais les courbes.
Dans le pdf de cette diode tu regardes a la page 3 la courbe Forward current vs Luminous intensity.
Je viens de faire un test avec une led blanche achetee sur ebay.
pas de reference officielle mais "reputee" donner 20.000mcd.
J'alimente cette led avec 5v au travers d'une resistance de 4700R.
Je mesure 2V2 aux bornes de la resistance.
Il passe donc un courant de 0,468mA.
Avec ce faible courant, il est penible de fixer la lumiere emise par cette diode tant elle est forte.
Mais il est vrai que l'angle de dispersion est faible.

Bonne chasse.
Jacques

Yep!

19 leds obligatoirement? 18 c'est pas possible?

Pour l'instant, on me l'a vendu comme çà :grin:

C'est clair que cette 19eme led est un peu chiante :stuck_out_tongue:

Je ne m'inquiète pas trop pour le montage. Les leds par contre doivent passer par une plaque de plexi de 20mm, c'est une contrainte douloureuse pour moi...
Je regarde aussi pour programmer un ATTiny2313 via mon 368.

Merci encore JMe87, je pense que tes indiquations vont bien m'orienter sur le choix des leds.

Je vais réaliser un proto avec les moyens du bord pour l'instant. Mais si le projet est retenu, je n'hesiterais pas à vous solliciter encore.

Merci les gars :wink:

@+

Zoroastre.

Yep!

L'idée a été retenu et bien vendu.

L'alimentation n'est plus vraiment un problème car elle sera déportée et certainement en 230/12 volts dc.
Le nombre de leds est passé de 19 à 18. Comme l'alim n'est plus un problème, je choisirais mes leds en fonction de leur angle et luminosité, 30° et maximale/identique.

Par contre, ils ont adorés le fadein et fadeout ainsi que le balayage à la k2000. Ils ont entrevus plus de possibilités :stuck_out_tongue_closed_eyes:

Par contre, on se rapproche plus d'une matrice complète. 3 rangées de 18 leds (54) toutes pilotables indépendemment avec 1 couleur par rangée, 1 rangée rouge, une bleu et une verte. (3 Uf différents)

Je me suis arrêté sur un ATTiny2313 qui possède 4 pwm et un total de 18 I/O pour 2Kbytes.

L'alimentation et l'ampérage n'étant plus un problème. Quel chip me conseillerez vous pour piloter tout ça facilement ? (Pas de MAX à 10/15 € please)

@+

Zoroastre.

Yep!

Je recherche plutôt une solution tout en un, cause encombrement limité (180x90mm), mais sans me ruiner :grin:

J'ai trouvé 2 candidats possibles :

6595
http://radiospares-fr.rs-online.com/web/p/registre-a-decalage/0310650/

ou

2981
http://radiospares-fr.rs-online.com/web/p/transistor-darlington/0162795/

+1
TPIC6B596
http://radiospares-fr.rs-online.com/web/p/registre-a-decalage/6608004/

Je positionnerais 3 transistors de ligne (2n2222) qui se chargeront de gérer la luminosité. Chacun encaisserait 320 mA (16x20mA), le driver doit suivre (8x20mA = 160mA). Je suis au stade théorique...

Lequel me conseillez vous ??? Le plus facile à piloter/documenté ???

@+

Zoroastre.

les 2N2222 à + de 300mA essaies plutôt de les prendre en boiter métallique : ils dissiperont mieux (le TO18 est à peine plus gros qu'un boîtier plastique.

Yep!

en boiter métallique

Merci 68tjs, ca tombe bien, c'est le seul modèle que je possède XD

Pour l'alim, celle à l'interieur du boitier, je m'orienterais sur un LM2576.

J'ai eue beau regarder du côté des matrices de led, je n'ai pas retrouvé d'exemple dissipant autant de puissance que dans mon projet. Franchement, j'ai bien envie de tout transistorer...Quoique je ferais bien mumuse avec un tpic6595 ]:smiley:

@+

Zoroastre.

Yep!

Mon collègue et moi-même avont commandé des leds chez Farnell et 123-led, elles tournent aux environs des 5000 mcd. J'espère que ce sera suffisant...

Je suis donc passé à la phase programmation avec comme optique de transposer mon code actuel (328) vers un 2313.
Il y a pourtant plusieurs choses que j'ai du mal à comprendre et je butte sur un problème.

/*
ATMEGA328 Double PWM (Fast)

Timer output Arduino output Chip pin	Pin name
OC0A	  6	          12	          PD6
OC0B	  5               11           PD5 <--
OC1A	  9	          15	          PB1
OC1B	 10	          16	          PB2
OC2A	 11	          17	          PB3 <--
OC2B	  3	           5	          PD3 <--

### PINS CONFIGURATION ###

DDRD Pins 0-7, DDRB Pins 8-13
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>

byte i = 0;
byte variable = 0;
static byte mode=0;

//PD5,PD3,PB3
const uint8_t PROGMEM cycle[4][2] = {
  { B00100010, B00000000 },
  { B00101010, B00000000 },
  { B00100010, B00001000 },
  { B00101010, B00001000 }
};

void setup()
{
  
  TCCR0A = 0x23;
  TCCR0B = 0x03; // PRESCALER 32
  TCCR2A = 0xA3; // WGM20, WGM21, COM2B1, COM2A1
  TCCR2B = 0x01; // CS20, WGM22 = 0 means to 255
  
  DDRD = B00101010;
  DDRB = B00001000;
    
}

void loop() {
  
  if(mode==0)
     {
       variable++;
       if(variable==230)		
         {
           mode=1;
         }
     }
   if(mode==1)
     {
       variable--;
       if(variable==0)		
         {
           mode=0; i = i + 1;
           if (i >= 4) { i = 0; }
           DDRD = pgm_read_byte(&cycle[i][0]);
           DDRB = pgm_read_byte(&cycle[i][1]);
           delay(5); // DELAY TO OPEN PORT
         }
     }
      OCR2A=variable;
      OCR2B=variable;
      OCR0B=variable;
      delay(10);
}
  1. Pourquoi dois-je choisir un prescaler timer0 différent du timer2 ???
  2. J'ai aussi remarqué que le cycle fadin est plus rapide que le fadeout. Illusion d'optique ou réalité ???
  3. J'aimerais également sur certain cycle, que la ledB démarre avant que la ledA s'éteigne complétement. Comment faire ???

@+

Zoroastre.