Vous êtes ici : Home > Fiches Techniques > HDCS-1020

HDCS-1020


 

Le HDCS-1020 fabriqué par Agilent, est un Imager CMOS. C'est une petite caméra entièrement intégrée. Il est possible de choisir le temps d'exposition, de régler la balance des couleur RGB, de choisir la taille de l'image à numériser. En gros le composant idéal pour mettre la vision sur un robot. Nous avons acheté 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.

Nous ne parlerons ici que du HDCS-1020 qui est un capteur couleur CIF (353 x 288) le HDCS 2020 fonctionne de la même façon, mais est un capteur couleur (640 x 480)

 
oFonctionnement
 

Le HDCS 1020 est divisé en deux parties : les registres de configuration (A gauche Timing Controller) et la partie capteur (A droite).

Le capteur fonctionne de la façon suivante : On écrit dans les registres la configuration du capteur. Ensuite il suffit d'écrire un 1 dans le bit 2 du registre Control pour lancer la capture. Il y a d'abord une première phase d'intégration de chaque pixel, puis l'image est envoyé en série sur le port 8 bits, pixel par pixel. Un des principaux problèmes, est que pendant cette phase de transfert, la caméra est maître, car elle place la donnée sur le port 8 bit, met la sortie DRDY à 1 pendant la période de validité. La caméra n'attends pas d'accusé de réception de la part du système hote. Si le système hote n'est pas assez rapide, les données seront perdues.

 
oLes registres
 

Nous allons présenter ici les registres avec une bréve description des registres les plus utilisés

Adr
R/W
Nom
Composition
Description
7
6
5
4
3
2
1
0
0x00
R
IDENT
TYPE
REV
Contient la signature du capteur
0x01
R/W
STATUS
RSV
SSF
SFS
EFS
CC
FC
RC
RF
Etat du capteur.
0x02
R/W
IMASK
RSV
ISS
ISFS
IEFS
ICC
IFC
IRC
IEN
Gére les intéruptions.
0x03
R/W
PCTRL
LVC
LVF
LVR
IPD
ICE
FSS
FSE
RCE
o
0x04
R/W
PDRV
TXDDRV
STATDRV
RDYDRV
DATDRV
Durée d'activation des signaux.
0x05
R/W
ICTRL
HAVG
DSC
DDO
RSV
DAD
AAD
Interface de gestion des E/S. (début)
0x06
R/W
ITMG
RSV
DPS
DHC
RPC
Durée des signaux du port DATA, DRDY.
0x07
R/W
BFRAC
SNDLY
BPF
?
0x08
R/W
BRATE
BPI
?
0x09
RSV
RSV
?
0x0A
R/W
FWROW
RSV
FRADDR
Bits 8 à 2 de la 1ère ligne à acquérir
0x0B
R/W
FWCOL
FCADDR
Bits 9 à 2 de la 1ère colonne à acquérir
0x0C
R/W
LWROW
RSV
LRADDR
Bits 8 à 2 de la dernière ligne
0x0D
R/W
LCADDR
LCADDR
Bits 9 à 2 de la dernière colonne
0x0E
R/W
TCTRL
ASTRT
PSMP
?
0x0F
R/W
ERECPGA
EEH
EREC
Réglage du gain vert (PGA)
0x10
R/W
EROCPGA
EOH
EROC
Réglage du gain rouge (PGA)
0x11
R/W
ORECPGA
OEH
OREC
Réglage du gain bleu (PGA)
0x12
R/W
OROCPGA
OOH
OROC
Réglage du gain vert (PGA)
0x13
R/W
ROWEXPL
REXPL
Bits 7 à 2 du temps d'exposition
0x14
R/W
ROWEXPH
RSV
REXPH
Bits 14 à 8 du temps d'exposition
0x15
R/W
SROWEXP
SREXP
?
0x16
R/W
ERROR
RSV
IIE
IEF
IEE
EEF
Registre d'erreur
0x17
R/W
ITMG2
RSV
SDA_SETUP
SDA_HOLD
0x18
R/W
ICTRL2
DRD
FRMT
ROWT
RDYT
DATT
FSM
RSM
DSYNC
Interface de gestion des E/S. (suite)
0x19
R/W
HBLANK
HBLANK
?
0x1A
R/W
VBLANK
VBLANK
?
0x1B
R/W
CONFIG
RSV
SDOE
RSS
CSS
CFC
SFC
SEN
MODE
Permet de choisir le mode de capture
0x1C
R/W
CONTROL
RSV
PWR
LCK
ARST
RUN
SLP
RST
Rst, Pwr et Début de capture

