Method and Apparatus for Positional Reference in an Automated Manufacturing System

Applied within an automated robotic manufacturing system that includes additive manufacturing capabilities, methods and enabling devices are disclosed for achieving precise multi-dimension positional alignment among a plurality of diverse tools that are involved in collaboratively constructing a solid object. The enabling devices according to various embodiments include an automatically deployed contact sensing probe and a tool center point sensor that detects contact with tools in multiple axes. At least one disclosed method advantageously utilizes both sensing devices in complement.

FIELD OF THE INVENTION

This disclosure relates to achieving precise calibration of the positions of multiple robotic tools that move within a common build space of an automated manufacturing system.

BACKGROUND

In the field of additive manufacturing, a common technique involves building a solid object wherein materials such as heated thermoplastics are extruded from a nozzle in successive layers upon a starting surface or ‘build plate’. The relative position and speed of motion between the nozzle and build plate is controlled by electrical motors which are precisely controlled by a motion control computer. Generally, the process of building a solid object begins with moving the nozzle to within close proximity to the build plate and then moving the nozzle parallel to the build plate as material is extruded from the nozzle. This motion in parallel with the planar build is typically regarded as being in ‘X’ and ‘Y’ directions according to a Cartesian coordinate system. Ideally, softened plastic forced out of the nozzle tip as it moves adheres to the build plate and solidifies to form a 2D pattern of solid material exactly corresponding to where the nozzle has traveled. After completing all of the material deposition that corresponds to the first layer of the build, the nozzle and build plate are moved further apart (in the so-called ‘Z’ direction) and a second layer of material is similarly deposited atop the first layer. This process may be repeated numerous times (though each successive layer may exhibit a somewhat different pattern according to the outer contours of the object to be formed) eventually forming an object having substantial dimension in all three directions, X, Y and Z. Successive layers are most often deposited using a uniform layer height, which corresponds to the Z-axis distance by which nozzle and build plate become further separated with the completion of each layer.

In such a process, proper adhesion and formation of the first layer of extruded material is literally the foundation for a successful object build. Assuring a successful first layer involves careful control of such factors as build plate and extruder temperatures, extrusion rate and initial distance between the nozzle and build plate. The optimum parameters vary widely depending on what material is being extruded to form the part and what build plate surface material is to serve as the substrate for the build.

The flatness of the build plate and the consistency of nozzle-to-build plate distance (parallelism) over the range of X-Y motion are both crucial. Even a slight change (such as a fraction of a millimeter) in distance as the nozzle moves across the build surface can cause extruded material to form incorrectly in places. Where the nozzle is too far away, the extruded material can completely fail to adhere and simply follow the nozzle around while forming non-descript blobs and strings of material. In the other extreme, the nozzle may be pressed so close to the build plate that extruded material is splattered outward as it leaves the nozzle tip or may even be blocked from extruding if the nozzle is forced into contact with (or gouges into) the build surface. Accordingly, maintaining a well-controlled distance between nozzle and build plate is imperative for assuring safe operation and successful builds.

To promote adhesion of the critical first layer, it is common practice to start the first layer at a specific distance between nozzle and build plate surface that is different from the incremental Z-axis displacement used for all other layers. To mitigate the effects of possible unevenness in a build plate surface, a larger distance (such as 50% greater) may be employed in conjunction with an increased rate of material extrusion per unit of X-Y travel. This approach results in a larger and often less consistently formed bead of extrude material on the initial layer but goes a long way towards assuring a robust first layer upon which to build the rest of the object.

An alternative approach is also applied in cases where the surface evenness is not the primary issue and, instead, the first layer suffers from inherently poor chemical or molecular adhesion between the extruded material and the build plate material. Although adhesion-promoting surface treatments offer some improvement, a situation of marginal adhesion can also be improved by running the nozzle closer to the build plate for the first layer, helping ‘drive’ the extrudate into more intimate contact with the build surface or helping the relative motion draw the extrudate out of the nozzle.

In all of the cases described above, the vertical (Z-axis) positioning of the nozzle relative to the build plate must be precisely established during initializing of the motion control mechanism, regardless of how the motion control is designed and operated. As with most multi-axis motion control systems (except those with absolute position encoders), most 3D printers go through an initialization process upon each power up and before extrusion starts, initially perform a ‘homing’ procedure to reliably and consistently establish the starting positions of moving parts of the system. Once the so-called ‘zero position’ is detected, any motion controlling signals, such as impulse sequences to stepper motors (open loop) or servo with position encoder (closed loop), allow a controller to thereafter keep track of the moment-by-moment absolute positions of the controlled motion axes for as long as the motion control logic program continues to run.

This is especially necessary for systems that use stepping motors in an open loop implementation in which relative position throughout the build is tracked based on keeping count of pulses after a reference starting position has been established at the outset of the build. In such systems, no ongoing confirmation of positions is performed during the build.

In the motion control mechanism of an average 3D printer, the homing of the Z-axis establishes an initial distance relationship between the nozzle and the build surface so that the nozzle distance can be precisely controlled thereafter, especially for the first layer. This homing typically utilizes a ‘microswitch’ which utilizes an electrically conductive flexing spring to assure a ‘snap action’ actuation with minimal electrical bounce (mechanical hysteresis) and very consistent position detection along a single axis.

While this suffices in many applications, advanced techniques in industrial printers gives rise to a new set of challenges unmet by this common technique.

In particular, newer comprehensive manufacturing systems may employ both material-adding and material-removing tool heads moving within a common build space and acting cooperatively in the construction of a solid object. An example of a material-adding tool head would be a thermoplastic extrusion nozzle as discussed above. A given manufacturing system may employ multiple extrusion heads, each of which may be either of the pellet-fed or filament-fed types. An example of a material-removing tool head would be a milling or drilling head having a sharp rotating bit, or other such tool heads that separate material from a solid object being manufactured.

Whereas a material-adding tool head may deposit an object in a rough form and with some excess material, the material-removing tool may subsequently perform machining to, for example, cut a roughly formed part to a final precise dimension or refine the finish of the part, such as at a gasket surface, where the finished part must form a smooth, tight seal against another part when in use. Material-removal capabilities may also complement material-additive ones by removing a supportive web that was initially constructed by the additive process but is no longer needed later in the build after the additive build progresses far enough that a once-supported member becomes self-supporting. Furthermore, in situ material removal may intervene in such a manner at opportune times during the build and may reach some surfaces that would be occluded after the additive build is completed. Drilling, milling, abrasion or other processes may also be used to create more precise hole positions and outer surface finishes than is achievable by the additive process alone.

The advent of combined material-adding and material-removing implements in the course of a single build process gives rise to a crucial need for very precise calibration of the three-dimensional locations among all of the moving components within the build space of the manufacturing system. As both the ‘additive’ extrusion and ‘subtractive’ tool heads must act upon the same object being formed within the build space, a precise alignment among these divergent types of tool heads must be achieved to assure, in coordination with one another, that each acts upon the workpiece (the object being constructed) exactly where expected. In a finished object constructed by such a system, it would ideally be possible for an extruder-deposited surface to seamlessly adjoin a tooled surface without any obvious evidence of misalignment between the material-adding and material-removing implements—and for any combination where there may multiple additive tools or multiple removal tools.

DETAILED DESCRIPTION

Various non-limiting embodiments of the present disclosure will now be described to provide an overall understanding of the principles of the structure, function and use of the apparatuses, systems, methods, and processes disclosed herein. One or more examples of these non-limiting embodiments are illustrated in the accompanying drawings. The features illustrated or described in connection with one non-limiting embodiment may be combined with the features of other non-limiting embodiments. Such modifications and variations are intended to be included within the scope of the present disclosure.

The examples discussed herein are examples only and are provided to assist in the explanation of principles of the present teachings by way of exemplary apparatuses, devices, systems and methods described herein. None of the features or components shown in the drawings or discussed below should be taken as mandatory for any specific implementation of any of the apparatuses, devices, systems or methods unless specifically designated as mandatory. For ease of reading and clarity, certain components, modules, or methods may be described solely in connection with a specific figure. Any failure to specifically describe a combination or sub-combination of components should not be understood as an indication that any combination or sub-combination is not possible. Also, for any methods described, regardless of whether the method is described in conjunction with a flow diagram, it should be understood that, unless otherwise specified or required by context, any explicit or implicit ordering of steps performed in the execution of a method does not imply that those steps must be performed in the order presented but instead may be performed in a different order or in parallel.

In general, it will be apparent that at least some of the embodiments described herein can be implemented in many different embodiments of software, firmware, and/or hardware. The software and firmware code can be executed by a processor or any other similar computing device. The software code or specialized control hardware that can be used to implement embodiments is not limiting. For example, embodiments described herein can be implemented in computer software using any suitable computer software language type, using, for example, conventional or object-oriented techniques. Such software can be stored on any type of suitable computer-readable medium or media, such as, for example, a magnetic or optical storage medium. The operation and behavior of the embodiments can be described without specific reference to specific software code or specialized hardware components. As needed, software and hardware to implement the embodiments based on the present description may be readily developed with no more than reasonable effort and without undue experimentation.

Moreover, the processes described herein can be executed by programmable equipment, such as computers or computer systems and/or processors. Software that can cause programmable equipment to execute processes can be stored in any storage device, such as, for example, a computer system (nonvolatile) memory, an optical disk, magnetic tape, or magnetic disk. Furthermore, at least some of the processes can be programmed when the computer system is manufactured or stored on various types of computer-readable media.

Certain portions of the processes described herein can be performed using instructions stored on a computer-readable medium or media that direct a computer system to perform the process steps. A computer-readable medium can include, for example, memory devices such as diskettes, compact discs (CDs), digital versatile discs (DVDs), optical disk drives, USB flash drives or hard disk drives. A computer-readable medium can also include memory storage that is physical, virtual, permanent, temporary, semi-permanent and/or semi-temporary.

