Technical Field
This disclosure relates to printing systems, and more particularly, to rotation and nozzle opening control of extruders in printing systems.
Description of the Related Art
Printing systems, such as three-dimensional (3D) printing system, have a multitude of uses. For example, 3D printers can create a 3D object from a computer model. 3D printing has been used in the following industries: manufacturing, medical, aerospace and aviation, automotive, fashion, and food among others. The worldwide 3D printing industry is expected to grow from $3.07B in revenue in 2013 to $12.8B by 2018, and exceed $21B in worldwide revenue by 2020. Despite recent advances in 3D printing, commercially available 3D printers are slow and inefficient.
Systems and methods that embody the various features of the invention will now be described with reference to the following drawings, in which:
While certain embodiments are described, these embodiments are presented by way of example only, and are not intended to limit the scope of protection. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions, and changes in the form of the methods and systems described herein may be made without departing from the scope of protection.
3D printers create 3D objects by using additive processes during which an object is created by laying down successive layers of material until the entire object is created. Each of these layers can be seen as a thinly sliced horizontal cross-section of the final object.
Additive 3D printers are simplest, lowest cost machines for casual home users as well as for professional users. However, available 3D printers utilize extruders that in operation resemble hot glue guns. For example, a stepper motor pushes thermoplastic material into a hot extruder (or head) with resistive heater and thermistor feedback. Head temperature and speed of material are balanced to get acceptable lines of printing. For fine printing a smaller nozzle can be used to make smaller steps that use more fill passes. As an example, printing a small (5 mm×5 mm×50 mm) rectangular bar requires a large number of passes. As a result, 3D printers continue to suffer from being slow and inefficient.
In some embodiments, an improved 3D printer system has an omnidirectional, rotatable extruder and is controlled by controller implementing a computer generated model (for example, represented in G-code). During operation, the head is rotated to accurately trace a path along which the material is deposited thereby reducing the number of passes needed to generate a 3D object. In some embodiments, the extruder additionally or alternatively includes a variable-size opening configured to deposit a controlled bead of material in order to reduce the number of passes needed to generate a 3D object.
In one embodiment, the extruder 120A includes a rotation control 128 configured to rotate the extruder 120A. For example, the tip of the nozzle 124 can be rotated so as to control the deposit of the material 110. In one embodiment, only the nozzle of the extruder is configured to be rotated, not the entire extruder. Rotation control 128 can include a motor connected to a belt, gear driver, or the like for rotating the extruder 120A.
In one embodiment, controller 130 controls one or more of the material feeder 112, the extruder 120A, and the motor 126. For example, the controller 130 controls the rate with which the material feeder 112 feeds the material 110 into the extruder. As another example, the controller 130 controls the motor 126 of the extruder and the rotation control 128 to move the nozzle 124A to deposit the material 110 along a plurality of paths. Controller 130, which can be a general purpose or special purpose controller, can be connected to memory (not shown) for storing various parameters or instructions configured to operate the system 100A. As will be explained below, the parameters can include a computer model for generating the 3D object 140.
Additional details of the printing system are disclosed in co-pending patent application Ser. No. 14/982,706, filed on Dec. 29, 2015, titled “EXTRUDER FOR THREE-DIMENSIONAL ADDITIVE PRINTER” and co-pending patent application Ser. No. 14/983,032, filed on Dec. 29, 2015, titled “DUAL HEAD EXTRUDER FOR THREE-DIMENSIONAL ADDITIVE PRINTER,” the disclosure of each of which is hereby incorporated by reference in its entirety.
Path 420 illustrates the nozzle of the extruder tracing a corner along the inside edge at a substantially constant velocity according to another embodiment. Along with the nozzle being rotated to trace the curved path, the rate of material flow is increased in order to not underfill or deposit insufficient amount of the material. If the rate of material flow is kept constant, insufficient amount of material may be deposited in the areas adjacent to the outer edge of the corner illustrated in 420 because the outer radius of the corner is larger than the inner radius of the corner and, consequently, areas adjacent to the outer edge are larger than those adjacent to the inner edge. In one embodiment, rather than adjusting the rate of flow of the material, speed of the extruder nozzle is adjusted when tracing an edge. For example, the speed of the extruder nozzle can be decreased when tracing the corner illustrated in 420 so that more material is deposited.
Path 430 illustrates the nozzle of the extruder tracing a corner according to another embodiment. The illustrated corner is straight, and the extruder nozzle can be rotated into the corner when tracing the corner along the bottom path (with the nozzle moving left). For example, the nozzle can be rotated clockwise. When coming out of the corner in the upward direction, the extruder nozzle can continue being rotated clockwise. Due to rotation, the direction of the nozzle opening is adjusted from vertical (along the bottom part of the path) to horizontal (along the top part of the path).
In block 504, the process 500 converts STL data into a plurality of two-dimensional (2D) layers, which can be represented using G-code. A 2D layer of the plurality of 2D layers can include one or more paths along which the material is to be deposited. During operation, as material is deposited in one 2D layer, the extruder can move to the next 2D layer such that a 3D object is completed layer by layer.
In one embodiment, G-code can be used to direct an extruder, such as the extruder 120A or 120B, to generate a 3D object. G-code is a numerical control programming language, which can be used to generate instructions to control a machine tool. The instructions can direct the extruder on where to move, how fast to move, along what path to move and deposit the material, and the like. In one embodiment, G-code instructions utilize the Cartesian coordinate system in which a position in space is specified along X axis, Y axis, and Z axis. G-code code can also include instructions for feeding the material into the extruder, specifying the extruder temperature, specifying print bed temperature (when heated bed, mats, and the like are used for keeping the extruded material warm and thereby preventing wrapping), and the like. In case multiple extruders are used, instructions for feeding the material, specifying the extruder temperature, and the like can include multiple instructions associated with multiple extruders.
In one embodiment, block 504 can use a tool called Slic3r, which converts a 3D model into printing instructions for a 3D printing system. Slic3r cuts the 3D model into horizontal slices or layers, generates toolpaths to fill the layers, and calculates the amount of material to be extruded.
In block 506, the process 500 determines rotation angle data and adds rotation instructions to the G-code. In one embodiment, rotation or R axis for rotating the extruder is added to the X, Y, and Z axis. R axis can be specified in radians or degrees. For example, when the path includes one or more corners, the nozzle of the extruder can be rotated into and out of the corner in order to deposit the material accurately and efficiently. In one embodiment, miscellaneous codes (or M-codes) of the G-code instruction set can be used to include rotation angles for the extruder. In block 508, the process determines flow modifications and adds or modifies G-code instructions with this information. In one embodiment, when the path includes one or more corners, the rate of flow of the material can be adjusted in order to deposit the material accurately and efficiently. In block 510, the generated G-code is used to generate a 3D object, such as the object 140. For example, fill instructions included in the G-code generated in block 504 can be recomputed, such as recomputed recursively, based on the rotation angle data and flow modifications.
Illustration 605 depicts a curve 605a from a 2D layer from a plurality of 2D layers forming the fin. The curve 605a is also illustrated in 604. Also illustrated in 605 is set of vector segments 605b associated with the curve 605a. For example, the set of vector segments 605b can approximate the curve 605a. As is illustrated in 606a, the set of vector segments 605b includes three segments 616, 618, and 602. In one embodiment, the set of vector segments 605b can be determined using spline interpolation, which can produce vector approximation having a high degree of smoothness. In one embodiment, during operation, the extruder can deposit material along a path corresponding to the curve 605a by using the inside or the outside of the curve as a reference point. The illustrated set of vector segments 605b can correspond to the inside or the outside path associated with the curve 605a. The inside and outside paths are illustrated in 606a and 606b respectively. In one embodiment, another part of a curved path, such as a centerline between the inside and outside edges, can be used as a reference point for depositing the material.
To determine rotation angle data, in one embodiment, perpendicular or normal vectors can be computed. For example, this computation be performed in block 506 of the process 500. As is illustrated in 606a, normal vectors, such as 610, 612, and 614, are computed for the sets vector segments. In one embodiment, depending on whether the reference point is the inside or outside of the curve 605a, one set of vectors 606a or 606b is generated and normal vectors corresponding to this set of vectors are computed. Rotation angles can be determined utilizing the computed normal vectors.
For example, suppose that prior to depositing the material along the path segment corresponding to the vector slice or segment 616 (in 606a), the extruder has been depositing the material along a horizontal path segment (not shown) and, hence, the nozzle of the extruder was not rotated. Now suppose that the extruder is transitioning to the segment 616. Using the computed normal vector 610, which can correspond to the angle between the segment 616 and the horizontal axis (X-axis), the rotation angle of the nozzle can be determined and the nozzle can be rotated by the determined angle. This rotation angle can be, for example, 60 degrees (or π/3 radians) from the horizontal axis. When the extruder has deposited the material along the segment 616 and is about to transition to the segment 618, the computed normal vector 612 can be used to determine the rotation angle. For example, suppose that the normal vector 612 indicates that the segment 618 is 30 degrees (or π/6 radians) from the horizontal axis. As the nozzle has already been rotated by 60 degrees to deposit the material along the segment 616, the nozzle can be rotated by −30 degrees to deposit the material along the segment 618. When the extruder has deposited the material along the segment 618 and is about to transition to the segment 620, the computed normal vector 614 can be used to determine the rotation angle. For example, suppose that the normal vector 614 indicates that the segment 620 is −45 degrees (or 7π/8 radians) degrees from the horizontal axis. As the nozzle has already been rotated by 30 degrees to deposit the material along the segment 616, the nozzle can be rotated by −75 degrees to deposit the material along the segment 620. In one embodiment, similar approach can be used to determine rotation angles for the vector segments illustrated in 608b.
In one embodiment, flow modifications can be determined as is illustrated in 608a and 608b for the inside and outside paths respectively. For example, these determinations can be performed in block 508 of the process 500. The rate of flow can be increased on inside corners that increase the speed of tracing the outer radius, and the rate of flow can be decreased on outside corners that decrease the speed of tracing the inner radius. As is illustrated in 608a, the rate of flow of the material is decreased when the extruder traces the path 606a associated with the inside of the curve 605a. The rate of material flow is decreased in order to not overfill or deposit excessive amount of the material. As is illustrated in 608b, the rate of flow of the material is increased when the extruder traces the path 606b associated with the outside of the curve 605a. The rate of material flow is increased in order to not underfill or deposit insufficient amount of the material.
In one embodiment, flow modifications can be computed as follows. For example, in block 504 the process 500 can determine the outside edge and generate material fill patterns using specified density, which can be set by a user. This generated rate of flow can be adjusted by taking into account areas of overlap when using the inside of the curve as the reference point or areas of void when using the outside of the curve as the reference point. As is illustrated in 608a, three areas 622, 624, and 626 associated with the segments 616, 618, and 620 can be determined by taking into account the width of the material segment deposited by the nozzle. Areas 628 and 629 illustrate the overlap between the areas 622 and 624 and 624 and 626 respectively. Increase in the overlap can correspond to a decrease in the rate of flow in order to prevent overfill in the overlap. For example, suppose that the nozzle traces the segments illustrated in 608a from top to bottom. At the top, the rate of flow can be set to 100% as the path is relatively straight. As the bend in the curve is approached and the nozzle is rotated into the curve, the rate of flow is decreased to 50% and then to 10% to account for the increase in the overlap 628 between the areas 622 and 624. The rate of flow is then increased from 10% to 20%, 60%, and 70% as the tip of the curve is being traced. Because the tip of the curve is relatively sharp, the overlap 628 between the areas 622 and 624 decreases, which causes an increase in the rate of flow. Once the tip of the curve has been traced, the rate of flow is decreased to 30% and then to 10% due to the overlap 629 between the areas 624 and 626. As the nozzle is rotated out of the curve, the rate of the flow is increased to 40%, 80%, and 100%. In one embodiment, flow modification can be computed based on the radius of the curve, such as the curve 605a.
With reference to 608b, in one embodiment, flow modifications when outside of the curve is used as the reference point are computed as follows. As is illustrated in 608b, three areas 632, 634, and 636 associated with the vector segments illustrated in 606b can be determined by taking into account the width of the material segment deposited by the nozzle. Areas 638 and 639 illustrate the void between the areas 632 and 634 and 634 and 636 respectively. Rate of flow of the material should be increased in order to prevent underfill in the area of the void. For example, suppose that the nozzle traces the segments illustrated in 608b from top to bottom. At the top, the rate of flow can be set to 100% as the path is relatively straight. As the bend in the curve is approached and the nozzle is rotated into the curve, the rate of flow is increased to 120% and then to 150% to account for the increasing void in the area 638. The rate of flow is then decreased from 150% to 120% and 100% as the tip (or inflection point) of the curve is being traced. Because the tip of the curve is relatively sharp, the void between the areas 632 and 634 decreases, which causes a decrease in the rate of flow. Once the tip of the curve has been traced, the rate of flow is increased to 120% and then to 150% due to the void 639 between the areas 634 and 636. As the nozzle is rotated out of the curve, the rate of the flow is decreased to 120% and then 100%.
In one embodiment, G-code can be used to control the system to generate the 3D object. For example, this can be performed by the process 500 in block 510. G-code can include vector segments for moving the extruder, such as the segments 616, 618, and 620, which can be specified by (x, y) coordinates of the starting and ending points. G-code can also include nozzle rotation data and flow modifications.
In block 707, the process 700 determines nozzle opening modifications and adds these instructions to the G-code. For example, M-codes of the G-code instruction set can be used to include nozzle opening data. Nozzle opening modifications can be specified on a relative scale, such as between 0% (opening completely closed) and 100% (opening fully open). In some embodiments, other absolute or relative scales can be used, such as for example, 0% corresponding to a fully open opening and 100% corresponding to a completely closed opening. Nozzle opening modifications can correspond to varying the width of the opening.
In one embodiment, the process 700 can determine in block 504 the outside edge and generate material fill patterns using specified density, which can be set by a user. This process will be modified for a system having an extruder with a variable-size opening to create awareness of intersections during generation of the 3D object and to adjust the extruder opening size to prevent unwanted overlap. The process 700 can create break lines for sharp corners and create one or more paths not necessarily present in the G-code in order to deposit a proper fill in the detail areas. These modifications can also be computed during the generation of flow modifications. In one embodiment, the process 700 can include a setting for modifying wall width with the extruder having a variable-size opening in order to make very thin walls for lightness, conservation of material, artistic desires, and the like.
In block 708, the process 700 determines flow modifications and adds or modifies G-code instructions with this information. In one embodiment, the flow is modified based on one or more of printing speed, path shape, extruder temperature, extruder opening, and general expected material feed volume. For events where the extruder is lifted and moved to a different part of the print, such as a different appendage of a 3D object, the opening of the extruder could be closed off or substantially closed off in place of or in addition to the material being pulled back to reduce the risk of depositing fine strings of material across the object. In block 710, the generated G-code is used to generate a 3D object, such as the object 140. For example, fill instructions included in the G-code generated in block 504 can be recomputed, such as recomputed recursively, based on the rotation angle data, nozzle opening modifications, and flow modifications.
In one embodiment, nozzle opening modifications are determined as follows, which can be performed by the process 700 in block 707. With reference to the illustration 808, segments of the path, such as vector segments explained above in connection with
Next, overlapping areas between the areas 820 through 828 can be determined. For example, areas 830 and 832 are some of the overlapping areas in the illustration 808. Nozzle opening can then be computed so as to minimize overfill of the material in the overlapping areas. In one embodiment, one or more inflection points of the curved path can be identified. An inflection point can correspond to a location where the sign of the curvature of concavity changes and can be determined by identifying locations where the second derivative becomes zero. Because inflection points are associated with change in curvature, they are likely to be associated with sharp changes in the geometry of the object and, hence, areas with large overlap. It is advantageous to modify, such as reduce, the size of the opening at and near inflection points in order to reduce overfill.
In one embodiment, a bisector can be computed at each inflection point. The determined bisector can divide the angle at the inflection point into two equal angles. The determined bisector can be added as part of the path along with the material will be deposited, which will thereby cause the size of the opening to be reduced and create one flat object. After one or more bisectors are added to the path, opening modifications can be determined. For example, as is illustrated in 810, the curved path has an inflection point 840 at which a bisector 842 is added. As the extruder deposits the material along the path 846 between the interior and exterior curves, addition of the bisector 842 significantly narrows the width of the path for depositing the material. Accordingly, the size of the opening is reduced, which minimizes overfill. In one embodiment, the bisector 842 serves as a virtual line or wall that, while is not present in the G-code corresponding to the model, helps with accurately and efficiently generating the 3D object. In one embodiment, the length of the bisector 842 is determined based on the computed overlapping areas. Longer bisector can be generated when there is more overlap, and shorter bisector can be generated when there is less overlap.
Continuing with the example illustrated in 810, suppose that the extruder deposits the material from the top along the path 846. The size of the opening, such as the width, can be set to 100% at relatively flat portion of the path where there is no overlap (see area 820 and top part of area 822 in the illustration 808). As the inflection point 840 and the bisector 842 are being approached, the width of the opening is proportionally being reduced from 100% to 50%, 40%, and 30% at and immediately adjacent to the inflection point 840. As the extruder moves past the inflection point 840 into the downward portion of the path 846, the size of the opening is being proportionally increased from 30% to 40%, 50%, and finally to 100% along the relatively flat bottom portion of the path 846.
Illustration 812 depicts determination of flow modifications to further reduce overfill in the areas of overlap and underfill in the areas of void. Flow modifications can be performed by the process 700 in block 708. In one embodiment, flow modifications can be coordinated (or can match) the opening modifications illustrated in 810. In another embodiment, flow modifications are determined as explained above in connection with the illustrations 608a and 608b in
In one embodiment, G-code can be used to control the system to generate the 3D object. For example, this can be performed by the process 700 in block 710. G-code can include vector segments for moving the extruder, which can be specified by (x, y) coordinates of the starting and ending points. G-code can also include nozzle rotation data, nozzle opening modifications, and flow modifications.
In some embodiments, a printing system includes an omnidirectional extruder controller by a controller executing G-code. The extruder can include a rotating nozzle with a variable-size opening that can be adjusted for fine detail work and sharp corners. The opening can be a non-circular opening configured to deposit wide ribbons of material with fine edge control. The printing system can advantageously enable at least 3-10 times increase in printing speed when compared to existing printing systems. For example, the printing system according to some embodiments can create an outside wall in a single pass compared to three passes needed by existing printing systems. Highly filled structures may benefit from the greatest increase in speed and efficiency. Internal fill structures could be reshaped and sped up with the ability for a larger print. As a result, efficiency and accuracy can be improved.
In some embodiments, nozzle opening control can be used without rotation control. For example, the system 100B illustrated in
In some embodiment, the printing system, such as the system 100A or 100B, can be tuned for typical and atypical situations. Once tuned, computations and rules can become default for that particular type of printing system. Additional tuning adjustment can be exposed to advanced users and those experimenting with new materials.
Additional system components can be utilized, and disclosed system components can be combined or omitted. The actual steps taken in the disclosed processes, such as the processes illustrated in
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the protection. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the protection. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the protection. For example, the various components illustrated in the figures may be implemented as software and/or firmware on a processor, ASIC/FPGA, or dedicated hardware, which can include logic circuitry. The software and/or firmware can be stored on a non-transitory computer readable storage, such as for example in internal or external memory. Also, the features and attributes of the specific embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure. Although the present disclosure provides certain preferred embodiments and applications, other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is intended to be defined only by reference to the appended claims.
This application claims the benefit of U.S. Provisional Patent Application No. 62/271,144, filed on Dec. 22, 2015, titled “ROTATION AND NOZZLE OPENING CONTROL OF EXTRUDERS IN PRINTING SYSTEMS,” the entirety of which is incorporated by reference.
Number | Date | Country | |
---|---|---|---|
62271144 | Dec 2015 | US |