Brevet FR2816428A1 — publié le 20020510

La présente invention concerne une carte de pilotage d'au moins une tête d'impression à jet d'encre d'un type prédéterminé. Elle a des applications dans les systèmes industriels d'impression ou d'étiquetage. Les systèmes d'impression industriels mettant en oeuvre des têtes d'impression à jet d'encre sont connus. Ils présentent l'avantage de ne pas nécessiter de contact avec l'objet sur lequel l'impression doit être effectuée et de pouvoir être commandés à des fréquences élevées, ce qui autorise de fortes cadences d'impression. Les têtes d'impression à jet d'encre comportent en général un ensemble de buses disposées en lignes, ou en quinconce chacune des buses pouvant éjecter une goutte d'encre afin de former un point le long de la ligne. L'éjection de l'encre est par exemple obtenue par mise en oeuvre d'une céramique piézo- électrique qui se déforme sous une tension électrique ou par mise en oeuvre d'un moyen de chauffage provoquant une surpression de l'encre dans la buse. Dans ce type de tête, l'impression se fait donc une ligne à la fois et on transmet la configuration des points à imprimer de la ligne dans des registres à décalage de la tête par liaison série de bits données/horloge, par exemple un 0 correspondant à une d'absence d'impression et un 1 à l'impression du point correspondant. Une fois que les registres ont reçu et stocké la configuration des points à imprimer, un ordre d'impression de la ligne est envoyé à la tête qui éjecte alors des gouttes d'encre selon la configuration stockée dans les registres. Les besoins des industriels sont divers et un choix de têtes d'impression de type divers est possible. Ces têtes présentent des caractéristiques techniques différentes et par exemple le nombre de buses peut être compris entre 16 et 500 selon la tête choisie. De même, les moyens techniques mis en oeuvre, têtes piézo- électriques ou thermiques, peuvent être différents et donc les tensions de commande différentes. Il en est de même pour le protocole d'échange de signaux avec la tête d'impression qui peut être spécifique de la tête choisie. Par exemple la validation des données série doit être faite sur un front montant ou sur un front descendant de l'horloge selon la tête choisie. Les cartes électroniques de commande des têtes d'impression à jet d'encre doivent donc être adaptées aux spécificités techniques des têtes employées. A cette fin, la mise en oeuvre de moyens programmables du type microprocesseur a permis de simplifier le développement et la réalisation des cartes en reportant la partie logique qui était précédemment câblée et donc figée vers une logique programmée qui peut être modifiée plus facilement par échange de programmes informatiques. Si les cartes à microprocesseurs se sont donc développées d'une manière importante, dans le domaine du pilotage des têtes d'impression à jet d'encre, cette technique ne permet pas de résoudre simplement un ensemble de contraintes d'interfaçage à la fois liées au protocole d'échange des signaux, au format des données à imprimer, aux tensions d'alimentation ou de commande... et qui sont dépendantes des caractéristiques techniques particulières de chacune des têtes pouvant être mise en oeuvre. L'invention propose donc la mise en oeuvre dans une carte de pilotage de têtes d'impression diverses à jet d'encre d'une combinaison technique de moyens programmés à microprocesseur et de moyens câblés dont la structure logique peut être modifiée par reconfiguration in situ, c'est-à-dire les circuits électroniques en place sur la carte. Le moyen câblé dont la structure logique peut être modifiée ou reconfigurée in situ est un FPGA ou Field Programmable Gate Array qui comporte un ensemble de circuits logiques assurant des fonctions logiques spécifiques généralement élémentaires du type ET, OU, NON, sortie trois états, REGISTRE, etc. et qui peuvent être combinés entre eux selon une structure logique interne par programmation pour réaliser des opérations logiques complexes entre des entrées et des sorties du circuit FPGA. La structure logique est généralement définie par la liste ordonnées des fonctions élémentaires à mettre en oeuvre et le réseau de connexion entre ces fonctions élémentaires. Des logiciels généralement fournis par le fabriquant du FPGA permet de passer d'un langage de description des opérations adapté à un opérateur humain à une représentation logique adaptée à la programmation du FPGA. Ainsi l'invention concerne une carte de pilotage d'au moins une tête d'impression à jet d'encre d'un type prédéterminé d'un système d'impression, la carte recevant en entrée par au moins une interface de carte des instructions d'impression et des données à imprimer selon un premier format et transmettant lesdites données à imprimer en fonction desdites instructions selon un second format adapté au type de la tête sous forme de signaux en sortie vers la tête par l'intermédiaire d'une interface de connexion, la carte comportant au moins un microprocesseur, de la mémoire morte, de la mémoire vive, l'interface de carte et l'interface de connexion, la mémoire morte comportant au moins un programme de fonctionnement du microprocesseur, la mémoire vive comportant au moins un tableau ligne x colonne de points à imprimer provenant des instructions et données à imprimer. Selon l'invention l'interface de connexion met en oeuvre au moins un module électronique enfichable sur ladite carte, ledit module électronique étant spécifique du type de tête et déterminant au moins un signal de type de tête spécifique, l'interface de connexion assurant en outre la transmission du signal de type de tête en entrée vers la carte, et la carte comporte en outre un circuit FPGA dont la structure logique interne peut être configurée in situ, la structure logique du FPGA étant configurée par le microprocesseur selon une configuration stockée dans la mémoire morte, ladite configuration permettant de réaliser dans le FPGA au moins deux interfaces de gestion de tête, chacune des interfaces de gestion de tête recevant le signal de type de tête en entrée provenant du module et comportant un circuit de mise en forme des signaux en sortie et de gestion de l'alimentation selon le type de tête. Dans divers modes de mise en oeuvre de l'invention, les moyens suivants pouvant être utilisés seuls ou selon toutes les combinaisons techniquement possibles sont mis en oeuvre : - la tête d'impression comporte un ensemble de buses disposées en ligne, chacune des buses pouvant éjecter une goutte d'encre afin d'imprimer un point le long de la ligne, - une seule ligne électrique véhicule les signaux de type de tête et le module comporte un moyen permettant de transmettre lesdits signaux vers la carte sous forme de données binaires en série lorsqu'il est inséré sur la carte, chaque type correspondant à une donnée spécifique et exclusive, - le module comporte un moyen permettant de coder les signaux de type de tête, N lignes électriques étant mises en oeuvre permettant de définir 2N types de têtes, - une ligne électrique spécifique est associée à chaque signal de type de tête et le module comporte un moyen permettant d'activer exclusivement ladite ligne lorsqu'il est du type correspondant et qu'il est inséré sur la carte, - la carte met en oeuvre trois lignes électriques spécifiques permettant de définir trois signaux de type de tête, - la carte comporte des moyens de configuration par microprocesseur du circuit FPGA permettant en outre de réaliser dans le FPGA au moins une interface de microprocesseur pour adressage et un séquenceur de mémoire vive, - un microcontrôleur est mis en oeuvre dans la carte, le microprocesseur étant associé à au moins le programme de fonctionnement dudit microprocesseur, - le premier format est un format texte, les données étant une suite de caractères, la carte comportant en outre des moyens de conversion des caractères en matrices de points à imprimer, lesdites matrices étant envoyées dans la mémoire vive afin de former le tableau, - le premier format est un format"BITMAP", les données étant une suite de données binaires définissant les points à imprimer, la carte comportant en outre des moyens pour envoyer les données dans la mémoire vive afin de former le tableau, - la carte comporte en outre une interface d'entrée/sortie mettant en oeuvre une liaison par ondes électromagnétiques radio, - la carte comporte en outre une interface d'entrée/sortie mettant en oeuvre une liaison par ondes électromagnétiques lumineuse infrarouge, - l'interface d'entre/sortie permet en outre de renvoyer en sortie au moins une ou plusieurs des informations suivantes : défaut de carte, type de défaut de carte, défaut de tête, type de défaut de tête, niveau d'encre insuffisant, ouverture d'un capot. La présente invention sera mieux comprise à la lecture d'un exemple de mise en oeuvre non limitatif où, La Figure 1 représente schématiquement une carte selon l'invention, La Figure 2 représente schématiquement la logique de gestion d'une tête, La Figure 3 représente schématiquement la logique interne d'un FPGA programmé selon l'invention, Les Figures 4a, 4b, 4c représentent une vue éclatée d'un schéma électronique général de la carte selon l'invention, et Les Figures 5a, b, c des schémas détaillés de la carte. La carte de pilotage offre la possibilité de piloter trois types de têtes d'impression : TRIDENT@, XAAR@ 128 et XAARO 500, d'autres types de têtes sont toutefois utilisables. Le choix de la tête est déterminé par un module enfichable sur la carte et également appelé carte fille qui retourne une information de présence et de modèle de tête afin de configurer les signaux de pilotage de la tête. La carte 1 de la Figure 1 comporte des circuits électroniques permettant le pilotage d'au moins une tête d'impression à jet d'encre par l'intermédiaire d'au moins un module de tête 2, 2'relié à la carte mère 1. Dans cet exemple, jusqu'à un maximum de deux têtes peuvent être pilotées simultanément et deux modules 2,2'sont représentés. La carte mère met en oeuvre un microcontrôleur 12 du type 68306 et un FPGA 16 cadencés par une horloge 13 à 20 MHz. Une horloge temps réel 10 est associée au microcontrôleur 12. La carte mère comporte en outre des moyens de stockage 11 du type mémoire morte ROM ou PROM ou EPROM et/ou du type mémoire morte réinscriptible EEPROM, FLASH. Ces moyens de stockage 11 sont destinés à stocker le programme de fonctionnement du microcontrôleur 12, si ce dernier ne contient pas déjà ledit programme, ainsi que la structure logique interne du FPGA pour sa programmation. Le programme de fonctionnement du microprocesseur comprend donc un module permettant la programmation du FPGA en fonction de la structure logique interne stockée dans la mémoire morte. Pour certaines formes de mise en oeuvre, le programme de fonctionnement du microprocesseur ou seulement certains des modules le composant est stocké dans une mémoire du microcontrôleur, ce programme ou module étant relativement figés par rapport à la structure logique interne du FPGA qui sera différente en fonction des types de tête qu'il est prévu de mettre en oeuvre avec la carte, la structure logique interne sera de préférence stockée dans une mémoire morte spécifique constituée d'un ou plusieurs circuits intégrés d'un des types précédents. Dans le cas où la mémoire morte est du type reprogrammable EEPROM, on envisage que la structure interne de FPGA soit transmise à la carte en provenance de moyens extérieurs. Lors de l'initialisation de la carte, le microcontrôleur 12 configure la structure logique interne du FPGA 16 grâce à la structure logique interne stockée dans la mémoire morte 11. Dans l'exemple représenté, les moyens de stockage 11 sont des RAM flash (les données enregistrées n'étant pas perdues lors de la coupure de l'alimentation électrique). La structure logique interne du FPGA 16 schématisée plus en détail Figure 3 comporte une interface de microcontrôleur 160 assurant un décodage d'adresses et la gestion de registres de stockage de données et/ou d'instructions. Le décodage d'adresses permet la sélection du FPGA, de registres, d'une mémoire 17 vive de stockage. La mémoire vive 17 est destinée à stocker au moins la définition des points à imprimer sous forme d'une image ou tableau de points à imprimer ligne x colonne. L'image à imprimer est découpée en trames verticales de 500 points maximum et dépendant en pratique de la tête mise en oeuvre. Chaque trame est envoyée en mode série à la tête. Lorsqu'une trame complète est envoyée, un signal PIXSTB valide l'impression de toute la trame verticale. Le FPGA 16 reçoit par l'intermédiaire d'une interface de carte 15 les données à imprimer et d'éventuelles instructions d'impression desdites données. La définition des points à imprimer peut provenir de l'extérieur de la carte par l'intermédiaire de l'interface de carte 15 bidirectionnelle ou non, parallèle et/ou série, ou par l'intermédiaire d'une interface radiofréquence 14 bidirectionnelle ou non. Cette définition des points à imprimer peut également être transmise à la carte directement sous forme de données et instructions"BITMAP", c'est à dire d'un tableau ligne x colonne des points à imprimer ou sous forme de données et instructions texte, voire sous forme d'un langage du type POSTSCRIPT@. Dans ces derniers cas, la définition des points à imprimer pour chaque caractère est stockée sous forme d'une matrice, un caractère correspondant à une matrice particulière, dans la mémoire morte de la carte et/ou des moyens d'exécution du langage sont mis en oeuvre par l'intermédiaire du microcontrôleur 12 et d'un module du programme de fonctionnement correspondant. On envisage également que lesdites matrices de caractères soient transmises à la carte et stockées dans la mémoire vive où elles seront utilisées dans le cas de réception de données à imprimer sous forme de texte. Un séquenceur de mémoire 161 est également réalisé dans la structure logique interne du FPGA 16 afin de permettre les accès et échanges des données de la mémoire 17 avec l'interface de carte 15 et un circuit de gestion de têtes 162 pouvant gérer deux têtes. Dans cet exemple, la mémoire vive 17 est dynamique et doit être rafraîchie régulièrement afin de conserver les données. Le séquenceur 161 comporte donc également des moyens permettant de rafraîchir ladite mémoire 17. Le microcontrôleur gérant des données sur seize bits, la mémoire vive 17 à une capacité de 16 Mo soit 8 méga-mots de 16 bits. Le séquenceur assure également la gestion des échanges de données entre le tableau de points à imprimer stocké dans la mémoire 17 et le circuit de gestion de tête 162 afin que les données d'une colonne soient transmises pour chaque impression de ligne et que les colonnes du tableau soient balayées pour que le tableau soit imprimé dans son intégralité ou éventuellement selon une fenêtre prédéfinie dans le tableau, ou éventuellement par bourrage de points non imprimés dans le cas où la colonne stockée dans le tableau est plus petite que la longueur de la ligne. Le FPGA 16 comporte également un circuit de gestion de têtes 162 permettant de générer des signaux en sortie vers jusqu'à un maximum de deux modules de tête 2, 2', en fonction de signaux de type de tête produits par les modules 2,2'et reçus en retour par le FPGA. Le FPGA assure également la gestion des circuits d'alimentations 18 des têtes à jet d'encre en fonction des signaux de type de tête. Le circuit de gestion des têtes 162 est dupliqué afin de permettre le pilotage d'une ou de deux têtes, avec ses moyens de décodage de têtes permettant de déterminer le type de têtes et le nombre de têtes afin de sélectionner la logique de mise en forme et l'alimentation adaptée au type de tête. L'originalité du FPGA est de lire une représentation BITMAP du message à imprimer (500 points de haut au maximum) et de transformer chaque trame verticale du message en une séquence d'envoi des signaux DI, DTSTB, PIXSTB et DIR suivant des chronogrammes spécifiques du type de tête. Dans l'exemple de mise en oeuvre, la carte mère comporte un seul circuit d'alimentation 18 pour les têtes et lorsque deux têtes sont pilotées par la carte, les deux têtes doivent être d'un type d'alimentation compatible. Toutefois, dans un mode évolué de mise en oeuvre, les alimentations sont transmises aux modules et/ou aux têtes d'impression par l'intermédiaire d'au moins un connecteur qui permet par l'utilisation de broches spécifiques dudit connecteur de n'envoyer que la tension compatible à la tête mise en oeuvre ce qui permet d'utiliser deux têtes de type d'alimentation différent dans un système. Sur la Figure 2, la logique de gestion de tête est schématisée. Le module 2 (ou 2') permet la sélection du type de tête mis en oeuvre par l'intermédiaire de signaux de type de têtes véhiculés par trois lignes exclusivement activées. Un registre de décodage permet d'une part, de sélectionner la gestion des alimentations pour activer spécifiquement telle ou telle tension adéquate et, d'autre part, la mise en forme des données adéquates pour le type de tête et qui sont envoyées dans le module 2 (ou 2'). Sur cette Figure, une seule logique de gestion de tête est représentée et l'on n'a pas représenté la logique permettant le fonctionnement de deux têtes d'impression dans un même système par partage des données à imprimer. Les Figures 4a, 4b, 4c donnent une vue d'ensemble des circuits mis en oeuvre et la série des figures 5 détaille des circuits pouvant être mis en oeuvre à titre d'exemple non limitatif. La carte permet de piloter deux têtes de manière combinée, c'est à dire que chaque tête imprime une partie d'une même ligne (ou colonne). La carte permet également de piloter deux têtes de manière indépendante, c'est à dire que chaque tête imprime un tableau qui lui est propre, la mémoire 17 contenant alors deux tableaux. Enfin la carte permet de piloter une seule tête sur les deux possibles. Le coeur du système est réalisé avec un microcontrôleur 68306 et un FPGA. Le FPGA est un Xilinx (D XCS40XL qui est configuré par le microcontrôleur. Une seule configuration permet le pilotage des trois têtes précédemment mentionnées de chacune de deux voies. Le XCS40XL a été choisi d'après l'évaluation suivante : 300 fonctions liées pour l'interface CPU ; 200 fonctions liées pour le séquenceur DRAM ; 50 fonctions liées par tête, soit un total de 650 fonctions liées sur les 784 fonctions liées disponibles du SCS40XL. Le FPGA mentionné est un exemple de circuit utilisable et on envisage la mise en oeuvre de circuits FPGA comportant une ou des unités de calcul intégrées du type coeur de microprocesseur ou processeur de signaux numériques. Dans le cas du pilotage d'une tête XJ500 de XAAR@, la tension à fournir aux piézo-électriques qui activent l'éjection de l'encre de chaque buse est une tension de 41V nominale. La tension des composants électroniques internes à la tête est une tension de + 5 V. Il est nécessaire d'appliquer d'abord la tension 5 V, puis, une fois stabilisée, on peut appliquer la tension de 41 V. La carte électronique intègre la gestion de ces deux alimentations. Le type d'interface de pilotage de la tête d'impression est une interface série. Le FPGA de la carte électronique fournit directement à la tête d'impression les signaux dont elle a besoin : * DI : entrée donnée. La donnée est chargée dans le registre à décalage de la tête sur front montant sur signal DSTB, * DTSB : valide le chargement de la donnée. (Data Strobe). Il faut faire 512 cycles d'envoi de donnée. L'envoi se fait bit à bit. Lorsque les 512 bits sont chargés dans le registre à décalage, la donnée est validée dans la tête. * PIXSTB : à l'état haut, ce signal initialise une séquence d'envoi des gouttes d'une trame de 500 bits La donnée doit avoir été préalablement chargée (voir DI et DTSTB). * DIR : ce signal indique à la tête si on imprime le sens gauche droite ou droite gauche. Lorsque DIR est à l'état bas, on commence à imprimer à partir du début du message. Dans le cas contraire, on commence à imprimer à partir de la fin du message. La carte permet également de tenir compte des délais définis par le fabricant de la tête. Pour d'autres types de tête, les validations de données peuvent être faites sur un front descendant. La sélection des paramètres d'interfaçage est faite par les signaux de type de tête qui sont renvoyés par les modules spécifiques de tête et qui sont enfichés sur la carte de pilotage. REVENDICATIONS 1. Carte (1) de pilotage d'au moins une tête d'impression à jet d'encre d'un type prédéterminé d'un système d'impression, la carte recevant en entrée par au moins une interface de carte (15) des instructions d'impression et des données à imprimer selon un premier format et transmettant lesdites données à imprimer en fonction desdites instructions selon un second format adapté au type de la tête sous forme de signaux en sortie vers la tête par l'intermédiaire d'une interface de connexion, la carte comportant au moins un microprocesseur (12), de la mémoire morte (11), de la mémoire vive (17), l'interface de carte et l'interface de connexion, la mémoire morte comportant au moins un programme de fonctionnement du microprocesseur, la mémoire vive comportant au moins un tableau ligne x colonne de points à imprimer provenant des instructions et données à imprimer, caractérisée en ce que l'interface de connexion met en oeuvre au moins un module électronique (2,2') enfichable sur ladite carte, ledit module électronique étant spécifique du type de tête et déterminant au moins un signal de type de tête spécifique, l'interface de connexion assurant en outre la transmission du signal de type de tête en entrée vers la carte, et en ce que la carte comporte en outre un circuit FPGA (16) dont la structure logique interne peut être configurée in situ, la structure logique du FPGA étant configurée par le microprocesseur selon une configuration stockée dans la mémoire morte, ladite configuration permettant de réaliser dans le FPGA au moins deux interfaces de gestion de tête (162), chacune des interfaces de gestion de tête recevant le signal de type de tête en entrée provenant du module (2,2') et comportant un circuit de mise en forme des signaux en sortie et de gestion de l'alimentation selon le type de tête. 2. Carte selon la revendication 1 caractérisée en ce qu'une ligne électrique spécifique est associée à chaque signal de type de tête et que le module électronique comporte un moyen permettant d'activer exclusivement ladite ligne lorsqu'il est du type correspondant et qu'il est inséré sur la carte. 3. Carte selon la revendication 2 caractérisée en ce qu'elle met en oeuvre trois lignes électriques spécifiques permettant de définir trois signaux de type de tête. 4. Carte selon l'une des revendications précédentes caractérisée en ce qu'elle comporte des moyens de configuration du circuit FPGA permettant en outre de réaliser dans le FPGA au moins une interface de microprocesseur (160) et un séquenceur (161) de mémoire vive. 5. Carte selon l'une quelconque des revendications précédentes caractérisée en ce qu'un microcontrôleur est mis en oeuvre dans la carte, le microprocesseur étant associé à au moins le programme de fonctionnement dudit microprocesseur. 6. Carte selon l'une quelconque des revendications précédentes caractérisée en ce que le premier format est un format texte, les données étant une suite de caractères, la carte comportant en outre des moyens de conversion desdits caractères en matrices de points à imprimer, lesdites matrices étant envoyées dans la mémoire vive afin de former le tableau. 7. Carte selon l'une quelconque des revendications précédentes caractérisée en ce que le premier format est un format "BITMAP", les données étant une suite de données binaires définissant les points à imprimer, la carte comportant en outre des moyens pour envoyer les données dans la mémoire vive afin de former le tableau. 8. Carte selon l'une quelconque des revendications précédentes caractérisée en ce qu'elle comporte en outre une interface entrée/sortie (14) mettant en oeuvre une liaison par ondes électromagnétiques radio ou lumineuse infrarouge. 9. Carte selon l'une quelconque des revendications précédentes caractérisée en ce que l'interface d'entrée/sortie (14) permet en outre de renvoyer en sortie au moins une ou plusieurs des données suivantes : défaut de carte, type de défaut de carte, défaut de tête, type de défaut de tête, niveau d'encre insuffisant, ouverture d'un capot du système d'impression.