Sélectionnez votre langue

Présentation

Le séquenceur 010 produit des allumages et extinctions progressifs de plusieurs lampes (LED) sur des longues durées, et a été développé pour l'animation lumineuse d'une maquette de bâtiment d'un sculpteur plasticien.

sequenceur_010a_pcb_3d_a  

Ce séquenceur "010" a fait l'objet de 4 versions :
- schéma 010 : avec PIC 18F46K22 et générateur PWM externe PCA9685 sur CI - finalisé mais non choisi
- schéma 010a : avec PIC 18F46K22 et générateur PWM externe PCA9685 sur module - finalisé et choisi
- schéma 010b : avec PIC 18F25K22 et générateur PWM externe PCA9685 sur module -non finalisé
- schéma 010c : avec PIC 18F46K22, sans générateur PWM externe - finalisé mais non choisi
Les différences entre les versions avec ou sans PCA9685 concernent la fréquence des signaux PWM (500 Hz avec le PCA9685, 75 Hz avec le PIC seul) et la résolution du codage PWM (12 bits avec le PCA9685, 8 bits avec le PIC seul). La version retenue au final est la version 010a, objet du présent descriptif. Voir aussi page Séquenceur 010c.

Schéma 010a

Le schéma ci-après représente le circuit complet, avec son générateur PWM PCA9685 monté sur module externe.

sequenceur_010a
(image volontairement embrouillée)

Remarque importante : certaines broches du module à base de PCA9685 ne sont pas représentées sur ce schéma. Cela est lié au fait que dans cette versions, lesdites broches sont accessibles sur le circuit imprimé du module sous forme de pastilles à souder et non accessibles avec des connecteurs.

Fonctionnement général

Le PIC 18F46K22 pilote le PCA9685 selon un programme pré-établi parmi plusieurs. Les sorties du PCA9685 peuvent attaquer directement des LED standard (max 20 mA) ou transiter par des transistors darlington (ULN2803) qui se chargent de l'amplification en courant (max 500 mA par sortie quand toutes les sorties ne sont pas actives en même temps). La fréquence des signaux PWM délivrés par le PCA9685 a été fixée à 500 Hz. Ainsi, pas de risque de scintillement visible (même à travers l'oeil d'une caméra) et pas trop rapide pour pouvoir utiliser des transistors de puissance "lents". Le système peut être démarré et arrêté à distance au moyen d'une télécommande infrarouge, qui par la même occasion permet le changement des séquences lumineuses (programmes).

Modes des sorties PWM

Les sorties PWM du PCA9685 peuvent être configurées de différentes façons, pour s'adapter à l'étage de sortie (de puissance) désiré, selon l'état logique des lignes RB2 et RB3 du PIC :

  • Inv/RB2 = 0 (JP3 en place) -> sorties avec logique "positive" (état bas permanent pour PWM 0%, état haut permanent pour PWM 100%)
  • Inv/RB2 = 1 (JP3 retiré) -> sorties avec logique inversée (état bas permanent pour PWM 100%, état haut permanent pour PWM 0%)
  • Drv/RB3 = 0 (JP4 en place) -> sorties configurées en "open drain" (drain ouvert)
  • Drv/RB3 = 1 (JP4 retiré) -> sorties configurées en "totem pole"

Selon la configuration adoptée, on peut relier directement des LED (via résistance série) sur les sorties du PCA9685, ou ajouter une interface de puissance adaptée à l'usage désiré (autre que celle adoptée ici). Si on utilise l'interface à ULN2803 intégrée, alors JP3 doit être mis en place et JP4 doit être retiré.

Evolution "électrique" des variations de lumière

Utiliser une commande linéaire pour faire varier l'intensité lumineuse des LED (rapport cyclique PWM de 25% pour quart de luminosité et de 50% pour moitié de luminosité) est la solution la plus simple d'un point de vue technique, mais elle n'est pas "conforme" à la sensibilité de l'oeil humain qui suit une courbe logarithmique. La commande électrique doit se faire selon une courbe adaptée à la caractéristique de l'oeil, et c'est pourquoi ce séquenceur permet de choisir entre une courbe exponentielle ou en S. Il faut savoir que l'oeil est plus sensible aux petites variations de niveaux quand l'intensité lumineuse est faible, qu'il ne l'est aux petites variations de niveaux quand l'intensité lumineuse est élevée. Le choix du mode de variation se fait ici grâce au cavalier JP1/PwmCurve :

  • CF1/RB1 = 0 (JP1 en place) : mode de variation en "S"
  • CF1/RB1 = 1 (JP1 retiré) : mode de variation exponentielle

Dans les deux cas, le codage PWM se fait avec une résolution de 12 bits, ce qui permet de créer des variations suffisament fines dans les faibles niveaux d'intensité lumineuse (cette variation fine est tout de même limite pour des changements très lents). Les graphes suivant montrent trois façons de faire évoluer une intensité lumineuse, en montant puis en descendant.

