Prise Lanc de SONY
 
Prologue:

Cette page est une sorte de brouillon-notes de mes bidouilles sur Lanc. Elle me premettra de poursuivre mes projets même après des mois d'inactivité sur ce sujet (j'aime bien faire plein de choses à la fois). Elle permet en outre de montrer qu'avec un peu de curiosité et de persévérance, on arrive à découvrir et réaliser des montages intéressants.

Je tiens aussi à signaler que si vous faîtes une erreur de manipulation en voulant faire de même, c'est à vos risques et périls et je ne suis pas tenu pour responsable de votre maladresse. je pense honnètement que si l'on s'applique, rien de bien méchant ne doit se passer.
 
L'étincelle:

Ayant fait l'acquisition récente d'un camescope numérique "SONY" (pub gratuite), j'hésitais à me débarasser de l'ancien camescope HI-8 de même marque. Une partie du plastique de recouvrement vers les touches Zoom et eject se "liquefie" et colle, donc produit invendable... et à quel prix! autant le garder.

En le regardant pour une dernière fois, du moins le pensais-je, je constate une entrée genre prise jack stéréo de 2,5mm dénomée "Lanc"...Qu'est-ce? de plus le nouveau camescope en a une aussi, tiens, tiens, approfondissons!

Et Zou, avec internet + google qui sont mes deux meilleurs serviteurs, je tombe sur les sites sympathiques suivants:

il existe d'autres liens, mais ce sont ceux qui m'ont permis d'élaborer mes premiers essais et ma première réalisation.
 
1er récapitulatif:

Lanc correspond à une liaison série bidirectionnelle à 9600bds sur un seul fil.
Pour permettre ce dialogue bidirectionnel, il faut comme interface, un simple transistor à collecteur ouvert.
 
1ère expérience:

le plus simple est de tout simplement, visualiser le signal Lanc et ainsi vérifier que le brochage indiqué est correct.
le montage


la visualisation

Comme l'indique certains liens, on constate le protocole série avec des trames et un laps de temps entre chaque trame.
Sur la photo on remarque:

  • 5 trames (+un bout de la sixième).
  • le temps à l'état haut de l'inter trame vaut environ 10ms.
  • du fait d'une liaison série à 9600bds, le bit vaut 104µs et l'octet + le start et stop bit vaut quasiment 1ms.
  • 1 trame comporte 8 octets.

2ème expérience:

Elle m'a semblé logique et facilement réalisable, il fallait visualiser sur PC les données émises par le camescope. J'utilise donc mon petit translateur de tension à base de MAX 232 alimenté par le camescope via une diode 1N4004 chutrice de tension pour avoir environ 5V.

Je mets également Hyperterminal en 9600 bds,8 N 1 avec capture de texte puis j'alimente le camescope
Nouveau montage:


 
Hyperterminal me capture le texte suivant:
ÿÿ¶oëïë]ÿÿÿÿë?Ýÿÿÿÿÿë¿ÿÿÿÿÿëÏùÿÿÿÿÿëïë]ÿÿÿÿë?Ýÿÿÿÿÿë¿ÿÿÿÿÿëÏùÿÿÿÿÿëïë]ÿÿÿÿë?Ýÿ
 
et WINHEX en version libre me représente les octets en héxa:

Offset...0..1..2..3..4..5..6..7...8..9..A..B..C..D..E..F

00000000 FF FF B6 6F EB EF EB 5D..FF FF FF FF EB 3F DD FF ÿÿ¶oëïë]ÿÿÿÿë?Ýÿ
00000010 FF FF FF FF EB BF FF 7F..FF FF FF FF EB CF F9 FF ÿÿÿÿë¿ÿÿÿÿÿëÏùÿ
00000020 FF FF FF FF EB EF EB 5D..FF FF FF FF EB 3F DD FF ÿÿÿÿëïë]ÿÿÿÿë?Ýÿ
00000030 FF FF FF FF EB BF FF 7F..FF FF FF FF EB CF F9 FF ÿÿÿÿë¿ÿÿÿÿÿëÏùÿ
00000040 FF FF FF FF EB EF EB 5D..FF FF FF FF EB 3F DD FF ÿÿÿÿëïë]ÿÿÿÿë?Ýÿ

 
3ème expérience:

