[go: up one dir, main page]

WO1998032594A1 - Thermal foils for digital decorating - Google Patents

Thermal foils for digital decorating Download PDF

Info

Publication number
WO1998032594A1
WO1998032594A1 PCT/US1998/001416 US9801416W WO9832594A1 WO 1998032594 A1 WO1998032594 A1 WO 1998032594A1 US 9801416 W US9801416 W US 9801416W WO 9832594 A1 WO9832594 A1 WO 9832594A1
Authority
WO
WIPO (PCT)
Prior art keywords
thermal transfer
thermal
transfer foil
layer
foil
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/US1998/001416
Other languages
French (fr)
Inventor
Stephen L. Aroneo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
General Scanning Inc
Original Assignee
General Scanning Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by General Scanning Inc filed Critical General Scanning Inc
Priority to AU60411/98A priority Critical patent/AU6041198A/en
Publication of WO1998032594A1 publication Critical patent/WO1998032594A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41MPRINTING, DUPLICATING, MARKING, OR COPYING PROCESSES; COLOUR PRINTING
    • B41M5/00Duplicating or marking methods; Sheet materials for use therein
    • B41M5/26Thermography ; Marking by high energetic means, e.g. laser otherwise than by burning, and characterised by the material used
    • B41M5/40Thermography ; Marking by high energetic means, e.g. laser otherwise than by burning, and characterised by the material used characterised by the base backcoat, intermediate, or covering layers, e.g. for thermal transfer dye-donor or dye-receiver sheets; Heat, radiation filtering or absorbing means or layers; combined with other image registration layers or compositions; Special originals for reproduction by thermography
    • B41M5/42Intermediate, backcoat, or covering layers
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B44DECORATIVE ARTS
    • B44CPRODUCING DECORATIVE EFFECTS; MOSAICS; TARSIA WORK; PAPERHANGING
    • B44C1/00Processes, not specifically provided for elsewhere, for producing decorative surface effects
    • B44C1/16Processes, not specifically provided for elsewhere, for producing decorative surface effects for applying transfer pictures or the like
    • B44C1/165Processes, not specifically provided for elsewhere, for producing decorative surface effects for applying transfer pictures or the like for decalcomanias; sheet material therefor
    • B44C1/17Dry transfer
    • B44C1/1712Decalcomanias applied under heat and pressure, e.g. provided with a heat activable adhesive
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B44DECORATIVE ARTS
    • B44CPRODUCING DECORATIVE EFFECTS; MOSAICS; TARSIA WORK; PAPERHANGING
    • B44C1/00Processes, not specifically provided for elsewhere, for producing decorative surface effects
    • B44C1/16Processes, not specifically provided for elsewhere, for producing decorative surface effects for applying transfer pictures or the like
    • B44C1/165Processes, not specifically provided for elsewhere, for producing decorative surface effects for applying transfer pictures or the like for decalcomanias; sheet material therefor
    • B44C1/17Dry transfer
    • B44C1/1712Decalcomanias applied under heat and pressure, e.g. provided with a heat activable adhesive
    • B44C1/1729Hot stamping techniques
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41MPRINTING, DUPLICATING, MARKING, OR COPYING PROCESSES; COLOUR PRINTING
    • B41M2205/00Printing methods or features related to printing methods; Location or type of the layers
    • B41M2205/06Printing methods or features related to printing methods; Location or type of the layers relating to melt (thermal) mass transfer
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41MPRINTING, DUPLICATING, MARKING, OR COPYING PROCESSES; COLOUR PRINTING
    • B41M5/00Duplicating or marking methods; Sheet materials for use therein
    • B41M5/26Thermography ; Marking by high energetic means, e.g. laser otherwise than by burning, and characterised by the material used
    • B41M5/382Contact thermal transfer or sublimation processes
    • B41M5/38207Contact thermal transfer or sublimation processes characterised by aspects not provided for in groups B41M5/385 - B41M5/395
    • B41M5/38214Structural details, e.g. multilayer systems
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41MPRINTING, DUPLICATING, MARKING, OR COPYING PROCESSES; COLOUR PRINTING
    • B41M5/00Duplicating or marking methods; Sheet materials for use therein
    • B41M5/26Thermography ; Marking by high energetic means, e.g. laser otherwise than by burning, and characterised by the material used
    • B41M5/40Thermography ; Marking by high energetic means, e.g. laser otherwise than by burning, and characterised by the material used characterised by the base backcoat, intermediate, or covering layers, e.g. for thermal transfer dye-donor or dye-receiver sheets; Heat, radiation filtering or absorbing means or layers; combined with other image registration layers or compositions; Special originals for reproduction by thermography
    • B41M5/42Intermediate, backcoat, or covering layers
    • B41M5/426Intermediate, backcoat, or covering layers characterised by inorganic compounds, e.g. metals, metal salts, metal complexes
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41MPRINTING, DUPLICATING, MARKING, OR COPYING PROCESSES; COLOUR PRINTING
    • B41M5/00Duplicating or marking methods; Sheet materials for use therein
    • B41M5/26Thermography ; Marking by high energetic means, e.g. laser otherwise than by burning, and characterised by the material used
    • B41M5/40Thermography ; Marking by high energetic means, e.g. laser otherwise than by burning, and characterised by the material used characterised by the base backcoat, intermediate, or covering layers, e.g. for thermal transfer dye-donor or dye-receiver sheets; Heat, radiation filtering or absorbing means or layers; combined with other image registration layers or compositions; Special originals for reproduction by thermography
    • B41M5/42Intermediate, backcoat, or covering layers
    • B41M5/44Intermediate, backcoat, or covering layers characterised by the macromolecular compounds