sequenceur_010_graph_001a
Courbe A : Exemple avec courbe de variation linéaire (pas idéal pour l'oeil humain)

sequenceur_010_graph_001b
Courbe B : Exemple avec courbe de variation en S

sequenceur_010_graph_001c
Courbe C : Exemple avec courbe de variation exponentielle

Après essais et pour les séquences de variation demandées (très lentes) la courbe exponentielle s'est avéré la mieux adaptée.

Télécommande

Le contrôle du fonctionnement du séquenceur peut se faire au moyen d'une télécommande infrarouge (IR) standard pour TV ou lecteur DVD, dès l'instant où cette dernière respecte le protocole RC5 ou RC6 de Philips. Les données IR sont démodulées par un récepteur TSOP4836 comportant le filtre optique et l'électronique d'extraction des données modulantes. Le TSOP4836 convient pour une porteuse IR de 36 kHz, alors que le TSOP4838 convient pour une porteuse IR de 38 kHz (le 36 kHz est plus souvent utilisé, c'est pourquoi je l'ai adopté ici). Une fois l'extraction (la démodulation) des données réalisée, le logiciel analyse les différents éléments de la trame RC5 (ou RC6) et réagit s'il reconnaît les "codes" (valeurs système et programme) attendus :

  • Touche Play : (re)mise en route du séquenceur (sans changement du numéro de programme)
  • Touche Stop : arrêt total du séquenceur (toutes les lampes s'éteignent)
  • Touches 1 à 9 : démarrage du programme correspondant

Le cavalier JP2 permet au logiciel du PIC de s'adapter au protocole de la télécommande utilisée :

  • JP2 retiré (RB2 = 1) : décodage RC5
  • JP2 en place (RB2 = 0) : décodage RC6

Les autres protocoles de télécommandes IR (NEC, Sony, etc) ne sont pas reconnus par ce séquenceur.

Alimentation

Le PIC est alimenté sous une tension de 5 V délivrée par un régulateur de type LM7805. La section alimentation incluse dans le schéma est un exemple complet et suffisant de source d'alimentation 5 V. La consommation de l'ensemble est inférieure à 50 mA, si on exclue les LED branchées sur les sorties. Ces dernières sont reliées entre les sorties collecteur ouvert des ULN2803 et le pôle positif de l'alimentation continue non régulée Vnr, en amont du régulateur de tension. Le transformateur choisi ici délivre une tension secondaire de 9 Vac, ce qui donne environ 11 Vdc après redressement et filtrage. Le courant qu'il doit pouvoir débiter dépend principalement des LED utilisées. Une alimentation à tension de sortie continue peut également être utilisée. Dans ce cas, ne pas oublier que le pont de diodes (D101 à D104) provoque une chute de tension comprise entre 1,2 V et 2 V, selon consommation des LED.

Circuit(s) imprimé(s)

Circuits des versions 010 et 010a, réalisés en double face.

Version 010 - avec PCA9685 (CMS) directement sur CI

Il faut avoir de bons yeux, une bonne loupe, de bons outils et la bonne technique quand on soude le PCA9685 (U2) à la main... ou demander un pré-assemblage au fabricant de circuit imprimé.

sequenceur_010_pcb_composants
(pistes de dessus - Top - seulement)

Version 010a - avec PCA9685 en module externe précâblé (version retenue)

Module précâblé PCA9685 Adafruit relié en "carte fille" au circuit principal via les connecteurs J2-A, J2-B, J2C, J2-D (sorties PWM) et J5 (alimentation et signaux de contrôle). Plus simple pour le débutant que je suis.

sequenceur_010a_pcb_composants
(pistes de dessus - Top - seulement)

Prototype

Réalisé pour la version 010a avec PCA9685 en module externe.

sequenceur_010ab_proto_001a sequenceur_010ab_proto_001b

Pour ce prototype, j'ai utilisé un module PWM précâblé d'Adafruit (environ 15 euros) pour commencer, et j'ai ensuite utilisé le même type de module mais trouvé en Chine à 2 euros (module complet moins cher que le seul circuit intégré PCA9685 que j'ai acheté à l'unité chez Farnell). La différence entre les deux ? Couleur du vernis épargne, et résistances CMS individuelles sur un des CI et en réseaux de quatre sur l'autre photo des deux CI côte à côte. Le circuit finalisé, qui supporte le module PWM en carte fille, est conforme au dessin du circuit imprimé 010a vu ci-avant.

sequenceur_010a_proto_001a sequenceur_010a_proto_001c sequenceur_010a_proto_001d

J'ai effectué des tests avec plusieurs LED : des haute luminosité 5 mm standard, des LED de puissance 1W et des lampes à LED pour voiture.

sequenceur_010a_proto_001h

Selon la puissance lumineuse de la LED, on peut percevoir, à vitesse très lente, les sauts de niveau aux très faibles valeurs PWM (entre 0% et 5%). Cela n'est guère gênant pour l'application envisagée, mais j'ai tout de même voulu jouer le fanfaron et j'ai éliminé ce phénomène de façon analogique. Désormais et même à vitesse très lente, l'extinction et l'allumage se font avec une douceur difficile à décrire. On a envie de rester devant pendant des heures, ce qui laisse présager une concurrence sévère avec les poissons dans leur aquarium.

Logiciel du PIC

Fichiers non disponibles.

Historique

15/01/2017
- Ajout photos du montage finalisé.
08/01/2017
- Première mise à disposition.