Voici un circuit universel permettant de superposer une phrase ou un sigle à n’importe quel signal vidéo. Il suffit de le programmer, en chargeant dans sa mémoire la phrase ou le sigle à visualiser, puis de l’insérer entre la source vidéo et l’écran ou le magnétoscope, pour obtenir des images “titrées” en sortie. Les radioamateurs pourront utiliser cette réalisation pour superposer leur indicatif à une mire. L’utilisation d’un circuit STV5730, spécialement conçu pour les applications OSD, rend le montage extrêmement simple et compact.
Si vous êtes passionné de vidéo, radioamateur ou professionnel des installations TV en circuit fermé, une titreuse électronique pourra vous rendre de nombreux services.
Une titreuse électronique c’est un appareil capable d’insérer des textes sur n’importe quel signal vidéo comme une mire, les images filmées par une caméra et visualisées sur un écran, ou bien encore sur celles enregistrées sur la bande magnétique d’une caméra vidéo portable.
De nombreux lecteurs, qui trouvent leur plaisir dans le domaine de la “vidéo” ou qui disposent d’un indicatif radioamateur, ont souhaité nous voir publier un tel projet.
En effet, dans le commerce, un appareil de ce genre coûte cher. Mais, l’attente des professionnels, comme celle des amateurs, est enfin terminée car nous allons vous guider dans les pages qui suivent pour vous montrer comment réaliser vous-même et à faible coût, une excellente titreuse électronique, capable de superposer un certain nombre de caractères à une image.
Le dispositif est très simple et de petites dimensions, et ce, grâce à l’utilisation d’un circuit intégré SGS Thomson qui réalise, à lui seul, la fonction voulue et ne nécessite que l’assistance d’un microcontrôleur pour gérer les commandes.
Ce circuit intégré n’est autre qu’un STV5730, utilisé depuis très longtemps dans beaucoup de téléviseurs pour réaliser le On Screen Display (OSD), ainsi que dans quelques appareils de commutation pour caméras de télévision, dont les modules à deux, trois ou quatre entrées et une sortie.
La titreuse a de nombreuses applications, non seulement en ce qui concerne la superposition d’inscription dans les vidéos amateurs, mais également et sur tout, dans le domaine de la vidéo surveillance. En effet, dans les installations de TV en circuit fermé, là où les caméras sont nombreuses et où les agents de sécurité doivent savoir à chaque instant, et d’un seul coup d’oeil jeté sur l’écran, d’où proviennent les images, l’insertion d’une inscription permet une identification immédiate.
Imaginons, par exemple, que l’on doive contrôler ce qui se passe dans quatre pièces d’une entreprise, en utilisant un écran est un séquenceur commutant l’image. En reliant une titreuse (judicieusement programmée), à la sortie de chaque caméra, on peut voir en surimpression le nom de la pièce observée.
Evidemment (vous l’aurez bien sûr compris en lisant les exemples…), le circuit a été conçu pour travailler avec un signal vidéo composite standard (1 Vpp/75 ohms).
Physiquement, le montage ressemble à un module de mémoire SIMM, avec un connecteur de 30 broches, du même type que ceux utilisés dans les vieilles cartes mères des ordinateurs basés sur les 80286, 80386 ou 80486 d’Intel (voir figure 4).
Le module est monté sur un circuit adapté qui est ensuite utilisé en phase de programmation pour charger, dans la mémoire du microcontrôleur, la phrase à superposer aux images (voir figure 7, 10 et 14).
Le module peut rester sur la carte connecteurs en permanence. Sur cette carte, on trouve : le support SIMM, un connecteur DB9, à relier à la sortie série du PC), deux prises RCA, l’une pour l’entrée du signal vidéo, l’autre pour la sortie ansi qu’une prise alimentation.
Bien qu’il soit capable de générer des caractères sur la vidéo, notre dispositif n’est pas vraiment ce que les experts appellent “Gen-Lock”. En effet, il ne peut pas générer d’inscriptions à volonté, mais seulement celles qui ont été préalablement programmées dans la mémoire de son microcontrôleur.
Pour ceux qui ont besoin d’un affichage dont la teneur doit pouvoir être modifiée en permanence, nous vous proposerons prochainement un montage spécifique, adapté à toutes les utilisations, contrôlable par PC, avec lequel vous pourrez insérer en temps réel n’importe quelle inscription, sous-titre, signal horaire, etc., sur un film ou sur de simples images fixes, mais également sur un écran vide. Bref, un instrument indispensable pour les montages et la préparation de films professionnels.
Le STV5730
En attendant un prochain numéro d’ELM pour nous attarder plus longuement sur le “Gen-Lock”, voyons plutôt maintenantle montage de ce mois-ci : le circuit en lui-même est assez simple, ou en tous les cas, énormément simplifié par rapport à ce qu’il aurait été s’il avait fallu utiliser des dispositifs traditionnels pour obtenir les synchronismes, générer les textes, les mélanger, etc.
Dans notre montage, c’est le circuit intégré U1 (voir figures 1 et 2), c’est-à-dire le STV5730, qui fait tout. Le microcontrôleur U2 (un PIC12CE674), gère les commandes et les fonctions, et permet d’acquérir, lors de la programmation, les phrases envoyées par le PC le long de la ligne sérielle.
A ce propos, observons que la titreuse fonctionne effectivement avec un PC, mais uniquement pour la programmation.
Une fois les données envoyées, le STV5730 superpose les caractères que le PIC a emmagasinés dans son EEPROM, où ils restent jusqu’à ce qu’on les efface.
Mais tachons d’y voir plus clair, et commençons par examiner le coeur du circuit, c’est-à-dire le microcontrôleur SGS Thomson (figure 1 et 2). Comme nous l’avons déjà dit, il s’agit d’un générateur de caractères qui, afin de travailler avec des signaux de type vidéo composite, incorpore tous les étages nécessaires.
Parmi ceux-ci, on peut distinguer un élément qui reconnaît et sépare les synchronismes, un générateur de synchronismes vidéo composite (PAL, 50/15625 Hz), un mélangeur, un PLL, une logique de contrôle, une mémoire RAM dans laquelle sont emmagasinées les données qui arrivent du microcontrôleur, une ROM contenant les données des caractères, un amplificateur de sortie capable d’élever le niveau du signal vidéo de +0 dB à +6 dB, et un décodeur d’onde porteuse image.
Le circuit intégré peut essentiellement fonctionner sur deux modes différents : le premier (Mixed Mode), se mélange à un système vidéo préexistant et y superpose du texte, tandis que le second (Full Page Mode), peut générer lui-même les caractères, sans avoir besoin d’une image en fond.
Les deux modes en détail
Le “Mixed Mode”
En “Mixed Mode”, lorsque le STV5730 reçoit un signal vidéo composite, il en extrait les synchronismes verticaux et horizontaux, puis il produit les caractères qui lui sont demandés par le dispositif de contrôle et en mélange la partie de brillance et de chrominance avec la vidéo composite d’entrée. Evidemment, pour obtenir la bonne visualisation, il mélange les inscriptions aux synchronismes relevés, qui sont ensuite reformés et à nouveau superposés à la sortie, de laquelle il est possible de prélever une nouvelle vidéo composite contenant les images en entrée avec les inscriptions superposées.
Il faut signaler que les caractères peuvent être en noir et blanc, ou bien transparents (c’est-à-dire qu’ils ne couvrent pas complètement la partie de l’image à laquelle ils se superposent).
On peut aussi obtenir des inscriptions en couleur, mais il faut alors également utiliser les sorties RGB, alors qu’avec notre circuit, nous nous limitons à prélever le signal de l’output CVBS (composite).
En d’autres termes, pour obtenir la superposition de caractères colorés, on part du signal vidéo composite, mais il faut sortir avec les trois signaux RGB, plus le synchronisme composite.
Ces 4 lignes sont ensuite envoyées aux lignes de la prise péritel correspondantes et de celle-ci, aux décodeurs de couleur PAL/SECAM. Par exemple, les différents TDA3560, TDA3562, etc., disposent des entrées RGB et C-SYNC pour recevoir également les signaux RGB, puis les envoyer à leurs sorties respectives et de là, au support du tube image. Il existe aussi une alternative : on peut en effet avoir des caractères en couleur, mais sans signal vidéo à l’entrée. Dans ce mode, c’est le microcontrôleur qui génère les synchronismes ainsi que tout ce qui est nécessaire.
Le “Full Page”
Quant au second mode (c’est-à-dire le “Full Page”), il correspond à la production totale d’un écran : en fait, il s’agit du mode permettant au circuit intégré de générer des caractères sur l’écran tout entier et de construire le signal composite en entier en partant de zéro. Il n’a donc aucun besoin de signal vidéo à l’entrée.
Les synchronismes ne sont (bien évidemment) pas prélevés sur l’entrée CVBS, mais ils sont produits à l’intérieur de la logique spéciale. En outre, les images couleur sont disponibles tant sur la sortie vidéo composite que sur la sortie RGB.
A l’intérieur de ce mode, on peut distinguer deux sous-modes, appelés “Normal Full Page” et “Vidéo Full Page”, par le constructeur. Dans le premier, le dispositif fonctionne effectivement comme un générateur d’inscriptions (le fond apparaît uniformément coloré), tandis que dans le second, c’est une image vidéo qui sert de fond. En tous les cas, le texte peut être composé d’une page de 11 lignes de 28 caractères chacune (au maximum, 308 caractères) et chaque caractère est formé d’une matrice de 12 points pour 18 lignes.
Le set disponible comprend 128 caractères écrits en ROM, tous adressables par l’intermédiaire d’un code spécial contenu dans une commande que nous analyserons plus tard.
Parmi les différentes fonctions possibles, on peut choisir la position que l’on veut donner à chacune des lettres, parmi 58 places à l’horizontale et 63 à la verticale, ainsi que la visualisation d’une seule ligne à la fois.
On peut choisir la couleur des caractères (lorsque c’est prévu) parmi 8 combinaisons, et cela est également valable pour le fond de page éventuel (lorsqu’il n’y a pas de signal vidéo composite à l’entrée).
On peut aussi choisir la couleur du bord des inscriptions, chose très utile lorsque le fond et les caractères ont une même tonalité. Le choix peut toujours se faire parmi 8 couleurs.
Pour finir, le STV5730 permet de visualiser de façon continue ou saccadée, tant les caractères que le fond : le temps d’apparition peut être établi entre 0,5 et 1 seconde, tandis que le “duty-cycle” peut être réglé à 25, 50 et 75 %.
Bien, ceci étant dit, et avec l’aide du schéma d’implantation du circuit intégré, nous espérons que vous aurez compris le fonctionnement du STV5730.
Nous passons donc à présent à l’analyse du schéma électrique complet de notre titreuse.
Le circuit intégré STV5730
Pour obtenir la superposition d’inscriptions sur des images, nous avons utilisé un circuit SGS Thomson, conçu pour la réalisation de systèmes On Screen Display (OSD).
Il s’agit d’un générateur de caractères qui travaille sur des signaux de type vidéo composite et qui, pour cela, incorpore tous les étages nécessaires.
Parmi ceux-ci, on distingue un élément qui reconnaît et sépare les synchronismes, un générateur de synchronismes vidéo composite (PAL, 50/15 625 Hz ou NTSC, 60/15750 Hz), un mélangeur, un PLL, une logique de contrôle, une mémoire RAM dans laquelle sont emmagasinées les données qui arrivent du microcontrôleur, une ROM contenant les données des caractères, un amplificateur de sortie capable d’élever le niveau du signal vidéo de +0 dB à +6 dB, et un décodeur d’onde porteuse image.
Le circuit intégré peut essentiellement fonctionner sur deux modes différents : le premier (Mixed Mode), s’ajoute à un système vidéo préexistant et y superpose du texte, tandis que le second (Full Page Mode), peut générer lui-même les caractères, sans avoir besoin d’une image en fond.
Figure 1 : Schéma synoptique du circuit intégré STV5730 de SGS Thomson
Figure 2 : Brochage du circuit intégré STV5730.
Le schéma électrique
Le microcontrôleur U2 veille à la réception des informations concernant l’inscription à visualiser, informations qu’il reçoit du PC. Il garde les caractères en mémoire (dont la capacité limite la dimension de l’inscription à 28 caractères…) et les passe au STV5730 même s’il est déconnecté du PC.
En ce qui concerne les composants externes, U1 se sert du quartz Q1 pour faire fonctionner son propre oscillateur (celui du PIC, au contraire, se sert de Q2) et de deux étages “buffer”, un pour l’entrée et l’autre pour la sortie. T1, en particulier, ainsi que les composants qui y sont liés, forment un circuit de couplage pour la vidéo composite appliqué à l’entrée (contact 2 du circuit) tandis que T2 et tout ce qui l’entoure sert pour coupler la broche 27 du microcontrôleur avec la sortie (contact 29 du circuit) du module.
On a prévu un régulateur intégré qui, chaque fois que la titreuse est alimentée avec plus de 5 volts, stabilise la tension éventuellement présente entre le contact 24 (Val) et le 23 (masse) à exactement 5 volts.
Le cavalier J1 est donc laissé ouvert si la tension d’alimentation dépasse les 5 volts, et reste fermé dans le cas contraire.
Un dernier détail concernant l’interface sérielle : le PIC12CE674 reçoit les données qui arrivent du PC par l’intermédiaire de la broche 4 (ligne GP3), tandis que la résistance R6 sert essentiellement à limiter le courant dans la diode de protection qui intervient lorsqu’un niveau négatif est atteint.
En effet, vous pouvez remarquer qu’il n’y a aucun convertisseur RS232/TTL, et que donc, les signaux d’environ 12V qui arrivent de la ligne sérielle rejoignent directement la broche 4.
Quoi qu’il en soit, nous avons vu, à la suite de nombreux essais effectués avec les dispositifs PIC, qu’une résistance suffit à limiter l’excès de potentiel positif (12 volts contre les 5 ou 6 volts typiques du TTL) ainsi que pour bloquer la composante négative (–12 volts).
Figure 3 : Connexions du module titreuse.
Figure 4 : Le circuit de l’OSD a la forme d’une mémoire SIMM à 30 broches.
Pour les connexions, on peut utiliser soit le connecteur spécial (assez coûteux), soit du connecteur en bande au pas de 2,54 mm, en utilisant les trous prévus sur le côté sortie.
Figure 5: Schéma électrique de la titreuse programmable.
Figure 6 : Schéma d’implantation des composants de la titreuse programmable.
Figure 7 : Vue du prototype du module titreuse.
Liste des composants du module titreuse
R1 = 10 kΩ
R2 = 68 Ω
R3 = 22 kΩ
R4 = 100 Ω
R5 = 390 Ω
R6 = 100 kΩ
R7 = 4,7 kΩ
R8 = 100 Ω
R9 = 180 Ω
R10 = 68 Ω
R11 = 22 kΩ
C1 = 22 μF électrolytique
C2 = 2,2 μF électrolytique
C3 = 33 pF céramique
C4 = 33 pF céramique
C5 = 100 nF polyester 63 V pas de 5 mm
C6 = 22000 pF céramique
C7 = 220 pF céramique
Q1 = Quartz 17,73447 MHz
Q2 = Quartz 20 MHz
T1 = Transistor NPN BC547B
T2 = Transistor NPN BC547B
U1 = Intégré STV5730 SMD
U2 = μcontrôleur PIC12CE674 P04 préprogrammé (MF328)
U3 = Régulateur 78l05
Divers :
1 Support 2 x 4 broches
1 Support pour cavalier et son cavalier
1 Circuit imprimé réf. S328
Figure 8 : Schéma des connexions du module titreuse dans le cas où la carte connecteurs n’est pas utilisée
Figure 9 : Schéma d’implantation des composants de la carte connecteurs du module titreuse.
Figure 10 : Vue du prototype de la carte connecteurs du module titreuse.
Liste des composants de la carte connecteurs
D1 = Diode 1N4007
Divers :
2 Prises RCA pour ci
1 Prise alimentation pour ci
1 Connecteur DB9 femelle pour ci
1 Connecteur pour SIMM
1 Circuit imprimé réf. S330
Le protocole de commutation
Maintenant que nous avons vu le matériel, nous pouvons passer au logiciel du microcontrôleur et analyser le protocole à observer pour l’utilisation du module OSD proposé dans ces pages. Il s’agit, bien évidemment, du dialogue entre le PC et le microcontrôleur PIC12CE674, qui est l’élément auquel est confiée la gestion de toute la titreuse. C’est également lui qui, une fois déconnecté du PC, donne les commandes nécessaires au STV5730.
Il faut préciser avant tout que le module accepte des commandes sérielles par l’intermédiaire de l’interface ayant pour canal de réception le contact 18 (broche 4 de l’U2). La ligne de TXD n’est pas prévue, étant donné que le dispositif doit seulement acquérir les données et n’a pas à donner de réponse.
Les paramètres de la communication sont 19200,n,8,1, c’est-à-dire une vitesse de 19 200 bits/seconde, aucune parité, 8 bits de données et 1 de stop.
Toutes les commandes qui arrivent du PC doivent commencer par un caractère que nous appelons “en-tête de contrôle”, suivi d’un code qui identifie la fonction demandée.
Viennent ensuite les paramètres spécifiques, c’est-à-dire ceux qui définissent exactement la fonction elle même.
L’en-tête est une sorte de code qui confirme la validité du message qui arrive et sert essentiellement à éviter que le microcontrôleur n’envoie la routine d’acquisition même à la suite de commutations accidentelles présentes sur la ligne sérielle. Ainsi, si les chaînes de caractères ne commencent pas avec un en-tête bien déterminé – deux astérisques dans notre cas (**) –, l’ordinateur les ignore.
Voici un exemple du format d’un message typique :
**Fpppppppp…
où ** est l’en-tête de contrôle, F est la fonction (de 1 à 5), tandis que p est le paramètre correspondant ou bien les paramètres qui définissent la fonction demandée.
Figure 11: Pour visualiser le caractère voulu, il suffit de faire référence au tableau ci-dessus en tenant compte du fait que la ligne représente la partie la plus significative du byte à transmettre, tandis que la colonne en représente la partie la moins significative. Il suffit donc, pour visualiser la lettre A, d’envoyer le caractère hexadécimal 0C.
Les fonctions
Comme nous l’avons déjà dit, le dispositif prévoit 5 fonctions possibles, que nous allons à présent analyser en détail.
La fonction 1
Commençons par la première, qui est celle par laquelle on demande au module d’initialiser le circuit vidéo (le STV5730) et de nettoyer l’écran (blanking).
La syntaxe est la suivante :
**,FONCTION
L’en-tête étant toujours **.
Ici, il faut remarquer que la virgule n’existe pas, c’est-à-dire que ce n’est pas un des caractères qui voyagent le long de la ligne sérielle. Nous ne l’avons introduite que pour séparer les différents composants des commandes et pour rendre plus claire la représentation graphique. Ceci vaudra également pour toutes les autres descriptions de fonctions à venir.
Voici un exemple de la fonction 1 :
**01
Comme vous le voyez, elle n’a pas besoin de paramètres supplémentaires, parce que cela n’aurait pas de sens.
Remarquez également qu’il n’y a pas de virgule. Poursuivons et voyons à présent la deuxième fonction, avec laquelle il est possible de configurer le registre de contrôle du processeur vidéo: un tel registre occupe une fonction essentielle pour l’activation correcte du module.
Il faut donc observer que la valeur de configuration est mémorisée dans l’EEPROM interne du microcontrôleur et est réutilisée par ce dernier à chaque réactivation (extinction et rallumage) du module, de façon à donner une configuration automatique au démarrage.
De cette façon, le dispositif fonctionne en mode “stand-alone”, c’est-à-dire sans devoir être connecté de façon permanente à un PC.
La fonction 2
A l’aide de la fonction numéro 2, il est possible de configurer le registre de contrôle du processeur vidéo. Un tel registre développe une fonction essentielle pour l’activation correcte du module.
La valeur est mémorisée par l’ordinateur qui la réutilise à la réactivation suivante du module, de façon à le configurer de manière correcte. La commande nécessite deux bytes pour indiquer une donnée à 16 bits (un byte est composé de 8 bits…) ce qui correspond, justement, à la longueur du registre de contrôle.
La syntaxe est la suivante :
**,FONCTION,HIBYTE,LOBYTE
En plus de l’en-tête habituel, on trouve les deux paramètres HIBYTE et LOBYTE, qui représentent respectivement le byte supérieur et le byte inférieur qui définissent l’emplacement du registre.
Voici un exemple typique :
**02 13 C5
Bien sûr, 02 est le nombre qui permet de distinguer la fonction, tandis que les bytes de commencement et de fin sont 13 et C5 (nombres exprimés en forme hexadécimale). 13 C4 ou bien 13 C5 sont des valeurs typiques du registre, selon que l’on veuille synchroniser le module avec un signal vidéo externe (13 C4) ou générer un signal indépendant, s’occupant lui-même des synchronismes correspondants.
La première situation correspond au “Mixed Mode” et la seconde, au “Full Page Mode”.
Dans le cas qui nous occupe, en utilisant une entrée et une sortie vidéocomposites, on opte pour le mélange du signal CVBS, on utilise donc les valeurs 13 C4, étant donné que l’on veut superposer des inscriptions aux images d’une caméra.
Toutefois, rien ne nous empêche d’introduire le second mode par l’ordinateur (paramètres 13 C5) pour faire générer seulement du texte.
La fonction 3
Passons à la fonction 3 : grâce à elle, il est possible d’écrire un message sur l’écran, en définissant également tant la position X que la position Y de départ, c’est-à-dire, les coordonnées d’où l’inscription doit commencer.
La commande doit contenir les données X et Y, sans compter les attributs des caractères du message.
La chaîne qui suit doit se terminer par “FF” et ne doit pas dépasser la longueur de 28 caractères, longueur maximale que permettent les dimensions de la mémoire de notre microcontrôleur.
La syntaxe est la suivante :
**,FONCTION,X,Y,ATTRIBUTS,CAR,CAR, CAR,…,CAR,CAR,FF
Voici un exemple de ce que pourrait être une commande de la fonction 3 :
** 03 00 00 0E 0E 14 0C 1A FF
Et maintenant, la signification de ces différentes parties :
**03, est le numéro de la fonction (qui commence toujours avec le même entête), 00, est la coordonnée horizontale (les valeurs admises vont de 0 à 27), 00, correspond à la coordonnée verticale (les valeurs admises sont comprises entre 0 et 10).
Le circuit intégré STV5730 prévoit une structure de 28 colonnes x 11 lignes, chaque valeur indique la ligne et la colonne de départ : l’écran est en effet idéalement divisé en 308 carrés.
Après l’identification de la commande et les coordonnées de positionnement, vient l’attribut, c’est-à-dire la façon dont va être visualisé le caractère : on peut trouver ce paramètre dans le tableau qui se trouve dans le datasheet fourni par SGS Thomson, et que nous vous invitons à consulter pour avoir de plus amples détails (vous pouvez directement le télécharger du site www.st.com).
Toutefois, sachez que nous avons choisi :
0E, qui correspond à l’obtention de caractères blancs et fixes (c’est-à-dire qu’ils ne clignotent pas).
Pour ceux qui utiliseront le tableau du constructeur, nous précisons que notre représentation se sert de caractères hexadécimaux.
Toutefois, lorsqu’il s’agit de l’attribut, on considère toujours la valeur réelle : par exemple, l’attribut du blanc, selon le tableau du data-sheet, est 111 (7) tandis que 0 définit le caractère non clignotant (le 1 correspondrait alors au clignotement).
En d’autres termes, la valeur hexadécimale indiquée dans l’espace de l’attribut correspondrait à la décimale de la somme des bits binaires contenant l’information la plus significative de la chaîne d’attribut.
Celle-ci est formée de 2 bytes et nous, nous en considérons la partie contenant les 7, 8, 9, 10 et 11 qui correspondent respectivement à l’état du clignotement (1 = fixe, 0 = clignotant) les combinaisons de RGB (voir tableau) et la présence ou l’absence du fond coloré (0 = aucun, 1 = fond). En regardant le tableau, on s’aperçoit que le bloc de 5 bits des inscriptions blanches, sans fond et sans clignotement, correspond à 01110: ce nombre binaire correspond à 14 en format décimal, et est justement représenté par 0E, lorsqu’il est exprimé en format hexadécimal.
Si nous avions souhaité, par exemple, une inscription clignotante, l’attribut aurait alors été 1E : en fait, le caractère clignotant correspond au bit le plus significatif, 1, et donc, la combinaison binaire 11110 équivaut à 30 en format décimal. C’est clair ?
Venons-en maintenant aux caractères, qui sont représentés dans notre exemple par des valeurs hexadécimales :
0E, 14, 0C, 1A, correspondant respectivement aux lettres C, I, A et O, c’est-à-dire au mot CIAO.
Remarquez qu’il ne s’agit pas des valeurs ASCII correspondant au 67 décimal, mais de celles du tableau en ROM: en effet, le C vaut 0E pour notre microcontrôleur, c’est-à-dire à 43 hexadécimal.
La lettre I est exprimée avec 14 hex, la lettre G correspond à 12 hex, etc.
Le tableau des caractères prévoit bien évidemment les lettres de l’alphabet international, les chiffres, la ponctuation (virgule, point, point virgule, parenthèses) et les symboles mathématiques les plus courants (fraction, +, –, *), mais également les symboles les plus couramment utilisés dans les menus des appareils audiovisuels : flèches verticales et horizontales, doubles flèches, horloge, parabole, Enter, etc.
La chaîne de la fonction 3 se termine par FF, qui est justement la valeur qui indique la fin des paramètres. Elle sert essentiellement à indiquer au STV5730 que l’inscription à visualiser est terminée.
La fonction 4
Occupons-nous maintenant de la fonction 4, avec laquelle on peut envoyer une donnée à 16 bits directement à n’importe quel registre du contrôleur vidéo.
Une telle possibilité permet de reprogrammer certains paramètres fondamentaux du STV5730, et, donc, de modifier les états par défaut générés et chargés par le microcontrôleur à l’allumage du circuit.
Il est clair que les états ne sont valables que pour un court instant. Toutefois, la fonction est utile car elle permet de visualiser l’inscription avant, sans avoir à programmer le module.
Cette fonction est donc semblable à la 2, de laquelle elle se distingue surtout du fait qu’elle ne modifie pas le registre de contrôle, et également parce que les modifications apportées ne sont pas mémorisées par le microcontrôleur.
C’est pour cette raison que, si le circuit est momentanément privé d’alimentation ou réinitialisé (à l’aide de la commande 1), les variations sont perdues.
Dans ce cas précis, le système à distance (PC) doit les renvoyer.
La syntaxe est la suivante :
**,FONCTION,HIBYTE,LOBYTE
Vous voyez que la forme est la même que celle de la commande 2.
Voici un exemple de chaîne :
**04 13 C5
Pour les paramètres aussi, il en va de même que précédemment : 13 C4 ou 13 C5 selon que l’on veuille enclencher ou pas le texte à un signal vidéo appliqué à l’entrée CVBS du microcontrôleur.
La fonction 5
Passons, pour finir, à la fonction 5 qui, disons-le tout de suite, n’est autre qu’une variante de la 3. La différence essentielle entre les deux est que le message envoyé est mémorisé dans le microcontrôleur, et donc, qu’il réapparaîtra à l’écran même après que le circuit ait été éteint et rallumé, c’est-à-dire après lui avoir envoyé une commande de reset et d’initialisation (fonction 1).
Donc, avec la commande 3, on peut tout de suite envoyer un texte sur la vidéo, mais celui-ci n’est pas sauvegardé car il va directement dans la mémoire (volatile) du circuit ST.
Avec la fonction 5, nous écrivons dans la mémoire du PIC ce que nous voyons à l’écran. Mais il existe quelques limitations qu’il est préférable de connaître.
Tout d’abord, la position X et la position Y doivent toujours être 0 et la longueur du message ne doit pas dépasser 10 caractères (les caractères de contrôle étant exclus, ainsi que l’attribut et le FF terminal).
La raison en est tout simplement la dimension de l’EEPROM disponible dans l’ordinateur, qui contient seulement les 10 caractères et ne dispose pas de l’espace nécessaire pour l’insertion des données relatives aux coordonnées de départ.
En résumé, la fonction 5 est utile dans des systèmes dans lesquels le module est programmé pour être monté dans un moniteur ou le long de la ligne coaxiale sortant d’une caméra, pour marquer un signal vidéo d’une inscription, en lui donnant par exemple le nom de la pièce d’où il provient.
Par contre, la fonction 3 est plus indiquée pour réaliser des essais, c’est-à-dire pour titrer au fur à mesure des images, et dans ce cas, il faut alors maintenir le circuit relié au PC.
La syntaxe relative à la commande 5 est la suivante :
**,FONCTION,X,Y,ATTRIBUTS,CAR,CAR, CAR,…CAR,CAR,FF
Comme vous le voyez, c’est la même fonction que la 2. Seules les valeurs des paramètres changent.
Voici un exemple typique de chaîne pour la commande en question :
**05 00 00 0E 0E 0C 18 10 1D 0C 0B 01 FF
En décomposant la chaîne, on peut en identifier les différentes parties : **05 est le numéro de la fonction précédé de l’en-tête, 00 et 00 sont, comme nous l’avons déjà vu, les indications concernant la ligne et le caractère de départ (0, dans les deux cas, autrement la commande n’est pas effectuée…) tandis que le premier 0E est l’attribut qui indique que le texte sera blanc et fixe.
Viennent ensuite les valeurs hexadécimales qui correspondent aux caractères du message, c’est-à-dire C (0E), A (0C), M (18), E (10), R (1D), A (0C), espace (0B) et 1 (01).
Donc, le texte superposé, blanc et non clignotant, est “CAMERA 1”. Le bloc FF est toujours le même caractère final. Voilà, nous pouvons à présent considérer la description du circuit terminée: il ne nous reste donc plus qu’à nous occuper du montage.
Programme de démonstration en QBasic
Figure 13 : Les attributs des caractères. Pour visualiser le caractère dans la couleur voulue, et avec d’éventuels attributs de transparence et de clignotement, référez-vous au tableau ci-dessus.
Figure 14 : Vue des deux éléments de la titreuse programmable. En haut, la titreuse proprement dite. En bas, la carte connecteurs.
Figure 15a : Dessin du circuit imprimé du module titreuse à l’échelle 1 côté pistes.
Figure 15b : Dessin du circuit imprimé du module titreuse à l’échelle 1 côté composants.
Figure 16 : Dessin du circuit imprimé à l’échelle 1 de la carte connecteurs du module titreuse.
La réalisation de l’OSD
Lorsque vous serez en possession du circuit imprimé, commencez par y insérer tout d’abord les résistances et le support pour le microcontrôleur que vous devrez orienter comme indiqué sur le dessin. (Si vous avez réalisé vous-même le circuit imprimé, il est préférable que vous montiez un support “tulipe”, car il permet une soudure des deux côtés du circuit imprimé. Cette précaution est inutile avec le circuit imprimé commercial qui est à trous métallisés).
Poursuivez avec les condensateurs et les transistors, que vous devez également insérer selon une façon précise. Le circuit intégré STV5730 est un CMS. Soudez-le avec attention.
Si vous avez réalisé vous-même le circuit imprimé, n’oubliez pas les vias en dessous.
Une fois les soudures terminées, vous pouvez insérer le microcontrôleur dans son support en faisant bien attention à son orientation.
Fermez le cavalier J1, si vous pensez alimenter le module directement sous 5 volts, ou bien laissez-le ouvert si vous devez insérer le circuit dans un moniteur ou dans une caméra ne disposant pas d’une tension stabilisée de 5 volts.
S’il est monté correctement, le module est immédiatement prêt à être utilisé car il ne nécessite aucun réglage préliminaire.
Pour la programmation, nous avons préparé un petit circuit (avec un support spécial à 30 broches single-in-line), quipermet de réaliser toutes les connexions, y compris celles d’alimentation (5 Vcc), celles d’entrée et de sortie vidéo, sans oublier celles qui vont vers le PC.
Il est toutefois possible (voir schémas correspondants) de souder directement sur le circuit (en utilisant tout simplement un connecteur strip) les câbles entrées/sorties ainsi que ceux de connexion au port série du PC.
Allumez l’ordinateur et, en utilisant l’éditeur sous MS-DOS, écrivez le programme de démonstration exactement comme il est présenté en figure 12.
Sauvegardez-le ensuite à l’aide de l’extension .BAS, sortez de l’éditeur et lancez QBasic, puis ouvrez le fichier que vous avez écrit, sauvegardez-le et envoyez-le (alt+F5).
Le programme écrit “CAMERA 1” en noir et blanc, fixe, qui devra apparaître sur l’écran du téléviseur ou de l’ordinateur que vous utilisez, en surimpression sur les images filmées par la caméra ou envoyées par le magnétoscope.
Si l’inscription permanente est prévue en mémoire, le message ne disparaîtra pas, même si vous déconnectez le PC et si vous éteignez et rallumez le circuit.
Sur la base de cet exemple, vous pourrez personnaliser la phrase, en éditant le programme et en remplaçant le texte “CAMERA 1” par celui de votre choix.
Toutefois, veillez à respecter deux règles très simples : ne jamais dépasser 10 caractères (la commande est celle d’écriture permanente en EEPROM) et insérer dans les parenthèses associées à CHR$(&H…) les valeurs hexadécimales correspondantes, comme indiqué dans le tableau du STV5730.
Si vous êtes passionné de vidéo, radioamateur ou professionnel des installations TV en circuit fermé, une titreuse électronique pourra vous rendre de nombreux services.
Une titreuse électronique c’est un appareil capable d’insérer des textes sur n’importe quel signal vidéo comme une mire, les images filmées par une caméra et visualisées sur un écran, ou bien encore sur celles enregistrées sur la bande magnétique d’une caméra vidéo portable.
De nombreux lecteurs, qui trouvent leur plaisir dans le domaine de la “vidéo” ou qui disposent d’un indicatif radioamateur, ont souhaité nous voir publier un tel projet.
En effet, dans le commerce, un appareil de ce genre coûte cher. Mais, l’attente des professionnels, comme celle des amateurs, est enfin terminée car nous allons vous guider dans les pages qui suivent pour vous montrer comment réaliser vous-même et à faible coût, une excellente titreuse électronique, capable de superposer un certain nombre de caractères à une image.
Le dispositif est très simple et de petites dimensions, et ce, grâce à l’utilisation d’un circuit intégré SGS Thomson qui réalise, à lui seul, la fonction voulue et ne nécessite que l’assistance d’un microcontrôleur pour gérer les commandes.
Ce circuit intégré n’est autre qu’un STV5730, utilisé depuis très longtemps dans beaucoup de téléviseurs pour réaliser le On Screen Display (OSD), ainsi que dans quelques appareils de commutation pour caméras de télévision, dont les modules à deux, trois ou quatre entrées et une sortie.
La titreuse a de nombreuses applications, non seulement en ce qui concerne la superposition d’inscription dans les vidéos amateurs, mais également et sur tout, dans le domaine de la vidéo surveillance. En effet, dans les installations de TV en circuit fermé, là où les caméras sont nombreuses et où les agents de sécurité doivent savoir à chaque instant, et d’un seul coup d’oeil jeté sur l’écran, d’où proviennent les images, l’insertion d’une inscription permet une identification immédiate.
Imaginons, par exemple, que l’on doive contrôler ce qui se passe dans quatre pièces d’une entreprise, en utilisant un écran est un séquenceur commutant l’image. En reliant une titreuse (judicieusement programmée), à la sortie de chaque caméra, on peut voir en surimpression le nom de la pièce observée.
Evidemment (vous l’aurez bien sûr compris en lisant les exemples…), le circuit a été conçu pour travailler avec un signal vidéo composite standard (1 Vpp/75 ohms).
Physiquement, le montage ressemble à un module de mémoire SIMM, avec un connecteur de 30 broches, du même type que ceux utilisés dans les vieilles cartes mères des ordinateurs basés sur les 80286, 80386 ou 80486 d’Intel (voir figure 4).
Le module est monté sur un circuit adapté qui est ensuite utilisé en phase de programmation pour charger, dans la mémoire du microcontrôleur, la phrase à superposer aux images (voir figure 7, 10 et 14).
Le module peut rester sur la carte connecteurs en permanence. Sur cette carte, on trouve : le support SIMM, un connecteur DB9, à relier à la sortie série du PC), deux prises RCA, l’une pour l’entrée du signal vidéo, l’autre pour la sortie ansi qu’une prise alimentation.
Bien qu’il soit capable de générer des caractères sur la vidéo, notre dispositif n’est pas vraiment ce que les experts appellent “Gen-Lock”. En effet, il ne peut pas générer d’inscriptions à volonté, mais seulement celles qui ont été préalablement programmées dans la mémoire de son microcontrôleur.
Pour ceux qui ont besoin d’un affichage dont la teneur doit pouvoir être modifiée en permanence, nous vous proposerons prochainement un montage spécifique, adapté à toutes les utilisations, contrôlable par PC, avec lequel vous pourrez insérer en temps réel n’importe quelle inscription, sous-titre, signal horaire, etc., sur un film ou sur de simples images fixes, mais également sur un écran vide. Bref, un instrument indispensable pour les montages et la préparation de films professionnels.
Le STV5730
En attendant un prochain numéro d’ELM pour nous attarder plus longuement sur le “Gen-Lock”, voyons plutôt maintenantle montage de ce mois-ci : le circuit en lui-même est assez simple, ou en tous les cas, énormément simplifié par rapport à ce qu’il aurait été s’il avait fallu utiliser des dispositifs traditionnels pour obtenir les synchronismes, générer les textes, les mélanger, etc.
Dans notre montage, c’est le circuit intégré U1 (voir figures 1 et 2), c’est-à-dire le STV5730, qui fait tout. Le microcontrôleur U2 (un PIC12CE674), gère les commandes et les fonctions, et permet d’acquérir, lors de la programmation, les phrases envoyées par le PC le long de la ligne sérielle.
A ce propos, observons que la titreuse fonctionne effectivement avec un PC, mais uniquement pour la programmation.
Une fois les données envoyées, le STV5730 superpose les caractères que le PIC a emmagasinés dans son EEPROM, où ils restent jusqu’à ce qu’on les efface.
Mais tachons d’y voir plus clair, et commençons par examiner le coeur du circuit, c’est-à-dire le microcontrôleur SGS Thomson (figure 1 et 2). Comme nous l’avons déjà dit, il s’agit d’un générateur de caractères qui, afin de travailler avec des signaux de type vidéo composite, incorpore tous les étages nécessaires.
Parmi ceux-ci, on peut distinguer un élément qui reconnaît et sépare les synchronismes, un générateur de synchronismes vidéo composite (PAL, 50/15625 Hz), un mélangeur, un PLL, une logique de contrôle, une mémoire RAM dans laquelle sont emmagasinées les données qui arrivent du microcontrôleur, une ROM contenant les données des caractères, un amplificateur de sortie capable d’élever le niveau du signal vidéo de +0 dB à +6 dB, et un décodeur d’onde porteuse image.
Le circuit intégré peut essentiellement fonctionner sur deux modes différents : le premier (Mixed Mode), se mélange à un système vidéo préexistant et y superpose du texte, tandis que le second (Full Page Mode), peut générer lui-même les caractères, sans avoir besoin d’une image en fond.
Les deux modes en détail
Le “Mixed Mode”
En “Mixed Mode”, lorsque le STV5730 reçoit un signal vidéo composite, il en extrait les synchronismes verticaux et horizontaux, puis il produit les caractères qui lui sont demandés par le dispositif de contrôle et en mélange la partie de brillance et de chrominance avec la vidéo composite d’entrée. Evidemment, pour obtenir la bonne visualisation, il mélange les inscriptions aux synchronismes relevés, qui sont ensuite reformés et à nouveau superposés à la sortie, de laquelle il est possible de prélever une nouvelle vidéo composite contenant les images en entrée avec les inscriptions superposées.
Il faut signaler que les caractères peuvent être en noir et blanc, ou bien transparents (c’est-à-dire qu’ils ne couvrent pas complètement la partie de l’image à laquelle ils se superposent).
On peut aussi obtenir des inscriptions en couleur, mais il faut alors également utiliser les sorties RGB, alors qu’avec notre circuit, nous nous limitons à prélever le signal de l’output CVBS (composite).
En d’autres termes, pour obtenir la superposition de caractères colorés, on part du signal vidéo composite, mais il faut sortir avec les trois signaux RGB, plus le synchronisme composite.
Ces 4 lignes sont ensuite envoyées aux lignes de la prise péritel correspondantes et de celle-ci, aux décodeurs de couleur PAL/SECAM. Par exemple, les différents TDA3560, TDA3562, etc., disposent des entrées RGB et C-SYNC pour recevoir également les signaux RGB, puis les envoyer à leurs sorties respectives et de là, au support du tube image. Il existe aussi une alternative : on peut en effet avoir des caractères en couleur, mais sans signal vidéo à l’entrée. Dans ce mode, c’est le microcontrôleur qui génère les synchronismes ainsi que tout ce qui est nécessaire.
Le “Full Page”
Quant au second mode (c’est-à-dire le “Full Page”), il correspond à la production totale d’un écran : en fait, il s’agit du mode permettant au circuit intégré de générer des caractères sur l’écran tout entier et de construire le signal composite en entier en partant de zéro. Il n’a donc aucun besoin de signal vidéo à l’entrée.
Les synchronismes ne sont (bien évidemment) pas prélevés sur l’entrée CVBS, mais ils sont produits à l’intérieur de la logique spéciale. En outre, les images couleur sont disponibles tant sur la sortie vidéo composite que sur la sortie RGB.
A l’intérieur de ce mode, on peut distinguer deux sous-modes, appelés “Normal Full Page” et “Vidéo Full Page”, par le constructeur. Dans le premier, le dispositif fonctionne effectivement comme un générateur d’inscriptions (le fond apparaît uniformément coloré), tandis que dans le second, c’est une image vidéo qui sert de fond. En tous les cas, le texte peut être composé d’une page de 11 lignes de 28 caractères chacune (au maximum, 308 caractères) et chaque caractère est formé d’une matrice de 12 points pour 18 lignes.
Le set disponible comprend 128 caractères écrits en ROM, tous adressables par l’intermédiaire d’un code spécial contenu dans une commande que nous analyserons plus tard.
Parmi les différentes fonctions possibles, on peut choisir la position que l’on veut donner à chacune des lettres, parmi 58 places à l’horizontale et 63 à la verticale, ainsi que la visualisation d’une seule ligne à la fois.
On peut choisir la couleur des caractères (lorsque c’est prévu) parmi 8 combinaisons, et cela est également valable pour le fond de page éventuel (lorsqu’il n’y a pas de signal vidéo composite à l’entrée).
On peut aussi choisir la couleur du bord des inscriptions, chose très utile lorsque le fond et les caractères ont une même tonalité. Le choix peut toujours se faire parmi 8 couleurs.
Pour finir, le STV5730 permet de visualiser de façon continue ou saccadée, tant les caractères que le fond : le temps d’apparition peut être établi entre 0,5 et 1 seconde, tandis que le “duty-cycle” peut être réglé à 25, 50 et 75 %.
Bien, ceci étant dit, et avec l’aide du schéma d’implantation du circuit intégré, nous espérons que vous aurez compris le fonctionnement du STV5730.
Nous passons donc à présent à l’analyse du schéma électrique complet de notre titreuse.
Le circuit intégré STV5730
Pour obtenir la superposition d’inscriptions sur des images, nous avons utilisé un circuit SGS Thomson, conçu pour la réalisation de systèmes On Screen Display (OSD).
Il s’agit d’un générateur de caractères qui travaille sur des signaux de type vidéo composite et qui, pour cela, incorpore tous les étages nécessaires.
Parmi ceux-ci, on distingue un élément qui reconnaît et sépare les synchronismes, un générateur de synchronismes vidéo composite (PAL, 50/15 625 Hz ou NTSC, 60/15750 Hz), un mélangeur, un PLL, une logique de contrôle, une mémoire RAM dans laquelle sont emmagasinées les données qui arrivent du microcontrôleur, une ROM contenant les données des caractères, un amplificateur de sortie capable d’élever le niveau du signal vidéo de +0 dB à +6 dB, et un décodeur d’onde porteuse image.
Le circuit intégré peut essentiellement fonctionner sur deux modes différents : le premier (Mixed Mode), s’ajoute à un système vidéo préexistant et y superpose du texte, tandis que le second (Full Page Mode), peut générer lui-même les caractères, sans avoir besoin d’une image en fond.
Figure 1 : Schéma synoptique du circuit intégré STV5730 de SGS Thomson
Figure 2 : Brochage du circuit intégré STV5730.
Le schéma électrique
Le microcontrôleur U2 veille à la réception des informations concernant l’inscription à visualiser, informations qu’il reçoit du PC. Il garde les caractères en mémoire (dont la capacité limite la dimension de l’inscription à 28 caractères…) et les passe au STV5730 même s’il est déconnecté du PC.
En ce qui concerne les composants externes, U1 se sert du quartz Q1 pour faire fonctionner son propre oscillateur (celui du PIC, au contraire, se sert de Q2) et de deux étages “buffer”, un pour l’entrée et l’autre pour la sortie. T1, en particulier, ainsi que les composants qui y sont liés, forment un circuit de couplage pour la vidéo composite appliqué à l’entrée (contact 2 du circuit) tandis que T2 et tout ce qui l’entoure sert pour coupler la broche 27 du microcontrôleur avec la sortie (contact 29 du circuit) du module.
On a prévu un régulateur intégré qui, chaque fois que la titreuse est alimentée avec plus de 5 volts, stabilise la tension éventuellement présente entre le contact 24 (Val) et le 23 (masse) à exactement 5 volts.
Le cavalier J1 est donc laissé ouvert si la tension d’alimentation dépasse les 5 volts, et reste fermé dans le cas contraire.
Un dernier détail concernant l’interface sérielle : le PIC12CE674 reçoit les données qui arrivent du PC par l’intermédiaire de la broche 4 (ligne GP3), tandis que la résistance R6 sert essentiellement à limiter le courant dans la diode de protection qui intervient lorsqu’un niveau négatif est atteint.
En effet, vous pouvez remarquer qu’il n’y a aucun convertisseur RS232/TTL, et que donc, les signaux d’environ 12V qui arrivent de la ligne sérielle rejoignent directement la broche 4.
Quoi qu’il en soit, nous avons vu, à la suite de nombreux essais effectués avec les dispositifs PIC, qu’une résistance suffit à limiter l’excès de potentiel positif (12 volts contre les 5 ou 6 volts typiques du TTL) ainsi que pour bloquer la composante négative (–12 volts).
Figure 3 : Connexions du module titreuse.
1 = Ground 18 = RS232 Data IN2 = Video IN
23 = Ground5 = Composit Sync
24 = +Val (6÷12 Vcc)13 = RGB - Red
25 = +Vout (5 V 50 mA)14 = RGB - Green
26 = Ground15 = RGB - Blue
29 = Video OUT16 = RGB - Fast Blanking
30 = Ground
Figure 4 : Le circuit de l’OSD a la forme d’une mémoire SIMM à 30 broches.
Pour les connexions, on peut utiliser soit le connecteur spécial (assez coûteux), soit du connecteur en bande au pas de 2,54 mm, en utilisant les trous prévus sur le côté sortie.
Figure 5: Schéma électrique de la titreuse programmable.
Figure 6 : Schéma d’implantation des composants de la titreuse programmable.
Figure 7 : Vue du prototype du module titreuse.
Liste des composants du module titreuse
R1 = 10 kΩ
R2 = 68 Ω
R3 = 22 kΩ
R4 = 100 Ω
R5 = 390 Ω
R6 = 100 kΩ
R7 = 4,7 kΩ
R8 = 100 Ω
R9 = 180 Ω
R10 = 68 Ω
R11 = 22 kΩ
C1 = 22 μF électrolytique
C2 = 2,2 μF électrolytique
C3 = 33 pF céramique
C4 = 33 pF céramique
C5 = 100 nF polyester 63 V pas de 5 mm
C6 = 22000 pF céramique
C7 = 220 pF céramique
Q1 = Quartz 17,73447 MHz
Q2 = Quartz 20 MHz
T1 = Transistor NPN BC547B
T2 = Transistor NPN BC547B
U1 = Intégré STV5730 SMD
U2 = μcontrôleur PIC12CE674 P04 préprogrammé (MF328)
U3 = Régulateur 78l05
Divers :
1 Support 2 x 4 broches
1 Support pour cavalier et son cavalier
1 Circuit imprimé réf. S328
Figure 8 : Schéma des connexions du module titreuse dans le cas où la carte connecteurs n’est pas utilisée
.
Figure 9 : Schéma d’implantation des composants de la carte connecteurs du module titreuse.
Figure 10 : Vue du prototype de la carte connecteurs du module titreuse.
Liste des composants de la carte connecteurs
D1 = Diode 1N4007
Divers :
2 Prises RCA pour ci
1 Prise alimentation pour ci
1 Connecteur DB9 femelle pour ci
1 Connecteur pour SIMM
1 Circuit imprimé réf. S330
Le protocole de commutation
Maintenant que nous avons vu le matériel, nous pouvons passer au logiciel du microcontrôleur et analyser le protocole à observer pour l’utilisation du module OSD proposé dans ces pages. Il s’agit, bien évidemment, du dialogue entre le PC et le microcontrôleur PIC12CE674, qui est l’élément auquel est confiée la gestion de toute la titreuse. C’est également lui qui, une fois déconnecté du PC, donne les commandes nécessaires au STV5730.
Il faut préciser avant tout que le module accepte des commandes sérielles par l’intermédiaire de l’interface ayant pour canal de réception le contact 18 (broche 4 de l’U2). La ligne de TXD n’est pas prévue, étant donné que le dispositif doit seulement acquérir les données et n’a pas à donner de réponse.
Les paramètres de la communication sont 19200,n,8,1, c’est-à-dire une vitesse de 19 200 bits/seconde, aucune parité, 8 bits de données et 1 de stop.
Toutes les commandes qui arrivent du PC doivent commencer par un caractère que nous appelons “en-tête de contrôle”, suivi d’un code qui identifie la fonction demandée.
Viennent ensuite les paramètres spécifiques, c’est-à-dire ceux qui définissent exactement la fonction elle même.
L’en-tête est une sorte de code qui confirme la validité du message qui arrive et sert essentiellement à éviter que le microcontrôleur n’envoie la routine d’acquisition même à la suite de commutations accidentelles présentes sur la ligne sérielle. Ainsi, si les chaînes de caractères ne commencent pas avec un en-tête bien déterminé – deux astérisques dans notre cas (**) –, l’ordinateur les ignore.
Voici un exemple du format d’un message typique :
**Fpppppppp…
où ** est l’en-tête de contrôle, F est la fonction (de 1 à 5), tandis que p est le paramètre correspondant ou bien les paramètres qui définissent la fonction demandée.
Les fonctions
Comme nous l’avons déjà dit, le dispositif prévoit 5 fonctions possibles, que nous allons à présent analyser en détail.
La fonction 1
Commençons par la première, qui est celle par laquelle on demande au module d’initialiser le circuit vidéo (le STV5730) et de nettoyer l’écran (blanking).
La syntaxe est la suivante :
**,FONCTION
L’en-tête étant toujours **.
Ici, il faut remarquer que la virgule n’existe pas, c’est-à-dire que ce n’est pas un des caractères qui voyagent le long de la ligne sérielle. Nous ne l’avons introduite que pour séparer les différents composants des commandes et pour rendre plus claire la représentation graphique. Ceci vaudra également pour toutes les autres descriptions de fonctions à venir.
Voici un exemple de la fonction 1 :
**01
Comme vous le voyez, elle n’a pas besoin de paramètres supplémentaires, parce que cela n’aurait pas de sens.
Remarquez également qu’il n’y a pas de virgule. Poursuivons et voyons à présent la deuxième fonction, avec laquelle il est possible de configurer le registre de contrôle du processeur vidéo: un tel registre occupe une fonction essentielle pour l’activation correcte du module.
Il faut donc observer que la valeur de configuration est mémorisée dans l’EEPROM interne du microcontrôleur et est réutilisée par ce dernier à chaque réactivation (extinction et rallumage) du module, de façon à donner une configuration automatique au démarrage.
De cette façon, le dispositif fonctionne en mode “stand-alone”, c’est-à-dire sans devoir être connecté de façon permanente à un PC.
La fonction 2
A l’aide de la fonction numéro 2, il est possible de configurer le registre de contrôle du processeur vidéo. Un tel registre développe une fonction essentielle pour l’activation correcte du module.
La valeur est mémorisée par l’ordinateur qui la réutilise à la réactivation suivante du module, de façon à le configurer de manière correcte. La commande nécessite deux bytes pour indiquer une donnée à 16 bits (un byte est composé de 8 bits…) ce qui correspond, justement, à la longueur du registre de contrôle.
La syntaxe est la suivante :
**,FONCTION,HIBYTE,LOBYTE
En plus de l’en-tête habituel, on trouve les deux paramètres HIBYTE et LOBYTE, qui représentent respectivement le byte supérieur et le byte inférieur qui définissent l’emplacement du registre.
Voici un exemple typique :
**02 13 C5
Bien sûr, 02 est le nombre qui permet de distinguer la fonction, tandis que les bytes de commencement et de fin sont 13 et C5 (nombres exprimés en forme hexadécimale). 13 C4 ou bien 13 C5 sont des valeurs typiques du registre, selon que l’on veuille synchroniser le module avec un signal vidéo externe (13 C4) ou générer un signal indépendant, s’occupant lui-même des synchronismes correspondants.
La première situation correspond au “Mixed Mode” et la seconde, au “Full Page Mode”.
Dans le cas qui nous occupe, en utilisant une entrée et une sortie vidéocomposites, on opte pour le mélange du signal CVBS, on utilise donc les valeurs 13 C4, étant donné que l’on veut superposer des inscriptions aux images d’une caméra.
Toutefois, rien ne nous empêche d’introduire le second mode par l’ordinateur (paramètres 13 C5) pour faire générer seulement du texte.
La fonction 3
Passons à la fonction 3 : grâce à elle, il est possible d’écrire un message sur l’écran, en définissant également tant la position X que la position Y de départ, c’est-à-dire, les coordonnées d’où l’inscription doit commencer.
La commande doit contenir les données X et Y, sans compter les attributs des caractères du message.
La chaîne qui suit doit se terminer par “FF” et ne doit pas dépasser la longueur de 28 caractères, longueur maximale que permettent les dimensions de la mémoire de notre microcontrôleur.
La syntaxe est la suivante :
**,FONCTION,X,Y,ATTRIBUTS,CAR,CAR, CAR,…,CAR,CAR,FF
Voici un exemple de ce que pourrait être une commande de la fonction 3 :
** 03 00 00 0E 0E 14 0C 1A FF
Et maintenant, la signification de ces différentes parties :
**03, est le numéro de la fonction (qui commence toujours avec le même entête), 00, est la coordonnée horizontale (les valeurs admises vont de 0 à 27), 00, correspond à la coordonnée verticale (les valeurs admises sont comprises entre 0 et 10).
Le circuit intégré STV5730 prévoit une structure de 28 colonnes x 11 lignes, chaque valeur indique la ligne et la colonne de départ : l’écran est en effet idéalement divisé en 308 carrés.
Après l’identification de la commande et les coordonnées de positionnement, vient l’attribut, c’est-à-dire la façon dont va être visualisé le caractère : on peut trouver ce paramètre dans le tableau qui se trouve dans le datasheet fourni par SGS Thomson, et que nous vous invitons à consulter pour avoir de plus amples détails (vous pouvez directement le télécharger du site www.st.com).
Toutefois, sachez que nous avons choisi :
0E, qui correspond à l’obtention de caractères blancs et fixes (c’est-à-dire qu’ils ne clignotent pas).
Pour ceux qui utiliseront le tableau du constructeur, nous précisons que notre représentation se sert de caractères hexadécimaux.
Toutefois, lorsqu’il s’agit de l’attribut, on considère toujours la valeur réelle : par exemple, l’attribut du blanc, selon le tableau du data-sheet, est 111 (7) tandis que 0 définit le caractère non clignotant (le 1 correspondrait alors au clignotement).
En d’autres termes, la valeur hexadécimale indiquée dans l’espace de l’attribut correspondrait à la décimale de la somme des bits binaires contenant l’information la plus significative de la chaîne d’attribut.
Celle-ci est formée de 2 bytes et nous, nous en considérons la partie contenant les 7, 8, 9, 10 et 11 qui correspondent respectivement à l’état du clignotement (1 = fixe, 0 = clignotant) les combinaisons de RGB (voir tableau) et la présence ou l’absence du fond coloré (0 = aucun, 1 = fond). En regardant le tableau, on s’aperçoit que le bloc de 5 bits des inscriptions blanches, sans fond et sans clignotement, correspond à 01110: ce nombre binaire correspond à 14 en format décimal, et est justement représenté par 0E, lorsqu’il est exprimé en format hexadécimal.
Si nous avions souhaité, par exemple, une inscription clignotante, l’attribut aurait alors été 1E : en fait, le caractère clignotant correspond au bit le plus significatif, 1, et donc, la combinaison binaire 11110 équivaut à 30 en format décimal. C’est clair ?
Venons-en maintenant aux caractères, qui sont représentés dans notre exemple par des valeurs hexadécimales :
0E, 14, 0C, 1A, correspondant respectivement aux lettres C, I, A et O, c’est-à-dire au mot CIAO.
Remarquez qu’il ne s’agit pas des valeurs ASCII correspondant au 67 décimal, mais de celles du tableau en ROM: en effet, le C vaut 0E pour notre microcontrôleur, c’est-à-dire à 43 hexadécimal.
La lettre I est exprimée avec 14 hex, la lettre G correspond à 12 hex, etc.
Le tableau des caractères prévoit bien évidemment les lettres de l’alphabet international, les chiffres, la ponctuation (virgule, point, point virgule, parenthèses) et les symboles mathématiques les plus courants (fraction, +, –, *), mais également les symboles les plus couramment utilisés dans les menus des appareils audiovisuels : flèches verticales et horizontales, doubles flèches, horloge, parabole, Enter, etc.
La chaîne de la fonction 3 se termine par FF, qui est justement la valeur qui indique la fin des paramètres. Elle sert essentiellement à indiquer au STV5730 que l’inscription à visualiser est terminée.
La fonction 4
Occupons-nous maintenant de la fonction 4, avec laquelle on peut envoyer une donnée à 16 bits directement à n’importe quel registre du contrôleur vidéo.
Une telle possibilité permet de reprogrammer certains paramètres fondamentaux du STV5730, et, donc, de modifier les états par défaut générés et chargés par le microcontrôleur à l’allumage du circuit.
Il est clair que les états ne sont valables que pour un court instant. Toutefois, la fonction est utile car elle permet de visualiser l’inscription avant, sans avoir à programmer le module.
Cette fonction est donc semblable à la 2, de laquelle elle se distingue surtout du fait qu’elle ne modifie pas le registre de contrôle, et également parce que les modifications apportées ne sont pas mémorisées par le microcontrôleur.
C’est pour cette raison que, si le circuit est momentanément privé d’alimentation ou réinitialisé (à l’aide de la commande 1), les variations sont perdues.
Dans ce cas précis, le système à distance (PC) doit les renvoyer.
La syntaxe est la suivante :
**,FONCTION,HIBYTE,LOBYTE
Vous voyez que la forme est la même que celle de la commande 2.
Voici un exemple de chaîne :
**04 13 C5
Pour les paramètres aussi, il en va de même que précédemment : 13 C4 ou 13 C5 selon que l’on veuille enclencher ou pas le texte à un signal vidéo appliqué à l’entrée CVBS du microcontrôleur.
La fonction 5
Passons, pour finir, à la fonction 5 qui, disons-le tout de suite, n’est autre qu’une variante de la 3. La différence essentielle entre les deux est que le message envoyé est mémorisé dans le microcontrôleur, et donc, qu’il réapparaîtra à l’écran même après que le circuit ait été éteint et rallumé, c’est-à-dire après lui avoir envoyé une commande de reset et d’initialisation (fonction 1).
Donc, avec la commande 3, on peut tout de suite envoyer un texte sur la vidéo, mais celui-ci n’est pas sauvegardé car il va directement dans la mémoire (volatile) du circuit ST.
Avec la fonction 5, nous écrivons dans la mémoire du PIC ce que nous voyons à l’écran. Mais il existe quelques limitations qu’il est préférable de connaître.
Tout d’abord, la position X et la position Y doivent toujours être 0 et la longueur du message ne doit pas dépasser 10 caractères (les caractères de contrôle étant exclus, ainsi que l’attribut et le FF terminal).
La raison en est tout simplement la dimension de l’EEPROM disponible dans l’ordinateur, qui contient seulement les 10 caractères et ne dispose pas de l’espace nécessaire pour l’insertion des données relatives aux coordonnées de départ.
En résumé, la fonction 5 est utile dans des systèmes dans lesquels le module est programmé pour être monté dans un moniteur ou le long de la ligne coaxiale sortant d’une caméra, pour marquer un signal vidéo d’une inscription, en lui donnant par exemple le nom de la pièce d’où il provient.
Par contre, la fonction 3 est plus indiquée pour réaliser des essais, c’est-à-dire pour titrer au fur à mesure des images, et dans ce cas, il faut alors maintenir le circuit relié au PC.
La syntaxe relative à la commande 5 est la suivante :
**,FONCTION,X,Y,ATTRIBUTS,CAR,CAR, CAR,…CAR,CAR,FF
Comme vous le voyez, c’est la même fonction que la 2. Seules les valeurs des paramètres changent.
Voici un exemple typique de chaîne pour la commande en question :
**05 00 00 0E 0E 0C 18 10 1D 0C 0B 01 FF
En décomposant la chaîne, on peut en identifier les différentes parties : **05 est le numéro de la fonction précédé de l’en-tête, 00 et 00 sont, comme nous l’avons déjà vu, les indications concernant la ligne et le caractère de départ (0, dans les deux cas, autrement la commande n’est pas effectuée…) tandis que le premier 0E est l’attribut qui indique que le texte sera blanc et fixe.
Viennent ensuite les valeurs hexadécimales qui correspondent aux caractères du message, c’est-à-dire C (0E), A (0C), M (18), E (10), R (1D), A (0C), espace (0B) et 1 (01).
Donc, le texte superposé, blanc et non clignotant, est “CAMERA 1”. Le bloc FF est toujours le même caractère final. Voilà, nous pouvons à présent considérer la description du circuit terminée: il ne nous reste donc plus qu’à nous occuper du montage.
Programme de démonstration en QBasic
OPEN “COM1:19200,N,8,1,rs,cd0,ds0,cs0”
FOR RANDOM AS #1‘INITIALISE L’AFFICHEURPRINT #1, “**” + CHR$(1);DELAY
(.2)‘MODIFIE LE CONTROL REGISTER POUR TRAVAILLER EN MODE GEN LOCKPRINT #1, “**” + CHR$(2) + CHR$
(&H13) + CHR$(&HC4);DELAY (.1)‘ECRIT CAMERA 1 COMME MESSAGE PERMANENTPRINT #1,
“**” + CHR$(5) + CHR$(0) + CHR$(0) + CHR$(&H0E) +CHR$(&H0E) + CHR$(&H0C) + CHR$
(&H18) + CHR$(&H10) +CHR$(&H1D) + CHR$(&H0C)+ CHR$(&H0B)+ CHR$(&H01)+ CHR$(255);DELAY
(.1)ENDSUB DELAY (temp !)T ! = TIMER + temp!DO WHILE T! > TIMERLOOPEND SUBFigure 12.
Figure 13 : Les attributs des caractères. Pour visualiser le caractère dans la couleur voulue, et avec d’éventuels attributs de transparence et de clignotement, référez-vous au tableau ci-dessus.
Figure 14 : Vue des deux éléments de la titreuse programmable. En haut, la titreuse proprement dite. En bas, la carte connecteurs.
Figure 15a : Dessin du circuit imprimé du module titreuse à l’échelle 1 côté pistes.
Figure 15b : Dessin du circuit imprimé du module titreuse à l’échelle 1 côté composants.
Figure 16 : Dessin du circuit imprimé à l’échelle 1 de la carte connecteurs du module titreuse.
La réalisation de l’OSD
Lorsque vous serez en possession du circuit imprimé, commencez par y insérer tout d’abord les résistances et le support pour le microcontrôleur que vous devrez orienter comme indiqué sur le dessin. (Si vous avez réalisé vous-même le circuit imprimé, il est préférable que vous montiez un support “tulipe”, car il permet une soudure des deux côtés du circuit imprimé. Cette précaution est inutile avec le circuit imprimé commercial qui est à trous métallisés).
Poursuivez avec les condensateurs et les transistors, que vous devez également insérer selon une façon précise. Le circuit intégré STV5730 est un CMS. Soudez-le avec attention.
Si vous avez réalisé vous-même le circuit imprimé, n’oubliez pas les vias en dessous.
Une fois les soudures terminées, vous pouvez insérer le microcontrôleur dans son support en faisant bien attention à son orientation.
Fermez le cavalier J1, si vous pensez alimenter le module directement sous 5 volts, ou bien laissez-le ouvert si vous devez insérer le circuit dans un moniteur ou dans une caméra ne disposant pas d’une tension stabilisée de 5 volts.
S’il est monté correctement, le module est immédiatement prêt à être utilisé car il ne nécessite aucun réglage préliminaire.
Pour la programmation, nous avons préparé un petit circuit (avec un support spécial à 30 broches single-in-line), quipermet de réaliser toutes les connexions, y compris celles d’alimentation (5 Vcc), celles d’entrée et de sortie vidéo, sans oublier celles qui vont vers le PC.
Il est toutefois possible (voir schémas correspondants) de souder directement sur le circuit (en utilisant tout simplement un connecteur strip) les câbles entrées/sorties ainsi que ceux de connexion au port série du PC.
Allumez l’ordinateur et, en utilisant l’éditeur sous MS-DOS, écrivez le programme de démonstration exactement comme il est présenté en figure 12.
Sauvegardez-le ensuite à l’aide de l’extension .BAS, sortez de l’éditeur et lancez QBasic, puis ouvrez le fichier que vous avez écrit, sauvegardez-le et envoyez-le (alt+F5).
Le programme écrit “CAMERA 1” en noir et blanc, fixe, qui devra apparaître sur l’écran du téléviseur ou de l’ordinateur que vous utilisez, en surimpression sur les images filmées par la caméra ou envoyées par le magnétoscope.
Si l’inscription permanente est prévue en mémoire, le message ne disparaîtra pas, même si vous déconnectez le PC et si vous éteignez et rallumez le circuit.
Sur la base de cet exemple, vous pourrez personnaliser la phrase, en éditant le programme et en remplaçant le texte “CAMERA 1” par celui de votre choix.
Toutefois, veillez à respecter deux règles très simples : ne jamais dépasser 10 caractères (la commande est celle d’écriture permanente en EEPROM) et insérer dans les parenthèses associées à CHR$(&H…) les valeurs hexadécimales correspondantes, comme indiqué dans le tableau du STV5730.
Aucun commentaire:
Enregistrer un commentaire