Definitions

  • This invention relates to thermal foils for decorative transfer of images to various types of coarse surfaces .
  • Hot stamping of metallic foils has been widely used for decorating, with graphics and text, such items as book covers wallets, attache cases, handbags, or suitcases. These articles are made of leathers, vinyls or textiles, which have surfaces with deep grains or fibers having valleys, for example, 0.001 inches or even 0.003 inches in depth.
  • the metallic foil transferred by heat and high pressure, typically has a mirror-like surface for shiny appearance.
  • the transferred material includes a tinted or clear lacquer top layer covering the metal surface to provide protection and a rich gold or other appearance.
  • to transfer the metallic material one has to first fabricate a custom-made metal die with raised and recessed areas corresponding to the particular design.
  • the raised areas press the foil against the receiving substrate to transfer the material having the desired pattern while heat is applied.
  • the stamping press applies pressures of hundreds of pounds or more to the die. While this type of transfer has been widely used, it also has drawbacks. For example, it takes a relatively long time to fabricate the die and the fabrication process is relatively expensive. There are other widely used techniques for decorative printing, but they also require fabrication of special tools for different designs. For example, silk screen printing requires fabrication of a print screen and pad printing requires fabrication of a pad.
  • Computer controlled thermal printing is a different thermal process. It uses a thermal printhead controlled by a computer to print an image, typically, on paper. The thermal printhead generates heat localized over dots of a computer generated pattern to be printed.
  • a thermal printing ribbon disposed between the printhead and the paper or other web, releases ink that is thermally transferred in tiny amounts to the paper.
  • the ink layer consists of a particulate or liquid-like material.
  • the thermal printing ribbon also includes constituents that facilitate good adherence of the ink dots to the paper surface.
  • the entire process is relatively fast and economical. However, this process has not been equated with hot stamping because of limitations of the process and the materials on which a precise image could be formed.
  • Thermal printing has been used for decorative printing on papers of varying surface qualities. To improve the quality of the transferred image, printheads have been used to transfer several layers of ink on the same dot or puffing particles have been included in the transfer composition to fill irregularities on the printed surface. In either case, the thermal printing process and its effects have differed significantly from the hot stamping process that transfers relatively larger chunks of metallic material to the surface to achieve a specular effect.
  • the invention relates to a variety of thermal transfer foils that are used to transfer sharp images with specular metallic surfaces to articles having very rough surfaces. These foils can be used in both hot stamping and digital decorating techniques.
  • the thermal transfer foils include several layers having their composition optimized for different transfer temperatures or pressures, different types of images, or different types of surfaces.
  • a thermal transfer foil in another important aspect, includes a carrier film and several layers including at least one thermally activatable release coating, at least one lacquer layer adhered to the release coating, a specular metal layer adhered to lacquer layer, and at least one thermally activatable adhesive layer.
  • the adhesive layer expands under heat and pressure to fill voids in a substrate during thermal transfer of the lacquer, metal and adhesive layers thereby enabling the metal layer to retain substantially its specular property after the transfer.
  • the layers are selected for use in a digital decorating system.
  • the adhesive layer includes an adhesive substance and a microsphere-like puffing agent.
  • the adhesive substance includes two components, a first component providing brittleness to the adhesive layer and a second component providing ductility to the adhesive layer after thermal activation. The two components are provided in relative amounts according to a ratio optimized for different types of images.
  • the metal layer includes aluminum.
  • the microsphere-like puffing agent comprises particles of a selected size.
  • the microsphere- like puffing agent is selected to. expand at a selected temperature.
  • the microsphere-like puffing agent is selected to expand at a selected temperature and a selected pressure.
  • the substrate is one of the following materials: leather, vinyl and textile.
  • the lacquer layer is selected to protect the metal layer after thermal transfer.
  • the lacquer layer includes a pigment that alters light reflected from the metal layer to have an appearance of a metallic color.
  • the lacquer layer includes a pigment that alters light reflected from the metal layer to have an appearance of a selected color.
  • the carrier film has, on its side opposite to the release layer, a heat-resistive lubricating property.
  • the above-described thermal transfer foil is used to transfer an image to a rough substrate by delivering a selected amount of heat and pressure to a pattern of pixels that form the image.
  • This heat and pressure delivered to the foil thermally activates the release coating and the adhesive layer and causes expansion of the adhesive layer.
  • the expansion fills voids in the substrate while the metal layer substantially retains its specular property after the thermal transfer of the image.
  • the process of delivering the heat and pressure to the foil includes delivering heat to a thermal line of pixels by a thermal printhead, exerting a selected amount of pressure between the thermal line of pixels and the thermal transfer foil positioned on the surface, and producing relative movement between the thermal line of pixels and the transfer foil and the surface while controlling energy delivered to the pixels according to successive lines of the image.
  • FIG. 1 is a perspective view of a digital decorating system.
  • Fig. 2 is a diagrammatic side view of a thermal transfer system.
  • Fig. 3 is a perspective view of a printhead of the thermal transfer system.
  • Fig. 4 is a view of the bottom of the printhead taken on line 4-4 of Fig. 3.
  • Fig. 4A is a magnified view of a portion of Fig. Fig. 5 is a highly magnified, cross-sectional view of a thermal foil according to the present invention.
  • Fig. 5A is a highly magnified schematic view of a thermal transfer process.
  • Fig. 5B is a highly magnified view of a substrate and the thermal foil after thermal transfer.
  • Fig. 6 is a diagrammatic side view of the thermal transfer system including a bulk heater for heating the substrate or the thermal foil.
  • Figs. 6A and 6B are diagrammatic side views of the thermal transfer system, including a second printhead for preheating the substrate, and the thermal foil, respectively.
  • Figs. 7 and 7A are simplified perspective views of the thermal transfer system designed for preheating the substrate .
  • Fig. 8 is a magnified view of irregularities of an edge produced by a standard thermal transfer
  • Fig. 8A is a magnified view of a smoother edge produced by an "edge enhancement" algorithm according to the present invention.
  • Fig. 9 is a diagrammatic view of a circular image to be thermally transferred to a substrate.
  • Fig. 9A is a diagrammatic plan view of a uniform energy distribution for the thermal image transfer of the image of Fig. 9, and Fig. 9B is a. highly magnified view of a portion of Fig. 9A.
  • Figs. 9C and 9D are highly magnified views of the transferred image employing the uniform energy distribution of Fig. 9A and a "line enhancement" algorithm according to the present invention, respectively.
  • Fig. 10 is a diagrammatic view of pixels considered in an enhancement algorithm and a chart with different thermal transfer combinations considered by the algorithm.
  • Fig. 11 is a block diagram of the thermal transfer algorithm.
  • Fig. 12 is a block diagram of the overall organization of the digital decorating system.
  • a digital decorating system 10 includes a personal computer 12 interfaced with a thermal transfer system 14.
  • Computer 12 performs overall control over the digital decorating process and generates a selected image.
  • Thermal transfer system 14 is a compact, table top system for transferring the provided image to a selected surface of an article (for example, vinyl, leather, plastic, textile or paper) .
  • thermal transfer system 14 includes a microcontroller 16, a drive assembly 22, a thermal foil assembly 30, and a thermal printhead assembly 40.
  • Drive assembly 22 i.e., advancing mechanism
  • stage 24 constructed to move an article 26 before and during the image transfer process.
  • Drive assembly 22 receives signals 38 from microcontroller 16.
  • Thermal foil assembly 30 includes thermal foil 32 spooled on a supply roll 34 and a set of rollers 36 constructed to advance, foil 32 (together with article 26 being advanced by stage 24) at a selected rate determined by control signals 38.
  • Thermal printhead assembly 40 includes at least one printhead 42 pressed against article 26 by a force member 41 and responsive to control signals 44 from microcontroller 16.
  • Force member 41 is constructed to vary the pressure exerted by the printhead. The pressure is in the range of about 1 to 10 pounds per inch, and more preferably in the range of about 2 to 8 pounds per inch.
  • a preferred printhead assembly 40 currently uses about 5 pounds per inch of print line for most substrates 25.
  • printhead 42 is an edge type printhead that includes a set of electrical connectors 46, a heat sink 48, and a ceramic member 50. While the thermal printhead assembly is stationary during the thermal transfer process, it can be repositioned to a different location prior to the transfer process. The repositioning achieves easy access to different locations of the decorated items.
  • Electrical connectors 46 are connected to a plurality of energizable heater elements constructed and arranged to selectively heat each of a line of pixels on the surface of ceramic member 50.
  • the heater elements 52 are made of strip 53 of a resistive material deposited on the bottom surface of ceramic member 50, and connected to a plurality of leads 54 and a common ground terminal 56.
  • Microcontroller 16 provides control signals 44 to a current source (not shown) that applies energizing current, for instance to lead 54A. The current flows from 54A to ground terminal 56 through a portion of resistive strip 53, which forms one heating element 52A.
  • Ceramic member 50 also includes a relatively thin but hard layer of glass that covers strip 53 and the leads.
  • the heating elements heat the corresponding pixels (i.e., dots) on the surface of the glass layer, and the surface is in contact with thermal foil 32.
  • the temperature of a pixel depends on the amount of energy delivered to the corresponding heater element and the thermal history and instant printing condition of the printhead.
  • Thermal printhead assembly 40 may use different printheads having resolution of 200, 300, or 400 dots per inch.
  • Microcontroller 16 receives a selected image from computer 12 and generates a data matrix corresponding to the image area.
  • the data matrix includes an enhancement of the image by electronic means to improve its visual appearance and physical character after the thermal transfer to surface 25 of article 26.
  • the enhancement algorithm generates selected levels of energy delivered to each pixel at each position of stage 24, as opposed to application of the same energy condition to all pixels, as is frequently done, for example, in direct thermal printing.
  • the data matrix can be visualized as a three-dimensional matrix with two- dimensional spatial information, and the energy level data, generated by the enhancement algorithm, represented as the third dimension.
  • the enhancement algorithm is interactive, that is, capable of adjusting the individual levels of energy relative to the local shape of the image, the thermal history of the pixel, levels of energy applied to the neighboring pixels, the overall temperature of ceramic member 50 and heat sink 48, the morphology of surface 25, and the. type of material to be thermally transferred. Furthermore, in certain embodiments, the enhancement algorithm uses a set of sensors distributed on printhead 42 that provide further input data for a dynamic analysis of the energy conditions for determining energy levels to be applied to the pixels.
  • the enhancement capabilities of the system enable high quality images to be printed that can be compared to those produced by various hot stamping techniques that use pressure dies.
  • Digital decorating system 10 can operate in different modes to produce different types of images on surface 25.
  • the first mode is achieved by direct application of heat and pressure from the surface of ceramic member 50 to surface 25 of article 26.
  • printhead 42 applies to surface 25 pressure induced by force member 41 and heat selectively generated by the heater elements to thermally alter the material surface and thereby transfer the image.
  • This mode does not use thermal foil assembly 30.
  • the second image transfer mode employs thermal foil assembly 30 to thermally transfer material to surface 25 and thereby create the image.
  • Other modes employ multiple print heads without foils, or with one or multiple foils or ribbons .
  • An enhancement algorithm employed in a particular system is selected in accordance with the mode of transfer, the desired image quality and the general operating parameters such as type of foil and type of substrate involved.
  • stationary printhead 42 applies heat and pressure to foil 32 and surface 25, both of which move underneath printhead 42.
  • the enhancement algorithm controls the energy sequence delivered to each pixel of the image (and the pressure delivered by force member 41) .
  • Each pixel receives the energy from a current source or a voltage source.
  • each pixel receives constant current over three time intervals (called sub-stripes) while thermal foil 32 and substrate 25 move continuously at a low speed (2 mm/sec. to 25 mm/sec.)
  • foil 32 and substrate 25 can remain stationary while each pixel receives constant current or zero current over the three sub-stripes.
  • Each sub-stripe lasts about one millisecond and the current is either on or off during the interval.
  • foils 32 may include different thicknesses of the continuous metal layer that is thermally transferred to substrate 25 together with the lacquer and adhesive layers of the laminate.
  • the metal laminate tends to separate from (or peel off of) the thermally resistive carrier film in flakes or small sheets of material, whereas continuity of the deposited material is desired to achieve a specular effect. This significantly differs from the thermal transfer of particulate or liquid like material, such as the thermal ink.
  • the digital decorating system monitors and controls the overall temperature of printhead 42, which may include one or more temperature sensors .
  • a current source delivers current pulses to the tiny heater elements 52, which in turn convey heat to thermal foil 32 and ceramic member 50.
  • the decorating system may include a heat exchange unit that controls the overall temperature of printhead 42.
  • thermal foil 32 includes a thermally resistive carrier film 71, a lacquer layer 75, a thin metal layer 77, and a thermally activated adhesive layer 79, which includes resins and fillers mixed together with a puffing agent (layers are shown not scaled in size relative to each other) .
  • a release coating 73 made of, for example, synthetic wax.
  • Carrier film 71 itself may have lubricating properties or may be back- coated with a heat-resistive lubricant. The lubricant inhibits sticking and promotes the movement of printhead 42 pressing on thermal foil 32 (and article 26) at a relatively high pressure.
  • Fig. 5A shows a highly magnified schematic view of the thermal transfer process.
  • Thermal foil 32 and article 26 move together in direction 94 relative to stationary printhead 42.
  • the thermal line of printhead 42 delivers heat to thermal foil 32 and the heat, in turn, activates thermally sensitive release layer 73 and adhesive layer 79.
  • the applied heat melts (or at least softens) release layer 73A, which in turn releases layers 75, 77 and 79 from carrier film 71.
  • the heat and pressure activated the puffing agent present in adhesive layer 79.
  • a modified adhesive layer 79A fills voids and valleys located on surface 25 and bonds metal layer 77 to surface 25.
  • Adhesive layer 79 includes a puffing agent made of expandable microspheres and an adhesive compound.
  • microsphere is equivalent to "particle” since the microspheres can have different shapes including a somewhat disk-like shape.
  • the expandable microspheres and the adhesive components are selected to be brittle at the deposition temperature to provide relatively sharp breaks and clean edges of the deposited material.
  • the sharp breaks are important for achieving sharp images during the thermal transfer.
  • the edges depend also on the particle size of the microspheres.
  • the particle size is in the range of 10 to 100 microns and preferably 50 to 90 microns.
  • a substantially larger particle size tends to produce visual graininess in the transferred foil and thus degrade the image, although larger particles fill effectively the irregularities on surface 25, which can exceed 0.003 inch in depth.
  • the adhesive cannot be too brittle because the deposited metal layer will have many cracks and will look like a "shattered mirror" .
  • the deposited adhesive cannot be too ductile because the transferred layers will not break off easily.
  • thermal foils 32 with different adhesives and different puffing agents (i.e., microspheres) .
  • puffing agents i.e., microspheres
  • the first type are microspheres made of thermal foaming agents (e.g., SaranTM, ExpansolTM) that have a volatile hydrocarbon trapped in the polymer matrix.
  • the second type microspheres include a shell that encapsulates a thermal expansion substance (i.e., volatile organic liquids available over a range of boiling points below 150°C)
  • Adhesive layer 79 also may include resins, gums, such as shellac, and synthetics, such as acrylics, polyesters, epoxys, alkyds, and various copolymers.
  • microspheres expand at a range of temperatures which is lower than the usual plastic molding temperatures, for example, as low as about 70 °C.
  • Thermal foils 32 are also designed with the expansion temperature in mind. High expansion temperatures limit the speed of thermal transfer or require significant preheating.
  • the main criteria for the adhesive layer are a smooth, continuous surface of the transferred layers across areas of high roughness and high contrast of the deposited image .
  • Carrier film 71 is preferably polyethylene terephthalate polyester (mylar) .
  • carrier film 71 is polyimide, polyester, polycarbonate, triacetyl cellulose, nylon, cellophane and other plastic films. Depending upon the application the thickness of the film varies from as thin as 1/4 mil (0.00025 inch) to one mil (0.001) .
  • Carrier film 71 may be back-coated with a heat- resistive lubricant, such as sili.con, epoxy resin, fluorine resin, polyimide resin, phenol resin, polyester or vinyl ester resins or nitro cellulose.
  • Release layer 73 is usually a very thin layer sometimes approaching a mono-molecular layer of a release agent.
  • the release agents include natural waxes such as carnauba wax, oricurry wax, candle wax, or montan wax, synthetics, such as Fischer-Tropsch waxes, pertoleum waxes, such as paraffin wax microcrystalline wax, and other materials such as stearic acid.
  • Lacquer layer 75 includes colorants, such as dyes or transparent pigment dispersions. The particle size of these should be small enough that they do not scatter visible light. (The scattering would produce milkiness or whiteness in the film that is ordinarily not desired for decorating purposes.) To protect metal layer 77, lacquer layer 75 is relatively hard and durable.
  • Lacquer layer 75 is made of a thermoplastic, such as Acryloid A-10 (made by Rhom and Haas) mixed with cellulose nitrate.
  • lacquer layer 75 may be a relatively soft chlorinated rubber (Parlon by Hercules) .
  • the lacquer layer may also be one of a number of cross-linked coating materials, ranging from cellulose esters cured with melamine to UV cured urethane or epoxy acrylates.
  • lacquer layer 75 may include several layers to achieve intercoat adhesion and durability.
  • Metal layer 77 includes a thin layer of vacuum deposited metal, which only few nanometers thick.
  • Thermal foils 32 are prepared by depositing a very thin layer of a release agent on carrier film 71 and then depositing lacquer layer 75. Then a thin layer of aluminum is sputtered in vacuum (10 6 Torr) onto lacquer layer 75. Adhesive layer 79 is deposited onto metal layer 77 using a Gravure applicator (available from John Dusenbury) . Adhesive layer 79 is in the range of 0.3 mil to 1 mil about and preferably 0.75 mil. A "tie coat" may be used to bond the adhesive layer onto the aluminum layer. Since adhesive layer 79 is thicker than layers 73, 75 and 77 (carrier film 71 being the thickest), it must not have tensile strength in the plane of the carrier film.
  • adhesive layer 79 includes 5% to 30% (and more preferably 10% to 20%) of a puffing agent, 30% to 55% (and more preferably 40% to 50%) of an adhesive mixture, 30% to 40% of water to get optimal viscosity during application, 0.1% to 4% (and more preferably 1% to 4%) of a surfactant, and less than 1% of a defomer.
  • the defomer reduces or completely prevents foaming at the head of the applicator.
  • the surfactant such as SurafinalTM 104 (available from Air Products) or IgepalTM (available from Rhone Polenc) , wets the adhesive film being applied to the mylar film and prevents dry spots or beading.
  • the adhesive mixture includes a liquid emulsion polymer that provides brittleness to the adhesive layer and a PVC acrylic copolymer (or an ethylene vinyl chlorid emulsion) that provides ductility to the adhesive layer.
  • the relative ratio of these two adhesives can vary depending on the desired properties of the thermal foil, which can be customized for different types of images, different substrates and different decorating systems.
  • the preferred composition of the adhesive layer includes 15% of Expancel 820D, (available from Akzo-Nobel) , 15% Neocryl BT-44 (a liquid emulsion available from Zeneca) ; 30% Airflex 4530 (an ethylene vinyl chlorid emulsion available from Air Products) ;
  • thermal transfer system 10 employs a bulk heater 80 for preheating substrate surface 25 or thermal foil 32. Both surface 25 and thermal foil 32 have a relatively low heat capacity and thus, to preheat effectively, bulk heater 80 is located relatively close to the heater elements of printhead 42.
  • Microcontroller 16 sends control signals (84) to bulk heater 80 and, in preferred embodiments, receives back temperature signals from thermal sensors located on the heating surfaces.
  • bulk heater 80 heats its surface 81, which provides heat to surface 25.
  • One or more temperature sensors, embedded on surface 81 detect the temperature of surface 25 and provide a signal to microcontroller 16.
  • Microcontroller 16 receives the temperature signal and adjusts the power provided to bulk heater 80 in a feedback arrangement.
  • the temperature of surface 25 is selected to soften material 26 and make it more receptive to printing (for example, in the case of vinyl), or it is selected to preheat material 26 to reduce the time needed for thermal transfer at each dot.
  • the softening of heat-sensitive materials i.e., vinyl
  • bulk heater 80 heats its surface 82, which provides heat to thermal foil 32.
  • thermal transfer system 10 employs a second printhead 43, located in close proximity to printhead 42, for selectively preheating surface 25.
  • second printhead 43 preheats surface 25 only at the locations where printhead 42 subsequently transfers the metal foil to surface 25. The preheating improves adhesion of thermal foil 32.
  • the preheating also enables "differential" heating of thermal foil 32 by delivering additional heat from preheated surface 25 to the bottom layer of the foil.
  • the preheating temperature in certain preferred instances, is selected to be higher than the softening temperature and can even be selected to be so high as to alter the surface composition of surface 25 since any potential discoloration will be covered by the transferred foil. For example, heating the surface of vinyl above about 200°F renders the selectively heated areas more receptive to the thermal deposition. These areas do not appear different to the naked eye, but common foil adhesives are found to selectively adhere to such a latent heat image relative to areas untouched by the heat.
  • thermal transfer system 10 employs a second printhead 43A for selectively preheating thermal foil 32.
  • Printhead 43A can not only preheat thermal foil 32 but also thermally transfer an initial layer of material to surface 25.
  • the initial layer pretreats surface 25 and can include a puffing material that fills valleys in the surface.
  • printhead 42 thermally transfers the metal and lacquer layers with an additional adhesive layer to surface 25.
  • printheads 42 and 43A are arranged to transfer material from two separate thermal foils. The transferred images of the foils do not need to be identical, but, in certain advantageous arrangements, can be arranged and controlled to complement each other.
  • a substrate heater 84 includes a heat lamp 86 (for example, an infrared lamp) coupled to a planar light guide 87 (e.g., of quartz) constructed to deliver a line of the generated heat to surface 25.
  • Microcontroller 16 sends control signals 88 to a heater controller 90, which regulates power delivered to heat lamp 86.
  • a temperature sensor 92, or an array of them, located in thermal communication with substrate 25, measures the temperature of the substrate just before the substrate reaches the line of pixels at printhead 42. Temperature sensor 92 also provide feedback data (93) to controller 90.
  • This embodiment can use different temperature sensors., including infrared sensors.
  • a substrate heater 94 uniformly heats substrate 25 with hot air of a selected temperature.
  • Substrate heater 94 includes an air pump or fan 95 and a heater 96 connected to a nozzle device 97, which delivers jets of hot air to substrate 25.
  • the enhancement algorithm includes specific advantageous thermal transfer techniques, referred to as “line enhancement,” “edge enhancement,” “lacquer protection” and “trailing edge.”
  • the “edge enhancement” technique enables the generation of clearly defined edges in the thermally transferred pattern, while enabling the fill area to provide a uniform, desirable appearance.
  • microcontroller 16 "looks" for initial transfer pixels and generates higher energy levels for pixels that form an edge, especially the leading edge of the image.
  • the leading, peripheral pixels i.e., edge pixels
  • the temperature gradient enables the transferred material to separate from the material remaining on the foil in a well-defined manner relative to the heated pattern. This is particularly applicable to leading edges and side edges in a patterned area being progressively transferred.
  • microcontroller 16 also takes into account the temperature of ceramic member 50 and heat sink 48 and the temperature of surface 25. These temperatures may also be adjusted to create the optimal temperature gradient.
  • the temperature gradient enables a clean break and transfer of the lacquer, metal and adhesive layers.
  • Figs. 8 and 8A sketch the difference in the transferred image of line L, wherein the shaded areas 99 represent the layers laid down to form the image while the white areas 98 represent surface 25. As shown in Fig. 8, without the edge enhancement algorithm, the edge L tends to be irregular.
  • microcontroller 16 directs a much lower energy to the pixels (i.e., interior "fill” pixels), where the image is. also transferred.
  • the lower energy heats the pixel to a temperature wherein the thermal transfer still occurs due to the selected properties of the metal foil, because a lower energy level is sufficient to continue the peeling and transfer process.
  • the lower energy level decreases the generated heat, which prevents damage to the lacquer layer that can produce a tarnished appearance to the reflective decoration. This is the "lacquer protection" technique.
  • thermal printing i.e., thermal transfer of ink.
  • This enhancement algorithm is specific to thermal foils transferring metal.
  • the "line smoothing" routine in a novel way eliminates a stair-step appearance of lines or edges that lie diagonally to the direction of the thermal transfer motion. For example, if the image is a circular pattern, as shown in Fig. 9 (or any pattern with a line that lies at an acute angle to the direction of motion) , a uniform distribution of energy over the matrix at the transfer points of the edge will generate a stair-step pattern of thermally transferred material (see Fig. 9A) . This uniform application of energy and the thermally transferred material are shown in Figs. 9B and 9C, respectively.
  • a low level of energy is applied to a pixel lying outwardly of the edge pixel (i.e., a pixel not assigned as part of the computer generated image) so that a partial material transfer occurs in a corner region of that pixel and a smoother appearance, as suggested in Fig. 9D, is achieved.
  • the most effective angles for this techniques lie at about 45 degrees to the thermal transfer axis, while a beneficial range is generally between about 30 degrees and 60 degrees for fine art work.
  • Fig. 10 illustrates in a simple way a matrix employed for implementing the enhancement techniques with respect to assigning different energy levels to the individual pixels of an image. (As mentioned above, the algorithm also takes into account the substrate and foil temperatures, the overall temperature of the printhead, the pressure, and the type of the substrate, but theses will be discussed separately.) On the top, Fig. 10 shows the rows and columns of pixels being printed by printhead 42 in print direction 94.
  • the row “n” indicates the line of dots about to be transferred (or not transferred depending on the image)
  • the row “n-1” is a line that has been transferred in the preceding print stripe
  • "n-2" is a line that has been transferred in the stripe preceding "n-1.”
  • the algorithm has to assign an energy level to a pixel E.
  • the algorithm "looks” at the pattern around pixel E of the image to be transferred.
  • the chart in Fig. 10 indicates possible combinations of the transfer states for pixels A, B, C, and D, wherein "0” denotes no transfer, according to the computer- generated image, and "1" denotes material transfer.
  • microcontroller 16 executes the "lacquer protection" routine, which prevents thermal damage to the lacquer layer. Additionally, if there was material transfer at pixel B, but not at its neighboring pixels in rows "n-1,” (or there was material transfer at pixels A and B, but not at their neighboring pixels in rows “n-2" and "n-1") the algorithm "looks" for lines at an angle to the transfer direction. For example, if there is material transfer at pixels B and C, pixel E receives energy E 5 , which is about three-quarters of the energy of pixels B and C.
  • microcontroller 16 executes the "line smoothing" routine.
  • the "line smoothing" routine directs a small amount of energy to the corner pixel next to heated pixels B and C for partial transfer of material that removes the stairstep pattern, as described above.
  • microcontroller 16 directs a small amount of energy to pixel E for partial transfer.
  • the algorithm can also "look at” the next succeeding stripe. If there is material transfer at pixels E, but no transfer at pixel F (or pixels of the "n+1" stripe) , microcontroller 16 executes a "trailing edge" routine and pixel F receives no energy.
  • the "trailing edge" routine does not assign increased values of energy to the last transferred stripe, that is, there is no increased heating of the leading edge as executed by the "edge enhancement” routine.
  • the thermal gradient may be needed for some types of thermal foils. This is again due to the unique properties of the metal layer that tends to break off clean at the trailing edge.
  • a simplified version of the enhancement algorithm in general, achieves very good results by only "looking at" a partial image and considering just a few transfer stripes .
  • Fig. 11 shows diagrammatically the thermal transfer algorithm.
  • the computer provides image data (100) to a stripe generator 102, which analyzes each thermal line to be transferred and provides this to a sub-stripe generator 104.
  • sub- stripe generator 104 generates sub-stripe data (112) and the corresponding power (energy) control signals for a power controller 110.
  • Power controller 110 also receives print speed data 108 and foil & substrate data and delivers current signals for each sub-stripe to the heater elements of the printhead.
  • the printhead includes a temperature sensor that sends temperature data (116) to power controller 110.
  • Fig. 12 shows a block diagram of the overall organization of digital decorating system 10.
  • Microcontroller 16 runs the enhancement algorithms (126) and the system control algorithms (128) .
  • Microcontroller 16 receives image data 100, user parameters 120, system parameters 122 and thermal foil parameters 124.
  • User parameters 120 include information about the object and surface being decorated.
  • System parameters 122 includes manufacturer information the printhead rating, the heater ratings and other.
  • Thermal foil parameters 124 are parameters unique to the foil currently used.
  • Microcontroller 16 controls print speed 130, printhead force 134, printhead power 138, s.ubstrate heat 142 and foil heat 146 and can receive their actual values, measured by sensors 132, 136, 140, 144, and 148 in a feedback loop 150. //
  • BYTE AnalogFromHeadTemp (int temp): void ClearPrintHead (BOOL latch): void Co puteStrobeEnergy (void); int GetHeadHeatMax (void):
  • BYTE GetHeadNu ber void
  • int GetHeadOverTemp void
  • double GetMaxWatts void
  • int GetNPixels void
  • int GetResolution void
  • int Get ordsPerLine void
  • double HeadResistancePromAnalog BYTE data
  • int HeadTe pFromAnalog BYTE data
  • BOOL IsPrintDone void: void HIPrlnt (void): void SendStripe (void): void SetCo pensation (int comp); void SetOutyCycle (int n); double SetForce (int n);
  • BOOL SetupPrinting (int * pBM int * pLen. int xLoc. int yLoc): void StartPrinting (void):
  • head_info_t 1 head_info_t; static const head_info_t near neadlnfo [N_HEADTYPES+1] - ⁇ ( ,”N0 PRINTHEAD INSTALLED". -0. 0. 0. 0x0000.
  • stat-ic void near buildEdgeStripe void
  • stat-ic void near getNextStripe void
  • static void near setStrobeEnergy int ss
  • static void near shiftStripe WORD near * ⁇ Stripe
  • static void near startPCycleTimer double speed
  • temp is a printhead temperature value in degrees F
  • ARGUMENTS latch: TRUE- shift and latch data. FALSE" shift data only
  • PURPOSE Builds print energy rolloff table "rol loffTable” for upcoming print cycle.
  • look-up values are generated for the timer and mode words / / necessary to produce the desired micpostrobe duty cycle for
  • pulseCount (WORD) (PERI0D_C0UNT * ssMicroDuty): mode - 4; )
  • AFFECTS Shuts off microstrobes. kill stripe interrupts
  • outportb HEAD_STROBE_CTRL. 0; // disable strobes outportb (DDS_ICR. (DDSIcr &- -ENABLE_STRIPE_IRQ)) // disable stripe irq printing - FALSE: //reset "printing" flag
  • DDSIcr &- ⁇ ENABLE_STRIPE_IRQ // reset stripe irq enable bit outportb(DDS_ICR.
  • BOOL errStat - FALSE //error flag: none yet int oldBM - * pBM; //raster file numbers: original, shifted int newBM:
  • DDSIcr ENABLE_STRIPE_IRQ: //Enable stripe timer IRQ: "or” in irq enable bit outportb (DDS_ICR. DDSIcr): // set enable bit in port
  • /Vtrlg logic analyzer start computing edge stripe data outportb (LPT1, inportb (LPT1)
  • next_rshift //(data is inverted) next_rshift: asm lodsw //get a word from notCurrentStripe asm rcr ax. 1 //shift 1 bit right asm stosw //store shifted version in notLeftSt ⁇ pe asm loop next_rshift //loop till done
  • word ptr notRlghtStripe [bx] asm lodsw //get word from notCurrentStripe asm not ax //flip it to normal polarity asm and ax.
  • dx //AND it with mask bits in DX asm xor ax.
  • clearData //XOR it with "dots off" bits in clearData asm stosw //store it in edgestripe asm add bx. 2 //Increment offset to next mask asm loop next_edge //loop till done asm pop es //restore original contents of ES
  • PURPOSE Fetches a stripe of raster data from the print buffer Builds array normalSt ⁇ pe[] for shifting to head Builds arrays notPrevSt ⁇ peC] and notCurrentStr ⁇ pe[] for later use in computing edge enhancement stripe
  • AFFECTS updates print buffer pointer bufPtr updates arrays normalStripe[] , notPrevStripeU and notCurrentStripe[]
  • ⁇ WORD pulseCount //timer counter value for microstrobe on-t1me BYTE mode: //timer mode for microstrobe on-t1me WORD tHeadAverage; //average of recent head thermistor A/D readings 1nt i; //general -purpose counter
  • DIGITAL_IN //Set port address for reading waitShiftDone: asm in ax.
  • dx //read (slow, since it waits for ISA bus) asm and ax.
  • HEAD_SHIFT_DONE //is shift done signal hi yet asm jz waitShiftDone //loop if it ain't //endi f
  • Stripe timer (does not enable stripe IRQs)
  • duty cycle is rolled off by a constant amount per degree F, unaffected by the Print Energy setting
  • PROTOTYPE IN local ARGUMENTS: For SetConstantRolloff: new value for constantRolloff flag

