PICATVOSD : Un OSD piloté par PIC16F84




Lors de la réalisation du relais ATV du Champ du Feu (première version), F6CMB Camille avait utilisé un incrustateur de texte réalisé par un OM allemand : l'ATV Logo.
Il s'agissait d'un montage à base d'un circuit OSD de chez ST : le STV5730. Ce circuit était piloté par un microcontrôleur de type ATMEL. La platine permettait l'incrustation de 11 lignes de 28 caractères parmi une table de 128 caractères prédéfinis en ROM. La programmation des textes se faisait à l'aide de boutons poussoirs qui rendaient l'utilisation assez fastidieuse.
Pour pouvoir afficher un indicateur de niveau de réception, le concepteur avait ajouté une autre platine contenant un microcontrôleur ATMEL chargé d'effectuer la converison analogique-numérique de la tension de CAG du tuner de réception.

Pendant la conception de la seconde version du relais F5ZEW, Camille n'a pu trouver les microcontrôleurs utilisés dans l'ATV Logo, ceux-ci étant devenus obsolètes. Il m'a donc demandé de développer un programme sur PIC permettant de remplacer l'ATMEL.
J'ai décidé de refaire une platine complète, intégrant directement le convertisseur analogique-numérique. J'ai également choisi d'ajouter le programmateur de l'EEPROM où sont stockés les textes à afficher.
Au final, on a donc une platine comprenant un PIC 16F84, un OSD STV5730, un convertisseur ADC0831 et sa référence de tension, une EEPROM 24C16, un commutateur pour 2 voies VDO en entrée et 2 tensions analogiques à base de 4066 et un circuit de correction d'offset et gain pour les tensions analogiques réalisé par un LM324.



Le coeur de la platine est le circuit OSD STV5730. Il est capable de générer un texte de 11 lignes de 28 caractères en incrustation synchronisé sur une vidéo entrante ou alors de générer lui-même le fond vidéo qui sera alors en couleur codée en PAL.
Les lignes du texte sont stockées de façon linéaire sous forme ASCII dans l'EEPROM 24C16. La capacité de l'EEPROM est de 4 pages complètes de 308 caractères chacune.



Pour l'application du Champ du Feu, on n'utilise que les lignes 1,2,10 et 11 pour afficher du texte. Les lignes 3 à 9 permettent l'affichage d'un bargraph sur la partie droite de l'écran, représentant la tension analogique appliquée à l'entrée du convertisseur.
Toutes les incrustations s'affichent en blanc et sont synchronisées par rapport à la vidéo appliquée à l'entrée de la platine.
Deux textes différents sont affichés alternativement sur les lignes 1,2,10 et 11 : Le PIC lit et affiche d'abord la page 1 puis la page 2 au bout de 4s.
Un autre texte est stocké dans les pages 3 et 4 et s'affichera si l'entrée S1 est forcée à 0 (STRAP).

Détail de programmation des textes dans l'EEPROM 24C16

Les textes sont stockés dans une EEPROM I2C type 24C16 programmable via la prise DB9.

Le fichier 24C16OSD.ASM est le source en assembleur du contenu de l'EEPROM.
Il suffit de l'éditer en mode texte, pour y placer le texte désiré.

Mapping de l'EEPROM :