Ce sera la plus longue puisque je vais devoir réaliser ma commande électronique.
Avant d'aller trop loin, mon premier objectif est de piloter le camescope par l'ordinateur PC (plus tard, ce sera une liaison H.F.).
Cela me permettra de vérifier que les commandes fonctionnent correctement et si elles doivent être continues ou bien ponctuelles (avec répétabilité sur 5 trames comme indiqué sur les liens).
Pour cela, je vais utiliser une de mes cartes électroniques automate à base de 16F628 + translateur.
En me servant des documents fournis sur internet et surtout du seul source assembleur pour PIC (Cf. les liens pour vous le procurer).
Mon montage d'essai devient:


 
je résume le protocole "Lanc":
  • Le périphérique "SONY" dialogue sur une liaison série bidirectionnelle 1 fil à 9600 bds, 8 N 1.
  • Le dialogue se fait sur une trame de 8 octets.
  • Chaque trame est espacé par un temps (non négligeable pour un PIC à 4MHz) d'environ 10ms pour mon camescope.
    Il est intéressant de repérer ce temps inter trame ne serait-ce pour détecter le premier octet de chaque trame.
  • C'est le périphérique qui génère les "START BIT".
    Remarque:
    • Le programme assembleur vérifie après 52µs (1/2 Start Bit) de l'état bas puis recompte encore 52µs pour pouvoir écrire (ou lire).
    • Dans mon programme, je considère qu'il n'y a pas de signaux parasites, donc, dès que le microcontrôleur détecte un niveau bas (par la broche RA3 du PIC) ==> "Start Bit" généré par le camescope, le microcontrôleur écrit de suite l'octet d'adresse ou de commande (par la broche RA4 du PIC) en tenant évidemment compte de générer aussi le Start et Stop Bit. Du fait de l'architecture à collecteur ouvert (identique à l'I2C), on ne craint rien! Même entre la détection du Start Bit et de l'écriture, il se passe quelques microsecondes qui ne gêne en rien le dialogue.
  • Si l'on veut piloter le périphérique, il faut écrire sur les 2 (voire 3) premiers octets de la trame:
    • le premier octet correspond à l'adresse ou type de périphérique. Pour un camescope, vous avez 2 adresses: la caméra à proprement parler (Zoom, Focus,...) et le magnetoscope (enregistrement, rembobinage,...)
    • le deuxième octet correspond à la commande: zoom, enregistrement, etc..
  • Il est indiqué qu'il faut écrire plus de 4 fois le même ordre afin qu'il soit pris en compte (une façon pour le périphérique SONY de se garder de toute commande parasite???)

Mon programme sur PIC gère 2 liaisons séries:

  • la première est une ressource matérielle du PIC 16F628 (RB1 et RB2) qui sert à lire ce que m'envoie le PC.
  • la deuxième est logicielle et elle me sert à piloter la liaison Lanc.
  • De plus, je relie l'entrée RA3 avec la sortie RA4, qui en interne est à collecteur ouvert. Tous les autres ports qui ne servent à rien dans ce cas, sont en entrée.
  • Mon montage à PIC est alimenté par pile de 9V, alors que je pourrai utiliser la tension de batterie du camescope.
  • La translation des commandes PC <-> Lanc sont:
Signification codes ou Touche envoyés
par Hyperterminal
codes envoyés
sur Lanc

 

 

 
Zoom télé T 0x28 0x35
Zoom Wide W 0x28 0x37
Start/Stop Record R 0x18 0x33
Wake Up U 200 ms à l'état bas pour réveiller le camescope
Stop S 0x18 0x30
rewind B 0x18 0x36 (B comme remBobine)
Forward F 0x18 0x38

Après quelques échecs pour piloter mon camescope, alors que mon programme se synchronise bien avec les deux premiers octets de chaque trame et que tous les codes sont donnés par les liens, je me replonge dans le source assembleur.
Je constate que le programme écrit sur la liaison Lanc en logique inverse (ou en complément), c'est à dire pour écrire l'adresse 0x18, je dois écrire 0xE7.

Au 18/08/2005:
Le programme fonctionne:

  • En mode caméra, les codes: T, W, R, U fonctionnent
  • En mode player, les codes: B, F, S fonctionnent aussi

je constate que pour le mode zoom télé ou Wide, ces actions doivent être répétitives, tant que l'on veut son zoom, il faut que la commande persiste.

Je remercie tous les internautes qui m'ont permis de recueuillir un maximum d'informations, alors que SONY garde jalousement sa documentation (à moins de l'acheter).
Et pour contribuer aussi à cet internet ouvert au savoir, je joins la première version de mon programme en C plus l'héxa du PIC 16F628 (fait avec le compilateur C de CCS) qui ne fait qu'une répétition de 5 fois par commande: