Menu Content/Inhalt
Accueil arrow Journal simple arrow Journal simple (description)
Journal simple (description) Version imprimable
23-03-2007
Image 
 
Ce panneau lumineux est constitué de LED ce qui est plus fastidieux à monter mais qui a le gros avantage d'être beaucoup plus économique et vous pourrez ainsi choisir la couleur de votre choix et l'intensité lumineuse des LED suivant votre budget.
Vous avez dit programmable ? Le cœur du journal est basé sur un PIC16F876 de l'écurie Microchip cadencé à 24MHz. Les messages programmables sont stockés dans une EEPROM i2c de type 24LC256 ce qui nous donne une durée de stockage de 10 ans sans batterie.
La matrice de 96 colonnes permet d'afficher simultanément 16 caractères avec la police

5x7 (96 caractères standards) et 12 caractères avec la police 8x8 (256 caractères avec symboles). Cette dernière police vous permettra aussi d'afficher un logo de 8 pixels de haut en modifiant la table de caractères.
Ce journal peut être piloté par  un  PC via le port RS232 à l'aide de l'utilitaire HyperTerminal mais il y a aussi un logiciel développé en C++ qui permet de tester, d'éditer, de sauver et de transférer des listes d'animations. Vous pourrez  ainsi modifier vos listes de messages à votre convenance et les transférer  rapidement en moins d'une minute pour les 32Ko de l'EEPROM 24LC256.

Carte vidéo :

Image (5 KB)
 
Le programme du PIC est écrit entièrement en C. Le contenu de la matrice de LED est stocké virtuellement en RAM sous la forme d'un tableau de 96 octets nommé Image[] qui correspond à l'affichage (figure 1) des 768 LED (96*8=768).
On remplit les registres à décalage (74HC164) avec le contenu de la première ligne (Image[0] à Image[11]) et on excite le darlington de commande de la première ligne. Ensuite on fait la même chose pour les lignes 1, 2, ..., jusqu'à 7. Cette opération est répétée indéfiniment, à grande vitesse, ce qui donne l'illusion d'une image fixe grâce à la persistance rétinienne de l'œil humain. Par contre on est obligé en contrepartie d'augmenter le courant traversant les LED car on ne les allume que pendant 1/8 du temps. Cette solution de multiplexage permet d'économiser beaucoup de composants et de réduire la consommation totale du montage.

Programme principal :

