Contrôleur de zoom pour reflex numérique

De Wiki LOGre
Aller à : navigation, rechercher


Ctrl-zoom-pcb-assembly.jpg

Projet réalisé par : Edgar Bonet et Alexandre Bonet.

État d'avancement : circuit monté, à tester.

Sources du projet: Les fichiers CAO et le firmware sont disponibles sur GitHub:edgar-bonet/ctrl-zoom.

Quand le reflex est monté en caméra d'épaule, la commande du zoom se trouve mal placée

Les reflex numériques sont aujourd'hui une alternative intéressante aux caméscopes quand on veut un maximum de qualité d'image. Mais il n'est pas pratique de contrôler la focale du zoom lorsque le reflex est monté sur trépied ou en caméra d'épaule. Le but de ce projet est de motoriser le zoom pour en déporter la commande ; et de recycler au passage un moteur de tête d'impression d'une imprimante hors service. Mon frère (Alexandre) s'occupe de la partie mécanique, alors que je (Edgar) m'occupe de la partie électronique.

Principe général

La commande se fait par un bouton à bascule permettant de zoomer dans les deux sens à plusieurs vitesses. On pense acheter une télécommande filaire toute faite, dans le genre de ce modèle de chez Magnus. Ces télécommandes parlent un protocole appelé LANC, créé par Sony pour leurs caméscopes.

La motorisation sera assurée par un moteur DC équipé d'un réducteur. On envisage d'utiliser un moteur recyclé d'une imprimante qui est coupé à un codeur incrémental. Si nécessaire, le codeur pourra servir pour asservir en vitesse, mais dans un premier temps le moteur sera piloté en boucle ouverte.

Ci-dessous le schéma d'ensemble. La boîte de gauche est la télécommande filaire. La boîte « contrôleur » est l'électronique à réaliser, à base d'un microcontrôleur AVR et d'un pont en H.

  ┌──────────┐ bus  ┌────────────┐   ┌────────┐ ┌──────┐
  │ commande ┝━━━━━━┥ contrôleur ┝━━━┥ moteur ╞═╡ zoom │
  └──────────┘ LANC └────────────┘   └────────┘ └──────┘

Bus LANC

Ce bus sert normalement à raccorder une caméra à un périphérique. Le périphérique reçoit des informations sur le fonctionnement de la caméra, et peut à son tour envoyer des commandes. Ici, le périphérique est la télécommande filaire, et le contrôleur du schéma ci-dessus va se faire passer pour une caméra.

Au niveau physique, c'est un bus série à trois fils :

  • GND ;
  • +5 V, fourni par la caméra au périphérique ;
  • data, bidirectionnel en collecteur ouvert.

D'après les projets trouvés sur le Web, il semble que ce soit au périphérique de fournir un pullup de 4,7 kΩ.

Le format des trames ressemble à une connexion série classique à 9600 bps, mais avec une logique inversée (+5 V représente ‘0’), et des bits de stop plus longs. Toutes les 20 ms une trame de 8 octets est échangée, suivie d'un silence. Les bits de start sont toujours envoyés par la caméra. Les quatre premiers octets de données sont émis par le périphérique, les quatre suivants par la caméra.

On trouve sur le Web beaucoup de projets interfaçant le bus LANC avec un Arduino ou un microcontrôleur. Seulement, dans tous les projets que j'ai vus le microcontrôleur joue le rôle de périphérique, alors qu'ici il va jouer le rôle de caméra.

Références

Le microcontrôleur AVR en maitre LANC

On peut utiliser le port série physique de l'AVR pour recevoir les commandes LANC, mais il faut envoyer les bits de start sur la ligne RX. Ceci n'est pas possible avec le port série des ATmega 48/88/168/328. D'après la fiche technique : « When the USART Receiver is enabled this pin is configured as an input regardless of the value of DDD0. ». Il faudrait donc relier à la broche RX une broche GPIO dédiée à l'émission des bits de start.

Le port USI des ATtinies n'a pas cet inconvénient. D'après la datasheet des ATtiny24A/44A/84A, « USI Three-wire mode does not override normal port functions, so pin must be configure as an input for DI function. » Ce port n'est a-priori pas prévu pour fonctionner en tant qu'UART, mais on trouve des codes permettant de le faire :

Je me suis basé sur ce dernier exemple pour implémenter le récepteur LANC.

Moteur

Les réflexions concernant la motorisation sont dans la sous-page Moteur.