Adresse Contenu
0000 - 001B texte 1 ligne 1 (28 caractères par ligne)
0020 - 003B texte 1 ligne 2
0040 - 005B texte 1 ligne 3
0060 - 007B texte 1 ligne 4
0080 - 009B texte 1 ligne 5
00A0 - 00BB texte 1 ligne 6 Page 1
00C0 - 00DB texte 1 ligne 7
00E0 - 00FB texte 1 ligne 8
0100 - 011B texte 1 ligne 9
0120 - 013B texte 1 ligne 10
0140 - 015B texte 1 ligne 11
0160 - 017B texte 1 alterné ligne 1 (28 caractères par ligne)
0180 - 019B texte 1 alterné ligne 2
01A0 - 01BB texte 1 alterné ligne 3
01C0 - 01DB texte 1 alterné ligne 4
01E0 - 01FB texte 1 alterné ligne 5
0200 - 021B texte 1 alterné ligne 6 Page 2
0220 - 023B texte 1 alterné ligne 7
0240 - 025B texte 1 alterné ligne 8
0260 - 027B texte 1 alterné ligne 9
0280 - 029B texte 1 alterné ligne 10
02A0 - 02BB texte 1 alterné ligne 11
02C0 - 02DB texte 2 ligne 1 (28 caractères par ligne)
02E0 - 02FB texte 2 ligne 2
0300 - 031B texte 2 ligne 3
0320 - 033B texte 2 ligne 4
0340 - 035B texte 2 ligne 5
0360 - 037B texte 2 ligne 6 Page 3
0380 - 039B texte 2 ligne 7
03A0 - 03BB texte 2 ligne 8
03C0 - 03DB texte 2 ligne 9
03E0 - 03FB texte 2 ligne 10
0400 - 041B texte 2 ligne 11
0420 - 043B texte 2 alterné ligne 1 (28 caractères par ligne)
0440 - 045B texte 2 alterné ligne 2
0460 - 047B texte 2 alterné ligne 3
0480 - 049B texte 2 alterné ligne 4
04A0 - 04BB texte 2 alterné ligne 5
04C0 - 04DB texte 2 alterné ligne 6 Page 4
04E0 - 04FB texte 2 alterné ligne 7
0500 - 051B texte 2 alterné ligne 8
0520 - 053B texte 2 alterné ligne 9
0540 - 055B texte 2 alterné ligne 10
0560 - 057B texte 2 alterné ligne 11


Seules les lignes 1,2,10 et 11 seront affichées.
Elles seront affichées en fonction de la position du strap de sélection de relais (S1), et le texte alterné apparaîtra toutes les 4 secondes.

Après avoir modifié le fichier 24C16OSD.ASM, il faut le compiler à l'aide de MPASMwin.exe, le fichier de sortie sera 24C16OSD.HEX

Il suffira alors d'utiliser NTPicProg (Win 9x) ou Icprog (Win XP/2k) pour programmer la 24C16.(sélection du bon port COM, et du bon type d'eeprom).
Ces différents utilitaires sont téléchargeables ici

Principe de la correction d'offset et de gain de la tension analogique

Lors de l'élaboration du S-mètre, il a fallu adapter la tension de sortie de CAG pour la ramener dans la plage de mesure du convertisseur analogique-numérique (0 à 5V).
Je me suis basé sur la documentation de mon tuner 1200MHz, qui a les caractéristiques suivantes :

Niveau reçu Tension CAG
-30 dBm 1 V
-80 dBm 3,5 V


La variation de tension est quasi linéaire dans la plage 1V à 3,5V.
Le montage à LM324 réalise donc l'adaptation, par ajout d'un offset puis inversion de pente et gain variable pour obtenir les valeurs suivantes à l'entrée du convertisseur :

Niveau reçu Tension Corrigée
-30 dBm 5 V
-80 dBm 0 V


Après adjonction et réglages de ce montage, le S-mètre devait fonctionner parfaitement, mais lors des essais par F6CMB Camille, il s'est avéré que l'indication de niveau à l'écran était inversée !
Ceci était dû au fait que le tuner de réception 2300MHz du relais avait une tension de CAG différente de celle de mon tuner 1200MHz.

Niveau reçu Tension CAG
-30 dBm 3,5 V
-80 dBm 0,8 V


J'ai donc trouvé une astuce pour que cela fonctionne en applicant le correctif suivant :






Voici les fichiers pour la réalisation :
















  Si la vidéo n'est pas stable en sortie du montage, quelle que soit l'entrée vidéo sélectionnée, il faudra remplacer la résistance R23 (75 Ohms) par une résistance ajustable de 1kOhms.
(Cette modification est rendue nécessaire par les tolérances de Ron du 4066, qui peut atteindre 100 Ohms et ainsi faire écrouler le signal vidéo à 0,5V c-c.)



Dernière minute :

Une version différente du programme du PIC16F84 est également disponible pour une utilisation du montage en OSD simple, sans affichage de la tension analogique.
Il permet alors l'affichage de 4 pages de 11 lignes de 28 caractères chacunes, sélectionnable par les interrupteurs S1 à S4.




Pour de plus amples informations, n'hésitez pas à me contacter.