Le programme utilise les interruptions pour le clignotement de la LED power et pour la réception des données séries RS232 qui sont stockées dans un tampon de réception de 80 octets (bufferRX[]). Le programme principal (figure 3) initialise les périphériques internes du PIC (module i2c, uart, timer, ports d'entrées / sorties, analogique) puis tourne dans la boucle principale. Cette boucle vérifie que le dernier caractère reçu n'est pas le retour chariot ('\n' ou <CR>) ; si c'est le cas, on a reçu une commande et il faut l'interpréter (cf. paragraphe suivant). L'image est recalculée si nécessaire et affichée par la fonction lcd_display(). On peut aussi présenter un iButton ce qui aura pour effet d'afficher son numéro de série sur la console d'HyperTerminal si le CRC est correct.
 
Image
 
Le temps d'affichage de chaque ligne est temporisé par la fonction TEMPO() ; vous pouvez donc faire des essais avec des durées différentes pour obtenir le meilleur résultat. L'affichage de la matrice complète prend environ 5 ms auxquelles il faut ajouter le temps de calcul de l'image, l'acquisition RS232…
Ce qui donne en théorie 200Hz pour une image fixe, mais tombe à 120Hz environ pendant le défilement horizontal du message.
Les modes d'affichage disponibles sont : défilement de droite vers gauche, fixe et clignotant. Les 2 polices disponibles sont stockées sous forme de tableaux constants dans la ROM du PIC et prennent respectivement 485 mots pour la police 5x7 et 2048 mots pour la police 8x8. Il reste donc les 2/3 de ROM pour le programme. Vous trouverez 2 utilitaires écrits en Visual Basic qui permettent de générer facilement les données des tables de caractères si vous avez des caractères spéciaux à créer par exemple.

 

EEPROM :

L'EEprom i2c permet de stocker de 63 à 254 messages de 84 caractères chacun avec leurs options d'affichage. Vous pouvez donc choisir entre les 3 types d'EEprom possibles :
 
 EEPROMNombre de messages 
 24LC6463 
 24LC128127 
 24LC256254 
 
Le stockage des messages en EEPROM est assez simple. La mémoire est coupée en blocs de 128 octets dans lesquels on trouve tous d'abord les options d'affichage puis les messages comme décrit dans le tableau ci-dessous.
 
Adresse Description 
 Base Adresse message (inutilisé)
 Base + 1
 N° message (inutilisé)
 Base + 2
 Mode d'affichage ('D' défilant, 'F' fixe, 'C' clignotant
 Base + 3
 Vitesse de défilement du message
 Base + 4
 Nombre de passages du message défilant (mode défilant)
 Base + 5
 Durée d'affichage (mode fixe / clignotant)
 Base + 6
 Police (0 = 5x7, 1 = 8x8, 2 = 16x8)
 Base + 7
 Message de 84 caractères terminé par le caractère nul '\0'
 
Base = n°message * 128
Le premier message se trouve à l'adresse 128 car les 128 premières données servent à définir les options du script (nom du script, nombre de messages …)
La programmation de l'EEprom se fait directement à partir du logiciel JourQt développé en C++ via le PIC16F876. L'accès à la mémoire se fait en mode rafale ; c'est-à-dire que le PIC adresse l'EEprom puis lit ou écrit, en flot continu, un paquet d'octets. Pour l'écriture, cette série de mémoire limite l'accès à 64 octets consécutif dans un même bloc.
 
Image
 

Interpréteur de commandes :

Pour simplifier l'utilisation du journal, il y  a un interpréteur de commande avec un prompt ('>') qui permet à l'utilisateur de communiquer facilement avec le PIC.

Il suffit d'ouvrir HyperTerminal et de le configurer avec les paramètres de la figure 4 sur le bon port de communication COM1 à COM4.

Le fonctionnement de l'interpréteur est le suivant : le 1er caractère correspond à la commande suivie d'options et du caractère de retour chariot ('\n' ou <CR>). On peut effacer un caractère à tout moment en tapant sur la touche backspace () et annuler la commande en cours avec la touche échap. La commande n'est prise en compte qu'à la réception du retour chariot ! Il ne faut pas dépasser 80 octets pour la commande sinon elle ne sera pas valide et le message " Buffer overflow " apparaîtra.

 CommandeOptions N° 
 T Votre message ici
 1
 M F 2
 F 0 3
 
La commande n°1 : " TVotre message ici"  affiche le texte "Votre message ici" sur la matrice. La commande 'M' permet de choisir le mode d'affichage : 'M' suivi de 'F' pour le mode fixe (" MD " : mode défilant ; " MC " : clignotant). 'F' suivi de '0' ou '1' pour choisir la police 5x7 ou 8x8. La liste complète des commandes se trouve dans le tableau 4.
A chaque retour chariot ('\n' ou <CR>), le PIC émet un nombre hexadécimal suivi du prompt ('>'). Ce nombre est le checksum (somme de vérification) de la commande reçue et permet au logiciel de contrôle du journal JourQt de sécuriser les échanges.
 
Il faut commencer par tapez 'D' pour afficher l'écho des caractères tapés. Ensuite tapez " MF " pour passer en mode fixe et arrêter le script en cours. Tapez " F0 " et vous aurez l'équivalent de la première image ; si vous tapez ensuite " F1 " vous aurez le même message mais avec la police 8x8. Si vous voulez redémarrer le script il faut taper " C00 ".

Image

 

L'électronique :

Le montage est composé de 2 parties : la partie commande avec le microcontrôleur et la matrice de leds. La 1ère carte utilise un PIC16F876 avec 368 octets de Ram et 8192 mots de mémoire programme. L'alimentation est confiée à un régulateur à découpage, de chez National Semiconducteur, le LM2576T-ADJ capable de délivrer un courant nominal de 3A avec un très bon rendement de près de 80%.  La partie logique est régulée par un régulateur linéaire 7805. Vous devez monter le pont de diode complet si vous avez un transformateur délivrant une tension alternative. Il est aussi possible d'utiliser une veille alimentation d'ordinateur capable de délivrer quelques ampères sous 5V moyennant quelques modifications sur le circuit. L'EEprom 24LC256 est connectée directement au module i2c du PIC. La communication avec le PC se fait via un MAX232 pour adapter les niveaux. L'entrée analogique RA0 mesure la tension délivrée aux LED. On peut ainsi contrôler cette tension sur le PC grâce à la commande 'u'. La connexion avec la matrice de LED se fait par un connecteur à 11 plots sur lequel on a les 4 signaux LA, LB, LC et LEN qui contrôlent la sélection de ligne du 74HC138. Les signaux DATA_IN, CLOCK et RESET servent à transmettre les données séries aux 24 registres à décalages 74HC164.

 

Registre à décalage :

Image


Le pilotage des lignes est confié à des transistors PNP TIP42. Les 74HC164 n'étant pas suffisant pour fournir les 70mA pilotant chaque LED, ils sont bufferisés par des transistors NPN classiques de type BC547. On retrouve aussi des condensateurs de découplage à proximité de chaque circuit intégré afin de limiter les perturbations électromagnétiques.
Le circuit de la matrice de LED est composé de 4 panneaux simple face. Il faut donc utiliser la cathode de chaque LED pour former un strap sous le circuit. La photo de la figure 7 vous montre comment monter les LED.

Montage des leds :

Image
 
Les panneaux sont connectés par des straps réalisés à l'aide de câble monobrin de 1.5mm² pour assurer la connexion des masses et la rigidité mécanique. Il faut aussi souder une dizaine de straps pour la connexion des signaux. Le montage pourra être monté sur un panneau de plastique et recouvert par un plexiglas fumé.
 
 

Câble RS232 :

La confection d'un câble série de type rallonge RS232 permettra au PC de communiquer avec le journal lumineux. Il faut éviter de dépasser 15m et utiliser du câble blindé de préférence.
 
Image
 

Logiciel PC :

Image

Le logiciel est téléchargeable dans la section téléchargement. Il faut tout d'abord extraire l'archive zip sur votre disque dur. Le programme fonctionne sur toutes les versions de Windows à partir de 95. Le programme est écrit en C++ et utilise la librairie Qt 2.30 nc de chez Trolltech pour l'interface homme machine. Ce logiciel utilise le protocole de communication décrit dans le paragraphe "interpréteur de commandes". Le contrôle du checksum est systématique et permet au logiciel de savoir si le PIC a bien reçu la dernière commande. En cas d'échec le logiciel réessaye 7 fois de rang et si vraiment vous n'avez pas de chance vous aurez alors un message d'erreur qui vous inviteras à vérifier votre câble et / ou la connectique. Pour commencer, vous pouvez paramétrer le numéro du port COM auquel vous avez connecté le journal. Si tout va bien vous devez lire le numéro de version du firmware (1.52) et la tension des LED. Vous devez aussi choisir le modèle d'EEprom que vous avez monté. Ces 2 paramètres sont sauvegardés dans le fichier jourqt.ini pour les restaurer au prochain lancement.
Un fichier exemple dénommé "demo.bin " est installé avec l'application.
Commencez par taper le texte "Journal Lumineux" puis choisissez le mode défilement, la vitesse 3 et la police 5x7. Il faut ensuite cliquer sur "Ajouter" pour le mettre dans la liste. Vous pouvez éditer un message en le sélectionnant dans la liste puis en cliquant sur "OK / Update". La fonction "Test Item" permet de tester le message en cours d'édition sur le journal lumineux (s'il est connecté au PC). Les messages peuvent être déplacés vers le haut ou vers le bas à l'aide des boutons "Monter" et "Descendre".
Le transfert de la liste d'animation vers le PIC se fait en cliquant sur le bouton "Transférer EE". Le transfert dure environ 40 secondes pour une 24LC256 et 10 secondes pour une 24LC64. Il est aussi possible de lire la liste contenue dans le journal lumineux en cliquant sur "Charger EE". Les listes d'animations peuvent être enregistrées et chargées à partir du disque dur.
Si vous avez utilisé HyperTerminal avant de lancer JourQt, assurez-vous de passer dans le mode normal en tapant 'd' suivi d'entrée pour sortir du mode de débuggage avec echo des caractères reçu sinon le logiciel n'arrivera pas à communiquer. Pensez aussi à quitter HyperTerminal ou fermer le port COM. Vous pouvez aussi tout simplement arrêter puis redémarrer le journal pour repasser dans ce mode.

Liste des composants :

IC1 : PIC16F876_20I/P ou PIC16F876A programmé
IC2 : MAX232
IC3 : 24LC256 (32Ko) ou 24LC128 (16Ko) ou 24LC64 (8Ko) (voir texte)
IC4 : LM2576T-ADJ
IC5 : 7805
IC6 : 74HC138
IC7 - IC18 : 12 * 74HC164
Q1 : 20MHz
CON1 : connecteur DB9 femelle coudé pour circuit
T1-T8 : 8 TIP42C (ou TIP31 ou TIP29)
Résistances 1/4W
R ??-R ?? : 104 résistances 4K7 1/4W
R ?? - R ?? : 96 résistances 33 ohms 1/4W
Matrice : 768 leds 5mm HL
2 Led rouge 3mm
Divers : 2 radiateurs pour IC4 et IC5
1 bornier 2 plot

 

Dernire mise jour : ( 26-03-2007 )
 
designed by www.madeyourweb.com