A ‘computer’, ‘computer system’, ‘host’, “server,” or “processor” can be, for example and without limitation, a processor, microcomputer, microcontroller, programmable logic controller, minicomputer, server, mainframe, laptop, or any other programmable device. Computer systems and computer-based devices disclosed herein can include memory for storing certain software modules used in obtaining, processing, and communicating information. It can be appreciated that such memory can be internal or external with respect to operation of the disclosed embodiments. The memory can also include any means for storing software, including a hard disk, an optical disk, floppy disk, ROM (read only memory), RAM (random access memory), PROM (programmable ROM), EEPROM (electrically erasable PROM) and/or other computer-readable media. Non-transitory computer-readable media, as used herein, comprises all computer-readable media except for transitory, propagating signals.

Although a controller or a programmable logic controller (PLC) may be referred to singularly herein, it should be understood that the functionality under discussion, such as that of a programmable logic controller (PLC) may be hosted as but one process in a computing platform that is performing other tasks or serving in other roles. The PLC may be hosted within a virtual machine environment, for example. Furthermore, any role of a controller or PLC discussed herein may also be distributed logically or physically. An action called for as part of a process may involve cooperative action among multiple processors, such as a ‘high-level’ computer providing a responsive user interface that communicates with an embedded processor that is dedicated to sustained real-time control of motion. Some or all of the processing steps may occur among one or more processors that are remote from the point of application, meaning that they are communicating with, but not physically collocated or integrated with, the motion control system or other components described below. To be clear, although many aspects described below refer to a ‘PLC’, the logic to be implemented is not confined to being programmed in the style of the IEC 61131 standard promulgated by the International Electrotechnical Commission. Furthermore, the electrical signal levels associated with typical PLC implementations may be relatively easily adapted to interface with, or be emulated by, other types of computing platforms.

A ‘computer’ or ‘processor’ acting upon programmed instructions that perform steps of a process that are internal (such as storing information in a memory or performing calculations) or external (such as by sending signals that cause specific movements of a motion control system) can be said to be ‘configured to’ or ‘adapted to’ perform the actions called for in the process by virtue of executing the programming instructions provided to it.

FIG.1depicts an enclosed additive manufacturing system100. System100is shown to comprise a motor-driven multi-axis motion control system120which controllably moves extruder head150relative to build plate130. Build plate130may refer to either a direct surface for initiating additive builds or may be topped with an intermediary sheet of material or a chemical coating. Accordingly, build plate130may also be referred to herein as a ‘build surface’ especially in reference to the topmost surface of the build plate plus any intermediary materials placed on top of it. The motion control componentry combined with extruder head150constitute an additive manufacturing system, that is, a form of 3D printer. Multi-axis motion control system120as shown creates movement along three orthogonal axes in an arrangement known as a Cartesian coordinate system wherein any point within the build space is referenced by a unique triplet of scalar values corresponding to displacement along three mutually orthogonal axes.

Extruder head150is shown to be attached to a carriage151that is controllably moved along the long axis of transverse beam125by the rotation of the shaft of an X-axis motor124. Typically, beam125will comprise one or more linear bearings facilitating the smooth movement of carriage151parallel to the long axis of beam125. Furthermore, beam125may house a lead screw (not distinctly visible in the diagram) which is coupled to carriage151by a precision nut, fixed within the beam125by rotary and thrust bearings and coupled to the shaft of X-axis motor124. The rotation of the shaft of X-axis motor124may rotate the lead screw which, in turn, will cause carriage151to move closer to or further away from motor124in a controlled manner. X-axis motor124is often a stepping motor but may also be an AC or DC servo motor with a shaft position encoder and/or tachometer operating in a closed-loop control mode to facilitate moving to very precise positions. Many such arrangements of motors, lead screws, bearings and associated components are possible and are commonly practiced.

Whereas the arrangement of motor124and beam125accomplish controlled movement of the extruder head150in what may be termed the horizontal X-axis in the print-space coordinate system, motors122A,122B and their respective columns123A,123B may use a similar arrangement of linear guides, bearings and lead screws such that Z-axis motors122A,122B controllably move extruder head150in a vertical direction, that is, closer to or further away from build plate130. More specifically, beam125may be attached to carriages (hidden) that couple to lead screws within columns123A and123B. As Z-axis motors122A and122B rotate their respective lead screws in synchrony, the entirety of beam125, X-axis motor124and extruder head150are caused to move upward or downward.

To accomplish yet another motion of build plate130relative to extrusion head150, a third motor, which may be referred to as Y-axis motor126may act upon a lead screw127to which the build plate130is coupled. The rotation of the shaft of motor126controls the position of build plate130. Build plate130may be supported by, and may slide or roll along, linear bearing rails such as rail128.

It should be understood that the arrangement of motors, bearings and such depicted inFIG.1is merely one example of achieving controlled relative motion between extruder head150and build plate130such that an object may be formed by the extrusion of materials through nozzle158. Various other arrangements are common and equally suitable as an embodiment in which the present teachings may be applied. For example, in some arrangements, the build plate may move in two horizontal axes while the extruder head may move only vertically. Alternatively, the build plate may only move vertically while an extruder head moves in two horizontal axes. In yet other arrangements, an extruder head may be coupled to a motor driven gantry that accomplishes motion of the extruder head in three (or more) axes while the build plate remains stationary. The present teachings are equally applicable to a wide variety of motion control arrangements, including those just mentioned as well as so-called ‘Core XY’, ‘H-bot’ and ‘delta’ arrangements.

In addition, it should be understood that, for simplicity,FIG.1excludes many fasteners, brackets, cables, cable guides, sensors and myriad other components that may be employed in the manufacture of such systems but which are not essential for explaining the principles of the present invention nor for describing the best mode thereof. Where linear guides and lead screws have been described, it should be understood that the present teachings are not limited to being applied to machines that use such mechanisms and that, for example, belt driven systems and gear driven systems are equally suitable for use and susceptible to the challenges that the present teachings address.

Extrusion head150is described in further detail below. In summary, the role of extrusion head150is to receive plastic in pellet form driven by bursts of air through a feed tube152and to melt the plastic and drive it out of the end of nozzle158in a continuous stream. Typically, plastic pellets are stored in a large external pellet reservoir102and provided to the extruder head150in small increments as needed. A detector (to be shown and described below) included with the extruder head150determines when additional pellets are needed and electrically controls the actuation of an air valve154which switches on a momentary burst of compressed air as provided by compressed air inlet155driving pellets from reservoir102towards extruder head150.

To accomplish the formation of a solid object in three dimensions upon the build plate130from extruded materials emanating from the tip of nozzle158, a control box160is provided with electronics, such as a microprocessor and motor drive circuitry, which is coupled to the X, Y and Z motors as has been described above, as well as to numerous sensors and heating elements, in the system120, some of which will be described further below in connection withFIG.2. Electronics within control box160also control an extruder motor, to be described below. Some examples of suitable control electronics which may operate within control box160are the RAMBo™ control board manufactured by UltiMachine running Marlin firmware and so-called ‘Smoothie boards’ executing open-source Smoothieware firmware.

A wide variety of3D printer control boards may be used. The primary role of such controller boards is to interpret sequential lists of positional commands, such as so-called G-code files and to output signals that drive the motors to implement the commanded movements. A G-code data file, or the like, describing the coordinate movements necessary to form a particular object may be supplied to the controller through connection of the controller to a wired data communications network via, for example, TCP/IP communications through an Ethernet connection or via a wireless network connection, such as ‘WiFi’ or IEEE 802.11 connection. A G-code file (or a data file, such as a file in STL format from which a G-code file may be prepared) may also be supplied on a removable flash memory card, such as an SD card, which may be inserted at SD card slot165on control box160.

For providing a human-accessible control interface, essentially all of the available control boards support an LCD display and user interface164, as is shown to be a part of control box160inFIG.1. The electrical power to drive the control box160and the motors sensors and heating elements of system120comes from a connection to electrical power lines162.

Build plate130is preferably heated to a controlled temperature, most commonly using electrical resistance heating elements (not visible in the diagram) which may be mounted under the bed and thermally coupled thereto. For this purpose, it is common to use a heating mat made of high-temperature-rated silicone rubber that has electrically conductive paths embedded within and is adhered to the bottom of the build plate. A temperature sensor, such as a thermistor is typically included to provide feedback to a proportional-integral-derivative (PID) controller which maintains a set build plate temperature by controlling the application of heating current to the heating mat. Such elements for heating the build plate are commonplace and need not be further described here.

The temperature within enclosure110may be elevated over typical room ambient temperature by the addition of yet other heating elements (not shown) or simply by the heat incidentally dissipated from build plate130. With a suitably insulated enclosure110, heat from build plate130may be fully sufficient to heat the interior of the enclosure to beneficial levels by convection alone.

FIG.2presents a view of a manufacturing system, simplified in comparison withFIG.1by having the enclosure and other components removed from view to facilitate explanation of an example context wherein the present teachings may be advantageously applied. For convenience, system100, labeled above as an ‘additive manufacturing system’, is preserved as such inFIG.2but it must be pointed out that system100has been augmented with other tool heads to constitute a system that is at least ‘additive’ in nature but may optionally apply other, possibly non-additive, processes as well. Henceforth, system100may be referred to as an instance of a more general ‘automated manufacturing system’ or a variation upon an ‘automated additive manufacturing system.’