La lecture et l'écriture des registres se fait pas la liaison série (Pins 29 (SCLK_RxD) et 30 (SDATA_TxD)). Nous avons cablé le composnat de façon à travailler en liaison série synchrone. La lecture (comme l'écriture) peut se faire de deux façons : soit en adressant les registres un par un, soit en mode incrément d'adresse, ou on adresse le premier registre, et les adresses suivantes sont automatiquement incrémentés.

Pour pouvoir écrire dans les registres, il faut d'abord mettre le bit 5 du registre Control (PWR) à 0 pour sortir du mode faible consomation, et ainsi avoir le droit d'écrire dans les autres registres.

 
oLe transfert de l'image
 

Une fois que le bit 2 du registre control (RUN) est passé à 1, le transfert de l'image commence. Si DSYNC est activé, nFRAME_nSYNC va tomber à 0 jusqu'a ce que la capture soit finie (sauf en mode continu). Chaque fois qu'une donnée sera appliquée sur le bus DATA, DRDY passera à 1 durant un temps qui est configurable dans les registres. L'image compléte est composée de 352*288 pixels soit 101376 pixels dont 25344 rouges, 50688 verts et 25344 bleus. Les données sont renvoyées sur le port selon le schéma suivant :

Durant le balayge des lignes paires, le capteur ne renvoit que les composantes bleus et vertes de l'image.Durant les lignes impaires, on ne récupére que les composantes rouges et vertes. Si DSYNC est activé, dés qu'un pixel est actif sur le port DATA, DRDY passe à un. Dés qu'une ligne est finie, nROW passe à 1, et quand l'image est complétement acquérie, nFRAME_nSYNC repasse à 1.

 
oLa plateforme de test
 

Pour tester le composant, nous avons réalisé une petite plateforme de test sur PC104. Comme le BUS ISA est trés lent, nous risquions de perdre des données durant le transfert de l'image. Nous avons généré l'horloge du HDCS-1020 avec le PC, afin de passer la caméra en esclave du PC. La plate-forme de test fonctionne, mais il lui faut 6 secondes pour acquérir une image, car il faut générer env. 100000 cycles d'horloges par le bus ISA pour le traitement complet d'une image. Il est impensable d'embarquer le système tel quel sur un robot.

Cliquez pour agrandir Cliquez pour agrandir
Cliquez pour agrandir Cliquez pour agrandir

 

Voici ci-dessus les schémas des cartes. A gauche, le schéma de la caméra, et à droite le schéma de la carte PC104. Le composant étant en 3,3V il a fallu faire l'interfacage 3.3V / 5V. Les buffers 541 et 573 ont été choisis dans des familles VHC qui sont en 3.3V et 5V Tolerant. Cela signifie qu'ils sont en 3.3V mais acceptent des entrées de 5V. Le transistor permet de gérer le port bidirectionnel. Par la même occasion, on se sert des ces buffers pour faire l'interfacage sur le bus ISA, ce qui explique la simplicité de la carte PC104. Cliquez pour télécharger le programme de la caméra.

 

Voici 4 résultats d'acquisitions. En haut à gauche, la première acquisition réussie : les lignes horizontales sur l'image reflétent des temps d'expositions différents selon les lignes. Comme les temps d'expositions sont dépendants de l'horloge, et que notre horloge n'etait pas à fréquence fixe, l'image présente des défauts. Sur la deuxième image, le programme a été optimisé pour générer des signaux plus réguliers sur le bus ISA. Sur l'image en bas à gauche, le temps d'exposition est trop long, et enfin en bas à droite l'image est correcte.

L'ancr tient à remercier KTy et Fred du Club de Robotique de l'ESEO, sans qui, je serais surement encore en train de chercher la configuration des registres

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