Skyduino:~#
[Arduino] Afficheur POV – 34 Led RGB

Le but :
Le but de ce projet est de réaliser un afficheur (rond) composé de 34 led RGB qui seront placée sur un support tournant (un vieux ventilateur).
Le système est composé d’une carte arduino couplée à 3 M5450 (drivers à courant constant) et de 34 led RGB.
Le but de ce projet est de réaliser un systéme composé de led RGB placée en ligne de led de manière à pouvoir réaliser des image en light painting plus facilement.
Une sorte de light painting en tool-assisted en sorte.

Le design :
J’ai pu voir sur youtube énormément de POV plutôt gadget composé de 8 led rgb, je me suis dis pourquoi ne pas faire un « mega POV » ?
Dans ma première version celui ci devait être contrôlé par 12 74HC595, trop de CI, PCB trop imposant, j’ai rejeté ce design.
Ma seconde idée fut de contrôler ces 32 led depuis 6 TLC5940 mais la fréquence de PWM et l’ampleur du PCB m’ont forcé à revoir encore ma copie.
Mon design « final » est donc composé de 3 M5450 qui sont des drivers de led à courant constant, une seul résistance de limitation de courant donc déjà un PCB très largement réduit. De plus le M5450 permet le controle de 34 led soit deux de plus qu’avec mes design précédant.
Coté programmation ce design est le plus avantageux, les M5450 ce contrôle via une connexion série 2 fils et un protocole plutôt bien documenté.

pov-rgb-m5450

M5450 fraichement recu

Comme je le précisé précédemment j’utilise des M5450 (datasheet), ces petites bête sont relativement simple à câbler !

mega-pov-mcu

Le schémas, easy !

Comme vous pouvez le voir rien de bien compliquer ! La résistance R1 donne la référence en courant à fournir aux led et le condensateur C1 n’est rien d’autre qu’un condensateur de découplage.

Remarque très importante, bien que les « sorties » du M5450 soit dite « sorties » en réalité le courant doit RENTRER dans le CI, les led RGB doivent donc être à Anode commune !
De plus sur le schémas j’ai réaliser une empreinte M5450/M5451 la seul différence et que la patte 23 sert d’ENABLE (actif état bas) sur le M5450 et non de sortie N°35. J’ai aussi nommé le port de controle SDA/SCL mais il ne s’agit pas d’I2C😉.

Voici le typon final :

mega-pov-mcupcb

Le centre du systéme, le M5450

Dans mon cas je vais contrôler 34 led RGB par conséquent je vais réaliser 3 PCB identique, chacun aura la charge d’une couleur.
De plus en séparant ainsi les PCB je vais pouvoir les empiler et réduire l’encombrement total du circuit.

Un point important que je n’ai pas abordé, le ruban de led.
Celui ci est tout simplement composé de 34 led RGB donc chaque patte est déporté sur un connecteur ou je viendrai souder un petit fil jusqu’au M5450.

mega-pov-rgb

le ruban RGB de presque 30cm de long au total

Photo :

Barrette de led RGB, ici non soudée (raw pcb)

alimentation 5v 1A, vue cuivre

Alimentation 5v 1A, coté composant

M5450 for the win !

Montage "breadboard" de test du code arduino pour le M5450

Montage des deux parties de la ligne rgb

un M5450 et quelques led rgb de seeedstudio

Mega-POV, ligne de led RGB ready !

Edit: La suite dans cet article :
https://skyduino.wordpress.com/2011/09/17/rgb-pov-enfin-de-la-news/

Fichier et Liens :
Wikipedia -> POV : http://fr.wikipedia.org/wiki/Persistance_rétinienne
Ladyada Mini Pov -> http://ladyada.net/make/minipov3/index.html

Code arduino d’essai :

unsigned long sequenceR[] = {
  0x0, 0xF, 0xFF, 0xFFF, 0xFFFF, 0xFFFFF, 0xFFFFFF, 0xFFFFFFF, 0xFFFFFFFF};
unsigned long sequenceG[] = {
  0x0, 0xF, 0xFF, 0xFFF, 0xFFFF, 0xFFFFF, 0xFFFFFF, 0xFFFFFFF, 0xFFFFFFFF};
unsigned long sequenceB[] = {
  0x0, 0xF, 0xFF, 0xFFF, 0xFFFF, 0xFFFFF, 0xFFFFFF, 0xFFFFFFF, 0xFFFFFFFF};
const unsigned int sequenceLength = 9;
unsigned int index = 0;

void setup()
{
  setupM5450(2, 3);
  setupM5450(4, 5);
  setupM5450(6, 7);
}

void loop()
{
  if(index == sequenceLength)
    index = 0;
  else
    index ++;
    
  delay(5000);
 
  sendToM5450(2, 3, sequenceB[index]);
  sendToM5450(4, 5, sequenceG[index]);
  sendToM5450(6, 7, sequenceR[index]);
}

void setupM5450(byte clockPin, byte dataPin)
{
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  //sendToM5450(clockPin, dataPin, 0);
}

void sendToM5450(byte clockPin, byte dataPin, unsigned long data)
{
  lowLevelSend(clockPin, dataPin, 1);
  delayMicroseconds(1);
  for(byte i=0; i<35; i++){
    lowLevelSend(clockPin, dataPin, bitRead(data, i));
    delayMicroseconds(1);
  }
}

void lowLevelSend(byte clockPin, byte dataPin, boolean bit){
  digitalWrite(clockPin, LOW);
  digitalWrite(dataPin, bit);
  delayMicroseconds(1);
  digitalWrite(clockPin, HIGH);
}

Les 3 séquences RGB sont très basique c’était juste pour voir la consommation global du systéme.
(Juste pour info elle est de 300mA toutes leds allumées (r + g + b))

Discussion

6 réflexions sur “[Arduino] Afficheur POV – 34 Led RGB

  1. Bonjour et bonne Année,je cherche quelqu’un qui pourrait me faire un pov rotatif de environ 1m 30 de diamètre, deux baguettes de 65 cm ou 70 cm avec des leds rgb genre 5050.
    Si intéressé veuillez me contacter au mail suivant: –EDIT–, merci d’avance et bon wknd.
    Man.

    Publié par Biedermann.Manfred | 3 janvier 2014, 17 h 33 min
    • Les commentaires de mon blog ne sont pas un site de petite annonce😉

      Surtout qu’un POV de 1m30 de diamètre – en plus d’être un casse tête sans nom à construire – est assurément un bon moyen de finir à l’hôpital avec une pâle en métal planté dans le ventre.
      A 1500 tours /minutes (25 rotations par seconde) une baguette de 65 cm ça fait du dégât.

      Publié par skywodd | 5 janvier 2014, 19 h 23 min
  2. Bonjour, j’aurai souhaité savoir pourquoi il n’y avait pas de résistances avant les LEDs ?? Merci.

    Publié par Chatard | 6 février 2014, 14 h 58 min
  3. HI,
    Can you please help me with detailed instructions about how to program the M5450.

    Publié par suliman | 23 juillet 2014, 6 h 46 min
  4. Bravo à toi, ça gère !

    Publié par Borlet | 20 août 2015, 22 h 31 min

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.