Vous êtes ici : Home > Fiches Techniques > Une camera pour nos robots

UNE CAMERA POUR NOS ROBOTS

ATTENTION: Si cette caméra vous interresse, l'ANCR se propose de faire un achat groupé de circuits imprimés. Cliquez ici pour plus d'infos
Cliquez pour voir l'image
 

Après avoir bien maitrisé le fonctionnement du capteur CMOS HDCS-1020, nous pouvons nous lancer dans la fabrication d'une petite caméra pour nos robots. Nous sommes repartis de la même base que la carte d'évaluation, c'est à dire une webcam Labtec qui contient le capteur et la lentille associée. Nous avons déssoudé le capteur et gravé notre propre carte d'interfacage sur le PC104.

Cette fois-ci, la communication est assurée par l'intermédiaire d'une FIFO, qui conserve l'image entre la capture et le transfert vers la mémoire du processeur. Sur notre robot TYPE 1, le processeur est un PC104, nous présenterons ici l'interfaçage par le BUS ISA. Malgré tout, la caméra a été faite avec l'objectif d'être compatible avec d'autres processeurs. L'interfacage est trés simple.

 

 
oFonctionnement de la caméra
 

Voici le schéma de la caméra, l'objectif était de mettre les composants les plus importants directement sur la carte camèra. C'est à dire les alimentations 3.3 V, les portes pour l'interfaçage 3.3V / 5V, et la FIFO. La carte mesure environ 55 x 55 mm, et nous avons réussit à tout y intégrer.

Cliquez pour voir le typon
Cliquez pour voir le typon

 

La taille maximale de l'image, est de 352 x 288 pixels. ce qui fait une image de 101 376 x 8 bits, un peu plus de 100 KBytes. Nous avions deux choix pour la mémoire : une RAM traditionnel, mais il aurait fallu générer l'adresse, et une FIFO, dont l'acces se fait en série. La deuxième solution présente l'avantage de pouvoir charger une image en même temps qu'on l'acquérit. Nous avons donc choisit une FIFO de 256 KBytes, ce qui nous permet de stoquer deux images et diminue encore un peu plus les temps d'acquisitions. La référence de cette FIFO est MSM518221, elle est fabriquée par OKI.

L'interfacage est divisé en trois parties : Les entrées de commande (IN), les sorties (OUT) et les transfert de données (DATA). La caméra fonctionne de la façon suivante : un bus de donnée 8 bits unique pour toutes les E/S et trois pins d'accès à l'ecriture / lecture des E/S (IN_EN, OUT_EN et DATA_EN). En aucun cas les pattes IN_EN, OUT_EN et DATA_EN ne doivent être à l'état bas en même temps, cela provoquerait un conflit sur le bus 8 bits. Comme le HDCS-1020 est un composant 3.3V, il a fallu choisir des familles de portes (74VHC541, 74VHC573 et 74VHC04) en 3.3V et 5V Tolerant. Les familles acceptées sont VHC, LVC et LVX, nous avons choisit la VHC, la plus facile à trouver. Les autres doivent aussi fonctionner, il est parfois conseillé d'éviter de mélanger les familles.

Télécharger le projet ORCAD

 
oLes entrées sorties de la carte
 

Lorsque IN_EN est à l'état bas, le port 8 bit est en entrée, on peut donc changer l'état des données suivantes :

Bit Designation
0 Reset du HDCS-1020 (nRST_nSTBY)
1 Clock de la liaison série du HDCS-1020 (SCLK_Rxd)
2 Donnée de la laison série du HDCS-1020 (SDATA_TxD)
3 Reset en lecture de la FIFO (RSTR)
4 Reset en écriture de la FIFO (RSTW)
5 Clock de l'écriture dans la FIFO (SRCLK)
6 N. C.
7 N. C.
  • SDATA_TxD est complémentée
  • Les Resets de la FIFO ne sont effectifs que pendant au moins 2 cycles d'écritures ou de lecture.
  • Le clock de la FIFO dépend de la configuration du jumper J6

Lorsque OUT_EN est à l'état bas, le port 8 bit est en sortie, on peut donc acceder à l'état des données suivantes :

Bit Designation
0 Donnée de la laison série du HDCS-1020 (SDATA_TxD)
1 Interruption de la caméra (nIRQ_nCC)
2 Indicateur de transfert d'image (nFRAME_nSYNC)
3 0V
4 0V
5 0V
6 0V
7 0V
  • Pour lire l'état de SDATA_TxD il faut mettre l'entrée à 1 (OV sur le bus)
  • Losque nFRAME_nSYNC est à 0, une image est en court de transfert

Lorsque DATA_EN est à l'état bas, le port 8 bit est en sortie, on peut donc acceder au pixels de l'image DATA. Selon l'état du jumper J3, la FIFO peut être incrémentée à chaque lecture de DATA ou en écriture sur SRCLK. Le plus rapide étant de loin la lecture sur DATA, une seul impulsion à générer contre 2 pour SRCLK.

 
oL'interface ISA
 

Pour adapter la caméra sur notre robot TYPE 1, il a fallu l'interfacer sur le BUS ISA. Notre caméra se prète parfaitement au BUS ISA : un bus de donnée, et des bits d'adresse. Il ne reste plus qu'a faire le décodage d'adresse, et le tour est joué.

Cliquez pour voir le schéma Cliquez pour voir le schéma

 

Sur notre carte au format PC104 un comparateur 8 bits (74HC688) vérifie que les 7 premiers bits d'adresse sont corrects, et deux multiplexeurs (74HC138) pour les 3 bits d'adresse restants (Un pour les entrées et un pour les sorties). Ici la carte permet de gérer deux caméras, ce qui explique les deux connecteurs. Nous avons choisit comme adresse de base 0x300 pour la caméra 1 et 0x302 pour la deuxième caméra.

 
oLa plateforme de test
 

Une fois la carte fabriquée, il a fallu la tester. Une bibliothèque (CAM.H) permet d'écrire, de lire dans les regsitres, de faire l'acquisition d'une image et de l'afficher à l'écran.

Télécharger les sources du programme de test

Voici une capture d'écran :

Cliquez pour agrandir

Sur la gauche apprait les quatres composantes de l'image (Rouge, Vert 1, Bleu et Vert 2) on voit aussi les histogrammes de chacune des composantes. Ces histogrammes nous permettent de connaitre la saturation et de d'ajuster le temps d'exposition afin d'obtenir l'image la plus riche possible. Et voici quelques résultats d'acquisition avec notre système d'ajustement automatique :

Mon jardin ! Depuis qu'elle est passé à la télé faut toujours qu'elle se mette devant l'objectif.
Te fache pas ! Ben voila, ca marche !

Il faut environ 300 ms pour acquérir une image couleur 351x288 pixels. Ce temps est dû à la lenteur de transfert du BUS ISA, la seule solution pour aller plus vite est d'utiliser le DMA du bus. Mais la complexité de cette solution ne sera pas rentable, puisque le DMA sera à 8 MBytes/s au maximum. Tout dépend de l'application, mais 3 images par seconde peut être largement suffisant. Il ne faut pas non plus oublier que les temps de traitement sont souvent bien plus longs !

 
oQuelques liens
 
 
oContact
 
Pour toutes questions envoyer moi un mail: Sinclair