1°) | Présentation |
|
2°) | Étude du schéma électrique |
|
3°) | Réalisation du montage |
|
4°) | Le programme PICOSD |
|
L'ATV, la télévision amateur :
Parmi les différents modes de transmission utilisés par les radioamateurs, l'ATV tient une place importante ; elle ouvre un vaste champ d'expérimentations : construction ou modifications de matériels existants, en émission ou en réception (tuners, démodulateurs satellites, préamplis, amplis de puissance, antennes, platines de pilotages à microcontrôleurs, etc.) ; de plus, la bande passante des signaux 'vidéo' nécessite l'utilisation de gammes de fréquences très élevées (UHF et au-delà), ainsi que de matériels assez spécifiques : modulateurs, démodulateurs pour la vidéo et les sous-porteuses, mires, incrustateurs, etc.
L'incrustateur vidéo :
Un système d'incrustation vidéo est un dispositif qui permet
de superposer un texte (ou un logo) prédéfini sur une image
vidéo ; on le désigne parfois également par son
acronyme anglo-saxon "OSD" (On Screen Display
= Affichage sur l'écran). La réglementation nous impose de
transmettre à intervalles rapprochés notre indicatif radioamateur ;
il est bien sûr possible de le passer en phonie, ou de basculer sur une
mire contenant l'indicatif, mais l'utilisation d'un incrustateur constitue,
me semble-t-il, la solution la plus élégante. On peut alors
en profiter pour diffuser des informations supplémentaires :
locator, fréquence, etc.
Grâce à un petit montage assez génial, conçu par
Alain FORT, F1CJN, la réalisation d'un incrustateur
vidéo simple est maintenant accessible à tous. Celui-ci est basé
sur l'utilisation d'un PIC16F84.
But de cette page :
Comme je viens de le signaler, je ne suis pas l'auteur de ce montage, et le mérite en revient entièrement à Alain F1CJN. Je me suis simplement fixé pour tâche de tenter de reprendre et d'améliorer si possible le fichier source d'origine du PIC, et surtout de lui adjoindre un programme destiné à configurer aisément les messages à afficher, depuis un PC fonctionnant sous Windows ; ce programme s'appelle PICOSD.
Très concrètement, il suffira pour l'OM de lancer PICOSD, de
modifier les messages dans les zones de saisie, de choisir la hauteur des
lettres, la vitesse de défilement du message défilant, et, dans
une certaine mesure, la position du texte sur l'écran, puis le programme
va générer automatiquement les fichiers PICOSD.ASM (le fichier
source) et PICOSD.HEX (le fichier hexa à programmer dans le PIC), qui
correspondent à ces paramètres. Une fois le PIC programmé
et réinséré sur l'incrustateur, la nouvelle configuration
est immédiatement fonctionnelle :
L'internaute intéressé trouvera donc sur cette page, d'une part toutes les infos pour une réalisation détaillée du montage, et d'autre part le programme PICOSD qui permet de modifier facilement les différents messages à afficher.
Le schéma et le programme du PIC fournis par Alain, qui ont servi de point de départ à la réalisation de cette page, sont disponibles à la rubrique Téléchargement du site Internet de l'ANTA, l'Association Nationale pour la Télévision Amateur (archive Picosd.zip, 21 ko). Cette archive est aussi stockée en local sur mon site, ici.
|
Le schéma ci-dessus correspond à celui fourni par F1CJN ;
il se décompose en trois blocs fonctionnels axés autour des
composants suivants :
Le LM1881, qui permet d'extraire les tops de synchronisation 'lignes' et 'trames' du signal vidéo. Ces tops vont rythmer le fonctionnement du PIC, lui permettant d'exécuter son travail en parfaite synchronisation avec le signal vidéo.
Une bascule 'RS' (constituée des deux portes NAND du haut, en rouge) qui autorisent ou non le fonctionnement de l'horloge interne du PIC, ce qui permet à celui-ci de se mettre en sommeil en attendant la survenue d'un événement précis : le début d'affichage de la prochaine ligne.
Le PIC constitue le cerveau du dispositif : il est capable, grâce aux indications qui lui sont fournies, de détecter le début d'une image (en fait, d'une trame, donc 'une demi-image') ; il va alors attendre un certain nombre de lignes, puis va afficher un message de 11 caractères ; chaque caractère est constitué d'une 'matrice' de 5 x 7, soit 7 lignes superposées, et composées chacune de 5 pixels disposés horizontalement.
À partir du signal vidéo fourni sur la broche 2 (via un condensateur de liaison), il va extraire les tops de 'synchro ligne' (sortie broche 1), et de 'synchro trame' (sortie broche 3), comme indiqué ci-dessous :
: Documentation PDF du LM1881 (173 ko)
NB : la documentation étant américaine, les durées indiquées correspondent à une fréquence du secteur (ou de trame) de 60 Hz, pour des images de 525 lignes, soit une fréquence ligne de (60/2) x 525 = 15750 Hz. Une ligne dure alors : 1/15750 = 63,5 µs, contre 64 µs chez nous, notre vieille Europe ayant adopté F(trame) = 50 Hz, F(ligne) = 15625 Hz pour 625 lignes par image. L'ordre de grandeur ne change pas ; retenons simplement qu'un top de synchro trame dure environ 230 µs, et un top de synchro ligne un peu moins de 5 µs (sauf au moment du changement de trame). Les tops sont actifs sur un niveau logique "0".
2-2) - La bascule RS et le blocage de l'horloge :
La bascule est constituée de deux portes NAND combinées
selon un montage classique : chaque sortie est rebouclée
sur l'entrée de la porte opposée ; les états
des sorties dépendront donc non seulement des états des
entrées à un instant donné, mais également
de l'état des sorties à l'instant précédant
le basculement des entrées (logique 'séquentielle', par
opposition à la logique 'combinatoire'). La table de vérité
de la porte NAND est rappelée pour mémoire.
Regardons ensemble le fonctionnement bascule RS :
Étape 1 | Supposons R=0 et S=1. R=0 implique Q2=1. S=1 et Q2=1 impliquent Q1=0. Le système est stable. |
---|---|
Étape 2 | R passe à 1 : Q1 vaut 0, donc Q2 reste à 1. S et Q2 sont à 1, donc Q1 reste stable à 0. |
Étape 3 | S passe à 0 : Q1 bascule à 1. R et Q1 étant à 1, Q2 bascule à 0. Q2 valant 0, Q1 reste stable à 1. |
Étape 4 | S repasse à 1 : Q2 valant 0, Q1 reste à 1. Q1 et R étant à 1, Q2 reste stable à 0. |
Étape 5 | Dernier cas de figure susceptible de se produire : si l'on force R et S à 0 simultanément, les deux portes ayant chacune une entrée à 0, les deux sorties Q1 et Q2 sont forcées à 1 et restent dans cet état stable tant que R et S demeurent à 0. |
Lorsque la sortie Q1 est à 1, le potentiel de la cathode de la diode est proche de 5v, et donc supérieur ou égal à celui de l'anode ; la diode est bloquée, et l'horloge du PIC peut osciller librement.
Quand Q1 passe à 0, la diode est passante (polarisée par R), et le potentiel de l'entrée OSC1 du PIC est fixé à environ 0,7v bloquant l'oscillation et donc le fonctionnement de l'horloge : le PIC se met en attente, plus aucune instruction n'est exécutée.
Tentons de résumer simplement le fonctionnement :
- Si R est à 1, et que S passe à 0, même de
manière fugace (survenue d'un top de synchro ligne), Q1
bascule à 1 (ou reste à 1 si elle y était
déjà) ; l'horloge est active ; le PIC
est en mode 'travail'.
- Si S est à 1, et que R passe même brièvement
à 0, Q1 bascule à 0 (ou reste à 0 si elle y était
déjà) ; l'horloge est bloquée. Le PIC est au repos :
en fait, c'est lui-même qui passe en mode 'repos' en mettant sa sortie A3
à 1.
- Si S et R sont simultanément à 1, la bascule reste
stable, et l'horloge conserve son état précédent
(active ou bloquée) ; celui-ci dépend donc de
l'état précédent de S et R.
- Si S et R se retrouvent simultanément à 0, Q1 est à
1, donc l'horloge est active.
NB : la bascule RS se caractérise toujours par un état
stable, en fonction du dernier ordre R ou S reçu, R et S étant
actif sur un niveau 0. Les notations R et S correspondent respectivement à
Reset (= mise à 0 de la sortie Q1) et Set
(= mise à 1 de la sortie Q1).
Lorsque les entrées R et S de la bascule RS sont à 1, l'état
de la sortie Q1 (et donc le fonctionnement de l'horloge du PIC) ne dépend
que des états précédents de R et S :
- Si R est le dernier à avoir été à 0, la sortie Q1
est à 0 et l'horloge est bloquée.
- Si S est le dernier à avoir été à 0, la sortie Q1
est à 1 et l'horloge est active.
- Si R et S valaient 1 à la mise sous tension, Q1 est indéterminé,
et on ne peut pas prédire si l'horloge du PIC est active tant qu'il
n'y a pas de changement sur R ou S ; même remarque si R et S passent
simultanément de 0 à 1. Mais dans ce montage, la survenue
régulière du top de synchro ligne garantit contre tout blocage
du système dû à une incertitude de l'état initial.
2-3) - Le comportement du PIC :
Cette partie est assez complexe, et je renvoie l'internaute intéressé consulter le fichier source ASM du programme du PIC, également généré par PICOSD, et étayé de nombreux commentaires. Les quelques lignes qui suivent ont pour but de résumer (?) les choses en essayant d'aller à l'essentiel.
2-3-1) Organisation de la mémoire du PIC :
Le PIC16F84 peut emmagasiner jusqu'à 1024 instructions, l'espace mémoire s'étend donc de l'adresse $000 à l'adresse $3FF (soit 0 à 1023, mais en notation hexadécimale). En se basant sur son contenu, on peut diviser celui-ci en trois zones :
2-3-1-a) - Zone 1 ($005 à $0FB), les tables de définition des caractères :
Chaque lettre doit être définie sous la forme d'un tableau
de 7 rangées et 5 colonnes, pour indiquer les pixels qui seront
allumés et ceux qui seront éteints. Concrètement,
cela revient à définir une table de 7 octets, un par
rangée, sachant que seuls les 5 derniers bits B4 à B0
seront utilisés (les bits B5, B6 et B7 seront eux ignorés).
Voici l'exemple pour la lettre [A] :
Au niveau du programme en assembleur, cela se traduira par une table de 7 octets pour chacun des caractères susceptibles d'être utilisés :
CarA RETLW B'00001110' ; ....***. RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00011111' ; ...***** RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...* RETLW B'00010001' ; ...*...*
"RETLW" est l'instruction servant à constituer
une table. Lorsque le programme 'saute' vers une instruction RETLW, celle-ci le
renvoie à son point de départ, mais en ayant au préalable
chargé la constante associée (par exemple : B'00001110')
dans le registre de travail W du PIC. Cela revient un peu à aller
se servir dans le garde-manger.
"CarA" est le pointeur de la table du 'A' : l'adresse de la mémoire où commence la table de définition du A. Les valeurs des 7 octets sont indiquées en binaire (notation B'00001110') pour faciliter une éventuelle modification manuelle de la table.
Les 42 caractères ainsi définis sont :
- L'alphabet en majuscule : ABCDEFGHIJKLMNOPQRSTUVWXYZ.
- Les dix chiffres : Ø123456789.
- Quelques signes supplémentaires : l'apostrophe, l'espace,
le point, la barre de fraction, le Z minuscule (pour MHz !),
et une tête (dans PICOSD, utilisez le caractère étoile
[*]).
NB : La table de définition devrait occuper 42 x 7
= 294 octets, mais la syntaxe de l'assembleur (instruction RETLW) impose aux
tables de ne pas sortir d'un segment de 256 octets (par exemple dans notre
cas, la zone d'adresse $000 à $0FF). Une petite astuce permet de
réaliser cette condition, elle consiste à faire se chevaucher les
zones de définition de certains caractères, par exemple le bas du
A et le haut du H, le bas du H et le haut du U, etc. Bravo au concepteur du
programme !
2-3-1-b) - Zone 2 ($0FC à $24A), la partie programme à proprement parler : elle regroupe l'ensemble des routines de séquencement des opérations (analyse des tops de synchro), de choix du message, et de la gestion de son affichage. Elles seront évoquées plus loin (dans la partie 2-3-2, détaillant l'organigramme de fonctionnement).
2-3-1-c) - Zone 3 ($300 à $3F8), la table des messages :
Elle est constituée de l'ensemble des messages, c'est à dire du message défilant (jusqu'à 160 caractères suivis et précédés de 11 espaces), et des 6 messages fixes de 11 caractères. Habituellement, les chaînes de texte inscrites dans un ordinateur ou un microcontrôleur représentent la succession des valeurs ASCII des différents caractères ; cette solution pourrait être utilisée par exemple pour piloter un module d'affichage LCD standard, mais ce n'est pas le cas ici : le code ASCII ne représente rien pour le PIC, ni pour le système destiné à exploiter le signal vidéo modifié (émetteur ATV, téléviseur ou moniteur vidéo).
En fait, nous avons vu (en 2-3-1-a) que chaque table de définition d'un
caractère est associé à un pointeur ("CarA", dans
l'exemple), auquel nous avons donné un nom évocateur (CarA, CarB, CarC,
etc.), mais cette variable virtuelle ne représente simplement que l'adresse
physique de début de la table du caractère correspondant, dans l'espace
mémoire du PIC. Un message de N caractères sera donc tout simplement une
table de N de ces fameux pointeurs. Voici par exemple pour le message
n°1 :
Mess1 RETLW Car7 ; pointeur vers la table de définition du 7 RETLW Car3 ; pointeur vers la table du 3 RETLW SP ; pointeur vers la table de l'espace RETLW CarD ; pointeur vers la table du D RETLW CarE ; etc... RETLW SP ; RETLW CarF ; RETLW Car8 ; RETLW CarE ; RETLW CarG ; RETLW CarQ ;
Les restrictions évoquées au paragraphe 2-3-1-a s'appliquent également ; la nécessité de rester dans le segment $300 à $3FF limite donc le nombre de messages fixes, ainsi que la longueur maximale du message défilant.
2-3-2) Organigramme général :
2-3-2-1) - Supposons l'horloge active. Le PIC surveille sur son entrée A2 le top de synchro trame ; il va décider d'attendre le début d'une nouvelle trame, et scrute pour cela la fin du top de synchro (front montant sur A2).
2-3-2-2) - Puis il va ensuite lire l'état des bits PB5/PB6/PB7 ; il s'agit des entrées permettant à l'utilisateur d'indiquer le choix du message en cours, soit par trois interrupteurs (DIL ou autres), ou bien par un commutateur 7 ou 8 positions associé à une matrice à diodes, comme nous le verrons plus loin. Choix de l'affichage :
Comm. | PB7 | PB6 | PB5 | Message sélectionné : |
---|---|---|---|---|
K7 | 0 | 0 | 0 | message défilant |
K6 | 0 | 0 | 1 | message n°1 |
K5 | 0 | 1 | 0 | message n°2 |
K4 | 0 | 1 | 1 | message n°3 |
K3 | 1 | 0 | 0 | message n°4 |
K2 | 1 | 0 | 1 | message n°5 |
K1 | 1 | 1 | 0 | message n°6 |
I.Off | 1 | 1 | 1 | pas d'affichage |
À l'origine, le programme donnait le choix entre un message
défilant (jusqu'à 55 caractères) ou trois messages
fixes de 11 caractères ; comme vous le constatez dans le
tableau ci-dessus, le nombre de messages fixes a été
porté à six ; le message défilant peut mesurer
jusqu'à 160 caractères.
2-3-2-3) - Il va ensuite laisser passer un certain nombre de lignes, car l'affichage ne commence jamais tout en haut de l'écran. Pour cela, il va exécuter autant de fois que nécessaire le couple d'instructions suivant :
[mise à 1 de A3] [mise à 0 de A3]
La mise à 1 de A3 (= R à 0) bloque le fonctionnement de
l'horloge ; celle-ci ne redémarre que lorsque survient le
top de synchro ligne (S mis à 0 par le LM1881), qui indique le
début d'une nouvelle ligne. Il faut alors que la première
action réalisée par le PIC soit de remettre à 0 la
sortie A3, pour que l'horloge reste activée au-delà de la
fin du top de synchro ligne. Le PIC patiente encore quelques µs
pour être sûr que le top de synchro ligne est terminé.
L'opération, réalisée N fois, permet de laisser passer
N lignes, et ainsi d'obtenir le positionnement vertical voulu.
Remarque : Les N lignes de décalage dans la trame
correspondent à (2 x N) lignes dans l'image, car une
image est constituée de deux trames entrelacées.
2-3-2-4) - La partie affichage du message :
Que le message soit fixe ou défilant, le programme va toujours afficher
11 caractères, en utilisant la routine "DISTXT".
2-3-2-4-a) La routine "DISTXT" :
Chacun des 11 caractères est composé de 7 rangées superposées, de 5 bits ; les bits à "1" seront affichés en blanc sur l'écran ; voici par exemple les trois caractères "EGQ" (on extrapolera facilement pour onze caractères) :
Chacune des 7 rangées va être affichées T fois (T étant la hauteur des lettres, T allant de 1 à 10), et ce grâce à la routine "SHOWLINE" : rangée n°1 (des 11 caractères !), puis rangée 2, puis rangée 3, etc. jusqu'à la rangée n°7.
2-3-2-4-b) La routine "INCLINE" :
Juste avant l'affichage de la rangée N, le programme doit aller chercher
les 11 octets correspondant à la N-ième position, dans les tables
de définition des 11 caractères ; elles sont stockées
en interne dans les variables Ta0 à Ta10 du programme ;
ceci prend un certain temps (environ la durée d'une ligne-écran), ce
qui explique l'apparition d'une ligne noire entre deux rangées successives,
ce qui n'est pas très gênant au niveau de l'aspect des lettres.
2-3-2-4-c) La routine "SHOWLINE" :
Les 11 variables "Ta0" à "Ta10" contiennent chacune
les 5 bits constituant la rangée à afficher, pour chacun des 11
caractères. Voyons comment se déroule l'affichage des 5 pixels
pour un caractère, par exemple le premier (bits contenus dans
"Ta0") :
"Ta0" est une variable définie sur 8 bits (un octet), mais seuls
les 5 bits de poids faibles sont significatifs et seront affichés, et ce,
par ordre d'apparition : B4, B3, B2, B1, puis B0.
Le programme envoie le contenu de l'octet "Ta0" sur le port
B, dont la sortie PB4 est reliée à l'entrée-sortie
vidéo par une diode ; celle-ci permet de n'envoyer une
information sur le signal vidéo que lorsque la sortie PB4 est
à "1" ; l'ajustable 470 Ω sert à régler
l'injection de courant de manière à ce que le niveau du signal
vidéo atteigne, mais sans trop le dépasser, le niveau du blanc.
On a donc un pixel blanc si le bit B4 est à 1. le programme va ensuite
effectuer 4 fois un "décalage logique vers la gauche"
du port B (instruction "RLF PortB"), ce qui signifie que les
bits B3, puis B2, puis B1, puis enfin B0, vont être présents
successivement sur la sortie PB4, et ainsi répercutés en temps
voulu dans le signal vidéo, et donc sur l'écran du moniteur ;
PB4 est ensuite remise à "0" pour éviter que le dernier
des 5 pixels s'étire en longueur s'il était blanc (= si B0 valait
1). On procède de même pour les 10 caractères restants,
avec les variables "Ta1" à "Ta10".
Quelques remarques :
- L'utilisation de l'instruction RLF peut sembler
anodine, en fait elle est très astucieuse, car c'est la seule possibilité
pour fixer une sortie du port B en un seul cycle machine, condition indispensable
à un affichage assez rapide avec un PIC16F84-04. Le non-respect de cette
condition entraînerait des lettres démesurément larges.
- Les broches PB5-PB6-PB7 sont configurées en entrées, elles ne sont
donc pas influencées par l'instruction RLF.
- Les broches PB0-PB1-PB2-PB3, bien qu'apparemment non utilisées, doivent
impérativement être laissées libres, et configurées en
sorties, puisque c'est sur ces sorties que vont défiler les bits B3-B2-B1-B0
avant d'arriver sur PB4.
2-4) - Modifications du schéma électrique :
Le schéma électrique présenté en haut de cette page est une reprise du schéma d'origine fourni avec la première version du programme par F1CJN ; le schéma final utilisé pour la réalisation du prototype est le suivant :
Il comporte quelques modifications mineures :
L'ajout d'un circuit R-C (680 Ω / 560 pF) sur
l'étage d'entrée du LM1881 :
Celui-ci constitue un filtre passe-bas avec une fréquence
de coupure à -3dB égale à 1/(2.π.R.C), soit
418 kHz ; cela permet de réduire notablement les
sous-porteuses "chrominances" et "son" ;
nous évitons ainsi qu'elles viennent se superposer au signal
vidéocomposite N&B classique, et perturber la détection
des seuils de synchro. L'utilisation de ce circuit RC est recommandée
dans la documentation du LM1881 ; j'ai simplement remplacé les
valeurs préconisées (620 Ω / 510 pF) par des valeurs
généralement plus disponibles ; elles sont peu critiques.
L'ajout d'un condensateur de 1 µF et d'une diode sur l'entrée
de remise à zéro du PIC (broche 4) :
La résistance de 10 kΩ initialement présente ne
servait pas à grand chose, le courant absorbé par
l'entrée étant négligeable. Associée
au condensateur, elle permet de maintenir l'entrée RAZ au
niveau logique bas pendant une fraction de seconde (environ 10 ms)
au moment de la mise sous tension : le PIC est alors inhibé
le temps que la tension d'alimentation s'établisse de manière
stable. La diode permet une décharge rapide du condensateur en cas
de chute de tension sur l'alimentation, et donc la remise à
zéro se produit bien, y compris sur une baisse de tension très
impulsionnelle, qui pourrait affecter partiellement les données des
registres du PIC (sans nécessairement suffire à le
réinitialiser).
Utilisation d'un PIC 16F84 ou 16C84 en version 4 MHz :
Le concepteur prévoyait à l'origine d'utiliser un PIC en
version "10 MHz", lequel devient difficile à trouver ;
par ailleurs, les PICs en version "20 MHz" sont plus coûteux.
Bien que la vitesse d'exécution soit assez critique, rien n'empêche
de faire fonctionner un PIC, prévu pour être cadencé à
4 MHz, à une vitesse un peu plus rapide, et c'est ce que nous avons fait
dans ce montage, avec l'oscillateur en mode RC. Il suffit simplement d'être
raisonnable, et d'éviter les opérations au timing critique pour le
PIC, l'écriture en EEPROM notamment.
La capacité du circuit RC de l'oscillateur étant faible, le
système peut être légèrement sensible à
l'effet de main, il est donc préférable de laisser un espace
dégagé d'un ou deux centimètres sous le circuit imprimé.
Commutateur de choix du message :
Comme expliqué en 2-3-2-2), l'état des entrées
PB5-PB6-PB7 permet d'indiquer au PIC lequel des messages sera
affiché. Signalons que les résistances de tirage au +5v
internes au PIC ont été activées logiciellement,
il suffit donc de mettre les entrées voulues à la masse
ou de les laisser en l'air ; la combinaison "111" (avec les trois
entrées en l'air) correspond à l'absence de message affiché.
À l'origine, le concepteur a prévu trois interrupteurs, et
j'ai moi-même utilisé des interrupteurs DIL pour mon premier
prototype. Dans la nouvelle version, je vous propose de remplacer les trois
interrupteurs par une matrice à diodes associée à un
commutateur à sept positions, et à un interrupteur :
L'interrupteur permet de passer à tout moment en mode "absence de message" (inter ouvert = les trois entrées mises en l'air), ce qui permet de basculer entre deux messages extrêmes sans passer par les messages intermédiaires ; et l'utilisation d'un commutateur me semble une solution plus élégante, d'autant que le nombre de messages disponibles est plus important que dans la version d'origine. Le commutateur est un très classique "1 circuit / 12 positions" dont on peut limiter le nombre de positions grâce à une rondelle munie d'un ergot, qui est située sous l'écrou de fixation.
Remarque : le circuit existe en trois versions différentes.
La première version correspond à la version d'origine,
équipée d'un triple inter DIL, sans la résistance
de 10k sur l'entrée RAZ du PIC (un prototype réalisé).
La seconde conserve le triple inter DIL, mais inclut le circuit RC sur
l'entrée du LM1881, ainsi que le circuit de RAZ amélioré
(pas de proto réalisé, mais le dessin du circuit est disponible).
La troisième version utilise la matrice de diodes et le commutateur,
c'est celle donc la description vous sera proposée dans les lignes qui
suivent. Quelle que soit la version que vous choisirez de construire, sachez
qu'elle peut accueillir indifféremment la version d'origine du programme,
ou celle modifiée par mes soins et générée par le
programme PICOSD. Je vous recommande tout de même de réaliser la
troisième version.
Version 1 (75 ko) |
Version 2 (81 ko) |
Version 3 (112 ko) |
---|
|
Le dessin du circuit imprimé a été créé grâce au logiciel ARES, de la suite PROTEUS 5.2 ; il est directement issu du schéma électrique présenté plus haut ; le voici vu côté composants en basse résolution (200 DPI) :
PICOSDV3.LYT |
OSDPCBv3.GIF |
---|---|
Dessin du circuit imprimé et implantation des composants au format Ares 5.2 (ZIP, 9 ko). | Dessin du circuit imprimé au format GIF (55 ko), en haute définition (600 dpi). |
Si vous disposez du logiciel ARES (de la suite PROTEUS), vous pourrez imprimer directement le typon à l'échelle 1 depuis le logiciel, en chargeant le fichier "PICOSDV3.LYT". C'est la méthode la plus simple.
Dans le cas contraire, vous devrez imprimer le fichier graphique
"OSDPCBv3.GIF" en respectant impérativement les
dimensions, pour obtenir un typon à l'échelle 1.
Celui-ci est fourni avec une résolution de 600 DPI (600
points par pouce), et il mesure 2190 pixels x 1320 pixels, ses
dimensions sont donc :
- en pouces : 3.65 x 2.20
- en mm : 92.7 x 55.9
(Rappel : 1 pouce = 25.4 mm)
Si votre logiciel de traitement d'image préféré
ne sait pas le faire (imprimer un fichier à des dimensions
données), voici une solution simple détaillée :
1°) Téléchargez l'utilitaire
Paint Shop Pro 3.12 (1,86 Mo) ;
décompressez-le, puis installez-le.
2°) Lancez PSP.EXE, et chargez le fichier "OSDPCBv3.GIF" :
Menu [File], puis [Open].
3°) Imprimez-le : Menu [File], puis [Print], puis [Page setup...].
Dans la boîte de dialogue "Page Setup" :
- Les dimensions sont par défaut en "pouces" (="Inches"
en anglais), vous pouvez les laisser ainsi ; la case "Maintaint
Aspect Ratio" doit être cochée ; la case
"Use Full Page" doit être décochée ;
la case "Center On Page" peut rester cochée (peu
importe).
- Image Width : tapez la largeur de l'image (3.65 pouces).
- Image Height : tapez la hauteur de l'image (2.20 pouces).
- Puis validez, et quittez la boîte de dialogue : [OK].
Vous vous retrouvez dans la boîte de dialogue "Print",
lancez enfin l'impression en tapant [OK].
Conseils pour l'impression du typon :
L'impression doit être impeccable, c'est-à-dire avec
des zones noires bien opaques, sans coupures, sans bavures ;
par conséquent, configurez votre imprimante pour une impression
en noir et blanc, en haute qualité. Personnellement, j'imprime
directement sur un transparent spécial pour imprimantes à
jet d'encre, et je superpose deux exemplaires pour gagner en opacité.
Vous pouvez également imprimer sur papier ; il faudra alors,
soit rendre celui-ci perméable aux UVs (bombe "Diaphane"
de KF), soit faire une photocopie laser de bonne qualité en noir et
blanc sur un transparent prévu à cet effet. Quelle que soit
la méthode, assurez-vous que le résultat final est bien
à l'échelle 1 : le plus simple est de vérifier
la coïncidence des broches et des trous en positionnant le PIC sur
le typon (sans éraflure).
3-2) - Réalisation du circuit imprimé :
Attention ! Le dessin du circuit imprimé est vu côté composants : une fois le dessin photocopié ou imprimé sur un transparent, il faudra donc plaquer contre le cuivre la face encrée du transparent. Découpez un morceau de plaque présensibilisée d'environ 6 cm par 9,5 cm. Vous pouvez alors insoler, révéler, puis graver et percer le circuit. L'indicatif doit être lu à l'endroit, côté cuivre. Avant de percer, vérifiez tout de même les dimensions des broches des fiches "vidéo" RCA, pour adapter si nécessaire la position des trous, car il peut y avoir des différences selon les modèles.
3-4) - Implantation des composants :
Soudez les composants par ordre de taille, en respectant le sens de ceux qui sont polarisés : d'abord les diodes 1N4148, puis les résistances et la 1N4007, puis les supports des circuits intégrés, les résistances ajustables, puis les condensateurs et le régulateur, les borniers, et enfin les fiches RCA. Utilisez impérativement un support pour le PIC, et de préférence un support "tulipe" afin qu'il puisse supporter les multiples démontages lors des reprogrammations (changements de messages). Le régulateur 5v peut être un 7805 (arrière métallique), ou un 78L05 dont le brochage est inversé :
Dans les deux cas, attention à son sens d'implantation.
Le 78L05 est largement suffisant compte tenu de la très faible
consommation du montage (environ 11 mA, sur mon prototype) ;
la face plate comportant le marquage sera alors orientée du
côté du bornier d'alimentation. En revanche, si vous
montez un 7805, ce sera alors le dos métallique qui sera
orienté vers ce même bornier.
Photo du prototype vu côté composants :
Photo du prototype vu côté soudures :
Vue d'ensemble du montage, avec l'interrupteur,
le commutateur et le fil d'alimentation (pile 9v) :
À droite de la photo, se trouve le bornier à huit plots sur lequel viennent se connecter les huit fils du commutateur de choix du message ; le fil gris est le commun ; les sept fils noirs sont respectivement (de haut en bas) :
Commutateur | Message sélectionné : |
---|---|
K7 | message défilant |
K6 | message n°1 |
K5 | message n°2 |
K4 | message n°3 |
K3 | message n°4 |
K2 | message n°5 |
K1 | message n°6 |
Le commutateur est bridé à sept positions grâce
à la rondelle munie d'un ergot qui est située sous
l'écrou de fixation. Lorsque l'interrupteur est ouvert (=
non passant), aucun message n'est affiché ; il en va
de même si le commutateur se trouve en dehors de l'une des
sept positions prévues (on peut donc en laisser une
huitième à cet effet).
3-5) - Vérification du montage :
1°) Avant de brancher l'ensemble, commencez par faire un
contrôle général du montage :
- Vérifiez les valeurs de chaque composant, leurs sens de branchement
pour ceux qui sont polarisés (circuits intégrés,
condensateurs tantale, diodes, régulateur).
- Vérifiez l'absence de micro-coupures sur les pistes de la carte.
- Vérifiez que toutes les soudures ont bien été
faites, qu'aucune ne déborde sur une autre piste, pastille ou
soudure, qu'il n'y a pas de soudures "sèches".
BinPIC.HEX (archive ZIP de 1,5 Ko) |
2°) Téléchargez le fichier "BinPIC.ZIP" en cliquant sur l'icône de gauche ; vous allez alors en extraire le fichier de test "BinPIC.HEX" qui contient les messages, la taille et la position par défaut. Vous pouvez le programmer dans le PIC, cela va vous permettre de vérifier le fonctionnement du montage. Par la suite, le fichier HEX du PIC vous sera fourni automatiquement par le programme PICOSD, qui y aura intégré vos paramètres personnalisés. Pour l'instant, replacez le PIC programmé sur le montage (dans le bon sens !). |
---|
3°) Vous pouvez maintenant connecter le système ; mettez les ajustables à mi-course, branchez la source vidéo (caméra) et le moniteur ; à ce propos, vous aurez noté une curiosité en consultant le schéma électrique : l'entrée et la sortie vidéo sont interchangeables. Branchez alors l'alimentation, et fermez l'interrupteur de validation des messages (= inter passant). Le message sélectionné apparaît en blanc dans l'angle supérieur gauche de l'écran.
4°) Réglages :
Réglez l'ajustable de 5 kΩ (le noir, sur la photo du proto)
pour modifier l'horloge du PIC, et donc la largeur des lettres. En
deçà d'une certaine valeur (taille mini des lettres),
l'oscillateur décroche et le message disparaît. En tournant
dans l'autre sens, les lettres s'élargissent, jusqu'à ce
que la largeur du message dépasse la taille de l'écran,
l'affichage devient anarchique, et le signal vidéo peut être
perturbé. Le meilleur compromis me semble être de se situer
légèrement au-dessus de la largeur minimale, de façon
à ce que le PIC ne décroche pas.
L'ajustable de 470 Ω (le blanc sur la photo du proto) permet de doser
le niveau de blanc réinjecté pour constituer les lettres.
Choisissez une valeur qui permette une lisibilité suffisante,
sans trop saturer pour ne pas dénaturer le signal vidéo
et qu'il reste dans ses limites au niveau amplitude. Cela limitera le
phénomène d'écho, qui se traduit par une petite
zone noire juste après une lettre trop blanche.
Vérifiez le fonctionnement correct des messages 1 à 6, ainsi
que du message défilant. En principe le montage doit fonctionner
dès la mise sous tension, après une éventuelle retouche
des ajustables. En l'absence de message, assurez-vous qu'au moment de brider
le commutateur sur les positions 1 à 7, le curseur n'est pas resté
bloqué entre les positions 8 à 12. Le PIC est utilisé
au-delà de sa fréquence nominale (approximativement vers 8 MHz),
on ne peut donc pas exclure que dans de très rares cas, il refuse
d'osciller ; essayez alors avec un autre PIC16F84 à 4 MHz, ou bien
avec un PIC prévu pour fonctionner à 10 ou 20 MHz pour innocenter
le reste du montage.
|
Le programme PICOSD fonctionne sous Windows 95/98/NT/2K/XP ; il permet à l'utilisateur de choisir le contenu des messages, leur position sur l'écran, la hauteur des lettres, la vitesse de défilement du message défilant. À partir des indications fournies, il va générer automatiquement le fichier "PICOSD.HEX" à programmer dans le PIC.
PICOSD.ZIP |
---|
Cliquez sur l'icône ci-dessus pour |
PICOSD32.ZIP |
---|
(archive ZIP de 672 Ko) |
Ajout le 06/03/2016 : dans cette seconde version (PICOSD32), l'assembleur
16 bits "MPASM.EXE" a été remplacé
par "MPASMWIN.exe" (la version 32 bits fournie par microchip),
ce qui permet de l'utiliser sur des versions de Windows XP et
ultérieures, avec des processeurs 64 bits (testée
avec Windows 8) ; le fichier BAT a été adapté,
mais "PicOsd.exe" reste identique.
En décompressant l'archive ZIP, vous créez un répertoire PICOSD qui contient les quatre fichiers suivants :
"PicOsd.exe" : c'est le fichier exécutable du programme ; depuis l'Explorateur, double-cliquez dessus pour le lancer.
"PICOSD.HLP" : c'est le fichier d'aide qui accompagne PICOSD ; il est accessible depuis le programme en appuyant sur la touche [F1] ; le format ne semble plus pris en charge à partir de Windows 8.
"MPASM.EXE" / "MPASMWIN.exe" : ce programme est l'Assembleur PIC fourni par Microchip ; en fait, PICOSD génère le fichier PICOSD.ASM (en langage "assembleur") ; puis il convertit celui-ci en fichier binaire au format hexadécimal grâce à MPASM(WIN).EXE ; on obtient alors PICOSD.HEX, à programmer dans le PIC.
"asm.bat" : pour créer le fichier HEX, PICOSD n'appelle pas directement MPASM, mais passe par le fichier de commandes DOS "asm.bat" ; l'utilisateur averti peut alors éventuellement éditer le fichier BAT, afin de modifier les options de compilation.
Le programme en assembleur généré par PICOSD
pour le PIC ("PICOSD.ASM") se rapproche évidemment
beaucoup du programme initial conçu par Alain Fort F1CJN ;
voici les principales modifications apportées :
- prise en charge de 6 messages au lieu de 3,
- optimisation de la longueur du message défilant,
- ajout, ou modifications esthétiques de certains caractères,
- définition de la configuration du PIC (évite le bug du
WatchDogTimer),
- modifications permettant le paramétrage par des variables,
- ajout de nombreux commentaires explicatifs.
Je ne peux bien sûr pas garantir l'absence de nouveaux
bugs ; en cas de soucis ou de doutes, je vous renvoie vers
la version de référence, à savoir le
programme d'origine
(21 ko) ; vous perdrez alors les avantages de la nouvelle
version ; dans ce cas, pensez bien à désactiver
manuellement le WatchDogTimer dans l'utilitaire de programmation
du PIC ("IC-Prog", ou autre), sinon le programme se
bloquera au bout de une à deux secondes.
Regardons ensemble les différentes commandes
du programme PICOSD :
1 = Icône du menu système :
Celui-ci contient notamment la commande "Purger le registre et
quitter". Lorsque l'utilisateur quitte le programme, ce dernier
sauvegarde automatiquement tous les paramètres en cours (messages,
position, etc.) dans la base de registre de Windows pour la prochaine
utilisation. Grâce à cette commande, pour pouvez alors
supprimer ces infos. Si vous relancez le programme par la suite, cela
reviendra à réinitialiser les paramètres avec les
valeurs par défaut.
2 = Zone d'affichage :
Elle permet de simuler (plus ou moins fidèlement) le résultat
obtenu sur le moniteur pour l'affichage et le positionnement du message.
Attention, la largeur réelle des caractères dépend
uniquement du réglage de la fréquence d'horloge du PIC, avec
l'ajustable de 5 KΩ.
3 = Curseur de positionnement
vertical du message :
Il permet de décaler le message vers le bas, mais attention,
vous devez réglez le curseur suffisamment haut pour que les
lettres soient affichées en totalité dans la zone
d'affichage ; si les lettres dépassent par le bas, cela
peut perturber le signal vidéo ; cette recommandation est
notamment valable lorsque l'utilisateur a choisi des lettres de grande
taille (de grande hauteur, en fait).
4 = Curseur de positionnement
horizontal du message :
Il permet de décaler le message vers la droite, mais attention,
comme indiqué plus haut, la largeur réelle du texte,
comme celle du décalage, dépend du réglage de
l'ajustable 5 KΩ. Vous devez faire en sorte que la fin du message ne
dépasse pas le côté droit de l'écran, car
cela risquerait de perturber le signal vidéo. À vous de
trouver le meilleur compromis entre le décalage horizontal et
la largeur des lettres, en fonction du choix de leur hauteur.
5 = Curseur de réglage
de la hauteur des lettres :
Il permet de choisir la hauteur des lettres (de 1 à 10),
vous pourrez ensuite adapter leur largeur grâce à
l'ajustable 5 kΩ. En pratique, la valeur idéale se situe
souvent entre 2 et 5, selon l'effet recherché. Dans
tous les cas, le texte doit être configuré de
manière à ne pas sortir de l'écran.
6 = Curseur de réglage
de la vitesse de défilement :
Il permet de régler la vitesse de défilement (en
caractères par seconde), lorsque le message affiché
est le message défilant ; la valeur indiquée
est valable pour une fréquence verticale de 50 trames par
seconde ; à 60 trames par secondes (normes aux USA,
Canada...), la vitesse réelle sera donc plus rapide de 20%
que celle annoncée. Je déconseille une vitesse trop
rapide, qui est pénible à regarder (on perçoit
un peu l'entrelacement des trames dans la composition des lettres).
7 = Bouton de réinitialisation
des paramètres par défaut :
Positionne le message en haut à gauche de l'écran,
avec une hauteur des lettres de 2, et une vitesse de défilement
de 2 caractères par seconde, ce qui correspond à des
réglages "raisonnables" ; le contenu des
messages n'est en revanche pas modifié ; pour une
réinitialisation complète, voir la description
de la commande 1 , ci-dessus.
8 = Boîte de défilement de choix du
message affiché :
Elle permet de choisir quel message sera utilisé dans la zone
d'affichage pour simuler l'effet produit : message n°1 à
6, défilant, ou bien le texte "0123456789/".
9 = Bouton [Générer les
fichiers ASM et HEX] :
Lors de l'appui sur ce bouton le programme va créer un
fichier PICOSD.ASM en langage assembleur, qui intègrera
tous les paramètres définis par l'utilisateur ;
il va ensuite automatiquement appeler le programme MPASM de
Microchip, qui va convertir ce fichier ASM en un fichier PICOSD.HEX
(en langage machine), lequel pourra alors directement être
programmé dans le PIC16F84. Un fichier du listing d'assemblage
est également créé : PICOSD.LST ; vous
pouvez le consulter avec n'importe quel éditeur de texte
pour voir le détail des opérations d'assemblage, et
vérifier à la fin l'absence d'erreur.
10 = Bouton [Schéma
électrique] :
Il lance l'ouverture d'une fenêtre d'affichage du schéma
électrique, qui peut alors éventuellement être
copié dans le presse-papier pour sauvegarde ou impression
ultérieure. Le schéma est aussi accessible dans le
fichier d'aide.
11 = Bouton [Quitter] :
Il permet de sortir du programme ; tous les paramètres
(messages, position, etc.) sont alors sauvegardés dans la base
de registre de Windows, et seront rechargés au prochain lancement
du programme.
12 = Bouton [?] :
Il permet de charger l'aide du programme, qui est également
accessible par l'appui sur la touche [F1].
13 à 19 = Zones de
saisie des messages :
- 13 :
Texte du message défilant.
- 14 :
Texte du message n°1.
- 15 :
Texte du message n°2.
- 16 :
Texte du message n°3.
- 17 :
Texte du message n°4.
- 18 :
Texte du message n°5.
- 19 :
Texte du message n°6.
Les caractères autorisés pour les messages sont :
- les 26 lettres de l'alphabet en majuscules :
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
- les 10 chiffres : Ø 1 2 3 4 5 6 7 8 9
- le point ( . ), l'apostrophe ( ' ), le Z minuscule
( z ), la barre de fraction ( / ),
- l'étoile ( * ) qui remplace le caractère
personnalisé et s'affiche comme une tête
( ),
- l'espace.
Remarques diverses: Le Z minuscule permet
d'écrire "MHz", ce qui est plus joli que
"MHZ" ; la barre de fraction est utile pour
les indicatifs en portable, en mobile ou à
l'étranger, notamment. Les caractères non
répertoriés ci-dessus sont affichés
comme des espaces. Attention, la longueur des messages est
automatiquement limitée : 11 caractères,
ou 160 pour le message défilant ; or le curseur
texte est en mode "insertion", et non en mode
"remplacement", donc si vous avez l'impression de
ne pas arriver à modifier les messages, commencez par
supprimer des lettres.
Attention, j'insiste sur le fait que les réglages du texte doivent être tels que celui-ci ne doit pas "sortir de l'écran" sous peine de perturber le signal vidéo ; les premières fois, il sera sans doute nécessaire de faire plusieurs essais successifs, en retouchant éventuellement le potentiomètre de 5 kΩ (horloge du PIC). Si vos messages sont alignés à droite de l'écran et s'ils mesurent moins de 11 caractères, complétez-les avec des espaces placés en début de message (sinon les espaces sont ajoutés en fin de message, et bien qu'invisibles, ils peuvent aussi perturber la synchro).
Si vous êtes intrigué par l'aspect des différentes
tailles de texte, allez jeter un coup d'oeil sur cette page :
[Hauteur des lettres].
En guise de conclusion...
Ainsi s'achève cette description sans doute un peu trop longue ;
j'espère que le programme PICOSD vous facilitera l'utilisation de
cet incrustateur, ou que les quelques explications développées
sur cette page vous convaincront de le réaliser si ce n'est
déjà fait. C'est un petit dispositif peu coûteux et bien
utile pour les radioamateurs pratiquant l'ATV, et puis c'est un peu notre
vocation que de construire et d'expérimenter.
Bonnes bidouilles !
Pierre, F8EGQ.
(c) Pierre COL, F8EGQ --- Dernière mise à jour le 06/03/2016 |