Landscapes

  • Physics & Mathematics (AREA)
  • Optics & Photonics (AREA)
  • Electronic Switches (AREA)
  • Thermal Transfer Or Thermal Recording In General (AREA)

Abstract

A thermal transfer foil (32) includes a carrier film (71) and several layers including a thermally activatable release coating (73), a laquer layer (75) adhered to the release coating (73), a specular metal layer (77) adhered to laquer layer (75), and a thermally activatable adhesive layer (79). The adhesive layer (79) expands under heat and pressure to fill voids in a substrate (26) during thermal transfer of the laquer (75), metal (77) and adhesive layers (79) thereby enabling the metal layer (77) to retain substantially its specular property after the transfer. The thermal transfer foil (32) is used to transfer an image to a rough substrate (26) by delivering a selected amount of heat and pressure to a pattern of pixels that form the image. This heat and pressure delivered to the foil (32) thermally activates the release coating (73) and the adhesive layer (79) and causes expansion of the adhesive layer (79). The expansion, in turn, fills voids in the substrate (26) while the metal layer (77) substantially retains its specular property after the thermal transfer of the image.

Description

THERMAL FOILS FOR DIGITAL DECORATING
Background of the Invention This invention relates to thermal foils for decorative transfer of images to various types of coarse surfaces .
Hot stamping of metallic foils has been widely used for decorating, with graphics and text, such items as book covers wallets, attache cases, handbags, or suitcases. These articles are made of leathers, vinyls or textiles, which have surfaces with deep grains or fibers having valleys, for example, 0.001 inches or even 0.003 inches in depth. For decorating purposes, the metallic foil, transferred by heat and high pressure, typically has a mirror-like surface for shiny appearance. Furthermore, the transferred material includes a tinted or clear lacquer top layer covering the metal surface to provide protection and a rich gold or other appearance. Traditionally, to transfer the metallic material, one has to first fabricate a custom-made metal die with raised and recessed areas corresponding to the particular design. The raised areas press the foil against the receiving substrate to transfer the material having the desired pattern while heat is applied. The stamping press applies pressures of hundreds of pounds or more to the die. While this type of transfer has been widely used, it also has drawbacks. For example, it takes a relatively long time to fabricate the die and the fabrication process is relatively expensive. There are other widely used techniques for decorative printing, but they also require fabrication of special tools for different designs. For example, silk screen printing requires fabrication of a print screen and pad printing requires fabrication of a pad. Computer controlled thermal printing is a different thermal process. It uses a thermal printhead controlled by a computer to print an image, typically, on paper. The thermal printhead generates heat localized over dots of a computer generated pattern to be printed. A thermal printing ribbon, disposed between the printhead and the paper or other web, releases ink that is thermally transferred in tiny amounts to the paper. The ink layer consists of a particulate or liquid-like material. The thermal printing ribbon also includes constituents that facilitate good adherence of the ink dots to the paper surface. The entire process is relatively fast and economical. However, this process has not been equated with hot stamping because of limitations of the process and the materials on which a precise image could be formed. Thermal printing has been used for decorative printing on papers of varying surface qualities. To improve the quality of the transferred image, printheads have been used to transfer several layers of ink on the same dot or puffing particles have been included in the transfer composition to fill irregularities on the printed surface. In either case, the thermal printing process and its effects have differed significantly from the hot stamping process that transfers relatively larger chunks of metallic material to the surface to achieve a specular effect.
Summary of the Invention In an important aspect, the invention relates to a variety of thermal transfer foils that are used to transfer sharp images with specular metallic surfaces to articles having very rough surfaces. These foils can be used in both hot stamping and digital decorating techniques. The thermal transfer foils include several layers having their composition optimized for different transfer temperatures or pressures, different types of images, or different types of surfaces.
In another important aspect, a thermal transfer foil includes a carrier film and several layers including at least one thermally activatable release coating, at least one lacquer layer adhered to the release coating, a specular metal layer adhered to lacquer layer, and at least one thermally activatable adhesive layer. The adhesive layer expands under heat and pressure to fill voids in a substrate during thermal transfer of the lacquer, metal and adhesive layers thereby enabling the metal layer to retain substantially its specular property after the transfer.
This aspect includes one or more of the following features. The layers are selected for use in a digital decorating system. The adhesive layer includes an adhesive substance and a microsphere-like puffing agent. The adhesive substance includes two components, a first component providing brittleness to the adhesive layer and a second component providing ductility to the adhesive layer after thermal activation. The two components are provided in relative amounts according to a ratio optimized for different types of images. The metal layer includes aluminum. The microsphere-like puffing agent comprises particles of a selected size. The microsphere- like puffing agent is selected to. expand at a selected temperature. The microsphere-like puffing agent is selected to expand at a selected temperature and a selected pressure. The substrate is one of the following materials: leather, vinyl and textile. The lacquer layer is selected to protect the metal layer after thermal transfer. The lacquer layer includes a pigment that alters light reflected from the metal layer to have an appearance of a metallic color. The lacquer layer includes a pigment that alters light reflected from the metal layer to have an appearance of a selected color. The carrier film has, on its side opposite to the release layer, a heat-resistive lubricating property.
In another important aspect, the above-described thermal transfer foil is used to transfer an image to a rough substrate by delivering a selected amount of heat and pressure to a pattern of pixels that form the image. This heat and pressure delivered to the foil thermally activates the release coating and the adhesive layer and causes expansion of the adhesive layer. The expansion, in turn, fills voids in the substrate while the metal layer substantially retains its specular property after the thermal transfer of the image.
The process of delivering the heat and pressure to the foil includes delivering heat to a thermal line of pixels by a thermal printhead, exerting a selected amount of pressure between the thermal line of pixels and the thermal transfer foil positioned on the surface, and producing relative movement between the thermal line of pixels and the transfer foil and the surface while controlling energy delivered to the pixels according to successive lines of the image.
Brief Description of the Drawing Fig. 1 is a perspective view of a digital decorating system.
Fig. 2 is a diagrammatic side view of a thermal transfer system.
Fig. 3 is a perspective view of a printhead of the thermal transfer system. Fig. 4 is a view of the bottom of the printhead taken on line 4-4 of Fig. 3.
Fig. 4A is a magnified view of a portion of Fig. Fig. 5 is a highly magnified, cross-sectional view of a thermal foil according to the present invention.
Fig. 5A is a highly magnified schematic view of a thermal transfer process. Fig. 5B is a highly magnified view of a substrate and the thermal foil after thermal transfer.
Fig. 6 is a diagrammatic side view of the thermal transfer system including a bulk heater for heating the substrate or the thermal foil. Figs. 6A and 6B are diagrammatic side views of the thermal transfer system, including a second printhead for preheating the substrate, and the thermal foil, respectively.
Figs. 7 and 7A are simplified perspective views of the thermal transfer system designed for preheating the substrate .
Fig. 8 is a magnified view of irregularities of an edge produced by a standard thermal transfer, while Fig. 8A is a magnified view of a smoother edge produced by an "edge enhancement" algorithm according to the present invention.
Fig. 9 is a diagrammatic view of a circular image to be thermally transferred to a substrate.
Fig. 9A is a diagrammatic plan view of a uniform energy distribution for the thermal image transfer of the image of Fig. 9, and Fig. 9B is a. highly magnified view of a portion of Fig. 9A.
Figs. 9C and 9D are highly magnified views of the transferred image employing the uniform energy distribution of Fig. 9A and a "line enhancement" algorithm according to the present invention, respectively.
Fig. 10 is a diagrammatic view of pixels considered in an enhancement algorithm and a chart with different thermal transfer combinations considered by the algorithm.
Fig. 11 is a block diagram of the thermal transfer algorithm. Fig. 12 is a block diagram of the overall organization of the digital decorating system.
Description of Preferred Embodiments Referring to Fig. 1, a digital decorating system 10 includes a personal computer 12 interfaced with a thermal transfer system 14. Computer 12 performs overall control over the digital decorating process and generates a selected image. Thermal transfer system 14 is a compact, table top system for transferring the provided image to a selected surface of an article (for example, vinyl, leather, plastic, textile or paper) .
Referring to Fig. 2, thermal transfer system 14 includes a microcontroller 16, a drive assembly 22, a thermal foil assembly 30, and a thermal printhead assembly 40. Drive assembly 22 (i.e., advancing mechanism) includes a stage 24 constructed to move an article 26 before and during the image transfer process. Drive assembly 22 receives signals 38 from microcontroller 16. Thermal foil assembly 30 includes thermal foil 32 spooled on a supply roll 34 and a set of rollers 36 constructed to advance, foil 32 (together with article 26 being advanced by stage 24) at a selected rate determined by control signals 38.
Thermal printhead assembly 40 includes at least one printhead 42 pressed against article 26 by a force member 41 and responsive to control signals 44 from microcontroller 16. Force member 41 is constructed to vary the pressure exerted by the printhead. The pressure is in the range of about 1 to 10 pounds per inch, and more preferably in the range of about 2 to 8 pounds per inch. A preferred printhead assembly 40 currently uses about 5 pounds per inch of print line for most substrates 25.
Referring to Fig. 3, printhead 42 is an edge type printhead that includes a set of electrical connectors 46, a heat sink 48, and a ceramic member 50. While the thermal printhead assembly is stationary during the thermal transfer process, it can be repositioned to a different location prior to the transfer process. The repositioning achieves easy access to different locations of the decorated items. Electrical connectors 46 are connected to a plurality of energizable heater elements constructed and arranged to selectively heat each of a line of pixels on the surface of ceramic member 50. Referring to Fig. 4, in one preferred embodiment, the heater elements 52 are made of strip 53 of a resistive material deposited on the bottom surface of ceramic member 50, and connected to a plurality of leads 54 and a common ground terminal 56. Individual leads 54 are connected to electrical connectors 46, which are in turn operatively connected to a power supply and microcontroller 16. As shown in Fig. 4A, a magnified portion of Fig. 4, the spacing between leads 54A and 54B is approximately the same as width W (for example, W = 0.003") of strip 53. Microcontroller 16 provides control signals 44 to a current source (not shown) that applies energizing current, for instance to lead 54A. The current flows from 54A to ground terminal 56 through a portion of resistive strip 53, which forms one heating element 52A. Ceramic member 50 also includes a relatively thin but hard layer of glass that covers strip 53 and the leads. The heating elements heat the corresponding pixels (i.e., dots) on the surface of the glass layer, and the surface is in contact with thermal foil 32. The temperature of a pixel depends on the amount of energy delivered to the corresponding heater element and the thermal history and instant printing condition of the printhead. Thermal printhead assembly 40 may use different printheads having resolution of 200, 300, or 400 dots per inch.
Microcontroller 16 receives a selected image from computer 12 and generates a data matrix corresponding to the image area. Importantly, the data matrix includes an enhancement of the image by electronic means to improve its visual appearance and physical character after the thermal transfer to surface 25 of article 26. The enhancement algorithm generates selected levels of energy delivered to each pixel at each position of stage 24, as opposed to application of the same energy condition to all pixels, as is frequently done, for example, in direct thermal printing. Thus, the data matrix can be visualized as a three-dimensional matrix with two- dimensional spatial information, and the energy level data, generated by the enhancement algorithm, represented as the third dimension. The enhancement algorithm is interactive, that is, capable of adjusting the individual levels of energy relative to the local shape of the image, the thermal history of the pixel, levels of energy applied to the neighboring pixels, the overall temperature of ceramic member 50 and heat sink 48, the morphology of surface 25, and the. type of material to be thermally transferred. Furthermore, in certain embodiments, the enhancement algorithm uses a set of sensors distributed on printhead 42 that provide further input data for a dynamic analysis of the energy conditions for determining energy levels to be applied to the pixels.
The enhancement capabilities of the system enable high quality images to be printed that can be compared to those produced by various hot stamping techniques that use pressure dies.
Digital decorating system 10 can operate in different modes to produce different types of images on surface 25. The first mode is achieved by direct application of heat and pressure from the surface of ceramic member 50 to surface 25 of article 26. As article 26 advances, printhead 42 applies to surface 25 pressure induced by force member 41 and heat selectively generated by the heater elements to thermally alter the material surface and thereby transfer the image. This mode does not use thermal foil assembly 30. The second image transfer mode employs thermal foil assembly 30 to thermally transfer material to surface 25 and thereby create the image. Other modes employ multiple print heads without foils, or with one or multiple foils or ribbons .
An enhancement algorithm employed in a particular system is selected in accordance with the mode of transfer, the desired image quality and the general operating parameters such as type of foil and type of substrate involved.
In the second thermal transfer mode, stationary printhead 42 applies heat and pressure to foil 32 and surface 25, both of which move underneath printhead 42. As mentioned above, the enhancement algorithm controls the energy sequence delivered to each pixel of the image (and the pressure delivered by force member 41) . Each pixel receives the energy from a current source or a voltage source. In a preferred embodiment, each pixel receives constant current over three time intervals (called sub-stripes) while thermal foil 32 and substrate 25 move continuously at a low speed (2 mm/sec. to 25 mm/sec.) Alternatively, foil 32 and substrate 25 can remain stationary while each pixel receives constant current or zero current over the three sub-stripes. Each sub-stripe lasts about one millisecond and the current is either on or off during the interval. Thus, this arrangement enables current profiling over each pixel. The image develops as the pixels transfer the material from thermal foil 32 to substrate 25. The energy sequence is chosen to account for the unique properties of different thermal foils 32. Specifically, foils 32 may include different thicknesses of the continuous metal layer that is thermally transferred to substrate 25 together with the lacquer and adhesive layers of the laminate. The metal laminate tends to separate from (or peel off of) the thermally resistive carrier film in flakes or small sheets of material, whereas continuity of the deposited material is desired to achieve a specular effect. This significantly differs from the thermal transfer of particulate or liquid like material, such as the thermal ink.
The digital decorating system monitors and controls the overall temperature of printhead 42, which may include one or more temperature sensors . During the thermal transfer process, a current source delivers current pulses to the tiny heater elements 52, which in turn convey heat to thermal foil 32 and ceramic member 50. In general, approximately 20% of the generated heat is consumed by the thermal transfer process and about 80% is conducted away to ceramic member 50 and heat sink 48. The decorating system may include a heat exchange unit that controls the overall temperature of printhead 42. Various other embodiments of the digital decorating system are described in detail in a co-pending U.S. Patent Application, Serial No. , filed January 28,
1997, entitled "Digital Decorating Systems," attorney docket no. 06456/004001, incorporated by reference.
Referring to Fig. 5, thermal foil 32 includes a thermally resistive carrier film 71, a lacquer layer 75, a thin metal layer 77, and a thermally activated adhesive layer 79, which includes resins and fillers mixed together with a puffing agent (layers are shown not scaled in size relative to each other) . Between carrier film 71 and lacquer layer 75 there is a release coating 73 made of, for example, synthetic wax. Carrier film 71 itself may have lubricating properties or may be back- coated with a heat-resistive lubricant. The lubricant inhibits sticking and promotes the movement of printhead 42 pressing on thermal foil 32 (and article 26) at a relatively high pressure.
Fig. 5A shows a highly magnified schematic view of the thermal transfer process. Thermal foil 32 and article 26 move together in direction 94 relative to stationary printhead 42. In a region A, the thermal line of printhead 42 delivers heat to thermal foil 32 and the heat, in turn, activates thermally sensitive release layer 73 and adhesive layer 79. The applied heat melts (or at least softens) release layer 73A, which in turn releases layers 75, 77 and 79 from carrier film 71. The heat and pressure activated the puffing agent present in adhesive layer 79. A modified adhesive layer 79A fills voids and valleys located on surface 25 and bonds metal layer 77 to surface 25. Under the pressure and temperature of printhead 42, lacquer layer 75, metal layer 77 and adhesive layer 79A break along a break line 74A. However, outside of region A, where no heat is delivered, layers 73 and 79 remain unchanged; thus, no deposition occurs there, as shown in Fig. 5B after foil 32 in no longer in contact with surface 25. Effectively, printhead 42 transferred a little solid piece of a mirror that remains intact and relatively planar despite the substantial roughness of surface 25 upon which it is deposited. Adhesive layer 79 includes a puffing agent made of expandable microspheres and an adhesive compound. In this context, the term "microsphere" is equivalent to "particle" since the microspheres can have different shapes including a somewhat disk-like shape. The expandable microspheres and the adhesive components are selected to be brittle at the deposition temperature to provide relatively sharp breaks and clean edges of the deposited material. The sharp breaks are important for achieving sharp images during the thermal transfer. Furthermore, the edges depend also on the particle size of the microspheres. The particle size is in the range of 10 to 100 microns and preferably 50 to 90 microns. A substantially larger particle size tends to produce visual graininess in the transferred foil and thus degrade the image, although larger particles fill effectively the irregularities on surface 25, which can exceed 0.003 inch in depth. Importantly, the adhesive cannot be too brittle because the deposited metal layer will have many cracks and will look like a "shattered mirror" . Furthermore, the deposited adhesive cannot be too ductile because the transferred layers will not break off easily.
For different substrates 25, digital decorating system 10 can use thermal foils 32 with different adhesives and different puffing agents (i.e., microspheres) . There are two different types of expandable microspheres . The first type are microspheres made of thermal foaming agents (e.g., Saran™, Expansol™) that have a volatile hydrocarbon trapped in the polymer matrix. The second type microspheres include a shell that encapsulates a thermal expansion substance (i.e., volatile organic liquids available over a range of boiling points below 150°C) A detailed description of various microsphers is given in a Japanese application no. 60-138431, published as 61-295088 on December 25, 1986. Adhesive layer 79 also may include resins, gums, such as shellac, and synthetics, such as acrylics, polyesters, epoxys, alkyds, and various copolymers.
The microspheres expand at a range of temperatures which is lower than the usual plastic molding temperatures, for example, as low as about 70 °C. Thermal foils 32 are also designed with the expansion temperature in mind. High expansion temperatures limit the speed of thermal transfer or require significant preheating. The main criteria for the adhesive layer are a smooth, continuous surface of the transferred layers across areas of high roughness and high contrast of the deposited image .
Carrier film 71 is preferably polyethylene terephthalate polyester (mylar) . Alternatively, carrier film 71 is polyimide, polyester, polycarbonate, triacetyl cellulose, nylon, cellophane and other plastic films. Depending upon the application the thickness of the film varies from as thin as 1/4 mil (0.00025 inch) to one mil (0.001) . Carrier film 71 may be back-coated with a heat- resistive lubricant, such as sili.con, epoxy resin, fluorine resin, polyimide resin, phenol resin, polyester or vinyl ester resins or nitro cellulose.
Release layer 73 is usually a very thin layer sometimes approaching a mono-molecular layer of a release agent. The release agents include natural waxes such as carnauba wax, oricurry wax, candle wax, or montan wax, synthetics, such as Fischer-Tropsch waxes, pertoleum waxes, such as paraffin wax microcrystalline wax, and other materials such as stearic acid. Lacquer layer 75 includes colorants, such as dyes or transparent pigment dispersions. The particle size of these should be small enough that they do not scatter visible light. (The scattering would produce milkiness or whiteness in the film that is ordinarily not desired for decorating purposes.) To protect metal layer 77, lacquer layer 75 is relatively hard and durable. Lacquer layer 75 is made of a thermoplastic, such as Acryloid A-10 (made by Rhom and Haas) mixed with cellulose nitrate. Alternatively, lacquer layer 75 may be a relatively soft chlorinated rubber (Parlon by Hercules) . The lacquer layer may also be one of a number of cross-linked coating materials, ranging from cellulose esters cured with melamine to UV cured urethane or epoxy acrylates. Furthermore, lacquer layer 75 may include several layers to achieve intercoat adhesion and durability. Metal layer 77 includes a thin layer of vacuum deposited metal, which only few nanometers thick.
Thermal foils 32 are prepared by depositing a very thin layer of a release agent on carrier film 71 and then depositing lacquer layer 75. Then a thin layer of aluminum is sputtered in vacuum (106 Torr) onto lacquer layer 75. Adhesive layer 79 is deposited onto metal layer 77 using a Gravure applicator (available from John Dusenbury) . Adhesive layer 79 is in the range of 0.3 mil to 1 mil about and preferably 0.75 mil. A "tie coat" may be used to bond the adhesive layer onto the aluminum layer. Since adhesive layer 79 is thicker than layers 73, 75 and 77 (carrier film 71 being the thickest), it must not have tensile strength in the plane of the carrier film. To eliminate (or substantially reduce) the tensile strength, different chemicals are added into the adhesive material. For example, adding a partially incompatible solvent with slower evaporation than the others forms a microscopic phase separations as the adhesive coating dries. Alternatively, deliberate addition of moisture to the drier will "blush" the size as it dries. A water-born emulsion polymer that does not coalesce when dry will bond to the surface to be decorated upon the application of appropriate heat and pressure .
Preferably, adhesive layer 79 includes 5% to 30% (and more preferably 10% to 20%) of a puffing agent, 30% to 55% (and more preferably 40% to 50%) of an adhesive mixture, 30% to 40% of water to get optimal viscosity during application, 0.1% to 4% (and more preferably 1% to 4%) of a surfactant, and less than 1% of a defomer. The defomer reduces or completely prevents foaming at the head of the applicator. The surfactant, such as Surafinal™ 104 (available from Air Products) or Igepal™ (available from Rhone Polenc) , wets the adhesive film being applied to the mylar film and prevents dry spots or beading. The adhesive mixture includes a liquid emulsion polymer that provides brittleness to the adhesive layer and a PVC acrylic copolymer (or an ethylene vinyl chlorid emulsion) that provides ductility to the adhesive layer. The relative ratio of these two adhesives can vary depending on the desired properties of the thermal foil, which can be customized for different types of images, different substrates and different decorating systems. Presently, the preferred composition of the adhesive layer includes 15% of Expancel 820D, (available from Akzo-Nobel) , 15% Neocryl BT-44 (a liquid emulsion available from Zeneca) ; 30% Airflex 4530 (an ethylene vinyl chlorid emulsion available from Air Products) ;
37.6% water; 2% triton X-114 (a surfactant available from Rohm and Haas) and 0.4% Dow Corning defoamer number 65.
Referring to Fig. 6, in another embodiment, thermal transfer system 10 employs a bulk heater 80 for preheating substrate surface 25 or thermal foil 32. Both surface 25 and thermal foil 32 have a relatively low heat capacity and thus, to preheat effectively, bulk heater 80 is located relatively close to the heater elements of printhead 42. Microcontroller 16 sends control signals (84) to bulk heater 80 and, in preferred embodiments, receives back temperature signals from thermal sensors located on the heating surfaces. In a substrate preheating mode, bulk heater 80 heats its surface 81, which provides heat to surface 25. One or more temperature sensors, embedded on surface 81, detect the temperature of surface 25 and provide a signal to microcontroller 16. Microcontroller 16 receives the temperature signal and adjusts the power provided to bulk heater 80 in a feedback arrangement. Depending on the material, the temperature of surface 25 is selected to soften material 26 and make it more receptive to printing (for example, in the case of vinyl), or it is selected to preheat material 26 to reduce the time needed for thermal transfer at each dot. The softening of heat-sensitive materials (i.e., vinyl) enables moderate pressures of the printhead to momentarily flatten the material in the thermal transfer region and improves thermal contact between the foil and the substrate. Similarly, in a foil preheating mode, bulk heater 80 heats its surface 82, which provides heat to thermal foil 32. Bulk heater.80 maintains the temperature of foil 32 at an elevated level, though sufficiently low so that no material migrates from the foil; subsequently, printhead 42 delivers a limited amount of power during the thermal transfer process to raise the temperature from the preheated, non-printing condition to a further elevated, printing condition. Referring to Fig. 6A, in another embodiment, thermal transfer system 10 employs a second printhead 43, located in close proximity to printhead 42, for selectively preheating surface 25. By computer control, second printhead 43 preheats surface 25 only at the locations where printhead 42 subsequently transfers the metal foil to surface 25. The preheating improves adhesion of thermal foil 32. The preheating also enables "differential" heating of thermal foil 32 by delivering additional heat from preheated surface 25 to the bottom layer of the foil. The preheating temperature, in certain preferred instances, is selected to be higher than the softening temperature and can even be selected to be so high as to alter the surface composition of surface 25 since any potential discoloration will be covered by the transferred foil. For example, heating the surface of vinyl above about 200°F renders the selectively heated areas more receptive to the thermal deposition. These areas do not appear different to the naked eye, but common foil adhesives are found to selectively adhere to such a latent heat image relative to areas untouched by the heat. At these temperatures, components within the vinyl, such as monomers or plasticizers, migrate to the surface in heated areas and the foil adhesives adhere in an improved way to these compounds. Furthermore, for some materials, the high heat makes it possible to print more deeply into a textured surface. To maintain the registration, the printheads are preferably located close together. The control software communicates with both printheads. The control software advantageously provides adjustment to the timing and relative location of the two images on the print lines, enabling fine adjustment of registration by observing the thermal pattern and the transfer effect. The preheating area can thus be brought into precise registration with the following thermal transfer area. Alternatively, referring to Fig. 6B, thermal transfer system 10 employs a second printhead 43A for selectively preheating thermal foil 32. Printhead 43A can not only preheat thermal foil 32 but also thermally transfer an initial layer of material to surface 25. The initial layer pretreats surface 25 and can include a puffing material that fills valleys in the surface.
Subsequently, printhead 42 thermally transfers the metal and lacquer layers with an additional adhesive layer to surface 25. In another embodiment, printheads 42 and 43A are arranged to transfer material from two separate thermal foils. The transferred images of the foils do not need to be identical, but, in certain advantageous arrangements, can be arranged and controlled to complement each other.
Referring to Fig. 7, a substrate heater 84 includes a heat lamp 86 (for example, an infrared lamp) coupled to a planar light guide 87 (e.g., of quartz) constructed to deliver a line of the generated heat to surface 25. Microcontroller 16 sends control signals 88 to a heater controller 90, which regulates power delivered to heat lamp 86. A temperature sensor 92, or an array of them, located in thermal communication with substrate 25, measures the temperature of the substrate just before the substrate reaches the line of pixels at printhead 42. Temperature sensor 92 also provide feedback data (93) to controller 90. This embodiment can use different temperature sensors., including infrared sensors. In another embodiment, referring to Fig. 7A, a substrate heater 94 uniformly heats substrate 25 with hot air of a selected temperature. Substrate heater 94 includes an air pump or fan 95 and a heater 96 connected to a nozzle device 97, which delivers jets of hot air to substrate 25.
Referring now to the control aspects of the preferred system, in general, the enhancement algorithm includes specific advantageous thermal transfer techniques, referred to as "line enhancement," "edge enhancement," "lacquer protection" and "trailing edge." The "edge enhancement" technique enables the generation of clearly defined edges in the thermally transferred pattern, while enabling the fill area to provide a uniform, desirable appearance. In the edge enhancement technique, microcontroller 16 "looks" for initial transfer pixels and generates higher energy levels for pixels that form an edge, especially the leading edge of the image. Thus, the leading, peripheral pixels (i.e., edge pixels) are controlled to have a higher temperature than interior pixels; this creates an advantageous temperature gradient at the edge between heated and unheated regions . The temperature gradient enables the transferred material to separate from the material remaining on the foil in a well-defined manner relative to the heated pattern. This is particularly applicable to leading edges and side edges in a patterned area being progressively transferred. To create an optimal temperature gradient, microcontroller 16 also takes into account the temperature of ceramic member 50 and heat sink 48 and the temperature of surface 25. These temperatures may also be adjusted to create the optimal temperature gradient. The temperature gradient, in turn, enables a clean break and transfer of the lacquer, metal and adhesive layers. Figs. 8 and 8A sketch the difference in the transferred image of line L, wherein the shaded areas 99 represent the layers laid down to form the image while the white areas 98 represent surface 25. As shown in Fig. 8, without the edge enhancement algorithm, the edge L tends to be irregular. On the other hand, as shown in Fig. 8A, the same edge produced by the edge enhancement algorithm is more regular in appearance. The energy considerations will be discussed specifically in connection with Fig. 10. In the filled area beyond the leading and side edges, microcontroller 16 directs a much lower energy to the pixels (i.e., interior "fill" pixels), where the image is. also transferred. The lower energy heats the pixel to a temperature wherein the thermal transfer still occurs due to the selected properties of the metal foil, because a lower energy level is sufficient to continue the peeling and transfer process. The lower energy level decreases the generated heat, which prevents damage to the lacquer layer that can produce a tarnished appearance to the reflective decoration. This is the "lacquer protection" technique. There are no similar concerns in thermal printing, i.e., thermal transfer of ink. This enhancement algorithm is specific to thermal foils transferring metal.
The "line smoothing" routine in a novel way eliminates a stair-step appearance of lines or edges that lie diagonally to the direction of the thermal transfer motion. For example, if the image is a circular pattern, as shown in Fig. 9 (or any pattern with a line that lies at an acute angle to the direction of motion) , a uniform distribution of energy over the matrix at the transfer points of the edge will generate a stair-step pattern of thermally transferred material (see Fig. 9A) . This uniform application of energy and the thermally transferred material are shown in Figs. 9B and 9C, respectively. According to the novel "line smoothing" routine, a low level of energy is applied to a pixel lying outwardly of the edge pixel (i.e., a pixel not assigned as part of the computer generated image) so that a partial material transfer occurs in a corner region of that pixel and a smoother appearance, as suggested in Fig. 9D, is achieved. In cases where pixels are of equal dimensions in both directions, the most effective angles for this techniques lie at about 45 degrees to the thermal transfer axis, while a beneficial range is generally between about 30 degrees and 60 degrees for fine art work.
Fig. 10 illustrates in a simple way a matrix employed for implementing the enhancement techniques with respect to assigning different energy levels to the individual pixels of an image. (As mentioned above, the algorithm also takes into account the substrate and foil temperatures, the overall temperature of the printhead, the pressure, and the type of the substrate, but theses will be discussed separately.) On the top, Fig. 10 shows the rows and columns of pixels being printed by printhead 42 in print direction 94. The row "n" indicates the line of dots about to be transferred (or not transferred depending on the image) , while the row "n-1" is a line that has been transferred in the preceding print stripe and "n-2" is a line that has been transferred in the stripe preceding "n-1." The algorithm has to assign an energy level to a pixel E. The algorithm "looks" at the pattern around pixel E of the image to be transferred. The chart in Fig. 10 indicates possible combinations of the transfer states for pixels A, B, C, and D, wherein "0" denotes no transfer, according to the computer- generated image, and "1" denotes material transfer. Overall, in this implementation there are 16 different combinations, but only 12 different energy possibilities, El through E12, because some of the patterns are essentially identical for thermal transfer purposes. For example, the material transfer at pixels B and C is identical to the material transfer at pixels B and D, assuming that the thermal conditions at pixel C and pixel D (due to the heating of their additional neighboring pixels, not shown) are identical. If there was no material transfer at the immediately preceding row "n-1, " microcontroller 16 raises the energy of pixel E, and executes the edge enhancement algorithm. If there was material transfer in rows "n-2" and "n-1," microcontroller 16 directs lower energy to pixel E. This lower energy is either zero energy, if no transfer should occur at pixel E, or to an intermediate value, if material transfer should occur at pixel E. In the latter case, microcontroller 16 executes the "lacquer protection" routine, which prevents thermal damage to the lacquer layer. Additionally, if there was material transfer at pixel B, but not at its neighboring pixels in rows "n-1," (or there was material transfer at pixels A and B, but not at their neighboring pixels in rows "n-2" and "n-1") the algorithm "looks" for lines at an angle to the transfer direction. For example, if there is material transfer at pixels B and C, pixel E receives energy E5, which is about three-quarters of the energy of pixels B and C. Furthermore, microcontroller 16 executes the "line smoothing" routine. The "line smoothing" routine directs a small amount of energy to the corner pixel next to heated pixels B and C for partial transfer of material that removes the stairstep pattern, as described above. Similarly, if there is material transfer at pixels F and D, then microcontroller 16 directs a small amount of energy to pixel E for partial transfer. The algorithm can also "look at" the next succeeding stripe. If there is material transfer at pixels E, but no transfer at pixel F (or pixels of the "n+1" stripe) , microcontroller 16 executes a "trailing edge" routine and pixel F receives no energy. In general, the "trailing edge" routine does not assign increased values of energy to the last transferred stripe, that is, there is no increased heating of the leading edge as executed by the "edge enhancement" routine. However, to break off the material to be transferred at the trailing edge, the thermal gradient may be needed for some types of thermal foils. This is again due to the unique properties of the metal layer that tends to break off clean at the trailing edge. A simplified version of the enhancement algorithm, in general, achieves very good results by only "looking at" a partial image and considering just a few transfer stripes .
Fig. 11 shows diagrammatically the thermal transfer algorithm. The computer provides image data (100) to a stripe generator 102, which analyzes each thermal line to be transferred and provides this to a sub-stripe generator 104. As is described below, sub- stripe generator 104 generates sub-stripe data (112) and the corresponding power (energy) control signals for a power controller 110. Power controller 110 also receives print speed data 108 and foil & substrate data and delivers current signals for each sub-stripe to the heater elements of the printhead. The printhead includes a temperature sensor that sends temperature data (116) to power controller 110.
Appendix A includes a listing of a source code that can be described as follows: Data kept for each dot (pixel) of the printhead (1 = on)
previous dot line: this dot line:
Figure imgf000025_0001
wherein X = current state of dot X P = previous state of dot X L = current state, dot to left of X R = current state, dot to right of X
Arrays kept for each line of data:
* normal stripe [] = X for each dot of head not current stripe [] = X not previous stripe [] = P not left stripe [] = L not right stripe [] = R * edge stripe [] = X * (P + + R) Time during which one row of data is printed is broken into 3 "substripe" intervals of equal duration. "Normal stripe [] " data is printed during the first two substripes, "edge stripe [] " data is printed during the third substripe. The nominal power for each sub-stripe can be adjusted independently and is corrected for head temperature .
Initialization:
(Function "Stepup Printing ()")
* Cells "Compute Strobe Energy ()" to build a look-up table "rollofftable [] [] " which contains power settings for each possible head temperature data reading for each of the 3 "substripe" interval power levels .
* Initializes image buffer data from a file, points to its start
* Initializes data arrays Normal Stripe [] , not Current Stripe [] , not Prev Stripe []
* Initialize Sub Stripe number to 0
* Initialize and start Sub Stripe rate timer & IRQ Interrupt Service routine "SendStripe ()", called from sub-stripe timer IRQ, does following:
* sets strobe energy based on recent-average head- thermstor data and on current sub-stripe number
* quits if done printing all data * updates sub-stripe number, module 3 if substripe = 0
• get NextStripe [] from image Buffer ptr,
(updates normal Stripe [] not Current Stripe [] , not Prev Stripe [] • shifts normal Stripe [] to head for printing @ substripe #1 energy level) else if substripe = 1
• leaves head data unchanged (normal Stripe [] data continues printing @ substripe #1 energy level)
• calls "build Edge Stripe ()" to compete not Left Stripe [] , not Right Stripe [] , and finally edge Stripe [] else if substripe = 2
• shifts edge Stripe [] data to head for printing at substripe #2 energy level
Fig. 12 shows a block diagram of the overall organization of digital decorating system 10. Microcontroller 16 runs the enhancement algorithms (126) and the system control algorithms (128) . Microcontroller 16 receives image data 100, user parameters 120, system parameters 122 and thermal foil parameters 124. User parameters 120 include information about the object and surface being decorated. System parameters 122 includes manufacturer information the printhead rating, the heater ratings and other. Thermal foil parameters 124 are parameters unique to the foil currently used. Microcontroller 16 controls print speed 130, printhead force 134, printhead power 138, s.ubstrate heat 142 and foil heat 146 and can receive their actual values, measured by sensors 132, 136, 140, 144, and 148 in a feedback loop 150. //
// FILE: PHEAO.H
// PROJECT: DOS
// REVISION: 1.10
// OATE: 12/05/96
//
// DESCRIPTION:
// Header file for PHEAD.C - Print head control functions
// REV DATE BY DESCRIPTION
// -
// B1.00 04/18/96 JRC Beta pre-release 1.00
// B1.01 04/24/96 JRC Beta pre-release 1.01
// B1.02 05/09/96 JRC Beta pre-release 1.02
// B1.03 06/05/96 JRC Beta pre-release 1.03
// B1.04 07/02/96 JRC Beta pre-release 1.04
// B1.05 08/07/96 JRC Beta pre-release 1.05
// B1.06 08/07/96 JRC Beta pre-release 1.06
// B1.07 09/05/96 JRC Beta pre-release 1.07
// (documention of changes from B1.06 incomplete)
//-B1.08 09/27/96 JRC Beta pre-release 1.08
//-B1.09 11/01/96 JRC Beta pre-release 1.09
// Added function prototypes ComputeStrobeEnergyC),
// GetMaxWattsO. SetCompensationC ) . SetDutyCycleO &
// SetForceO. Deleted prototypes GetEnergyK).
// GetEnergylOOO . GetForcelC). & GetForcelOOO.
// Added conditional prototypes SetConstantRolloffO &
// GetConstantRolloffO
// 1.10 12/05/96 JRC Beta pre-release 1.10
// Moved def MAX_W0RDS_PER_LINE here from PHEAD.C
//
#1fndef PHEAD_H #define PHEADJH
/Mfndef DATADEFSJ ^incl ude "datadefs . h " #endi f
// , .-
// LOCAL DATA DEFINITIONS // _____-__—___—
// max head width supported, in 16-pixel words ^define MAX_ORDS_PER_LINE 78
// -—-———
// FUNCTION PROTOTYPES // ~
BYTE Anal ogFromHeadResi stance (double r);
BYTE AnalogFromHeadTemp (int temp): void ClearPrintHead (BOOL latch): void Co puteStrobeEnergy (void); int GetHeadHeatMax (void):
1nt GetHeadHo eX (void):
BYTE GetHeadNu ber (void); int GetHeadOverTemp (void): double GetMaxWatts (void): int GetNPixels (void): int GetResolution (void): int Get ordsPerLine (void): double HeadResistancePromAnalog (BYTE data) int HeadTe pFromAnalog (BYTE data):
BYTE InltHeadlnfo (void):
BOOL IsPrintDone (void): void HIPrlnt (void): void SendStripe (void): void SetCo pensation (int comp); void SetOutyCycle (int n); double SetForce (int n);
BOOL SetupPrinting (int * pBM int * pLen. int xLoc. int yLoc): void StartPrinting (void):
#1fdef TK0_R0LL0FF_M00ES void SetConstantRolloff (BOOL flag): BOOL GetConstantRolloff (void) : endif tfendif //tfifndef PHEAD_H
// FILE: PHEAD.C
// PROJECT. DOS
// REVISION: 1.10
// DATE: 12/05/96 //
// DESCRIPTION:
// Print head control functions
// REV DATE BY DESCRIPTION
//
// B1.00 04/18/96 JRC Beta pre-release 1.00
// B1.01 04/24/96 JRC Beta pre-release 1.01
// B1.02 05/09/96 JRC Beta pre-release 1.02
// B1.03 06/05/96 JRC Beta pre-release 1.03
// B1.04 07/02/96 JRC Beta pre-release 1.04
// 07/08/96 JPR start adding dot control
// B1.05 08/07/96 JRC Beta pre-release 1.05.
// Used "PHEAD.C" identical to B1.04 (no dot history)
// B1.06 08/07/96 JRC Beta pre-release 1.06
// -• Incorporates JPR's new dot history control functions.
// B1.07 09/05/96 JRC Beta pre-release 1.07
// (docu ention of changes from B1.06 incomplete)
// B1.0809/27/96 JRC Beta pre-release 1.08
// B1.09 11/01/96 JRC Beta pre-release 1.09
// Added variable "Edge Enhancement" effect (formerly
// known as dot history):
// - Added function SetCompensatιon( )
// Added energy (microstrobe duty-cycle) rolloff feature
// to compensate for changes in head temperature.
// - Conditional based on DDS.H switch "T 0_R0LL0FF_M00ES".
// functions SetConstantRolloffO , GetConstantRolloffO
// variable constantRolloff allow setting constant
// rolloff regardless of energy setting.
// Normally uses percentage rolloff, based on new member
// "rolloff" added to headlnfo structure
// - Added rolloffTable[], microstrobe duty-cycle counter
// values for each temperature & substripe. Added
// functions ComputeStrobeEnergy( ) to lmt this table &
// replaced startStrobes( ) with setStrobeEnergy( ) which
// which reads the thermistor & does lookup.
// Optimized code to provide higher data rates, supporting
// print speeds up 2 IPS even with 4" heads:
// - Reduced number of sub-str1pes from 4 to 3.
// - Rewrote SendStnpeO. moved dot-history functions from
// getNextStripeO to new function buildEdgeStπpeO .
// Consolidated shift functions into shiftStπpe ,
// which writes to both left & right shift regs for 4"
// head.
// Simplified interaction with JOBCMDS.C.
// - Replaced functions GetEnergylO, GetEnergylOOO ,
// GetForcelO, & GetForcelOOO with SetForce ().
// SetDutyCycle O: deleted elements microOutyl,
// microDutylOO from headlnfo structure.
// - Added function GetMaxWattsO & added member maxWatts
// to headlnfo structure
// Conditional based on DDS.H switch C0UNT_D0TS. added dot // counting per line. Array linedotsC], pπntf of average
// dot power.
// Increased neadHeatMax from 120 to 150 F in headlnfo struct
// 1.10 12/05/96 JRC Beta pre-release 1.10
// Simplified pointer setup in shiftStπpeO
// Removed def MAX_WORDS_PER_LINE to PHEAD.H
// Modified SetupPrinting( ) & getNextStπpeO to handle flipped
// bitmap files: using new local variable "flipped".
//
//include <alloc.h>
//include <math.h>
//include <string.h>
//include "dds.h"
// - - .. -
// LOCAL DATA DEFINITIONS
////define F0RCE_4_INCH TRUE //debug 4" head code using 2" head
// Ru ber of printhead types supported //define N_HEADTYPES 2
// microstrobe counter modes
//define STB_M0DE_1 LSB_MSB | C0UNTER_MODE_l | COUNT BINARY
//define STB_M0DE_2 LSB_MSB | C0UNTER_MODE_2 | C0UNT_BI ARY
// microstrobe rate (40 kHz)
//define MICRO_PERI000.000025
//define PERI0D_C0UNT (DDS_TMR_FAST_CLK * MICR0_PERI0D)
// —
// LOCAL VARIABLES
// Data structure: information unique to each supported head type // typedef struct {
//Its name char name[25];
//data width in 16-pixel words: total, left section, right section int rasterWords. leftWords, rightWords;
//polarity of data: word which turns OFF printed dots WORD ClrData;
//resolution (DPI), width (pix) , distance home sensor to left dot (pix) int dpi, nPixels. homeX:
//nominal dot element resistance, tolerance (.2 - 20X) double RDot, RDotTolerance: //thermistor characteristics:
//pullup resistor, value @ 25 C, exponent Beta factor double thRPullup, thR25. thBeta:
//absolute max temperature, max head heater setting (degrees F) int overTemp, headHeatMax:
//min, max head force double forcel. forcelOO:
//max print energy, watts double maxWatts:
//energy rolloff factor per degree F double rolloff:
1 head_info_t; static const head_info_t near neadlnfo [N_HEADTYPES+1] - { ( ,"N0 PRINTHEAD INSTALLED". -0. 0. 0. 0x0000.
0. 0. 0. 1.. 1..
30000.. 30000.. 3950..
1. 1. 0.. 0.. 0.. .0070
"KYOCERA BE-57-12MGL2-GS".
42. 0. 42.
0x0000.
300. 672. 672.
1710.. 0.2.
30000.. 30000.. 3950..
160. 150.
3.. 15..
0.100.
.0070
"KYOCERA BE-106-12MGL1-GS"
78. 36. 42,
0x0000.
300. 1248. 1248.
1710., 0.2.
30000.. 30000.. 3950..
160. 150.
5.6. 27.9.
0.100.
.0070
): // Printheaα variables, initialized from the "headlnfo* structure // static BYTE near headNumber - Oxff; //head type ID//, read from hardware static int near wordsPerLine: //data width: total, left, right static int near leftWords: static int near rightWords. static int near pairsToShift: //larger of leftWords. rightWords static int near resolution; //resolution in DPI static WORD near clearOata: //"dots off" data word static double near maxWatts: //max print energy static double near maxDutyCycle: //corresponding max duty cycle
// Lookup table: temperature in deg F for each thermistor A/D value // static BYTE near headTempTable [256]:
// Variables for printing raster files // static int near activeBM: //// of file being printed static int near stπpesToSend: //// stripes to print static BOOL near printing, //flag: printing active static BYTE near ssNum: // current substripe number (0..3)
// Pointer to PrintBuffer data being printed // static WORD huge * imagePtr:
// Arrays of graphic stripe data for printing //
// previous, inverted
Static WORD near notPrevStπpe [MAX_WORDS_PER_LINE]
// current, inverted static WORD near notCurrentStπpe [MAX_WORDS_PER_LINE]
// cur, inv, shifted right 1 pix static WORD near notLeftStπpe [MAX_WORDS_PER_LINE]
// cur, inv. shifted left 1 pix static WORD near notRightStπpe [MAX_WORDS_PER_LINE] .
// "normal", for printhead static WORD near normalStπpe [MAX_WORDS_PER_LINE]:
// "edge". fot printhead static WORD near edgeStπpe tMAX_WORDS_PER_LINE];
// print settings variables // static double near jobOutyCycle: //duty cycle (from Print Energy) static double near ssMicroWeight [3]; //substripe weightings (from edge enh.)
// energy rolloff lookup table:
// microstrobe duty cycle count & mode values for each substripe
// entries for each possible themistor A/D reading
// static struct near {
WORD count: BYTE mode: } rolloffTable [256] [3]; // last 16 thermistor readings, index for storing next'-one // static BYTE near tHeadSampie [16]; static int near tHeadlndex = 0;
//ifdef TW0_R0LL0FF_M0DES static BOOL constantRol loff = FALSE; //flag: use constant rolloff factor //endif
//ffdef C0UNT_D0TS static int near lineDots [3300]; //// of dots On for each line of raster file //endif
// bitmap flipped flag // static BOOL near flipped:
// LOCAL FUNCTION PROTOTYPES
// —————— stat-ic void near buildEdgeStripe (void): stat-ic void near getNextStripe (void); static void near setStrobeEnergy (int ss): static void near shiftStripe (WORD near *ρStripe); static void near startPCycleTimer (double speed):
// GLOBAL FUNCTION DEFINITIONS // — —
// FUNCTION: AnalogFromHeadResi stance
//
// PURPOSE: Converts a printhead resistance value from ohms to A/D
// converter counts
//
// USAGE: BYTE AnalogFromHeadResi stance (double r)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: r is a printhead resistance value in ohms
//
// RETURN VALUE: Corresponding value in A/D converter counts
//
// CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: none
BYTE AnalogFromHeadResi stance (double r) { int data - 0: double rmin, rmax;
//get min and max head resistance for this head type data - GetHeadNumberO; rmin - headInfo[data].RDot * (1. - headInfo[data].RDotTolerance) ; rmax - headInfo[data] .RDot * (1. + headInfo[data].RDotTolerance) ; f (rmax — rmin) return 0:
//compute A/D converter counts data - (int) (255. * (r - rmin) / (rmax - rmin)); if (data < 0) data - 0: else if (data > 255) data - 255: return data;
//
// FUNCTION: AnalogFromHeadTe p
//
// PURPOSE: Converts a printhead temperature value from degrees F to A/D
// converter counts
//
// USAGE: BYTE AnalogFromHeadTemp (int temp)
//
// PROTOTYPE IN: PHEAD.H
// -
// ARGUMENTS: temp is a printhead temperature value in degrees F
//
// RETURN VALUE Corresponding value in A/D converter counts
//
// CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: none
// -
BYTE AnalogFromHeadTemp (int temp) ( int i . isave: i - GetHeadNumberO: // insure that head temp lookup table is initialized
//save index into table of first temperature entry which is >- desired temp for (isave - 0. i - 0; i<256; ι+-+)
{ if (headTempTable[i] >- temp) isave - i : else break: 1
//return index (A/D counts) return isave:
II
II FUNCTION: ClearPrintHead
II
II PURPOSE: Shifts (and optionally latches) a line of "dots off" data into
II the printhead
II
II USAGE: void ClearPrintHead (B00L latch)
II PROTOTYPE IN: PHEAD.H
ARGUMENTS: latch: TRUE- shift and latch data. FALSE" shift data only
RETURN VALUE: none
CALLS : (macros )
<DOS .H> : i nportbO
<DOS . H> : outportbO
DATADEFS . H : DISABLEO
DATADEFS . H : ENABLEO
AFFECTS: none
void ClearPrintHead (BOOL latch) ( DISABLEO:
//trig logic analyzer: start shifting outportb (LPT1. inportb (LPT1) | 0x01); asm mov bx. clearOata //BX = "dots off" data asm mov ex. pairsToShift //CX = loop counter, pairs of words to shift clearTwoWords: asm mov ax. bx //load left shift register with "dots off" data asm mov dx. LEFT_HEAD_SR asm out dx, ax asm mov dx. RIGHT_HEAD_SR //load right shift register (starts shifting) asm out dx. ax asm mov dx, DIGITAL_IN //set port addr for reading "shift done" waitClearOone: //loop here till "shift done" bit is set asm in ax, dx asm and ax. HEAD_SHIFT_DONE asm jz wai tClearDone asm loop clearTwoWords //loop till CX - 0
//trig logic analyzer: end shifting outportb (LPT1. inportb (LPT1) & -0x01): if (latch) //optional latch data into head outportb(HEAD_LATCH. 0)
ENABLEO:
FUNCTION: ComputeStrobeEnergy
PURPOSE: Builds print energy rolloff table "rol loffTable" for upcoming print cycle.
For each possible A/D reading of the printhead thermistor, look-up values are generated for the timer and mode words / / necessary to produce the desired micpostrobe duty cycle for
/ / each sub-stripe.
/ /
/ / Calculations are based on the energy-vs-te perature factor
// "rolloff" in the headlnfo table for the current printhead.
/ /
/ / Calculations are take into account the Head Temperature print
/ / setting and values of module-level variables "jobDutyCycle"
/ / and "ssMicroWeightH" . which are controlled by the Print
/ / Energy and Edge Enhancement print settings, respectively.
//
/ / USAGE: void ComputeStrobeEnergy (void)
//
// PROTOTYPE I N PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: none
//
// CALLS: (macros)
// DATADEFS.H: MA O
// DATADEFS.H: MINO
//
// (functions)
// JOBCMDS: GetJobHeadTemp( )
//
// AFFECTS: none
// void ComputeStrobeEnergy (void) { double tempSetting; //Head Temperature print setting
1nt i : //temperature index (head thermistor A/D counts) int j: //substripe index double temp: //temperature @ temperatur index double energyRolloff : //energy rolloff factor @ temperature double ssMicroDuty; //rolled-off microstrobe duty cycle
WORD pulseCount: //microstrobe counter value
BYTE mode: //microstrobe mode word
//Ifdef TWO_ROLL0FF_MO0ES double kRoll - maxDutyCycle / 250.; //endif
//get Head Temperature print setting, value at which there is no rolloff //(use no less than 70 degrees F) tempSetting - MAX (70.. GetJobHeadTemp( ) ):
//Loop thru for each possible thermistor A/D reading: for (1-0: i<256; i++)
{
//loop up the corresponding temperature (not less than 70 F) temp - (double) headTempTable[i]; temp - MAX (70., temp);
//Ifdef TW0_R0LL0FF_M00ES 1 f ( constantRol l off ) { if (temp >- headlnfofheadNumber] .overTemp) energyRolloff - maxDutyCycle: else energyRolloff = kRoll * (temp - tempSetting); } else { if (temp >= headInfo[headNumber] .overTemp) energyRolloff - 0; else energyRolloff - 1. - (headInfo[headNumber]. rolloff * (temp-tempSetting))' ) //else
//set energyRolloff multiplier:
//if temp > max allowed for head, multiplier - 0; if (temp >- headInfo[headNumber] .overTemp) energyRolloff - 0; else {
//else multiplier - 1 - (rolloff * delta temperature) energyRolloff - 1. - (headInfo[headNumber] .rol loff * ( temp- tempSetting) ) ;
//multiplier must be >- 0 if (energyRolloff < 0.) energyRolloff = 0. ; } //endif
//produce desired duty cycle for each substripe at current temperature for (j - 0; j < 3: j++)
{
//Ifdef TW0_R0LL0FF_M0DES if (constantRolloff ) { ssMicroDuty = (jobDutyCycle - energyRolloff) * ssMicroWeight[ j] ; if (ssMicroDuty < 0.) ssMicroDuty - 0. ; 1 else ssMicroDuty - jobDutyCycle * ssMicroWeight[ j] * energyRolloff; //else
//duty cycle (DC) - nominal DC * substripe weighting * energyRolloff ssMicroDuty - jobDutyCycle * ssMicroWeighttj] * energyRolloff;
//endif
//observe max DC limits for each substripe if (j < 2) ssMicroDuty - MIN (ssMicroDuty, maxDutyCycle * 1.125): else ssMicroDuty - MIN (ssMicroDuty, maxDutyCycle):
// setup micro strobe timers ... if (ssMicroDuty < 0.5) { // alternate strobes 1 and 2 pulseCount (WORD) (PERI0D_C0UNT * ssMicroDuty * 2); mode - 0; else {
// strobe strobes 1 and 2 together pulseCount = (WORD) (PERI0D_C0UNT * ssMicroDuty): mode - 4; )
// minimum timer value - 2. maximum - pulse period if (pulseCount < 2) pulseCount - 2; else if (pulseCount > ((W0RD)PERI0D_C0UNT - 2)) pulseCount = (W0RD)PERI0D_C0UNT - 2:
//place timer words in the lookup table rolloffTable[i][j]. count = pulseCount: rolloffTable[i][j] .mode - mode:
// FUNCTION: GetHeadHeatMax
//
// PURPOSE: Get maximum Head Temperature setting allowed by printhead
//
// USAGE: int GetHeadHeatMax (void)
//
// PROTOTYPE IN PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: maximum Head Temperature setting, in degrees F
//
// CALLS : PHEAD: GetHeadNumberO
//
// AFFECTS: none
// int GetHeadHeatMax (void) { return (headInfo[GetHeadNumber( )] .headHeatMax) : }
//
// FUNCTION: GetHeadHomeX
//
// PURPOSE: Get X-axi s di stance from home sensor to l eft-most dot on head
//
// USAGE: int GetHeadHomeX (void)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: home to left-dot distance, in pixels
// // CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: none
int GetHeadHomeX (void) ( return (headInfo[GetHeadNumber( ) ] .ho eX) ; }
//
// FUNCTION: GetHeadNumber
//
// PURPOSE: Reports ID number of current printhead
//
// USAGE: BYTE GetHeadNu ber(void)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: none
//.
// RETURN VALUE: current printhead ID numoer +l, 0 if none installed
// --
// CALLS: PHEAD: Ini tHeadInfo( )
//
// AFFECTS: none
/ /
BYTE GetHeadNumber(void) { if (headNumber > N_HEADTYPES) headNumber - InltHeadlnfoO ; //re-read from hardware if unknown return headNumber: }
// FUNCTION: GetHeadOverTe p
//
// PURPOSE: Get absolute max operating temperature of current peinthead
//
// USAGE: int GetHeadOverTemp (void)
//
// PROTOTYPE IN: PHEAD.H
II
II ARGUMENTS: none
//
// RETURN VALUE Absolute max temperature, in degrees F
//
// CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: none
int GetHeadOverTemp (void) { return (headInfo[GetHeadNumber( )] .overTemp): ) // ——
// FUNCTION: GetMaxWatts
//
// PURPOSE: Get maximum power for current printhead
//
// USAGE: double GetMaxWatts (void)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: maximum power for current printhead. in watts per dot
//
// CALLS: none
//
// AFFECTS: none
// — — — : -_ _ double GetMaxWatts (void) { return maxWatts;
) " .
//
// FUNCTION: GetNPixels
//
// PURPOSE: Get width of current printhead. in pixels
//
// USAGE: int GetNPixels (void)
//
// PROTOTYPE IN PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: width of current printhead. in pixels
//
// CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: none
int GetNPixels (void) { return (headInfo[GetHeadNumber()] .nPixels) : }
//
// FUNCTION: GetResolution
//
// PURPOSE: Get resolution of current print head
//
// USAGE: int GetResolution (void)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: print head resolution in dots per inch II
II CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: updates variable "resolution"
int GetResolution (void)
( return (resolution = headInfo[GetHeadNumber( ) ] .dpi ) ;
//
// FUNCTION GetWordsPerLine
//
// PURPOSE: Get printhead data width in 16-bit words
//
// USAGE: int GetWordsPerLine (void)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: none
// .
// RETURN VALUE head width in 16-bit words
//
// CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: updates variable "wordsPerLine"
// int GetWordsPerLine (void) { return (wordsPerLine - headInfo[GetHeadNumber()] .rasterWords) :
//
// FUNCTION: HeadResistanceFromAnalog
//
// PURPOSE: Converts raw A/D data from head resistance pot to ohms
//
// USAGE: double HeadResistanceFromAnalog (BYTE data)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: data: raw A/D data from head resistance pot
//
// RETURN VALUE: Head resistance in ohms
//
// CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: none
double HeadResistanceFromAnalog (BYTE data) I double r. rnom. rtol ; rnom - headInfo[GetHeadNumberO] .RDot; rtol - rnom * headInfo[GetHeadNumber()].RDotTolerance; r - rnom + ( (double)data - 128.) / 128. * rtol; if (r < 0.) r - 0.: i f (r > rno +rtol ) r - rnom + rtol : return r; //head resistance in ohms
//
// FUNCTION: HeadTempFromAnalog
//
// PURPOSE: Converts head temperature from raw A/D data from head
// thermistor to degrees F
//
// USAGE: int HeadTempFromAnalog (BYTE data)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: Head temperature in degrees F
// .
//-CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: none
int HeadTempFromAnalog (BYTE data)
{
GetHeadNumber (): //get head number, init if necessary return (int) headTempTable[data] ; //head temp in deg. C 1
// // FUNCTION: InitHeadlnfo
//
// PURPOSE: Reads hardware for printhead ID jumpers.
// Initializes printhead variables accordingly
//
// USAGE: BYTE InitHeadlnfo (void)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: Printhead ID number: 0 if error
//
// CALLS: (macros)
// <DOS.H>: inportO
// DATADEFS.H: MAXO
//
// (functions)
// <MATH.H>: expO
// <MATH.H>: logO
//
// AFFECTS: Initialized head temperature lookup table and other variables
// based on hardware prinhead ID jumpers
// BYTE Ini tHeadlnfo ( voi d ) I
BYTE i d ; i nt i : double k. tempdata:
//Initialize microstrobe duty cycle energy weightings for each substripe //Normalized for using 3 substripes per line instead of 4 ssMicroWeight [0] - 1.125: ssMicroWeight [1] = 1.125: ssMicroWeight [2] - .75:
// read head id// from hardware id - (BYTE) ((inport(DIGITAL_IN) && HEAD_TYPE_INPUTS) / 0x100): if (id < N HEADTYPES)
( id++: / /add 1 to hardware reading ( val i d - 1 to n )
//i fdef F0RCE_4_I NCH id - 2 : //endi f
// initialize thermistor A/D data - to - head temperature lookup table k - headInfo[id].thR25 / exp (headInfo[id] . thBeta/298. ) : headTempTable[0] - 212: headTempTable[255] - 0: for (i - 1: i < 255: i++) { tempdata - headInfo[id] .thBeta / log (i * headInfo[id].thRPullup / k / (255-i) ) -273.; tempdata = (tempdata * 1.8) + 32; // convert to degrees f if (tempdata > 212.) headTempTable[i] - 212: else if (tempdata < 0.) headTempTable[i ] - 0; else headTempTable[i] - (BYTE) tempdata: }
//Initialize other variables based on printhead ID resolution - headInfo[id].dpi : clearData - headInfo[id].ClrData: wordsPerLine - headInfo[id].rasterWords'; leftWords - headlnfo. Id]. leftWords; rightWords - headInfo[id]. rightWords: palrsToShift - MAX (leftWords. rightWords); ) else
1d-0: //(invalid - 0) return id;
// FUNCTION: IsPrintDone
//
// PURPOSE: Tests whether printing i s done
// // USAGE: BOOL IsPrintDone( void)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: FALSE if printing in procress. else TRUE
//
// CALLS: none
//
// AFFECTS: none
// — —-
BOOL IsPrintDone(void) { return ([printing) ? TRUE : FALSE; )
//
// FUNCTION: KillPrint
//.
// PURPOSE: Stops printing
// •
// USAGE: void KillPrint (void)
II
II PROTOTYPE IN PHEAD.H
II
II ARGUMENTS: none
//
// RETURN VALUE: none
//
CALLS : (macros)
<DOS.H>: outportbO
DATADEFS.H: DISABLEO
DATADEFS.H: ENABLEO
(functions)
PHEAD: ClearPrintHead( )
AFFECTS: Shuts off microstrobes. kill stripe interrupts
Resets "printing" flag, latches "dots off" data into head
void KillPrint (void) {
OISABLEO: outportb (HEAD_STROBE_CTRL. 0); // disable strobes outportb (DDS_ICR. (DDSIcr &- -ENABLE_STRIPE_IRQ)) // disable stripe irq printing - FALSE: //reset "printing" flag
ClearPrintHead (TRUE): //shift & latch "dots off" data into printhead
ENABLEO: 1
II
II FUNCTION: SendStripe
II
II PURPOSE: Latches previous data into head
II Sets up proper microstrobe energy for printing it //
// Does other processing depending on current substripe //:
//
// ssNum- 0: Loads next stripe data from print buffer
I I Shifts "normal" stripe data to head
II
II ssNum- 1: Computes "edge enhancement" stripe data
II Continues printing "normal" stripe data
II
II ssNum- 2: Shifts "edge enhancement" stripe data to head
II
I I USAGE : void SendStripe(void)
//
/ / PROTOTYPE I N : PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE: none
II
I I CALLS: (macros)
// <D0S.H>: inportb( )
II <00S.H>: outportb( )
II DATADEFS.H: DISABLEO
II DATADEFS.H: ENABLEO
II
II (functions)
II PHEAD ClearPrintHeadO
II PHEAD buildEdgeStripe( )
II PHEAD getNextStripeO
II PHEAD setStrobeEnergy( )
II PHEAD shlftStripeO
II
II AFFECTS: none
// —— void SendStripe(void) ( outportb (HEAD_LATCH. 0): setStrobeEnergy (ssNum); if (stripesToSend 0) //normal exit after last stripe sent {
DISABLEO: //disable interrupts, save flag outportb(HEAD_STROBE_CTRL. 0); // disable strobes
DDSIcr &- ~ENABLE_STRIPE_IRQ: // reset stripe irq enable bit outportb(DDS_ICR. DDSIcr): // reset enable bit in port printing - FALSE:
ClearPrintHead (TRUE): // redundant clear head, latch OFF bits
ENABLEO; //restore interrupts ) else //count off stripe I ssNuπH-t-: if (ssNum — 3)
{ ssNum - 0: stripesToSend-
}
//set logic analyzer bits corresponding to ssNum outportb (LPT1. (inportb (LPT1) & -OxOC) | (ssNum << 2) ); if (stripesToSend — 0) // no more data
ClearPrintHead (FALSE): // clear printhead else // more data { switch (ssNum) ( case 0: getNextStripe ( ) : shiftStripe (nor alStripe) ; break: case 1: buildEdgeStripe (): break: case 2: shiftStripe (edgeStripe) : break: }
//
// FUNCTION: SetCompensation
//
// PURPOSE: Sets "edge enhancement" effect.
// Adjusts duty-cycle weighting of "edge enhanced" substripe
// relative to "normal" substripe.
//
// USAGE: void SetCompensation (int comp)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS : comp: Edge Enhancement setti ng (0 to 100 )
//
// RETURN VALUE: none
//
// CALLS: none
//
// AFFECTS: Substripe energy weightings "ssMicroWeightπ"
void SetCompensation (int comp) { ssMicroWeight [0] - 1.125: ssMicroWeight [1] - 1.125: ssMicroWeight [2] - (double) (comp) / 44.;
// —
// FUNCTION: SetDutyCycle //
// PURPOSE: Sets nominal microstrobe duty cycle
//
// USAGE: void SetDutyCycle (int n)
//
// PROTOTYPE IN; PHEAD.H
//
// ARGUMENTS: n: Print Energy setting (0-100)
//
// RETURN VALUE: none
//
// CALLS: PHEAD: GetHeadNumberO
// PHEAD: HeadResi stanceFromAnalog( )
// DDSHW: Ana logO
//
// AFFECTS: variables maxWatts. maxDutyCycle. jobDutyCycle
/ / void SetDutyCycle (int n) ( double headResistance: hpadResi stance - HeadResistanceFromAnalog (Analog (HEAD_OHMS_AD) ); maxWatts - headInfo[GetHeadNumber( )] .maxWatts: maxDutyCycle - maxWatts * headResistance / (24.0 * 24.0): jobDutyCycle - (double) n * maxOutyCycle / 100.:
//
// FUNCTION: SetForce
//
// PURPOSE: Sets up head force to be used for printing
//
// USAGE: double SetForce (int n)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: n: Print Force setting (0-100)
//
// RETURN VALUE Actual print head applied force in pounds
//
// CALLS: PHEAD: GetHeadNumberO
//
// AFFECTS: none
double SetForce (int n) { double fl. flOO:
1f ( (n < 1) || (n > 100) ) return 0.0: fl - headInfo[GetHeadNumber()].forcel: flOO - headInfo[GetHeadNumber()].forcelOO: return (fl + ( (double)(n-l) / 99.) * (flOO - fl) ); // ___-.-»__—__-.
// FUNCTION: SetupPrinting
//
// PURPOSE: Sets up a raster data file for printing
//
// USAGE: BOOL SetupPrinting (int * pBM. int * pLen. int xLoc. int yLoc)
//
// PROTOTYPE IN: PHEAD.H
//
// ARGUMENTS: pBM: pointer to bitmap file to be printed
// pLen: pointer to number of raster lines to be printed
// xLoc: starting X location
// yLoc: starting Y location
//
// RETURN VALUE: Error status: TRUE if error, else FALSE
//
// CALLS: (macros)
// DATADEFS.H: MI NO .
//
// (functions)
// <STDI0.H>: pπntf( )
//' PHEAD: GetNPixelsO
// PHEAD GetMaxWattsO
// PHEAD getNextStripe( )
// PHEAD setStrobeEnergy( )
// PHEAD shlftStripeO
// PHEAD startPCycleTi er O
// DDSHW Analog( )
// JOBCMDS GetJobFHpYO
// JOBCMOS GetJobPrintEnergyNum( )
// JOBCMDS GetJobPrintSpeed( )
// MOTOR: GetMaxXMoveO
// MOTOR: GetMaxYMoveO
// RASTER CloseRasterFile( )
// RASTER DeleteRasterFileO
// RASTER GetPrintOataO
// RASTER GetRasterHeightO
// RASTER GetRasterTempFlag( )
// RASTER OpenPrintDataFileO
// RASTER ShlftedRasterFileO
//
// AFFECTS: none //
BOOL SetupPrinting (int * pBM, int * pLen, int xLoc. int yLoc) {
BOOL errStat - FALSE; //error flag: none yet int oldBM - * pBM; //raster file numbers: original, shifted int newBM:
1nt maxXmove - GetMaxXMove (); //max X position of left-most dot
Int i ; //counters: general -purpose, word, stripe
1nt word: int stripe:
WORD huge *bufPtr; //pointer to page buffer
//ifdef COUNT_D0TS long dotTotal - 0; //endif flipped - GetJobFlipYO , //test for flipped bitmap
//// stripes: lesser of raster file height, distance to bottom of bed stπpesToSend - MIN (GetRasterHeight (oldBM). GetMaxYMoveO - yLoc). if (stπpesToSend <- 0) //flag error if nothing to print errStat = TRUE; if (lerrStat) //if no errors yet { *pLen - stπpesToSend: //tell caller how many stripes if (xLoc >« (maxXmove + GetNPixels () ) )
//1f starting X is beyond width of bed. flag error errStat - TRUE: else if (xLoc > maxXmove) I //else if starting x is beyond point where we can place the first dot //we have to build a new, temporary raster file, shifting data to right newBM - ShiftedRasterFi le ( oldBM. maxXmove. xLoc, wordsPerLine. yLoc. stπpesToSend. TRUE ). //if succesful creating shifted file, tell the caller we're using the //new shifted raster file, else flag error if (newBM > oldBM)
*pBM - activeBM - newBM: else errStat = TRUE;
> else
//else no shift needed, tell caller we're printing the original file *pBM - activeBM = oldBM; ) if (lerrStat) //if no errors yet ( errStat = OpenPrintOataFi le (activeBM) //open raster file, flag errors if (lerrStat)
{ imagePtr - PrintBuffer; //point to start of print buffer
//LOOP TO COPY RASTER DATA LINE-BY-LINE TO PRINT BUFFER // for (stripe - 0: stripe < stπpesToSend: str1pe++) {
//flag error if not enough room for another line if (imagePtr + wordsPerLine >- PπntBufferEnd) ( errStat - TRUE; break; 1
//else (enough room) zero out next line of print buffer bufPtr - imagePtr: for (word - 0: word < wordsPerLine: word++) *bufPtr++ - 0; //ifdef C0UNT_D0TS
//copy stripe of file data from file to buffer (dot-counting version) lιneDots[stπpe] = GetPrmtData (imagePtr): dotTotal += lineDotststnpe],
//else
//copy stripe of data rrom file to buffer (noπ-dot-counting version) GetPrmtData (imagePtr);
//endif
//point to next line or print buffer imagePtr +- wordsPerLine: }
//LOOP DONE: if (flipped)
//point to last line oτ print buffer for flipped bitmap imagePtr - PπntBuffer + (long) wordsPerLine * (long) (stπpesToSend-1 ) . else
//point to first line or print buffer tor normal bitmap
ImagePtr - PπntBuffer:
CloseRasterFile (activeBM). //close raster file if (GetRasterTempFlag (activeBM)) //if raster file was temporary (shifted)
DeleteRasterFile (activeBM); //delete it }
) if (lerrStat) I
//print nominal dot power //Ifdef C0UNT_D0TS printf ("Average power. .2f\r\n", dotTotal / stripesToSend * GetMaxWatts( ) * GetJobPrintEnergyNu O / 100.). //endif
//set speed of stripe IRQ timer startPCycleTimer (GetJobPπntSpeed O); } if (lerrStat) //if no errors yet {
//fill inverted current stripe data for upcoming edge enhancement for (word - 0: word < wordsPerLine; word++) notCurrentStπpeCword] - Oxffff; getNextStπpeO: //fetch first stripe from array ssNum - 0: //1nit substripe counter to 0 shiftStripe (normalStripe) : //shift first stripe to head 1 if (errStat) //if errors, tell caller: {
*pBM - 0: //printing no bitmap
*pLen - 0; //lenght is zero //Initialize array tHeadSample[] to current thermistor data for (ι - 0; i < 16: ι++) tHeadSample[ι] - Analog (HEAD_TEMP_AD) : tHeadlndex = 0; setStrobeEnergy (0): //set duty cycle for first substripe return errStat; //return error status flag
// FUNCTION: StartPrmting
//
// PURPOSE: Starts interrupt driven printing via stripe timer IRQ
//
// USAGE: void StartPrmting (void)
//
// PROTOTYPE IN. PHEAD.H
//
// ARGUMENTS: none
//
// RETURN VALUE. none
//
// CALLS: (macros)
// <D0S.H>- outportbO
II DATADEFS.H: DISABLEO
II DATADEFS.H: ENABLEO
II
II (functions)
II PHEAD: setStrobeEnergy( )
II
II AFFECTS: none
// — void StartPrmting (void) 1 setStrobeEnergy (0): //set duty cycle for first substripe printing = TRUE: //printing begins now
DISABLEO:
DDSIcr |- ENABLE_STRIPE_IRQ: //Enable stripe timer IRQ: "or" in irq enable bit outportb (DDS_ICR. DDSIcr): // set enable bit in port
ENABLEO: J
// LOCAL FUNCTION DEFINITIONS //
FUNCTION: bulldEdgeStripe PURPOSE: Builds "edgeStπpeU" . line of edge enhancement data for head Each dot in this stripe is 1 (ON) if: current dot is 1 and { current dot was previously 0 // (OR dot to its left is 0
/ / {OR dot to its right is 0
/ /
// USAGE: void near buildEdgeStripe (void)
/ /
// PROTOTYPE IN: local
//
// ARGUMENTS: none
//
// RETURN VALUE: none
//
// CALLS: (macros)
// <D0S.H> inportb( )
// <D0S.H> outportbO
// <00S.H> FP.OFFO
//
// AFFECTS: Updates array edgeStripe[] , intermediate arrays
// notLeftStripeH and notRightStripe[]
// —— void near buildEdgeStripe (void) { " .
/Vtrlg logic analyzer: start computing edge stripe data outportb (LPT1, inportb (LPT1) | 0x02); asm push es //save ES asm mov ax. ds asm mov es. ax //set ES to data segment DS
/ Form a 1 pixel left shifted version of the inverted current stripe to
/ represent dots without right neighbors.
/
/ Thi s assumes a pixel organi zati on as fol l ows :
/
/ word: | 0 | 1 | 2 | ... | n |
/ pixel: j 15 0)15 0|15 0J |15 OJ
/
asm std //set direction flag for auto decrement
_SI - FP_0FF (notCurrentStripe); //DS:SI - source - notCurrentStripe _DI - FP_0FF (notRlghtStripe): //ES:DI - dest - notRlghtStripe asm mov ex, wordsPerLine //CX - wordsPerLine asm mov bx. CX //BX - 2 * (CX-1) asm dec bx // - offset in bytes to last word in each asm add bx. bx // stripe buffer asm add si. bx //Add BX offset to SI and to DI asm add di. bx asm stc //set carry before starting shift //(data is inverted) next_l shift: asm lodsw //get a word from notCurrentStripe asm rcl ax. 1 //shift 1 bit left asm stosw //store shifted version in notRlghtStripe asm loop next_lsh1ft //loop till done
// Form a 1 pixel right shifted version for dots without left neighbors // (See above comment for data organization) // asm el d //clear direction flag for auto increment
_SI - FP_OFF( notCurrentStπ pe ) , //DS:SI = source - notCurrentStripe
_DI - FP_OFF(notLeftStn pe ) : //ES:DI - dest = notLeftStπpe asm mov ex . wordsPerLine //CX = wordsPerLine asm stc //set carry before starting shift
//(data is inverted) next_rshift: asm lodsw //get a word from notCurrentStripe asm rcr ax. 1 //shift 1 bit right asm stosw //store shifted version in notLeftStπpe asm loop next_rshift //loop till done
//Merge data from notCurrentStripe. notPrevStripe, notLeftStπpe and
//notRlghtStripe to form edge-enhancement data edgeStπpe.
//
//Each bit in edgestripe is set to 1 if corresponding merged bits are:
// notCurrent - 0 AND (notLeft-1 OR notR1ght-l notLeft-1)
//
/ Thιs result bit is XORed with "dots off" bit in clearData to set correct
//polarity for printing when shifted to the head
//
//leave direction flag set for auto increment
_SI - FPJ)FF(notCurrentStrιpe): //DS:SI - source - notCurrentStripe _DI - FP_0FF( edgestripe): //ES:DI - dest - edgeStπpe asm mov ex. wordsPerLine //CX - wordsPerLine asm mov bx. 0 //BX - offset to notPrev. notLeft, & notRlght next_edge: asm mov dx, word ptr notPrevStripe [bx] //dx - notPrev OR notLeft OR notRlght asm or dx. word ptr notLeftStπpe [bx] asm or dx. word ptr notRlghtStripe [bx] asm lodsw //get word from notCurrentStripe asm not ax //flip it to normal polarity asm and ax. dx //AND it with mask bits in DX asm xor ax. clearData //XOR it with "dots off" bits in clearData asm stosw //store it in edgestripe asm add bx. 2 //Increment offset to next mask asm loop next_edge //loop till done asm pop es //restore original contents of ES
//trig logic analyzer: done computing edge stripe data outportb (LPT1. inportb (LPT1) & -0x02):
FUNCTION: getNextStπpe
PURPOSE: Fetches a stripe of raster data from the print buffer Builds array normalStπpe[] for shifting to head Builds arrays notPrevStπpeC] and notCurrentStrιpe[] for later use in computing edge enhancement stripe
USAGE: void near getNextStπpe (void) PROTOTYPE IN: local
ARGUMENTS : none
RETURN VALUE: none
CALLS: (macros)
<D0S.H> inportb( )
<D0S.H> outportbO
<D0S.H> FP_0FFO
<00S.H> FP_SEGO
AFFECTS: updates print buffer pointer bufPtr updates arrays normalStripe[] , notPrevStripeU and notCurrentStripe[]
void near getNextStripe (void) (
//trig logic analyzer: start computing normal stripe data outportb (LPT1. inportb (LPT1) | 0x02); asm push es //save contents of DS and ES asm push ds asm eld //clear direction flag for auto increment //throughout this routine
//Copy former contents of notCurrentStripeϋ into notPrevStripeC] // asm mov ax. ds //set ES to data segment DS asm mov es. ax
_SI - FP_0FF (notCurrentStripe) //DS:SI - source - notCurrentStripe
_DI - FP_0FF (notPrevStripe): //ES:DI - dest - notPrevStripe asm mov ex. wordsPerLine //CX - wordsPerLine asm mov bx. ex //BX - wordsPerLine (save a copy) asm rep movsw //copy data
_DS - FP_SEG (imagePtr); //DS:SI - source - imagePtr (current
_SI - FP_0FF (imagePtr): // (line of print buffer)
_DI - FP_0FF (notCurrentStripe); //ES:DI - dest - notCurrentStripe asm mov ex. bx //CX - copy of wordsPerLine next_from_buffer : asm lodsw //get word from bitmap buffer asm not ax //complement data asm stosw //store in notCurrentStripe asm loop next_from_buffer //loop till done asm pop ds //restore DS (current data segment)
//Copy/invert from notCurrentStripe[] (XORed with "dots off" data)
//to normalStripeU for upcoming shift to head.
// _SI - FP_0FF (notCurrentStripe); //DS:SI = source ---notCurrentStripe
J)I - FP_0FF (normalStripe): //ES:DI - dest = normalStripe asm mov dx, clearData //DX = "dots off" data - clearData asm mov ex, bx //CX = copy of wordsPerLine next_normal : asm lodsw //get word from notCurrentStripe asm not ax //complement it back to normal asm xor ax. dx //XOR it with "dots off" value 'asm stosw //store it to normalStripe asm loop next_normal //loop till done asm pop es //restore ES if (flipped) imagePtr -- wordsPerLine: //back up one line for flipped bitmap else imagePtr +- wordsPerLine: //advance one line for normal bitmap
//trig logic analyzer: done computing normal stripe data outportb (LPT1. inportb (LPT1) & -0x02):
}
// // FUNCTION: setStrobeEnergy // // PURPOSE: Sets timer value and mode to produce the correct duty cycle // value for the selected sub-stripe // // USAGE: void near setStrobeEnergy (int ss) // // PROTOTYPE IN: local // // ARGUMENTS: ss: sub-stripe number for which to set duty cycle // // RETURN VALUE: none // // CALLS: (macro) // <D0S.H>: outportbO // // (function) // DDSHW: Ana logO // // AFFECTS: none // void near setStrobeEnergy (int ss)
{ WORD pulseCount: //timer counter value for microstrobe on-t1me BYTE mode: //timer mode for microstrobe on-t1me WORD tHeadAverage; //average of recent head thermistor A/D readings 1nt i; //general -purpose counter
//grab new thermistor reading, stuff it via pointer to array //bump pointer for next time tHeadSample[tHeadIndex-H-] - Analog(HEAD_TEMP_AD): If (tHeadlndex >- 16) tHeadlndex - 0; //compute average of thermistor values for (tHeadAverage - 0. i - 0; i < 16; i++) tHeadAverage +- tHeadSample[i]; tHeadAverage >>- 4; //divide by 16
//use rolloffTable for lookup of microstrobe timer count and mode //corresponding to thermistor average and sub-stripe pulseCount - rolloffTable[tHeadAverage][ss]. count: mode - rolloffTable[tHeadAverage][ss].mode:
//update duty cycle period timer to constant rate outportb (DDS_TMR_345_CTRL. COUNTERJ. | STB_M0DE_2): outportb (DDS_TMR_4. (W0RD)PERI0D_C0UNT) : outportb (DDS_TMR_4. ( (WORD)PERI0D_COUNT) >> 8):
//updated duty-cycle on-time timer to looked-up on-time outportb (DDS_TMR_345_CTRL. C0UNTER_2 | STB_M0DE_1): outportb (DDS_TMR_5, pulseCount); outportb (DDS_TMR_5. pulseCount >> 8):
//, setup strobe control lines per looked-up mode word ou'tportb(HEAD_STROBE_CTRL, mode | 3); // set us mode, strobes enabled
}
// - ,.,- — — —
// FUNCTION: shiftStripe
//
// PURPOSE: Shifts a stripe of raster data to the printhead
//
// USAGE: void near shiftStripe (WORD near *pStripe)
//
// PROTOTYPE IN: local
//
// ARGUMENTS: pStripe: pointer to a stripe of data for the printhead
//
// RETURN VALUE: none
//
// CALLS: (macros)
// <D0S.H>: inportbO
// <D0S.H>: outportbO
// <D0S.H>: FP_0FFO
//
// AFFECTS: none
// — ——_____ void near shiftStripe (WORD near *pStripe) {
//trig logic analyzer: start shifting stripe data outportb (LPT1, inportb (LPT1) | 0x01); asm push ds //save contents of DS asm mov bx, leftWords //BX - offset in words to data for right part of head asm mov ex. pairsToShlft //CX - number of word pairs to shift out to head
_AX - FP_0FF (pStripe); //AX - (near) ptr to first (left) word of stripe asm add ax. bx //DI - AX + (2 * BX) asm add ax. bx // - ptr to of data for right part of head asm mov di , ax asm sub ax. ex //SI - DI - (2 * CX) asm sub ax. ex // =* ptr to data for left part of head asm mov si, ax // (may contain leading garbage) asm mov bx, 0 //BX - 0 - running offset to add to SI and to DI
// LOOP TO SHIFT 2 WORDS OF DATA TO HEAD (LEFT & RIGHT SIMULTANEOUSLY) // shiftTwoWords: asm mov dx, LEFT_HEAD_SR //port number for left head shift reg asm mov ax. [bx+si] //fetch a word asm out dx. ax //load left shift reg (no shift yet) asm mov dx, RIGHT_HEAD_SR //port number for right head shift reg asm mov ax, [bx+di] //fetch a word asm out dx. ax //load right shift reg (starts shifting) asm add bx, 2 //bump offset to next words of data
//Ifdef AMPR0_CM486II
//
// WAIT FOR SHIFT COMPLETE: SOFTWARE DELAY LOOP.
//
// MACHINE DEPENDENT. BUT FASTER THAN HARDWARE METHOD
// (REQUIRED FOR RELIABLE 2-INCH-PER-SECOND PRINTING WITH 4" WIDE HEAD)
//
// Delay just long enough so that I/O write to LEFT_HEAD_SR always occurs
// just after the HEAD_SHIFT_DONE signal from the XILINX gate array goes
// high. This must be determined e perically using a scope or analyzer.
// asm mov ax, 28 //loop counter (determined emperically) waitShiftDone: asm dec ax //dec counter asm jnz waitShiftDone //loop till we've waited long enough asm loop shiftTwoWords //END OF LOOP. SHIFT 2 MORE WORDS
//else
//
// WAIT FOR SHIFT COMPLETE: READ BACK THE LEFT_HEAD_SR SIGNAL IN HARDWARE
//
// MACHINE INDEPENDENT. BUT SLOWER
// (TOO SLOW FOR RELIABLE 2-INCH-PER-SECOND PRINTING WITH 4" WIDE HEAD)
// asm mov dx. DIGITAL_IN //Set port address for reading waitShiftDone: asm in ax. dx: //read (slow, since it waits for ISA bus) asm and ax. HEAD_SHIFT_DONE //is shift done signal hi yet asm jz waitShiftDone //loop if it ain't //endi f
// DONE
// asm pop ds //restore DS
//trig logic analyzer: done shifting stripe data outportb (LPT1, inportb (LPT1) & -0x01);
}
// —
// FUNCTION: startPCycleTimer
//
// PURPOSE: Sets up and starts print stripe timer for correct print speed
//
// USAGE: void near startPCycleTimer (double speed)
//
// PROTOTYPE IN: local
//
// ARGUMENTS: speed: desired print speed in inches per second
II
I'l RETURN VALUE: none
//
// CALLS: (macro)
II <D0S.H> outportb( )
II
II AFFECTS: Stripe timer (does not enable stripe IRQs)
// ——— void near startPCycleTimer (double speed) ( WORD Timer_count:
//compute counter value desired substripe rate
T1mer_count - (WORD) (DDS_TMR_SLOW_CLK / (speed * resolution * 3));
//program the timer to run outportb ( DDS_TMR_012_CTRL.
C0UNTER_0 I LSB_MSB | C0UNTER_MODE_2 | C0UNT_BINARY ); outportb(DDS_TMR_0, Timer_count) : outportb(DDS_TMR_0, Timer_count >> 8): }
//Ifdef TWO_R0LL0FF_MODES
FUNCTION: SetConstantRolloff GetConstantRol 1 off PURPOSE: SetConstantRolloff: Sets/clears constantRolloff flag. GetConstantRolloff: Returns value of the constantRolloff flag
If the flag is set, duty cycle is rolled off by a constant amount per degree F, unaffected by the Print Energy setting
If the flag is clear, duty cycle is rolled off by a percentage amount per degree F. based on the Print Energy setting. USAGE : void SetConstantRolloff (BOOL flag)
BOOL GetConstantRolloff (void)
PROTOTYPE IN: local ARGUMENTS: For SetConstantRolloff: new value for constantRolloff flag
For GetConstantRolloff: none
A RETURN VALUE: For SetConstantRolloff: none
For GetConstantRolloff: current value of constantRolloff flag
CALLS: none
AFFECTS: Energy vs temperature rolloff via value constantRolloff flag
void SetConstantRolloff (BOOL flag) ( constantRolloff - flag:
BOOL GetConstantRolloff (void) { return constantRolloff; } //endif

Claims

Further embodiments are within the following claims :
1. A thermal transfer foil comprising: a carrier film; at least one thermally activatable release coating on the carrier film comprising: at least one lacquer layer adhered to said release coating; a specular metal layer adhered to said lacquer layer, and at least one thermally activatable adhesive layer, said adhesive layer capable of expanding under heat and pressure to fill voids in a substrate during thermal transfer of said lacquer, metal and adhesive layers to transfer said metal layer and substantially retain its specular property after said transfer.
2. The thermal transfer foil of claim 1 wherein said adhesive layer includes a puffing agent.
3. The thermal transfer foil of claim 1 wherein said adhesive layer includes an adhesive substance and a microsphere-like puffing agent.
4. The thermal transfer foil of claim 3 wherein said adhesive substance includes two components, a first component providing brittleness to said adhesive layer and a second component providing ductility to said adhesive layer after thermal activation.
5. The thermal transfer foil of claim 4 wherein said two components are provided in relative amounts according to a ratio optimized for different types of images .
6. The thermal transfer foil of claim 1 wherein said metal layer includes aluminum.
7. The thermal transfer foil of claim 1 wherein said microsphere-like puffing agent comprises particles of a selected size.
8. The thermal transfer foil of claim 1 wherein said microsphere-like puffing agent is selected to expand at a selected temperature.
9. The thermal transfer foil of claim 1 wherein said microsphere-like puffing agent is selected to expand at a selected temperature and a selected pressure.
10. The thermal transfer foil of claim 1 wherein said microsphere-like puffing agent is selected from the group consisting of expandable microspheres of thermal foaming agents and microspheres including a shell that encapsulates a thermal expansion substance.
11. The thermal transfer foil of claim 1 wherein said lacquer layer is selected to protect said metal layer after thermal transfer.
12. The thermal transfer foil of claim 11 wherein said lacquer layer includes a pigment that alters light reflected from said metal layer to have an appearance of a metallic color.
13. The thermal transfer foil of claim 11 wherein said lacquer layer includes a pigment that alters light reflected from said metal layer to have an appearance of a selected color.
14. The thermal transfer foil of claim 1 wherein said carrier film has, on its side opposite to said release layer, a heat-resistive lubricating property.
15. The thermal transfer foil of claim 1 further including a heat-resistive lubricant deposited on said carrier film on its side opposite to said release layer.
16. A thermal transfer method for forming an image comprising: providing a thermal transfer foil comprising a carrier film; at least one thermally activatable release coating on the carrier film comprising, at least one lacquer layer adhered to said release coating; a specular metal layer adhered to said lacquer layer, and at least one thermally activatable adhesive layer capable of expanding under heat and pressure; providing a substrate; and delivering to said foil a selected amount of heat and pressure to form the image, said amount of heat and pressure thermally activating said release coating and said adhesive layer and causing expansion of said adhesive layer to fill voids in said substrate while substantially retaining the specular property of said metal layer after thermal transfer of said image to said substrate .
17. The thermal transfer method of claim 16 wherein said delivering step includes: delivering heat to a thermal line of pixels by a thermal printhead; exerting a selected amount of pressure between said thermal line of pixels and said thermal transfer foil positioned on said surface; and producing relative movement between said thermal line of pixels and said transfer foil and said surface while controlling energy delivered to said pixels according to successive lines of said image.
PCT/US1998/001416 1997-01-28 1998-01-27 Thermal foils for digital decorating Ceased WO1998032594A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU60411/98A AU6041198A (en) 1997-01-28 1998-01-27 Thermal foils for digital decorating

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US78957897A 1997-01-28 1997-01-28
US08/789,578 1997-01-28

Publications (1)

Publication Number Publication Date
WO1998032594A1 true WO1998032594A1 (en) 1998-07-30

Family

ID=25148055

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1998/001416 Ceased WO1998032594A1 (en) 1997-01-28 1998-01-27 Thermal foils for digital decorating

Country Status (2)

Country Link
AU (1) AU6041198A (en)
WO (1) WO1998032594A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493014B2 (en) * 2000-12-22 2002-12-10 Impress Systems Optical security device printing system
WO2004045868A1 (en) * 2002-11-19 2004-06-03 Newhill Technologies, Llc Digital thermal printing process
WO2007049070A1 (en) * 2005-10-24 2007-05-03 Peter John Hoggard Method & apparatus for sublimation printing
EP1970202A1 (en) 2007-03-12 2008-09-17 Brother Kogyo Kabushiki Kaisha Lettering tape, tape cassette, tape printer
CN108864978A (en) * 2018-06-14 2018-11-23 浙江驰怀烫印科技有限公司 A kind of remaining transfusion bag thermoprint colour band of no benzene kind solvent and preparation method thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215170A (en) * 1978-02-28 1980-07-29 Eurographics Holding, N. V. Metallization process
US4902364A (en) * 1988-08-02 1990-02-20 Dennison Manufacturing Company Heat transfer decorations with patterned metallization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215170A (en) * 1978-02-28 1980-07-29 Eurographics Holding, N. V. Metallization process
US4902364A (en) * 1988-08-02 1990-02-20 Dennison Manufacturing Company Heat transfer decorations with patterned metallization

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493014B2 (en) * 2000-12-22 2002-12-10 Impress Systems Optical security device printing system
WO2004045868A1 (en) * 2002-11-19 2004-06-03 Newhill Technologies, Llc Digital thermal printing process
WO2007049070A1 (en) * 2005-10-24 2007-05-03 Peter John Hoggard Method & apparatus for sublimation printing
EP1970202A1 (en) 2007-03-12 2008-09-17 Brother Kogyo Kabushiki Kaisha Lettering tape, tape cassette, tape printer
CN108864978A (en) * 2018-06-14 2018-11-23 浙江驰怀烫印科技有限公司 A kind of remaining transfusion bag thermoprint colour band of no benzene kind solvent and preparation method thereof
CN108864978B (en) * 2018-06-14 2021-02-02 浙江驰怀烫印科技股份有限公司 Large infusion bag hot stamping ribbon free of benzene solvent residues and preparation method thereof

Also Published As

Publication number Publication date
AU6041198A (en) 1998-08-18

Similar Documents

Publication Publication Date Title
EP0963656A1 (en) Digital decorating system
WO1998033318A9 (en) Digital decorating system
WO1998032594A1 (en) Thermal foils for digital decorating
KR101752353B1 (en) Method of manufacturing glossy effect and matte effect and partial reflection effect transfer paper or reflective paper and product Manufactured by the method
JP3404602B2 (en) Intermediate transfer recording medium and image formed matter
JP4392972B2 (en) Thermal transfer recording medium and image forming apparatus
JP2630715B2 (en) Partially matte transfer sheet
JP2004074422A (en) Transfer foil
JP2001030666A (en) ID card, apparatus and method for producing ID card
JP3896388B2 (en) Surface treatment apparatus and image forming apparatus
JPH06190999A (en) Makeup sheet
JP3433332B2 (en) Transfer sheet
JPS63130397A (en) Transfer foil manufacturing method
JP2002254833A (en) Thermal transfer image receiving sheet and method of manufacturing the same
JP2009214336A (en) Thermal transfer sheet
JPH04189200A (en) Uneven surface transfer foil
JPH07266589A (en) Indirect transfer method
JPH02281944A (en) Transfer foil for patterned hair line and transfer foil base material for patterned hair line
JP6774475B2 (en) Transfer sheet and decorations using it
JP5742518B2 (en) High-design in-mold transfer film and high-design in-mold molded product
JPH09123698A (en) Image forming body and manufacturing method thereof
JP2002307875A (en) Card having write-onceable writing area and method for manufacturing the same
JPH02160556A (en) Transfer of pictorial pattern to compact disk and transfer sheet
JP2020026089A (en) Protective layer transfer sheet, method for producing printed matter, and thermal transfer printer
JP2000052694A (en) Printed article, and its printing method

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM GW HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG US UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

NENP Non-entry into the national phase

Ref country code: JP

Ref document number: 1998532184

Format of ref document f/p: F

122 Ep: pct application non-entry in european phase