Representing more recent systems,FIG.2depicts three tool head assemblies coupled to transverse beam125, one of those being pellet extruder head150, by attachment to carriage151, as was introduced inFIG.1. Additionally,FIG.2shows a filament extruding head261, attached to carriage251, as another material-adding mechanism. Yet another tool head, multi-axis machining head262, is coupled through carriage252to serve as a material-removal head operable within the same build space, and capable of acting upon the same constructed objects, as the two additive tool heads150and261. Machining head262may have many axes of motion and may provide, at its distal end, a turning spindle or chuck that holds a cutting tool such as a drill bit, router bit or end mill. It is in this context that the example implementations and descriptions of operation are set forth below but it must be understood that many variations are possible in the configuration of the manufacturing system, which exhibit, or exacerbate, the aforementioned challenges in multi-head and mixed additive/subtractive systems. For example, while three tool heads happen to be shown inFIG.2, two additive and one subtractive, any number and mixture of tool heads may be realized, subject only to the practical limitations of the motion system and the space available. Further, although the three tool heads shown can be configured such that all three carriages151,251,252either travel together as driven by motor124or are combined into a single carriage. It is possible to build a system wherein each carriage moves independently by different mechanisms or at separate times by a shared mechanism. Through a mechanical or magnetic latch (not shown), each of carriages151,251,252might be selectively coupled and decoupled to a leadscrew or belt inside of transverse beam125at various times to either be driven along the transverse bar125or to remain ‘parked’ at either end of the travel range, allowing motor124to selectively drive only one of the carriages at any given time. Another alternative arrangement may involve having the tool heads travel along separate transverse beams or be carried as payloads at the distal ends of several independent robotic arms. A single robotic arm, typically having multiple linkages connected by articulating joints and capable of program-controlled movement to specific coordinates within the build space, may be equipped to latch onto a specific tool head and apply its action to an object being built. Throughout all of these possible variations, the present teachings address the challenge of achieving and maintaining precise registration among a multiplicity and diversity of tool heads.

FIG.3is similar toFIG.2, but continues further to depict possible locations for additional components in accordance with some example implementations of the present teachings. In particular, each carriage151,251,252is shown to include, alongside the respective extrusion or machining apparatus, an ‘Auto-Z probe’ as will be explained shortly. In summary, each Auto-Z probe can be actuated under program control to extend downward beyond the tool with which it is paired. As will be explained, each Auto-Z probe can be deployed to detect contact when a force from another surface acts in line with its vertical shaft.

Aside from the Auto-Z probes,FIG.3depicts a ‘tool center point sensor’ (‘TCP sensor’)310which is preferably positioned to be accessible by each one of the installed tool heads (or at least able to be put in such position when being used for positional calibrations.) TCP sensor310appears inFIG.3to be roughly centered in the X axis (the axis of motion parallel with transverse beam125) and at one extreme of travel in the Y axis, assuming sensor310moves with the build plate in this specific example.

To be clear,FIG.3merely provides a reference overview to facilitate the explanations that follow and is not intended to limit the quantity, manner or location of where the Auto-Z and tool center point sensor components may be usefully deployed. Other attachment means and placements for coupling sensor310within the build space are possible.

FIGS.4A-4Bshows an example construction and placement of an Auto-Z probe in accordance with preferred embodiments of the present teachings.

More specifically,FIG.4Ais an exploded view showing the individual parts of an example pneumatically-deployed AutoZ-Probe assembly400. Compared to electric means, a pneumatic implementation lessens concerns over reliability at high temperatures within heated enclosures and near heated components. Nevertheless, the present teachings should not be construed to be limited in terms of employing pneumatic actuation or only providing linear motion.

The Auto-Z probe comprises a pneumatic actuator401, such as Model M-027-NR made by Bimba Ltd. which exhibits a 7-inch overall stroke. When air or other gas is supplied under pressure through port404on the upper end of actuator401, shaft406is thrust downward out of actuator cylinder402. Pneumatic cylinder401typically comprises an internal bore and a movable piston that slides within the bore and forms an essentially airtight seal with the walls of the bore. Shaft406is connected to the piston and is driven outward as pressurized fluid or gas enters the opposite end of the cylinder. More generally, actuator cylinder402may be regarded as an outer housing whereas the piston inside may be regarded as an inner member moved by influx of a fluid into the outer housing under pressure. According to the customary design of pneumatic actuator401, shaft406protrudes from cylinder402somewhat even when not pressurized. This stub end of shaft406is threaded and is attached to a sacrificial extension tube408, which is internally threaded to mate with external threads of shaft406. Tube408is threaded onto shaft406along with nut409which tightens against the top of tube408to secure it at a fixed location at the lower end of shaft406. Thereafter, shaft406and tube408move up and down as a single integral assembly whenever pressurized gas enters actuator cylinder402.

The lower end of tube408is capped with thumbscrew410, which provides an interchangeable tip to make contact with other surfaces. Thumbscrew410may be formed of metal and/or plastic, for example, and may offer a slightly curved or convex shape to ensure a consistent region of contact when approaching other surfaces, as will be described below.

The remainder of assembly400involves various mounting hardware for affixing actuator401to a tool head carriage and maintaining alignment of actuator401and tube408, withstanding high incidence of vibrations and sudden jarring motions of the attached carriage. As shown, mounting hardware includes mounting bracket422(Bimba Model D-775) through which the threaded end of cylinder402is inserted and secured using nut424. Due to the lateral inertial forces experienced in this application, an additional bracket420is fabricated and used to secure the top end of the actuator cylinder402. Finally, another bracket426is added to keep the lower end of tube408in alignment and assure consistent positioning of the probe tip when it is deployed downward. Bracket426may optionally be fitted with a bushing or linear bearing to transfer contact to tube408.

FIG.4Bshows how an example carriage151, bearing a pellet extruder assembly150, may be fitted with Auto-Z probe assembly400in accordance with a non-limiting example embodiment. Mounting brackets410,422,426are fastened to carriage151, generally with screws or bolts, such that assembly400is substantially vertically disposed and situated alongside, and parallel to, the respective tool or extruder mechanism borne by the carriage. As a further consideration in designing and positioning Auto-Z probe assembly400, the thumbscrew capped lower tip of tube408should extend below and beyond the respective tool, in this case the tip of nozzle158, when deployed downward for probing. Accordingly, the vertical positions of the mounting brackets may need to be adjusted or accommodated by correctly placed mounting holes within carriage151.

Where the tool attached to the carriage exhibits its own motion, as is the case with a multi-axis machining head, the placement of the Auto-Z probe should be with respect to a nominally known reference position of the tool tip, such as a ‘home’ position for the machining head. In any case, at the time the probe is to be deployed for detecting contact with surfaces beneath the carriage, the motion system of the machining head should ensure that the tool tip and other mechanisms of the machining head remain elevated above the level of the probe tip.

Where several tool heads are deployed at the same time, as was depicted inFIG.3, it is preferable that each Auto-Z probe attached to one of the carriages be positioned so that that it extends below ALL of the applicable tool tips when it is lowered to a probing position. In accordance with a preferred embodiment, when a selected one of the Auto-Z probes is lowered, that probe tube should momentarily become the lowest protruding member from the collection of carriages and implements riding along transverse beam125. This tenet facilitates the overall process of calibration to be described later below.

It is worth noting thatFIG.4Bintroduces one additional item that was not accounted for inFIG.4A, namely reed switch450. Reed switch450is attached to the side of actuator cylinder402to sense the position of a piston inside actuator401. Reed switch450provides a signal, such as a change in electrical continuity between wires451, as a function of whether the piston (and, hence, actuator shaft406) inside the cylinder is at a particular position. Reed switch450is preferably adjusted so that, when tube408is lowered, any upward displacement of tube408and thumbscrew410due to contacting a surface results in a change in electrical continuity across wires451. Reed switch450may be, for example, Model RHT from Bimba Ltd. which is suitable for use at elevated ambient temperatures commonly present inside enclosure110.

In general, probe assembly400, or a subset of parts thereof, may be said to constitute a contact probe comprising a contact-sensing element (such as switch450) coupled to move with an associated tool head by virtue of being mounted to the same carriage151as shown inFIG.4B.

FIG.5shows an example construction of a positional referencing sensor assembly500, a form of which was introduced as TCP sensor310earlier. Because of one mode of use that will be described below, sensor assembly500may be referred to herein as a ‘tool center point’ or ‘TOP’ sensor, for convenience. In summary, sensor assembly500as shown is designed and configured to detect contact with other objects in two ways. Contact with an external object approaching from above sensor assembly500is detected by overcoming a light spring pressure and actuating a small electrical switch. Contact with an external object approaching from the side of sensor assembly500is detected by electrical continuity between the object and the outer shell of the sensor assembly. Both of these techniques will now be explained. Much of the structure and selection of parts is driven by the need to reliably operate at high temperatures inside enclosure110.

InFIG.5, sensor assembly500is shown (in cross section) to comprise, in terms of gross structure, a mounting arm510and an upright post512, which is preferably cylindrical. These may be formed as a single piece or comprise an upright post512that threads into a hole in mounting arm510. Upright post512may be clamped or fastened in some fashion to mounting arm510. Upright post512may be mostly hollow or substantially solid and may or may not be equipped with a flange that facilitates mounting to mounting arm510. Many variations are possible while still achieving equally effective results and the example shown inFIG.5should not be construed to limit many possible designs that adequately enable the operating principles taught herein.

An electrical switch530is shown to be installed at the upper end of upright post512, preferably centered with the long axis of post512. One suitable switch for high temperature use is STM82A-HT2 made by Metrol Co., Ltd. Also placed at the top of post512and positioned to surround the protruding switch530is wafer spring531. Spring531may be, for example, similar to Part No. 1561T49 available from McMaster-Carr Supply Company. A hollowed shell520is shown to be inverted and placed over upright post512. Shell520is preferably cylindrical, preferably of a precisely known diameter, and preferably made of metal, such as aluminum, to conduct electricity, the significance of which will be explained below. Other electrically conductive materials or composite assemblies, such as metal plated polymers or metal coated insulators might also be used. It is contemplated that shell520may be created in other shapes having known dimensions but the rotational symmetry of the cylindrical shape simplifies processes or reduces the likelihood of error in some of the procedures explained elsewhere herein.

