Ce circuit de Micrel est particulièrement intéressant pour les arduino et attiny.
A partir de deux connexions seulement (une ligne d’horloge, une ligne de données) il permet de piloter 35 leds.
Dédié à priori aux afficheurs 7 segments, il est tout à fait adapté à la commande de leds individuelles.
Ce circuit est dédié au contrôle de leds et se comporte comme un puit de courant, d’où une économie de composants.
Il se pilote très facilement, en SPI ou « à la main », en bitbanging.
Avantages
Parmi ses avantages, citons d’abord sa technologie MOS, qui lui permet une tension d’alimentation de 5 à 11v.Pour une utilisation avec des micro-controlleurs, il fonctionne donc en 5v sans souci.
Mieux: si on regarde ses entrées logiques, il est tout à fait compatible 3.3v en logique.
Ainsi, on peut l’utiliser avec un Arduino Due ou un autre ARM, en l’alimentant en 5v, mais avec des entrées logiques 3.3v pilotées depuis le micro sans adaptation de niveau.
Comme ses 35 sorties sont des puits de courant, pas besoin de résistance pour les leds !
Le courant est limité par le circuit, en fonction d’un réglage de luminosité (broche « Brigtness »).
Et pour plus que 35 Leds ?
Avec un multiplexage ( qui peut être lui aussi piloté par le MM5451), on démultiplie les sorties possibles.
Par exemple on peut faire 5 blocs de (35-5=) 30 leds, soit 150 leds avec un seul CI et toujours uniquement 2 lignes de commande…
Ce réglage peut être fixe (une résistance fixe, typ. 1k) ou un potentiomètre physique.
Il peut aussi être piloté par un signal PWM, faisant alors office, merci la persistence rétinienne, de convertisseur numérique/analogique.
On peut donc varier la luminosité via le soft, voire faire clignoter toutes les leds actives via une seule broche. Chaque sortie peut absorber jusque 15mA.
Coté fréquence d’utilisation, la fiche technique indique une horloge de 500kHz maxi.
Cela donne pour 36 bits (1 bit de start + 35 bits de données), environ 72µs de délai de rafraichissement.
C’est largement suffisant pour la plupart des applications, et mes essais ont montré qu’on peut pousser bien au delà (avec un attiny85 et du SPI hardware, le circuit fonctionne avec une horloge de 2Mhz sans problème).
Comme vous le voyez sur les photos, ce circuit est disponible en boitier DIP40 broches, ce qui facilite bien le prototypage. Pour des utilisations plus pros, des boitiers PLCC plus compacts sont proposés.
Brochage
Coté branchements, pas de surprise:
Broche 1 au +
Broche 20 à la masse.
La broche 19 est le réglage de luminosité: soit une résistance fixe de 1k reliée au +5v, soit un potentiomètre de 10k, typiquement.
Les broches 21 et 22 sont respectivement l’horloge et les données.
Protocole de contrôle
Le protocole est un protocole série tout bête :
1 bit de start à 1, suivi de 35 bits de données.
Une fois reçus 36 bits, dont le 1er à 1, le circuit met ses sorties à jour, et accepte le flux suivant.
REM:
A noter que cela permet une petite astuce si on n’envoie ses données que par paquet de 8 bits :
5×8 = 40, il y a des bits en trop.
Il suffit de commencer par envoyer des zéros, puis le bit de start et les 35 bits de commande.
Les premiers bits à zéro seront donc ignorés.
REM2: On peut également en déduire un méthode de « Reset » du circuit s’il a loupé des cycles et qu’il est paumé.
On lui envoie tout simplement 36 (ou plus) bits à 0, et il repart comme neuf 😉
Etiquette
Pour les circuits à but de prototypage, j’ai l’habitude de coller une étiquette qui reprend le brochage, afin d’éviter les erreurs et références constantes à la doc.
Voici le PNG qui correspond au MM5451:
Doc officielle
Voici la doc officielle du Micrel MM5451 :
– Page sur le site constructeur (Anglais)
– Notice PDF (Anglais)
Son frère le MM5450
A noter qu’il existe aussi le MM5450, qui ne dispose que de 34 sorties.
La broche 23 est un /DATA ENABLE , qui permet d’activer ou pas le circuit.
Ca peut être utile si on le pilote via du SPI matériel, et qu’il y a d’autres périphériques sur le même bus.
Dans ce cas cette ligne permet de sélectionner le composant.
Dans le cas contraire, pas d’utilité si ce n’est consommer une ligne de plus.
Applications possibles
Les applications ne manquent pas.
En restant dans le domaine les LEDs (car on pourrait aussi le détourner de son usage prévu), je pense par exemple à quelques projets sympa:
– Circuit POV multicolore (light painting, horloge POV, Sphère POV)
– Matrice de leds
– Cube 3d de leds
– Bien sur, pilotage d’afficheurs 7 segments
– Feedback visuel pour clavier midi custom à base d’arduino (c’est en cours)
– animations lumineuses à base de leds (déco, Noël, éclairage)
Et vous, des suggestions d’utilisation ?