Shell520is preferably lightweight and principally rests upon spring531without actuating switch530when at rest. The stiffness of spring531, the mass of shell520and the position of switch530may be selected and adjusted in concert to assure that the weight of shell520is adequately opposed by the spring when at rest, yet a small external force applied downward to the top of the shell will actuate the switch and change the electrical continuity measurable through wires532connected to switch530. In this manner, the assembly explained thus far provides remote sensing of relatively low-force contact by any object to the top of sensor assembly500or more specifically upon shell520. Spring531serves as a force-applying member to counteract the weight of shell520and to prevent that weight alone from actuating switch530. Other compressible components, such as elastomers, alternatively shaped springs or other force-applying devices, such as linear motors, magnets or electromagnets might be adapted for use in this capacity. In any case, switch530or the like acts as a contact sensing element and it may likewise be said, by extension, that sensor500is a ‘contact sensing element’ by virtue of this ability to detect contact directed from above.

Shell520is kept centered on upright post512and out of electrical contact with upright post512by the use of elastomeric O-rings515, which are selected and placed to allow shell520to move up and down freely while allowing for negligible movement from side-to-side. In an alternative embodiment, other devices, such as conventional metallic linear bearings, might be used to keep shell aligned and capable of vertical motion, as long as an electrically insulative component is present somewhere to electrically isolate the shell from the grounded metal framework of the system100. Some alternatives for preserving electrical isolation of the sensor shell520include insulating mounting arm510from the remainder of the framework, constructing post512to be made of, or coated with, an insulating material. An insulative sleeve or bushing may suffice to keep shell520separated from post512while allowing for some vertical movement that allows switch530to function. Another technique might involve insulating the upright post215wherever it attaches to mounting arm510by using insulated (dielectric') stand-offs and washers around each of a plurality of fasteners. A signal wire536connects to shell520to provide for remote sensing of electrical contact with other objects, such as extrusion nozzles and end mills.

FIG.6depicts several conditions under which an Auto-Z probe400and a TCP sensor500are brought into operation. Under condition (a), Auto-Z probe400(shown attached to carriage plate151which also bears a pellet-fed extruder head150) is shown to be connected by a hose610to a source of pressurized gas (not shown) through a solenoid valve615. A digital pressure gage617is also shown coupled along hose610for monitoring the actuation pressure applied to deploy Auto-Z probe400. Note that, because the same source of pressure may be routed to multiple Auto-Z probe actuators which are individually deployed by other such solenoid valves, gage617may be connected before the solenoid valve615to monitor a manifold pressure that is common across all the probe actuators within a given system100. Pressure gage617preferably provides an electrical signal, indicative of the detected pressure conditions, for use by a data processor, as will be explained.

Condition (a) represents the ‘normal’ circumstance wherein no calibration activities are under way and the respective tool head (extruder head150) is either idle or is actively extruding material to form a part, with the Auto-Z probe retracted as not to interfere with the build process nor impede any flow of cooling air or cover gas being directed towards the nozzle or workpiece.

Condition (b) shows the Auto Z probe as having been extended downward or ‘deployed’. As mentioned before, the tip of the probe extends below the nearby tool or nozzle tip. The lowering of the probe tip to this position is accomplished by opening solenoid valve615(in turn, by application of an electrical signal from a computer or the like) so that pressurized gas enters the actuator cylinder and forces downward its interior piston, along with the probe tube. This condition may exist in preparation for ‘probing’, that is, slowly lowering the tool head in the Z direction while monitoring for contact of some nature.

Condition (c) represents bringing the lowered probe into contact with the top of the TCP sensor in accordance with a procedure that will be outlined in connection with process800.

Condition (d) shows the lowered probe coming into contact with the bed or build surface in accordance with a procedure that will be outlined in connection with process800.

FIG.7presents a schematic700to show how various switches and actuators may be connected to provide inputs and outputs to a controller, such as a computer or a programmable logic controller (PLC)710. Within PLC710, I/O connections are shown as a bank of digital inputs730and digital outputs740. In some implementations, these inputs and outputs may be directly compatible with 24 VDC. In other implementations, a controller serving in the role of PLC710may support TTL or CMOS signal levels, but it should be understood that these may be adapted by other interface circuitry (not explicitly shown) to accept other input signal voltages and to properly source and sink higher output currents as needed to operate in the context shown. Electrical supply line702is shown at a potential of 24 VDC with respect to a common (COM) or ground line704, though other supply voltages may certainly be used depending on what is compatible with the other components within schematic700to be described next. Any of the functions described below in terms of relays may be virtualized or emulated by general-purpose computing devices.

Throughout this disclosure, numerous switches (switch530and reed switch450) are shown as electrical switches by way of example, but the present teachings are not confined to electrical contacting switches, per se. As appropriate, these types of switches may alternatively well be optical in nature, using the interruption or establishment of an optical path that is detected by simple optical sensor and presented to controller710as an electrical signal. An interferometer or etalon may be used to achieve extreme sensitivity and precision. Alternatively, switch230may employ a magnetic-based principle, as with a Hall effect switch or a reed switch. Still other alternatives to simple electrical contacts include a strain gage couped to amplification and signal conditioning circuits, or capacitive- or field-sensing transducers. Subject to whether such devices are compatible with the elevated temperatures in a particular instance, the present teachings do not strictly preclude these or other alternatives.

Furthermore, where inputs to PLC710are shown inFIG.7, it may be appropriately said that a controller, in whatever form and whether interrupt-driven or by polling inputs, ‘receives’ or ‘processes’ or ‘detects’ such signals, corresponding to executing instructions within the processor to (a) update a value in a memory location that represents the input state to a software process, or (b) start a process, or (c) cause a branch in execution flow within the processor.

Referring to the topmost ‘circuit’, block719labeled as ‘SENSOR SHELL’ corresponds to the TCP sensor's electrically conductive shell520described earlier. Signal wire536connects to one coil terminal of electromechanical relay710. The other coil terminal of relay710is connected to supply line70and a transient suppression diode712is connected across the coil with the cathode being on the 24 VDC-connected terminal. When connected in this manner, contact between shell520any electrical conductor that is connected to ‘common’ or ground line704(which may be equivalent to chassis or earth ground) will energize the relay coil711. One such path to ground may be the tip of an extruder nozzle or a machining bit that is connected to ground via contact with a grounded carriage, extruder body, drill chuck or other implements. These are represented by720labeled as ‘Tool Tip’ which is depicted by an explicit ground connection721. Most parts of system100are inherently likely to be grounded but explicit grounding connections are also put in place to assure grounding on moving assemblies (especially as a return path for significant DC currents supplied to some moving electronics) and to bypass lubricated bearings and such where constant electrical continuity is not guaranteed. Grounding of tool heads is safer and far easier to achieve than providing for electrical isolation of a nozzle tip or machining tool tip. The use of intervening relay710allows for protecting input706from having a ‘long antenna’ exposure to potential electrostatic discharges, induced currents and incidental contact with other voltage carrying implements that may be in use within enclosure110. Furthermore, relay710reverses the sense of the detection so that an affirmative continuity is reflected as a positive-going signal to input706. Relay710also ensures significant current-handling ability through its contacts in case other relay-based logic needs to be connected in line with that branch. Relay710is preferably a fast-acting electromechanical relay. Alternatively, another type of component may be used in some instances, such as a solid-state relay, an optocoupler, or a PNP transistor circuit, to name a few.

The gap between block719and block720is depicted to be effectively the same as an electrical switch. When a grounded tool tip (block720) contacts the sensor shell (block719), a current path from 24 VDC to ground is set up through relay coil711. The operation of relay710closes contacts713which connects 24V to input706of PLC710, signifying that electrical continuity to ground has been detected at shell520. Within the processing environment of PLC710, the input state provided to input706may be known as, for example, ‘TCP_CONTINUITY’.

As another circuit branching from supply line702, limit switch530(introduced earlier) is shown to be connected between supply line702and input709of PLC input bank730. Within the processing environment of PLC710, this signal may be labeled, for example, ‘TCP_LIMIT’.

Shown below that, another switch, representing one of perhaps several Auto-Z reed switches450, is shown to provide a signal to input708of PLC bank730. As there may be several such inputs, this signal may be designated within the PLC logic environment as ‘AZ_REED_1’. Other reed switches from Auto-Z probes may similarly connect to other dedicated inputs and be referenced by uniquely assigned names such as ‘AZ_REED_2’,‘AZ_REED_3’, etc.

Moving down further inFIG.7, a digital pressure gauge760is shown to be powered by connections to supply line702and ground or common line704. Gauge760is connected to an air pressure supply line762that is used to pressurized one or more Auto-Z probe actuators401. The electrical signal produced by gauge760in response to pressure in line762is provided as input709to PLC710where it be referenced as ‘AZ_PRESSURE’ or the like.

PLC710is shown to provide one or more separate output signals (via digital output bank740) to control external electrically-activated components. As shown, a solenoid valve750(analogous to solenoid valve615shown earlier) is shown to be connected to output port742of PLC710. This connection is one of two connections to an electromagnet coil, motor or means within solenoid valve150that act to open valve721and allow flow of air through the valve. The other connection is shown to connect to supply line702. When connected in this manner, energizing current will pass through the solenoid coil when output port742is at a state that provides a path to ground, which in many conventions is equivalent to a logical ‘low’ or ‘0’ state. When interposed between a pressurized source and an Auto-Z probe actuator, valve721controls whether the Auto-Z probe is lowered as inFIG.6condition (b) (solenoid ‘on’) or retracted as in condition (a) (solenoid ‘off’). Therefore, the electrical state of output port742controls the deployment of an Auto-Z probe and there may be several probes (as inFIG.3:302,304,306) each controlled by a specific output port.

Though not explicitly shown, solenoid valve721may provide for an exhaust port by which pressurized air that has been applied to a given actuator can be relieved and vented once the solenoid valve turns off, thus allowing the actuator shaft to retract.

Turning toFIGS.8A-8C, an example process800explains one possible manner in which various components described thus far may be employed in coordination to accomplish highly precise tool-to-tool registration even in a build space being operated at elevated temperatures and involving components with widely varying coefficients of thermal expansion. A fully automated process is also highly desirable because avoids the need to ‘break containment’ of an elevated temperature enclosure. It should remain clear that process800is merely a non-limiting example and that some steps or actions described may be optional, may be repeated (such as for statistical analysis) or may be performed in a somewhat different sequence while still adhering to the key operating principles taught herein and falling within the scope of the presently claimed invention.

Process800may execute within or be coordinated by a computer, data processor, microcontroller or other controller, as symbolized by PLC710shown earlier or in a system that interfaces with, or subsumes the function of, PLC710.

Process800commences at step802upon the identification of a need to ‘calibrate’, in a sense, the locations of moving devices such as extruders and machining heads within the build space. It is worth reiterating that the conventional per-axis ‘homing’ switches (typified by switches280,281shown inFIG.2) that are prevalent in most 3D printers do not address several challenges introduced when multiple tool heads—especially a variety of additive and subtractive tool heads—need to operate on a common workpiece. These homing switches allow for some very general initialization and orientation for servo and stepper type motors, but have no role in sensing proximity or alignment among other components, especially when some other components exhibit have their own independent motion.

Step802may correspond to initial power up of system100at which time all moving components need to establish a reference from which all subsequent coordinate-specified moves are based. Step802may also signal commencement of calibration as requested by an operator of system100or programmatically during a build process to assure continued fine calibration even as a build proceeds and as increased mass or warping forces from a work piece underway may affect, for example, deflection of build surface or the system framework.

Step802may be initially performed or may be undertaken and possibly repeated once the interior enclosure110reaches a desired temperature. Step802may be engaged, for example, when a build has been suspended and enclosure110has been opened to allow an operator to access system100. After restoring the enclosure and allowing the internal temperature to recover, process800may be carried out to assure recalibration after the temperature swings. Various other events, such as nozzle changes, tool changes, or inadvertent collisions may all be reasons to repeat process800so that very precise intra-tool alignment (ideally to within 0.001″) may be consistently achieved in all three dimensions.

Throughout the description of process800that follows, any reference to performing a ‘move’—whether to achieve clearance or to bring one component into alignment with another—should be construed as involving whichever and whatever motions, in however many axes throughout system100, achieve the relative spatial relationship that is specified. Depending on machine configuration, calling for a nozzle or tool to be moved to a particular location may actually involve moving the bed in Y and moving the toolhead in in XZ. In an alternatively designed motion system, this same request might correspond to moving the tool head in XYZ while the bed remains stationary. If TCP sensor is hypothetically placed on some form of moving platform or articulating arm, for example, any calls for motion to achieve alignment with the TCP sensor may or may not require moving the TCP sensor itself. Motion paths are highly implementation and situation dependent. Accordingly, references to moving one part versus another are not to be construed in an overly literal or limiting sense.

Upon commencing process800with step802, execution immediately proceeds to step804whereupon coarse homing of all motor-driven axes is performed so that, with open loop systems that employ stepping motors, the displacement along an axis of motion at any point in time is determined by keeping count of the number of movement pulses that have been issued to the respective motor. Generally speaking, the act of ‘homing’ often involves moving slowly in a given direction until a limit switch detects when the moving stage has very nearly reached the end of its range of travel, and then declaring that location to be the ‘zero’ point from which all other positional offsets are measured. While this has traditionally been done in just three axes in a Cartesian coordinate type motion system, it has now become additionally important that any tool heads that have self-contained motion actuators must also perform their own initialization or homing procedure. It may be important in some designs to ensure that any subordinate tool head motion system (such as a 5-axis robotic arm) perform its own initialization first (or at least adopt low profile configuration) so that no unforeseen interferences or collisions occur as the more overarching motion system120performs its initialization.

Heretofore, the typical homing limit switches have been largely adequate when only one or two extrusion nozzles are used. In most legacy dual-extrusion printers, a pair of similar extruder drives and nozzles ride on a common carriage and are painstakingly adjusted to have identical elevation above the bed. Typically, the Z-axis homing point is chosen so both nozzles are right at the top of print bed when the Z-axis homing switch trips. This simple approach is insufficient for handing the variations in extruder types and the addition of independently movable tool tips on some heads. In contrast to traditional practice, the present teachings emphasize ways to orient nozzle and tools as a practice separated from the initial homing of a motor-driven axis within the motion system.

After the coarse homing activities of step804, step806is undertaken to assure that the bed or build surface is ‘flat’ and essentially level. ‘Flatness’ usually means that the bed is not warped and is acceptably planar. Levelness, more so than with respect to gravity, really means that the plane of the bed is parallel with a plane defined as the motion system moves in XY while maintaining a constant Z coordinate. Especially for smaller 3D printers, various techniques are known for testing bed flatness and performing ‘auto-leveling’ of the bed. In the present context exemplified byFIG.3, step806may involve extending an Auto-Z probe and utilizing its ability to detect of bed contact (seeFIG.6—condition (d)) as the means for taking Z-wise measurements at a variety of XY locations. If the bed needs adjusted to achieve flatness or leveling (or the bed unevenness needs to be charted and applied to motion calculations), step806includes these acts whether performed manually or automatically by methods that are machine- and operator-dependent and outside the focus of this disclosure.

After bed flatness has been assessed and dealt with in step806, execution moves to step808to select a particular tool head, from perhaps multiple tool heads in use, as the context for steps810through824that follow. Of course, if there is only a single tool head, such as a pellet extruder, installed in system100in a given instance, step808simply involves proceeding with the one tool head and step826will not return to step808. Otherwise, step808refers to selecting any tool head that has not already undergone steps810-824. Once a specific tool head is selected in step808, step810is performed to generally move the subject tool head into a position above the print bed. An acceptable position may be programmatically determined or may be operator influenced. This is in preparation for deploying Auto-Z probe to make contact with the bed, so an acceptable location will likely be one that ensures that the probe can reach the bed without having any parts of carriage(s) colliding with other objects, such as partially built workpieces resting on the bed. In step812, the Auto-Z probe is then deployed, such as by a controller (PLC710) causing an output port742to drive to a low logic state. This, in turn, causes solenoid valve750to turn ‘on’, allowing pressurized gas to flow into a corresponding actuator401is attached to a carriage as shown inFIG.6.

Step814involves moving the selected tool head towards the bed slowly while monitoring the condition of the actuator's reed switch450for a change of state indicating contact between the probe tip and the bed as depicted inFIG.6, condition (d). Upon contact, Z-axis motion is halted and the Z-axis positional coordinate is recorded (such as in the memory of PLC710) as a variable symbolized here by the label ‘AZBED’. Note that PLC710is hosted by, or in communication with, other processors or running processes responsible for issuing positional instructions to the motion control system. Accordingly, in various similar steps that follow, whenever process800refers to determining a position at which contact occurs, the same ‘controller’ (singular or collective) that issued movement commands to the motion control system is notified of the contact, ceases any further movement commands in the direction of the approach, and records the positional coordinate based on the most recently issued movement command.

Next, in step816, the toolhead may be withdrawn or raised in the Z-axis and then other axes of motion may be activated to result in the same probe tip coming into alignment above the approximate center of a TCP sensor500located somewhere within the build space and accessible to the tool head(s) when the appropriate motions are performed. As explained elsewhere, TCP sensor500acts an intermediary or mutual touch point among multiple components within the build space for establishing positional references.

In step818, the tool head is again lowered slowly along the Z-axis with its Auto-Z probe extended, meaning the corresponding solenoid valve750is energized. Unlike step814, however, step818requires monitoring a limit switch530for the earliest indication of contact. In accordance with preferred embodiments, the air pressure applied to actuator401applies sufficient force along tube408so that the upward force from spring531is overcome and limit switch530is actuated before a reed switch450on the probe actuator detects any shaft displacement. During this step, the actuation pressure is monitored and reported to the processor/controller (PLC710) by gauge760via signal input port709, along with the state of reed switch such as by signal port708. If either of these deviate unexpectedly before limit switch530detects contact, then an error may be raised and the processor may abort the calibration process and signal the machine operator. Assuming normal circumstances, the instant that limit switch530detects contact with the moving probe tip, Z-axis motion is halted and the Z-axis positional coordinate is recorded, such as in a data variable referred to as ‘AZTCP’. Upon reaching this point, step820is performed to retract the Auto-Z probe and optionally raise the tool head. To retract the probe, the PLC710can change digital output742to a high logic level (24 VDC) or to a high-impedance state so that solenoid valve750becomes deenergized.

As an aside with respect to step818, which merely presents one manner of operation, it is contemplated that several variations are possible while still accomplishing the overall goal of step818, namely determining a position at which the Auto-Z probe and the TCP sensor make contact. Depending on such factors as the actuator pressure used to extend the Auto-Z probe and the stiffness of the spring531within TCP sensor500, it may be possible to selectively ensure the actuation of reed switch450occurs without actuating switch530, contrary to what is depicted inFIG.8AandFIG.6, condition (C). This may be desirable in some instances and may be a static matter of design in implementing system100or may be dynamically changed for different tool heads or depending on the specific build. In the latter, controller710may exercise control over the pressure applied to actuator cylinder402which, in conjunction with spring531, influences whether switch530or switch450will ‘trigger’ first. Another possibility, perhaps implemented by series/parallel hardwiring or by logic operating within controller710, is to process both switch inputs according to a logical ‘OR’ or a logical ‘AND’ function. To be clear, the present teachings are not limited only to detecting the contact between an Auto-Z probe and a TCP sensor using switch530. Rather, the detection by any of these variations may generally be stated in terms of receiving a signal, from at least one sensor in the group consisting of a first contact sensing probe (via reed switch450) and the second contact sensing probe (via by switch530).

From the two measurements acquired thus far, AZBED and AZTCP, a difference can be calculated to establish the Z-offset between the bed surface and the top of the TCP sensor. Given changes in temperature and other factors, this offset (in contrast to conventional homing methods) is measured as needed rather assumed to remain fixed.

To build upon this data, step822is next performed to have the actual nozzle, tool tip or other implement (rather than the surrogate probe) positioned above the TCP sensor and to lower said tool tip until it makes contact with the TCP sensor and trips limit switch530. (Note that the actuator pressure and reed switch status are no longer of any concern during this measurement.) As before, the Z-axis motion is halted upon first contact between the tool tip and the TCP sensor and the Z-axis positional coordinate may be recorded within the processing environment (PLC710) into a variable called, for example, TTCP'. Thereafter, the subject tool head may be raised to provide clearance above the TCP sensor until other motion instructions are issued. It is worth emphasizing at this point that the process of touching the tool tip to the TCP sensor avoids the need to ever bring the tool tip into direct contact with the build surface, as would be potentially detrimental if the tool tip is an extruder nozzle at high operating temperature. Furthermore, sensing the contact based on a significant actuation force allows an extruder nozzle to be accurately located even if it is oozing extruded material.

Step824corresponds to calculating the Z-offset between the tool tip and the bed—notably without ever bringing the tool tip into contact with the bed and without having to equip either the bed or the tool tip with contact-sensing means. The tool tip (or nozzle) Z-offset may now be calculated by AZBED−(AZTCP-TTCP) or AZBED+TTCP-AZTCP, which will be the Z-axis coordinate at which the tool tip would just make contact with the bed. (It is assumed that an increasing Z-axis coordinate signifies raising a tool head away from the bed. If this sense is reversed, a very similar calculation will still provide the offset value.)

Having completed the Z-axis offset calibration for one selected tool head, step826is performed to determine whether any other tool heads remain to be similarly calibrated in the Z-axis direction. If not all tool heads have been calibrated in ‘Z’, then execution returns to step808to select another one of the as-yet-uncalibrated tool heads and then steps810through824are repeated using that selected tool head. Alternatively, if the determination is made in step826that all tool heads have been calibrated in ‘Z’, then execution proceeds, as indicated by connector ‘A’, to step830as shown inFIG.8B. Note that, once two or more tool heads with their respective tool tips have undergone Z-axis calibration as just described, a differential offset may calculated and be applied to assure uniformity when a given precise point on a workpiece is to be addressed by one tool head and then another. For example, assume that tool tip ‘A’ has a Z-offset of 2.00 mm and tool tip ‘B’, traveling on the same gantry as ‘A’, has a Z-offset of 1.20 mm. Thus, tool tip ‘B’ is 0.80 mm ‘lower’ than tool tip ‘A’. Thereafter, during a build, if tool tip ‘A’ is operating on the workpiece at a point that is at Z=52.00 mm and the program calls for tool tip ‘B’ to act on the point, the motion control system should elevate in the Z-axis by an additional 0.80 mm so that the point of action matches that of tool tip ‘A’.

Step830represents the start of calibrating tool center points in the ‘X’ and ‘Y’ directions, as is applicable within Cartesian-type motion systems as shown inFIG.1. Systems of differing designs (such as Kossel delta designs) may achieve lateral motion using different combinations of motor-driven motion but nevertheless require similar measures to achieve calibration in a similar plane. Furthermore, the locations such systems can reach may always be converted to or expressed in X and Y coordinates along orthogonal Cartesian axes, just as they are in the G-code command files that are typically used to program such systems. References to ‘XY’ motion in the steps that follow should not be construed to limit the process to only systems that use strictly X- axis versus Y-axis drives.

Once a particular tool head has been selected for calibration in step830, steps832through840are then carried out in the context of that tool head, specifically to calibrate each of several nozzles or tool tips with respect to the center of TCP sensor shell520and, therefore, with respect to one another. This will allow tools to interchangeably be indexed to a specific point of action upon an object being constructed. Step832involves moving the subject tool tip to a position that is away from the TCP sensor shell along the positive X direction, in line with the approximate center of the TCP sensor in the Y direction and lowered to a Z-axis coordinate that would place the tool tip at some distance below the top of the TCP sensor shell. The lowering is performed so that subsequent motion of the tool tip towards the TCP sensor will eventually result in the tool tip making contact with the TCP sensor shell.

This action may be best explained by briefly referring toFIG.9. Here a tool tip (or nozzle)901is shown to at first move away (depicted by arrow910) from a position where it might be directly above the TCP sensor shell and then, once clear underneath, is moved in a downward motion (depicted by arrow911) so that the bottom of the tool is somewhat below the top of sensor shell520by a specific distance ‘d’. (This maneuvering is made possible in part by the offset calculation performed during Z-axis calibration as shown inFIG.8A.) InFIG.9, tool tip901is shown to be connected to at least a chassis ground902. For demonstrating continuity detection, a lamp905and battery906are shown connected in series and between TCP sensor shell520and chassis ground. With tool tip901positioned as shown in the leftmost sketch, there is no completed circuit and lamp905remains unlit. The middle sketch inFIG.9describes that, once the tool tip is placed below the level of, but away from, the TCP sensor shell, a lateral motion (depicted by arrow903) may commence to move the tool tip towards the shell while monitoring for electrical continuity. The far right sketch depicts the instance, during this lateral motion, that the tool tip indeed makes contact with the TCP sensor shell and completes the circuit through the chassis ground, allowing current to flow and causing lamp905to illuminate. As applied within system100, of course, the power source is supply line702instead of battery906and the load is relay coil711instead of lamp905.

As another way of stating the conditions for a lateral approach, especially as expressed in Cartesian coordinates, the tool tip must first be brought to a distance in Z above the plane of the build surface such that a parallel plane defined by moving the tool tip in the other two axes, X and Y, intersects with shell520. This is satisfied when the tool tip is set at a Z coordinate that places it just below top of shell520as shown inFIG.9, whereupon the appropriate movement in the other two axes is assured to achieve contact between the tool tip and shell520.

Returning toFIG.8B, step832corresponds to the action that was depicted by arrow911and912, with the further constraint that the tool tip comes to rest displaced from the TCP sensor in a positive X direction but approximately aligned with the TC sensor in the ‘Y’ direction. This is better understood by referring toFIG.10A.

FIG.10Ais a conceptual overhead view (not to scale) showing TCP sensor shell520and the approach direction and eventual contact of a tool tip coming from different directions, as will be called for in various upcoming steps in process800. In relation to step832,FIG.10Ashows a tool tip at an initial position1010where it is roughly aligned with TCP sensor in the Y direction, (that is, starting at Y_TOOL_TIP=Y_TCP) displaced by some distance away from the TCP sensor by a distance—sufficient so that the tool tip can be lowered without impacting the top of TCP sensor shell. Once the tool tip is brought to this initial position1010then, in step834, the tool tip is moved towards the TCP sensor shell by moving in the negative X direction. This motion continues until continuity is detected, meaning that, referring back toFIG.7, relay710is energized and changes the state at input706of PLC710. When tip-shell continuity is detected, X-axis motion is instantly halted and the tool tip stops at final position1012. The X-axis coordinate where this occurs is recorded as a value labeled as X1, which may refer to a memory location or stored variable within a controller or the like represented by PLC710. Once this measurement has been acquired, step836is carried out to safely draw the tool tip away from the TCP sensor shell and reposition it to another starting position1020, this time displaced from the shell in a negative X direction.

Analogous to step834, step838involves moving the tool tip toward the TCP sensor shell—this time in a positive X direction—until continuity is detected. As soon as continuity is affirmed, the X-axis motion is immediately halted, so the tool tip ends up at location1022. The X-axis coordinate where this occurs is recorded as the value of X2.

Once both X1 and X2 measurements have been acquired, then step840is executed to calculate a so-called ‘center point offset X’ which is the hypothetical X-axis coordinate at which the tool tip would exactly align with the X-axis center of the TCP sensor shell. This offset mainly finds use once all other tool tips have been similarly aligned to the TCP sensor, because then all of the precise tool-to-tool or ‘differential’ offsets can be calculated—even across a mixture of extruders and spindle-mounted tool tips.

It is important to highlight that, due to the symmetry of the shell, the X1 and X2 measurements may precisely find the X-axis centerline of the TCP sensor shell even if the tool tip approach path is not perfectly aligned with the TCP sensor shell Y-axis centerline. An optional further procedure, as set forth in step844, may be performed wherein the approach from both X directions shown inFIG.10Amay be repeated at slightly varying Y-axis coordinates until the absolute difference between X1 and X2 is maximized. Some refinement of the ‘center point offset X’ may be realized by seeking this maximum. Once this maximization is found then it is likely that the final positions1012and1022are diametrically opposite one another and separated by a distance that is the sum of the TCP shell diameter and the tool tip diameter. Based on this, another optional procedure, presented as step846, may be executed to calculate effective radius of the tool, which is mostly important for spindle-mounted cutting bits because the point of engagement with a workpiece will often be from the side of the bit.

If the optional steps844and846are deemed unnecessary in a given application, such as where tool radius is unimportant to measure, then decision step842causes execution to move to step850shown inFIG.8C. Otherwise, if there is value to assessing tool radius or if the simplified Y offset measurement process of steps870-874is preferred over that of steps850-858, then step842is decided in the affirmative to proceed with steps844and846, thereby making steps870-874available. Once steps844and846have been performed and the tool radius is known, it is still possible to use the tool radius data as just that and still opt for the more complex bi-directional Y-axis calibration of steps850-858. Hence another decision step848represents the election of either the bidirectional approach via connector ‘C’ or the simplified unidirectional approach via connector ‘D’. Note that decision block848may also represent a design decision rather than an ‘on-the-fly’ runtime decision. A given implementation of system100and particularly software or firmware within controller (PLC710) may not even include a provision for steps870-874. An alternative implementation of system100might always perform steps870-874and have no provision for steps850-858. These choices are left to a designer, programmer or user and are not presented to imply that the present teachings are in any way limited to one or the other choice, that both choices must be made available, or that the choosing shown in step848must be, or must not be, performed dynamically while the system is operating or engaged in a build.

Turning toFIG.8C, the two approaches for measuring to find the ‘center point offset Y’ are presented. Steps850-858resemble the procedure described for the X-axis in steps832-840and are pictorially represented by tool positions1030->1032and1040->1042inFIG.10A. Steps850-858determine the Y offset without requiring the tool radius or without utilizing the tool radius even if it was electively calculated by execution of steps844and846. In contrast, steps870-874provide a somewhat simpler determination of the Y offset made possible when the tool radius has been calculated in steps844-846. This is pictorially explained inFIG.10B.

InFIG.10B, the positions and approach paths depicted by1020-1022and1030-1032are the same as presented and explained in connection withFIG.10A.FIG.10Balso shows, as withFIG.10A, a Y-axis approach from position1030-1032(see step870). Upon detecting continuity and halting travel at position1032(see step872) , the ‘center point offset Y’ is calculable because both the tool radius and the TCP sensor shell radius are precisely known. As shown in step874, the ‘center point offset Y’ is the Y-axis coordinate of the final tool position1032plus the tool radius plus the TCP shell's known radius. Alternatively, if the approach were made from the positive Y direction, then the ‘center point offset Y’ would be the Y-axis coordinate of the final tool position1032minus the tool radius and minus the TCP shell's known radius.

Throughout the above explanation surroundingFIGS.8,9and10A, the establishing of a central X offset, first by an approach from positive X then from a negative X direction, is just a non-limiting example. The sense of X and Y may be reversed while still accomplishing the end result of determining the X and Y coordinates at which a nozzle or tool tip would align with the center of the TCP sensor shell. The Y-axis measurement may take place first using steps832-840, followed by the X-axis determination of the later steps, including the option to determine tool radius and utilize an abbreviated determination for the latter axis. Furthermore, the directions of approach that are depicted as following strictly one axes or the other are shown by example, to simplify the explanation and may, in fact, be preferred for practical reasons. The approach toward the TCP sensor may be along any azimuth, a linear combination of motion in both lateral axes or, in some systems, driven along one of several non-orthogonal axes. After a first measurement has been made analogous to step834but using an off-axis approach azimuth, then the complementary approach called for in step838should ideally come from an exactly reverse direction, meaning180degrees different from the first approach azimuth. The sequence order of approaching from positive and then approaching from negative may also be reversed and the example sequence of positive-then-negative approaches should not be taken as limiting the scope, nor the range of possibilities contemplated by, the present teachings.

While a singular TCP sensor arrangement has been shown by way of example, it is contemplated that in complex multiple head systems it may be challenging or impractical for all tool heads to reach the same TCP sensor. The principles set forth herein may nevertheless be extended to provide highly precise positional calibration using multiple TCP sensors by ‘chaining’ the calibration measurements. For example, assume that a given system employs two TCP sensors, TCP1 and TCP2, and five tool heads, named A,B,C,D and E. Further assume that TCP1 Is reachable by heads A, B, C and that TCP2 is reachable by heads C,D,E. The ability of head C to calibrate to both TCP1 And TCP2 using the presently disclosed techniques enables heads A, B to be become precisely registered to heads D, E in terms of mutual offsets in XYZ.

The explanations offered so far assume that a tool or nozzle contacting the TCP shell is radially symmetrical. Where a given nozzle is cylindrical or conical at its tip but transitions to, for example, a hexagonal shape for being turned by a wrench, a specific depth ‘d’ shown inFIG.9is carefully chosen to ensure contact with the round part of the nozzle. Because nozzle shapes and depth of insertion into an extruder barrel can vary, it may be desirable to dynamically calculate (within a controller) the depth ‘d’ in view of the Z-axis offset measured for the given nozzle in steps810-824.

For some spindle-mounted tools, such as fluted end mills and router bits, the cut they perform may be perfectly symmetrical but these tools may come to rest in random positions and give misleading or highly variable positional data. They may come to rest such that the TCP sensor shell nestles into a flute rather than at the outermost cutting edge. A procedure may be adopted for repeated cycles of approaching the TCP shell after allowing the spindle to turn and then come to rest each time. Over several measurement cycles, the touch that occurs furthest away from the nominal TCP center is likely indicative of the effective radius of the tool.

FIGS.11A-11Epresent a sequence of conceptual sketches as part of a ‘walk through’ example of how to apply calibrated offsets that have been obtained as described herein. All of these sketches are overhead views of a build surface130along with superimposed features representing the locations of tool tips and a TCP sensor along X and Y axes. Locations in these views are referenced to the lower left corner, with more positive X coordinate values corresponding to movement of a nozzle or tool from left to right relative to the build surface shown. More positive Y coordinate values correspond to bottom to top movement of a nozzle or tool within this view. These sketches present example coordinates but are not drawn to scale.

FIG.11Ashows some approximate nominal locations of some components as determined by the design and construction of the system. Shown superimposed above build surface130, a collection of nozzles or tool tips are shown at rest after a homing procedure has been completed in both build X and Y directions. For the purposes of this example, the collection comprises the pellet-extruder nozzle150, the filament extruder nozzle261and a spindle-mounting tool tip263as were first shown inFIG.3. Any other complement of tools could be similarly used. Furthermore, as depicted inFIG.3, it will be assumed that these tools move together in X and Z axes because they are mounted to a common part of the motion system, all moving along transverse beam125. The particular design of the system shown by example inFIG.3accomplishes Y-axis movement by moving the build surface. Thus, any movement in Y is identically applied as the same movement, relative to the build surface, for all three tools. For simplicity, then, this example provides that all three tools are moved together as a cluster1102. In alternative systems, the tool tips may be decoupled to move independently in one or more axes, but the present teachings would still be applicable and advantageous nonetheless.

FIG.11Aparticularly portrays that the nozzles are approximately150mm apart and that, in comparison to the home position (at which nozzle150is considered to sit at X=0, Y=0) a referential contact sensor, TCP sensor500, is shown to be situated with its center being offset approximately 520 mm in X and 900 mm in Y. In other words, upon directing the motion control system to move to coordinates [X520.0, Y900.0], cluster1102would move relative to build surface130to bring nozzle150directly in line the approximate center of TCP sensor500(assuming adequate clearance is provided in the Z direction.) While these approximate offsets suffice for coarse positioning needed to carry out the steps of process800, these offsets need to be much more precisely known, especially at a given operating temperature, to achieve alignment among multiple tools addressing a particular point on an object being manufactured.

FIG.11Bdepicts the situation of having completed process800for each of the three tool tips. For and having calculated XY offsets1115,1117,1119for each of the tool tips150,261,263, respectively, each of which is relative to the inferred center coordinates of TCP sensor500(see step840).

FIG.11Crepresents a conversion of offsets expressed with respect to TCP sensor500into lip-to-tip' differential offsets. A first set of XY offsets1120are calculated from the TCP offsets as shown, so that the offset of tool261is determined relative to tool150. Likewise, XY offsets1122pertain to tool263relative to tool150. The value of this approach will become more apparent in view ofFIGS.11D and11E.

FIG.11Ddepicts a situation in which the motion control system as brought tool150(extrusion nozzle150) into a position referenced by coordinates [X=500, Y=500]. Tool150may extrude material at this point, and perhaps a series of other points in succession. After tool150has performed the necessary actions, another tool261may be called next to act upon the particular location or upon nearby locations with highly precise registration to the processing that tool150has applied at the particular point.

Accordingly,FIG.11Edemonstrates how a different tool, tool261, may move to the exact same location previously covered by tool150, simply by moving to coordinates that are the same as before but with the addition of tool-to-tool offsets1120. Thus, where a higher level plan calls for performing an operation, such as an additive process, at a particular XY point and then for a different operation, such as drilling, at the same XY point, the tool switch is effectively performed (such as by a controller associated with the system) by shifting the XY coordinates that are sent to the motion control system. In fact, a sequence of positional commands references may be shifted by a given offset vector for as long as an alternative tool selection is in effect. InFIG.11E, tool261is brought to bear on the subject point [X=500,Y=500] by shifting the movement of the ensemble cluster1102such that the first tool tip, though presumably inactive, hovers over X=353.06, Y=497.47. These are the coordinates issued to the motion control system to implement tool261being at the target location for action ([X=500,Y=500]) rather than tool150.

FIG.12presents a generalized diagram1200of a computing ‘ecosystem’1202showing a variety of computing contexts which may be applied, collectively and in various combinations, to implement aspects of the present teachings. The right side of diagram1200also shows the peripheral components that act on signals from, or supply signals to, whatever computing entities are involved in carrying out the automated manufacture role of system100, including a calibration process, such as process800, in accordance with an embodiment of the present teachings.

Throughout the description ofFIG.12, it should be considered that a role performed by any logical processing entity depicted here may, in reality, be subsumed within or hosted by another of the processors shown. Conversely, certain activities depicted as being encompassed within a given logical processing context may actually be implemented as a process executing in a separate subordinate processor that is communicating with, and acting as an extension of, the processor shown.

For example, computing ecosystem1202is shown to comprise real-time motion controller1220which principally serves to send signals to motor drive electronics represented by X-axis drive1221, Y-axis drive1222and Z-axis drive1123. These instances of drive electronics respond to signals from the real-time controller to cause the motors to move in a controlled fashion. These drivers may, in a sense, amplify and condition the comparatively weak signals from the controller, providing substantial power to drive the motors, such as stepper motors and servos. Drive electronics may also interpret single directional pulses from a controller into specific, more complex output signals needed to achieve the incremental motion. In the case of stepper motors, drive electronics must maintain the on-off or polarity state for multiple sets of motors windings and determine which output lines must change state to provide a single increment. Servo drivers must apply well formed current pulses or phase adjustments within a feedback loop to accomplish the motion requested by a pulse from a controller.

Where extruders are being used to deposit material and the extrusion must closely synchronize with the motion of a nozzle being moved by one or more of drives1221,1222the extruder motors are also coupled to receive motion signals from controller1220. The arrangement described thus far is typical of many 3D printers.

Controller1220is also shown to receive input from a collection limit switches1226(see switches280,281) which serve to provide a reference during the homing initialization described earlier. Limit switches can also be placed at extremes of allowable travel to prevent motors from inadvertently driving components past their permitted range of motion and causing damage to the machinery.

The real-time controller1220dispenses precisely timed signals to assure coordinated movement among multiple axes and to also carry out controlled acceleration and deceleration. The ‘real-time’ aspect relates to having to emit movement signals at a very steady rate to multiple axis ‘channels’. If such a controller were to be momentarily sidetracked with some task, such as servicing a user interface, this could cause a momentary disruption in movement and could cause one or more axes to skip pulses and loose positional integrity. A real-time controller is specifically designed and programmed to prioritize its generating of timely and synchronized output signals above all other activities.

The combination of real-time motion controller1220with the drive electronics, motors and the motive parts of system100that move in response to the motors may be referred to as ‘motion control system’. In many cases, a real-time motion controller1220receives positional commands from a superior controller or process of some nature as indicated by communicative connection1229. Positional commands essentially tell the controller1220what coordinates to move to but delegate to the controller the task of determining what temporal sequence of signals must be generated to accomplish the requested positioning. Of course, communicative connection1229may actually be a wired connection, communication over a serial or parallel bus or data network or may simply amount to function calls or inter-process communication if the real-time controller function is hosted on the same processor that is also performing other roles within ecosystem1202. Real-time motion controller1220must communicate ‘upstream’ to a requesting process when it has successfully completed a move and is ready to handle a next request. Controller1220is often designed to buffer a series of upcoming commands to provide for some ‘look ahead’ processing and acceleration planning.

Note that real-time motion controller1220maintains the last known positional coordinate along each motive axis as part of calculating how to reach subsequently requested coordinates. Controller1220may also be queried by another entity (such as controller1230along link1229) for the current positional coordinates of the motion control system along one or more axes. This ability enables the recording of the then-current positional coordinates as called for in steps818,822and elsewhere in process800. These values retrieved from controller1220may be, for example, stored as data values1235within memory1234.

Personal computer (PC)1210represents a typical desktop or laptop that supports user interface devices1215such as display or monitor, a keyboard, touchscreen, mouse, etc. Communicative connection1212shown between the PC and the interface devices may a mixture of wireless, wired cable or internal bus connections. PC1210is often the environment in which a human user creates or manipulates a model of an object that is to be manufactured using system100, essentially by invoking the capabilities of various components on the right side of diagram1200. PC1210may run applications that accomplish such3D design as well as other software that ‘slices’ an object model to yield a layer-wise sequence of G-code for controlling the motion axes via real-time controller1220. In some implementations, PC1210may be capable of directly communicating with real-time controller1220and causing motion to occur responsive to instructions originating from PC1210.

PC1210may also be a host for a software developer to author software to generate models, G-code instructions or even software or firmware to be loaded and executed by other processors in ecosystem1202. PC1210should be understood to comprise a typical complement of data memory, non-volatile data storage, a central processing unit (CPU), an arithmetic logic unit (ALU), display subsystem, input/output interfaces, etc.

PC1210is shown to be communicatively coupled, via ‘connection’1211, to yet another processing context, embedded controller1230. As with any of the similar connections depicted in diagram1200, connection1211may be a wireless link, communications over shared bus or a point-to-point data communication link, transport via data network, the physical passage of removable data storage media from one device to another, or even inter-process communications or API invocations if the entities shown connected are, in reality, hosted on the same physical processor or logic processing environment. Embedded controller1230represents the type of small controller (such as Arduino or Raspberry Pi systems) that is integral with a given system100, such as control box160introduced earlier. Controller1230typically supports a limited user interface such as a small LCD screen and a small dial or a limited quantity of pushbuttons. In some implementations, the functions of real-time controller1220may integrated into embedded controller1230, requiring careful design of firmware to meet the demands of real-time control.

Embedded controller1230is shown to comprise common computing components communicatively coupled through a shared bus1239, such as core CPU/ALU1233and user interface peripheral adapter1232. Adapter1232allows CPU1230to provide display, such as through an LCD screen, and to receive inputs from a user. CPU1230may present menu options via the display and receive user selections thereof.

Controller1230is shown to comprise communication interface1231which may correspond to USB ports, Ethernet connections and the like. Note that, despite being considered a ‘mountable drive’ more akin to non-volatile storage1236, an SD card reader may also be supported as a form of transporting data to the embedded controller1230, such as by carrying G-code, software, settings or other data from an external source like PC1210.

Controller1230comprises memory1234, which may be typically characterized as volatile RAM providing fast access by the CPU for storing runtime variables data and for ‘loading’ and executing software instructions. For even better performance, some cache memory may reside within CPU1233. Volatile RAM is so named because it preserves data contents only for as long as electrical power is maintained to controller1230. Memory1234may hold, for example, data values such as recorded coordinates and calculated offset data stemming from the operation of process800and as described inFIGS.11A-11E.

To preserve long-term data, such as executable instructions that must be loaded and executed after each power-up, controller1230also comprises storage or non-volatile memory1236. In larger computers, such as PC1210this type of storage is typically fulfilled by so called hard disc drives and, more recently, by solid state drives. In smaller embedded systems like controller1230, however, the nonvolatile storage is frequently implemented using onboard flash memory, similar to the technology currently used in SD cards and USB sticks or ‘thumb drives’.

Shown within storage1236are two ‘images’ of executable programs, one being calibration routine1240and the other being PLC emulator1242. Either of these data images may have been copied into storage from, for example, a SD card, thumb drive or other removable computer-readable media, or by download from PC1210or from a remote computer over a data network, such as a server accessible via the Internet. Calibration routine1240comprises instructions that, when loaded into runtime memory as image1244and executed by CPU1233carries out the steps of process800involving, as necessary, controllers1220and1250. PLC emulator1242corresponds to a process or application for emulating the behavior and interfaces typical of traditional programmable logic controllers (PLCs), characterized by being programmed according to the IEC 61131 standard. In preparation for execution, if invoked, this stored program is ‘loaded’ into memory1234as runtime process1246, meaning that, for example, executable instructions are copied from storage into areas of faster volatile memory, function entry points are mapped to specific memory locations and memory space is allocated for storing variables and such. When loaded and running, process1246may partially or fully fulfill the role of PLC710described earlier.

A separate PLC1250is shown within ecosystem1202, representing the option of having a separate PLC, per se, operating with some internal logic upon inputs and outputs as described in connection withFIG.7. The logic for the PLC may be downloaded from another entity, such as controller1230via connection1251. Alternatively, PLC1250may represent a signal conditioning interface between controller1230and the various sensors1252,1254,1256and actuator(s)1256. Auto-Z pressure gage1252corresponds to one or more of gage(s)760. Auto-Z probe sensor1254corresponds to contact sensing element such as reed switch450, which may be plural. Auto-Z probe actuator1256refers to one or more solenoid valves750. TCP sensor1256accounts for two signals coming from a TCP sensor500, which are the axial or top-facing contact sensor, switch530, and the radial contact determined by electrical continuity presented along signal line536.

If PLC1250is but a signal conditioning adapter, then connection1251signifies an interface to these I/O signals with a process running elsewhere, such as PLC emulator process1246executing within controller1230. Any process hosted anywhere in ecosystem1202may suffice, whether or not programmed to emulate a PLC, and successfully execute the sensing and actuating steps explained herein. The present teachings are not confined in any way to including or excluding a PLC as a physical or logical entity.

Any or all of the physical and logical processing contexts described in diagram1200may correspond to contents of control box160or to be hosted, collocated with, or communicating with a controller within box160. In many implementations of conventional 3D printers, controller160includes an embedded controller1230with integral LCD display and controls (see display164inFIG.1) and may also house or be wired to an associated RTC1220driving the motors. Additionally, RTC1220or controller1230typically also control temperatures in the system. In smaller implementations, as the RTC1220already handles high current levels if there are on-board motor drivers, the thermostatic control of current to heating elements may also be handled on the same physical circuit board which is often provided with forced-air cooling. In larger systems, the temperature control is delegated to subordinate PID controllers (with their own internal CPUs) to turning heaters on and off to maintain a target temperature. Controllers1220or1230may send target temperature signals to temperature controllers. Furthermore, in many arrangements, controllers1220or1230also monitor current temperatures for display to a user and to programmatically ensure attainment of extruder and bed temperatures before attempting to proceed with a build.

Temperature controls by electrical connections are represented by extruder temps1260and bed/chamber temps1262, the latter being the temperature of the build surface (aka ‘bed’) and the temperature of the entire enclosure110shown inFIG.1.

Yet other peripherals1264may be controlled by processing entities within ecosystem1202, such as cooling fans, pellet agitators, lights, interlocks, and the like.

Another class of component subject to control of one or more processors shown is represented by tool head controller1270and subtending axis drivers, Theta1 drive1272, Theta2 drive1274and spindle motor drive1276. This depiction is hypothetical. The actual quantity and names of the axes applicable to a given tool head with its self-contained motion system may vary depending on design. An example of such a subsystem tool head is presented as tool head262inFIG.3.

Connection1277represents a connection to any of the processes within ecosystem1202that can instruct the tool head to act upon a given sets of coordinates. Tool head controller1270may be likened to the role that controller1220plays in coordinating the actions of the XYZ axes drives as described above. Tool head controller1270may be of a proprietary type compatible with drivers1272,1274and1276and programmed in view of the geometry and physical characteristics of the tool head components, operating as a self-contained packaged tool head1275. Controller1270may even be located ‘on-board’ with the tool head hardware that becomes attached to carriage252. Once installed in system100, the controller1270acts as the gateway interface and mediator for commands from other entities directed to moving the tool head arm. Controller1270may be commanded by controller1220, especially if some movements of the tool head are to be executed ‘in lock step’ with movements in XYZ. Tool head1275may have its own limit switches or position encoders, and its own axes initialization and homing procedures. Controller1270may be instructed from an external controller to perform its on-board homing and communicate back when completed.