Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
A METHOD AND SYSTEM FOR IN SITU FAULT DETECTION IN 3D PRINTING USING A CONTACT SENSOR
Document Type and Number:
WIPO Patent Application WO/2023/022940
Kind Code:
A1
Abstract:
A fault detection system for use in 3D printing systems operable to accurately detect millimeter-scale defects that tend to make prints unusable. The system uses an actuated contact probe designed with a low-power solenoid, magnet, and Hall effect sensor. This sensor is used to check for the presence, or absence, of the printed object at specific locations. The MTouch system probe demonstrated 100% accurate readings, which was significantly higher than the 74% achieved using a repurposed commercially available bed leveling touch probe. Additionally, methods were developed to detect common print failures such as layer shifting, bed separation, and filament runout using the system probe.

Inventors:
CHAN NICHOLAS (US)
EICHENBERGER ZACHARY (US)
AIDALA SAM (US)
OKWUDIRE CHINEDUM (US)
Application Number:
PCT/US2022/040205
Publication Date:
February 23, 2023
Filing Date:
August 12, 2022
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
UNIV MICHIGAN REGENTS (US)
International Classes:
B29C64/386; B33Y50/00; B29C64/393; B33Y50/02
Domestic Patent References:
WO2019191683A12019-10-03
Foreign References:
US20170057170A12017-03-02
US20010032633A12001-10-25
US20120161350A12012-06-28
US20170371317A12017-12-28
Attorney, Agent or Firm:
SNYDER, Jeffrey, L. et al. (US)
Download PDF:
Claims:
24

CLAIMS

What is claimed is:

1. A method of fault detection in a 3D printing system, the method comprising: receiving a code file and user inputs of a part to be printed; generating a plurality of sample point locations along the part to be printed and determining an expected result at each of the plurality of sample point locations; printing at least a portion of a layer of the part to be printed; obtaining a measurement of at least one of the plurality of sample point locations relating to the layer; comparing the measurement to the expected result to determine if the measurement was within the expected result; and outputting an alert signal if the measurement is not within the expected result.

2. The method according to Claim 1 wherein the outputting the alert signal comprises pausing the printing.

3. The method according to Claim 1 wherein the outputting the alert signal comprises outputting an alert signal alerting a user of a fault condition.

4. The method according to Claim 1 wherein the obtaining the measurement of the at least one of the plurality of sample point locations comprises contacting a probe tip to the part to be printed at the at least one sample point location.

5. The method according to Claim 1 wherein the obtaining the measurement of the at least one of the plurality of sample point locations comprises detecting noncontact of a probe tip to the part to be printed.

6. The method according to Claim 4 wherein the probe tip physically contacts the part to be printed.

7. The method according to Claim 4 wherein the obtaining the measurement of the at least one of the plurality of sample point locations comprises: applying power to a solenoid to extend the probe tip resulting in the probe tip contacting the part to be printed; obtaining the measurement of the at least one of the plurality of sample locations; and removing power to the solenoid to retract the probe tip.

8. The method according to Claim 7 further comprising: obtaining a measurement of the probe tip after the removing power; determining if the probe tip is retracted after the removing power.

9. The method according to Claim 1 wherein the obtaining the measurement of the at least one of the plurality of sample point locations comprises: providing a bracket mountable to a 3D printing system; providing a sensor mounted to the bracket, the sensor outputting a signal in response to the measurement; providing a probe tip configured to contact the part to be printed; providing a linear actuator to extend the probe tip in contact with the part to be printed.

10. The method according to Claim 9 wherein the sensor is a Hall effect sensor.

11 . The method according to Claim 9 wherein the sensor is chosen from the group consisting of an optical endstop sensor, a capacitance sensor, a electrical contact sensor, a linear potentiometer, and a binary or analog presence or position detection sensor.

12. A fault detection system for detecting fault in a 3D printing system, the fault detection system comprising: a bracket mountable to the 3D printing system; a probe tip configured to engage a part to be printed; an actuator coupled to the bracket, the actuator configured to at least extend the probe tip; and a sensor coupled to at least the probe tip and responsive to a varying position of the actuator to obtain a measurement.

13. The fault detection system according to Claim 12 wherein the actuator comprises a solenoid, the solenoid having a magnet.

14. The fault detection system according to Claim 12 wherein the actuator comprises a servo or voice coil coupled to the bracket.

15. The fault detection system according to Claim 12 wherein the sensor comprises a Hall effect sensor configured to interact with the probe tip to obtain the measurement.

16. The fault detection system according to Claim 12 wherein the sensor comprises an end stop or conductivity sensor configured to interact with the probe tip to obtain the measurement.

Description:
A METHOD AND SYSTEM FOR IN SITU FAULT DETECTION IN 3D PRINTING

USING A CONTACT SENSOR

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit of U.S. Provisional Application No. 63/234,428, filed on August 18, 2021. The entire disclosure of the above application is incorporated herein by reference.

FIELD

[0002] The present disclosure relates to 3D printing and, more particularly, relates to low-cost touch probe and method for detecting failed 3D prints in situ.

BACKGROUND AND SUMMARY

[0003] This section provides background information related to the present disclosure which is not necessarily prior art. This section provides a general summary of the disclosure, and is not a comprehensive disclosure of its full scope or all of its features.

[0004] 1 . Introduction

[0005] Fused filament fabrication (FFF) 3D printers, relied on by over 80% of 3D printing users, work by heating plastic filament and extruding it through a nozzle onto a bed. To manufacture an object, motion systems move the nozzle and bed to build up the desired part layer-by-layer. Desktop 3D printers, generally defined as printers that retail for less than $5000, are mostly FFF printers. Their adoption has been growing rapidly among hobbyists and professional users. In 2019, over 700,000 units of desktop 3D printers retailing at an average selling price of $1 ,196 were sold globally, representing a 19.4% increase over the year 2018. In more recent years, 3D printing has seen a surge in adoption with 2.2 million 3D printers shipped in 2021 and projections to reach 21 .5 million units by 2030.

[0006] A hurdle in the further adoption of desktop FFF 3D printers is their failure rate of more than 20%. When a defect develops, conventional printers will often continue manufacturing an unusable part, wasting time and material, unless manually stopped. To catch issues early, printers are often watched by a user; however, this may not always be possible. Some prints may take overnight to complete, or a user may be busy tending to another task. Similarly, for large collections of printers, often called print farms, used for small scale production, watching numerous printers can become tiring and an operator may not notice one printer with an error among many others. An automated fault detection system in accordance with the present teachings eliminates the need for constant supervision when printing, thereby enabling print farm operators to attend to other tasks and personal users to leave printers operating unsupervised with greater peace of mind.

[0007] One issue in the development of automated fault detection systems is the wide variety of faults that can occur. Defects in a print can range from overly rough surface finish but an otherwise geometrically acceptable part, to prints with layers shifted above a certain height, to collapsed sections of a print resulting in an unusable part. For the purposes of the present disclosure, major print detects are defined as faults which cause millimeter scale defects resulting in a print being unsuitable for use in its intended application. Examples of major faults which the present disclosure will specifically focus on are bed separation, filament runout/jams, and layer shifting. Some examples of these faults can be seen in Figures 1A-1 C. In addition to these defects, another type of defect will be mentioned, spaghetti failure. This fault is considered a secondary fault, as it occurs as the result of another major fault (the primary fault) such as bed separation or partial collapse of the print.

[0008] Several academic papers have been published on potential in situ fault detection systems for FFF 3D using a variety of sensors. Fault detection systems using optical cameras has been an active area of research. How these systems work can be divided into two main categories. The first category typically creates a point cloud representing the partially completed print. This point cloud is then either directly compared to a point cloud generated using the STL file of the desired part, the Geode file of the print, or is input into machine learning algorithms to determine when a fault has occurred (some machine learning algorithms also take in the point cloud from the STL file). The second category of fault detection system inputs the image stream from the optical camera directly into a ML algorithm (most commonly a neural network).

[0009] One system commercially available for major fault detection which implements this second category is The Spaghetti Detective. This system uses a Raspberry Pi and a web camera aimed at the side of the print at roughly the level of the bed. The camera streams a video feed of the print to either a separate computer set up by the user, executing the open-source project code, or to a server managed by the company overseeing the project and offering the service commercially. This separate machine uses a trained neural network to process the video feed and alerts the users if any faults are detected. The Spaghetti Detective does have some limitations. Accurate fault detection requires consistent lighting and a plain background to prevent false positives. Another limitation is that, while the system can detect spaghetti failures, it is often unable to detect faults which do not result in spaghetti failure, such as layer shifting and under-/over-extrusion. Research groups have been able to improve this limitation by training on larger datasets to include under-extrusion and over-extrusion but large geometric defects like layer shifting are still often unable to be detected. The first category of camera-based systems performs better when detecting these geometric defects but still require consistent lighting and a plain background. These systems also require multiple cameras which must be calibrated and more precisely positioned.

[0010] Another active area of interest regarding fault detection is using laser scanners. Systems based on these laser scanners operate in a similar manner to those in the first category of optical cameras but use laser scanners to create a point cloud of the partially completed print. Some of these developed laser-based scanning fault detection systems compare the measured point cloud to one generated from the STL model of the desired part. Others compare point clouds with the use of a trained neural network. A benefit these systems have over optical camera-based systems is robustness against environmental factors. Ambient lighting conditions have much less of an effect on laser sensors and do not require a plain background for accurate measurements. These systems are not without their downsides. The laser scanners can be affected by laser shadowing causing some parts of the print to be unmeasurable. Additionally, the cost of the laser scanners used in many of these systems are of considerable price, often costing multiple hundreds of dollars for the scanner and more for the controlling/interfacing hardware necessary to operate them.

[0011] In addition to these optical camera and laser scan detection systems, systems have also been designed using accelerometers, piezoelectric vibration sensors, microscopes, borescopes, acoustic emission sensor, or a combination of sensors to create a digital twin. While these alternatives can offer ranges of benefits from being low cost, to robust against environmental factors, these systems only focus on detecting surface roughness, nozzle clogging, and interlayer bonding. Larger scale geometric defects are likely to be undetected by these systems as they are designed with a different goal. Some printers also come with a filament sensor to detect when the printer’s filament spool has run out. While these sensors can detect when the filament runs out (as the name implies), they cannot determine when the nozzle is clogged or when geometric defects, like layer shifting, occur.

[0012] Therefore, there is a gap in the current research for a fault detection system that is low cost, robust against ambient conditions, and able to detect a variety of millimeter-scale geometric defects which often ruin prints completely.

[0013] According to the principles of the present teachings, an automatic fault detection system, generally referred to as ‘MTouch’, is provided having advantageous construction and methods of use. The system of the present teachings is based on using an actuated contact sensor to detect the presence or absence of a print at predetermined locations across layers of an object being printed. The effectiveness of MTouch system is shown through testing and shown to have advantages over The Spaghetti Detective, such as but not limited to being able to detect layer shifting and filament runout/jam faults.

[0014] Further areas of applicability will become apparent from the description provided herein. The description and specific examples in this summary are intended for purposes of illustration only and are not intended to limit the scope of the present disclosure.

DRAWINGS

[0015] The drawings described herein are for illustrative purposes only of selected embodiments and not all possible implementations, and are not intended to limit the scope of the present disclosure.

[0016] Figs. 1A-1 C illustrate layer shifting fault and other printing failures associated with conventional 3D printing systems.

[0017] Fig. 2 is a flowchart illustrating the MTouch system according to the principles of the present teachings.

[0018] Fig. 3 is a flowchart illustrating the fault detection process according to the principles of the present teachings.

[0019] Fig. 4 illustrates X/Y and Z offsets of the contact sensor probe tip relative to the extruder nozzle. [0020] Figs. 5A-5C illustrate sample points generated for three different layers of a test print (layers 36, 41 , and 51 , respectively); points where the print is expected to be detected are shown using circles; points where the print is not expected are shown using squares.

[0021] Figs. 6A-6C illustrate sample points generated with each sampling strategy: (a) Inside-Outside; (b) Min-Max; (c) Layer Shifting Detection, respectively.

[0022] Fig. 7 is a layer shift detection sampling strategy.

[0023] Fig. 8 illustrates two edge cases for the layer shift detection.

[0024] Fig. 9 is a schematic view of a contact sensor of the MTouch system according to the principles of the present teachings.

[0025] Fig. 10 illustrates a circuit diagram the connections between the Raspberry Pi, Hall effect sensor, and solenoid.

[0026] Figs. 11 A-11 C illustrate three images representing the three states of the contact sensor during use: (a) the stowed position; (b) the deployed position in contact with a print; (c) the deployed position not in contact with the print.

[0027] Fig. 12 illustrates a flowchart illustrating the steps taken to get a measurement with the MTouch sensor.

[0028] Fig. 13 illustrates the sample points used to test if and where each sensor would become stuck along the side of a print

[0029] Figs. 14A-14B illustrate two images of the cubes printed with (a) and without (b) being sampled.

[0030] Figs. 15A-15E illustrate examples of all the faults tested in the fault detection validation tests: (a) Filament Runout/Jam (b) Y Axis Layer Shift (c) X Axis Layer Shift (d) Bed Separation (e) No Defects.

[0031] Corresponding reference numerals indicate corresponding parts throughout the several views of the drawings.

DETAILED DESCRIPTION

[0032] Example embodiments will now be described more fully with reference to the accompanying drawings.

[0033] Example embodiments are provided so that this disclosure will be thorough, and will fully convey the scope to those who are skilled in the art. Numerous specific details are set forth such as examples of specific components, devices, and methods, to provide a thorough understanding of embodiments of the present disclosure. It will be apparent to those skilled in the art that specific details need not be employed, that example embodiments may be embodied in many different forms and that neither should be construed to limit the scope of the disclosure. In some example embodiments, well-known processes, well-known device structures, and well-known technologies are not described in detail.

[0034] The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting. As used herein, the singular forms "a,” "an," and "the" may be intended to include the plural forms as well, unless the context clearly indicates otherwise. The terms "comprises," "comprising," “including,” and “having,” are inclusive and therefore specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. The method steps, processes, and operations described herein are not to be construed as necessarily requiring their performance in the particular order discussed or illustrated, unless specifically identified as an order of performance. It is also to be understood that additional or alternative steps may be employed.

[0035] When an element or layer is referred to as being "on," “engaged to,” "connected to," or "coupled to" another element or layer, it may be directly on, engaged, connected or coupled to the other element or layer, or intervening elements or layers may be present. In contrast, when an element is referred to as being "directly on," “directly engaged to,” "directly connected to," or "directly coupled to" another element or layer, there may be no intervening elements or layers present. Other words used to describe the relationship between elements should be interpreted in a like fashion (e.g., “between” versus “directly between,” “adjacent” versus “directly adjacent,” etc.). As used herein, the term "and/or" includes any and all combinations of one or more of the associated listed items.

[0036] Although the terms first, second, third, etc. may be used herein to describe various elements, components, regions, layers and/or sections, these elements, components, regions, layers and/or sections should not be limited by these terms. These terms may be only used to distinguish one element, component, region, layer or section from another region, layer or section. Terms such as “first,” “second,” and other numerical terms when used herein do not imply a sequence or order unless clearly indicated by the context. Thus, a first element, component, region, layer or section discussed below could be termed a second element, component, region, layer or section without departing from the teachings of the example embodiments.

[0037] Spatially relative terms, such as “inner,” “outer,” "beneath," "below," "lower," "above," "upper," and the like, may be used herein for ease of description to describe one element or feature's relationship to another element(s) or feature(s) as illustrated in the figures. Spatially relative terms may be intended to encompass different orientations of the device in use or operation in addition to the orientation depicted in the figures. For example, if the device in the figures is turned over, elements described as "below" or "beneath" other elements or features would then be oriented "above" the other elements or features. Thus, the example term "below" can encompass both an orientation of above and below. The device may be otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptors used herein interpreted accordingly.

[0038] 2.1 Detecting Faults

[0039] According to the principles of the present teachings, an automatic fault detection system 10, generally referred to as ‘MTouch system 10’, operates on the principle of determining if the object being printed 100 has millimeter-scale geometric defects by determining the presence or absence of the print at specific locations and comparing to pre-computed expected results. It should be understood, however, that sub-millimeter-scale geometric defects can be detected with more precise and/or smaller-scale system 10 components. It should also be understood that the ‘precomputed expected results’ may be computed in real time immediately prior to or simultaneously with comparison to measured results. Therefore, such should not be regarded as limiting unless specifically claimed herein.

[0040] In some embodiments, MTouch system 10 comprises two main components: controlling software and a contact sensor 12. A high-level flowchart of the MTouch system 10 can be seen in Figure 2. The system starts by generating sample points and their expected results 18 from a Geode file 14 and user inputs 16. Next, as a layer is printed at 20, it is determined if the layer has any generated sample points. If the layer does not have generated sample points, additional layers can be printed. If the layer does have generated sample points, measurements are taken of the sample points at 24. These measurements are compared to the generated expected results of step 18. If the measurements of the sample points are as expected, additional layers can be printed at 20. If the measurements are not as expected, the printing process can be paused and/or an alert sent to a user at 28. In other words, during the interruption, the contact sensor 12, is used to determine if the printed object 100 is present or absent at each location. The presence or absence of the print is determined by actuating the contact sensor 12 and recording if contact was made with the print. The results of these measurements are compared to the pre-computed expected result. If all results match their expected outcomes, the print is resumed. If there is a discrepancy, the print is paused and/or the user is alerted to a potential fault.

[0041] 2.2 Control Software

[0042] A first task of the control software is the pre-processing work. In some embodiments, this includes creating a model of the print and using this model to generate the location of sample points as well as their expected results. The control software is further responsible for handling key events during the printing process, including interrupting the print at the layers to be sampled, moving the extruder of the printer to position the contact sensor 12 over the sample point, using the contact sensor 12 to get a measurement, and processing the result. Figure 3 shows a flowchart of these processes handled by the control software. Each process is covered in greater detail in the subsequent subsections below.

[0043] 2.2.1 Detecting Faults

[0044] In some embodiments, the control software first creates a model of the print, used for sample point generation, from the input Geode file. It should be understood that the sample point generation may also be done in CAM software or even in modeling software and, thus, is not limited to input from the Geode file. This model is created by representing a layer as a set of points whose coordinates correspond to the values of the X, Y, and Z components of G0/G1 commands (commands with no E component are ignored as nothing is being printed). To ensure a dense enough set of points which accurately represent a layer, extra points are added to commands with lengths over 0.1 mm to ensure points were no further away than 0.1 mm. The value of 0.1 mm was chosen because it is equal to the X/Y accuracy of the Ender 3 Pro printer being used for validation testing. However, it should be understood that greater or lesser distances may be used. [0045] 2.2.2 User Inputs

[0046] In some embodiments, after generating a model of the print, the control software receives inputs from the user. The first input is the X, Y and Z offsets of the probe tip of the contact sensor 12 from the extruder nozzle 102 (the Z distance represents the distance the probe tip extends past the extruder at full extension). Figure 4 shows an illustration of a side view of the extruder and the probe tip of the contract sensor 12 where the X/Y and Z offsets are indicated. This input is used to calculate where to position the extruder so the contact sensor 12 is over the intended sample point.

[0047] In addition to these offsets, a filament retraction value is input so the software knows how far the filament should be retracted to prevent plastic from seeping out of the nozzle during the sampling process. The next input is the layer spacing. This is the interval between layers that are sampled (e.g. for a layer spacing of 5, sample points are generated for every 5th layer). The smaller the layer spacing the more quickly a fault will be detected but the more time will be taken measuring sample points. Finally, the control software takes in which algorithms to use when generating sample points and the area density of the points to generate by each algorithm. Four algorithms were developed as detailed in the next section. Multiple can be selected and the generated points combined. Point density is used instead of a desired number of points to account for changing cross sectional area of each layer. This saves time by preventing smaller layers from being oversampled with many redundant points.

[0048] 2.2.3 Sample Point Generation

[0049] In some embodiments, sample points are created by iterating through the layers of the model and generating sample points at the interval specified by the layer spacing. Special care must be taken with sample points generated for layers with heights less than the Z offset of the probe. This is because, if the probe were to not contact the print, it will, instead, contact the bed of the printer before it reaches full extension and would register as a “contact” result causing a false reading. To resolve this issue, the extruder must be raised until the probe no longer contacts the bed at full extension.

[0050] Figures 5A-5C show some example sample points generated for layers of a test print. At locations like the shell of a print or an infill wall, the print should be detected. Similarly, at other locations, the print is not expected to be found such as slightly beyond the outer shell of a print or cavities within the print. If a fault were to occur during the printing process, the result of a sample point will not match its expected outcome. For example, if a filament runout fault were to occur, sample points tested after the filament has run out will return a “no print detected” result despite expecting the print to be detected. When this discrepancy is found, the print can be paused, and the user alerted to the issue.

[0051] Sample points for each layer are generated using strategies that are picked and combined by the user. For each layer of interest, the number of sample points generated with each strategy is first calculated by using the area of the convex hull of the layer and point density specified for each specific strategy input by the user. Each sampling strategy is then used to calculate the specified number of sample points before moving to the next layer. One possible strategy is random placement where random points of the layer’s model are selected. Since these points are of the layer itself, the expected result for each one is a “contact” reading.

[0052] Beyond the random placement strategy, three advanced sampling strategies were developed to optimize the location of sample points to maximize the chances of detecting faults. The first sampling strategy developed was the Inside- Outside strategy. This strategy aims to ensure sample points are generated along the outer shell of the print by finding the convex hull of the cross section and generating points within a 0.1 mm threshold. The same number of points are then generated outside this threshold and within the convex hull to ensure the internal parts of the print are also sampled. Figure 6A shows sample points generated using the Inside-Outside strategy for a test print. By sampling along the convex hull, faults are more likely to be detected. This is due to any fault causing the shell to shift toward the center of the print resulting in a “No print detected” result when the print was expected to be found. Additionally, other faults such as collapsed overhangs and misshapen shells are most likely to be along the convex hull of a print, where other parts of the print cannot provide support or accidentally be considered as the feature intended to be measured.

[0053] The second sampling strategy developed was the Min-Max strategy. This process calculates points at the extremes of the X and Y axes. Figure 6B exhibits sample points output by Min-Max for a test print. By taking sample points at the extremes of the X and Y axes, faults that allow the print to move relative to the extruder will be reliably detected. An example of such a fault is bed separation. Since the generated sample points are at the extremes along the X and Y axes, at least one of the sample points will no longer be aligned with the print as it slides on the bed after separation. This sampling strategy also ensures that some sample points are spread across the entire layer and do not become concentrated in one area by chance as points are randomly chosen.

[0054] Note, the Min-Max strategy is not able to detect layer shift faults. This is because the layers after the shift and the extruder will both move the same amount. Since there is no net difference, the sample points will still detect the print where expected. This led to the final sampling strategy developed, the Layer Shift (LS) Detection strategy. As its name implies, this strategy is specifically targeted at determining when a layer shift fault has occurred. For this strategy, sample points just beyond the outer shell of the print and expecting the print to not be detected. Examples of such sample points can be seen in Figure 6C. When a layer shift fault does occur, the most recently printed layer will be offset from the previous layers, causing the sample point to be shifted over the previous layers resulting in a “print detected” result. Figure 7 illustrates this process.

[0055] A point may be raised that a print which has a layer shift at the same time as a transition from a small cross section in the previous layer to a larger cross section in the current layer may not allow the previous smaller layer to be detected. However, such occurrences can only take place in two situations, which are illustrated in Figure 8. In the first situation, an overhang allows for the sudden change in cross section. In this case, the overhang will require support material to be printed, which will be detected when a sample is taken after a layer shift. The second case shows a print with a gradual change in the cross section between layers. In this case, there is no support material, but the difference in cross sections is so small, a sample point will still detect the previous layer when a millimeter-level layer shift occurs.

[0056] 2.2.4 Fault Detection

[0057] Once the sample points have been generated and the user is satisfied, the print can be started, and the fault detection will be handled automatically during the printing process. As the part is being printed, the control software will interrupt the printing process after a layer with sample points has been finished. The program then iterates through the generated sample point coordinates. For each point, a command to move the extruder of the printer is generated from the sample points coordinates and the X and Y offset values to account for the difference between the nozzle of the extruder and the contact sensor 12. When the contact sensor 12 is in position, a measurement is taken, and the results compared to the expected result. If the two values match, the process repeats for the next sample point. If the two values do not match, the print is paused, and the user is alerted. Once all sample points are checked and no discrepancies have been detected, the print is resumed.

[0058] 2.3 Actuated Contact sensor 12

[0059] 2.3.1 Sensor Construction

[0060] Having developed a methodology to detect faults, a sensor was needed, capable of detecting the presence or absence of the print at specific locations. An actuated contact sensor 12 was chosen for its low-cost and tolerance of external conditions compared to other methods. The following criteria were developed:

[0061] 1 . Total cost is less than $100

[0062] 2. Able to be controlled and powered by a Raspberry Pi

[0063] 3. Average time for one sample is less than 0.5 seconds

[0064] 4. Should not mark the print upon contact

[0065] 5. Greater than 95% accuracy

[0066] Criteria 1 and 2 were established to satisfy the original goal of the project to create a low-cost fault detection system. A target price of <$100 was established as this is significantly less than the $1 ,196 average selling price of desktop 3D printers. A key in making the system low cost is by minimizing the cost of computational hardware by only using a Raspberry Pi to control and power to system. Criteria 3, 4, and 5 were established to ensure the system is minimally intrusive. If the time required to take a sample is too large, using the fault detection system will cause a large increase in the time required to print an object, outweighing any time savings when a fault occurs. Similarly, if the contact sensor 12 were to mark the print upon contact, the quality of the print would be diminished making users less likely to use the system. Finally, the contact sensor 12 must be accurate to minimize false positive and negatives pausing the print when a fault has not occurred.

[0067] One commercially available contact sensor 12 (and its derivatives) which meets most of these criteria is the BLTouch. The BLTouch is a bed leveling sensor that uses an actuated probe to contact the print bed and act as an end stop. During the initial development of the MTouch system 10, the BLTouch was tested to see if it was suitable for use. However, testing revealed that the probe of the BLTouch could become stuck while taking measurements. This was caused by the deployment force of the probe being less than the retraction force. The probe would become wedged between the side of the print and the body of the contact sensor 12 during deployment and would not be able to overcome friction when retracting. In addition to becoming stuck alongside the print, the BLTouch was unable to detect when it had become stuck. The printer would then force the probe into the print, bending the probe, as it continued, damaging the BLTouch and the print.

[0068] To resolve this issue, a custom sensor was designed with a stronger retraction force and the ability to determine if it became stuck. Figure 9 shows final contact sensor 12 having a 3D printed bracket 50 that attaches to the extruder of the 3D printer and acts as the attachment point for a solenoid 52 and a Hall effect sensor 54. In some embodiments, the solenoid 52 is an Adafruit Mini Push-Pull Solenoid (product ID #2776) and is responsible for the actuation of the design. In some embodiments, the specific model of solenoid 52 was chosen for several reasons. First, its power requirements were within the limits of a Raspberry Pi (rPi). Second, the solenoid is a push-pull configuration with a spring return. A spring return is required as the solenoid needs to actuate down on command but must return to a retracted position when not powered to prevent collisions with the part being printed 100.

[0069] Connected to the solenoid are two additional 3D printed parts, the magnet cap 56 and the probe tip 58. The magnet cap 56 simply acts as an adaptor between the core of the solenoid 52 and a magnet 60. The magnet 60 is needed for the Hall effect sensor 54 to determine the position of the solenoid 52 during operation. In some embodiments, the specific type of magnet 60 used is a Super Magnet Man south pole radial ring magnet (part #RR0060S). This magnet is unique because the entire outer diameter is the south pole of the magnet 60. A radial magnet is used to eliminate any effect from the solenoid core rotating and changing the alignment between the magnet 60 and Hall effect sensor 54. Additionally, the magnet cap 56 has an extension which sits between two rails on the bracket preventing the magnet 60 from rotating more than a few degrees. The south pole of the magnet 60 was chosen to be on the outer diameter since the type of Hall effect sensor 54 used (A3144 Hall effect sensor 54) is more sensitive to the south pole of a magnet. It is important to note the type of Hall effect sensor 54 chosen outputs a binary signal (magnet detected or not detected), as the rPi would be unable to read an analog input without additional hardware. The second 3D printed part, the probe tip 58, also acts as an adaptor, this time between the solenoid core and a 1/16th inch dowel (McMaster-Carr 98381 A415). The dowel is used to reduce the diameter of the probe contacting the printed part 100, increasing the resolution of detail which can be measured, and is held by a probe bracket 62. The solenoid and Hall effect sensor 54 are connected to the rPi as shown in the circuit diagam in Figure 10. All these components sum to a cost well below the $100 target.

[0070] 2.3.2 Sensor Operation

[0071] The contact sensor 12 determines the presence or absence of the print by actuating the solenoid 52 and using the Hall effect sensor 54 to measure the position of the magnet 60. Images of the various states of the contact sensor 12 during the measurement process can be seen in Figures 11A-11 C. Figure 11 C shows the contact sensor 12 in the stowed position above the intended sample point. In this position, the magnet 60 is close enough to the Hall effect sensor 54 for the magnet 60 to be detected (which can be seen by the red light). Figure 1 1 B shows the contact sensor 12 when the solenoid 52 is actuated, and the probe contacts the print. The magnet 60 moves away from the Hall effect sensor 54, but the magnet 60 can still be detected. When the rPi reads the signal from the Hall effect sensor 54, it will know the probe tip 58 contacted the print 100. Figure 11 A shows the solenoid 52 actuated and the probe tip 58 not in contact with the print 100. Since the probe tip 58 is not in contact with the print 100, the solenoid 52 is able to fully extend, moving the magnet far enough away from the Hall effect sensor 54, the magnet 60 cannot be detected. This is read by the rPi which interprets the input as an indication the probe did not contact the print 100. Note, a Hall effect sensor 54 and magnet 60 are not specifically required. A similar effect can be achieved by using other sensors, such as optical endstops, contact switches, and capacitance/inductance probes. These other sensor configurations may decrease the complexity and total cost of components for a contact sensor 12.

[0072] The process of taking a measurement with the contact sensor 12 is illustrated in a flowchart shown in Figure 12 below. The process starts with the control pushing power to the solenoid 52. The control program then waits 0.15 seconds for the solenoid 52 to actuate before taking a reading from the Hall effect sensor 54. The period of 0.15 seconds was found to be the shortest period the position of the magnet 60 could reliably be determined; however, it should be understood that other time delays may be used. Next, power is cut from the solenoid 52 and another 0.15 seconds is allowed to pass for the solenoid 52 to retract. At this point, a second reading of Hall effect sensor 54 is taken to confirm the probe was able to retract and is not stuck alongside the print 100. If the probe is stuck, a subroutine consisting of moving the probe 0.1 mm (a value determined empirically) along the X and Y axes outward from the sample point location to free it. To reduce the rate of false fault detections, a second sample can also be taken whenever there is a difference between the measured result and the expected result. This addition increases the time required for a measurement, but a sensor with high accuracy should not require this very often, increasing the print time minimally while preventing possible false fault detections. As previously mentioned, once a sensor measurement is established, the control software compares the result to the expected value. If the two match, the printer moves to the next sample point and repeats the measurement process, or the print is resumed. If the results do not match, the print is paused. The user can then check the print 100 and decide between continuing the print and restarting.

[0073] 2.4 Experimental Setup

[0074] To test the contact sensor 12 and method of the present teachings, a fault detection system was implemented on an Ender 3 Pro 3D printer. To control the printer and interface with the contact sensor 12, an Octoprint plugin was created. Octoprint is an open-source program that gives users the ability to use a web interface to monitor and control their printers. Octoprint runs on a separate computer from the printer (typically a rPi) and streams commands from the user or from an uploaded Geode file to a connected device. This method of integration was chosen as Octoprint provides a framework for easy plugin creation and the ability to execute on a rPi.

[0075] As the part is manufactured, the plugin will interrupt the print and take control of the printer after a layer with sample points has been completed. This interruption is facilitated by checking the current layer height after a Z-change event, which is broadcast by the main Octoprint software. If the layer height matches that of a layer with sample points, the main Octoprint thread is paused while another processing thread is created to handle sample point measurements. This thread iterates through the generated sample point coordinates. At each point, a GO command is generated from the sample points coordinates and the contact sensor 12 offset values. The feedrate of the command is set to the travel feedrate of the printer. This minimizes the time the printer is traveling between points and will not affect the accuracy of measurements because the extruder must come to a stop before a measurement is taken. After the GO command, a M114 (return current position) command is also sent to the print. This allows the plugin to know when the extruder is in position as the current position message will only be sent after processing the GO command. Once this message is received, the plugin executes the measurement routine described in Section 2.3.2. The result of the measurement is then compared to the expected result. If the values match, the process repeats with the next sample point, until all sample points are completed at which time the main Octoprint thread will be continued. If the values do not match, a second measurement is taken. If this second measurement confirms the discrepancy, a fault has been detected and a flag is set in the plugin. The main Octoprint thread is resumed which checks the plugin flag and will pause the print.

[0076] Results

[0077] 3.1 Sensor Validation Testing

[0078] To validate, the contact sensor 12 meets the set requirements, several tests were conducted to validate the custom design as well as testing the BLTouch to see how the contact sensor 12 compares. Tests were conducted to determine the range over which each sensor (BLTouch and MTouch) could become stuck, the rate of false positives and negatives, the accuracy of each sensor, and the measurement period. Each test is described below and is accompanied by its results.

[0079] The first test establishes the range of distances from the edge of a print, where the probe of the contact sensor 12 becomes stuck. The test starts by printing a 15 mm cube with fault detection disabled. Once the cube is complete, the probe is positioned 2 mm outward from an edge of the cube. A measurement is taken, and the probe checked to determine if it became stuck along the side of the print. The state of the probe is recorded (stuck or not stuck), the probe moved 0.1 mm toward the center of the cube, and another measurement taken. This process is repeated until a measurement 2 mm away the edge of the print, inward toward the center of the cube, was taken. Figure 13 shows an illustration of this test.

[0080] The second test measured the rate of false positives and negatives of each sensor. Using the 15 mm cube from the previous test, the rate of false negatives was measured by positioning the contact sensor 12 at a random point over the print, such that the probe would contact the print, and taking 100 consecutive measurements. The contact sensor 12 was then moved away from the print, such that the probe would not contact the print, and another 100 consecutive measurements were taken to find the rate of false positives. The results of these two tests are shown in Table 1 below.

[0081] Table 1 - Results of sensor tests for BLTouch and MTouch system 10

Sensor Range of Getting Rate of False Rate of False

Stuck [mm] Positives Negatives

BLTouch [-0.1 , 0.5] 1% 0%

MTouch [0.0, 0.1] 0% 0%

[0082] The results in Table 1 show the contact sensor 12 (MTouch) can still become stuck alongside the print but in a significantly narrower range compared to the BLTouch. Table 1 also shows the rates of false positives/negatives are almost identical between the two sensors. The BLTouch did output one false positive reading compared to zero for the contact sensor 12, but this is most likely due to natural variance. Similarly, while the contact sensor 12 had a 0% rate of false positives and negatives, this does not mean the contact sensor 12 to completely immune to false readings. During testing of the entire fault detection system, as described in the next section, there were three instances of false readings being output out of hundreds of measurements. This does indicate that the rate of false readings is very low making the contact sensor 12 suitable for use.

[0083] To further test the accuracy of each sensor in a less artificial case, each sensor was used to take 100 random samples (including points where both the presence and absence of the print is expected) across the cross section of a partially completed print of a 15mm cube with no defects. The accuracy was then calculated as the number of correct measurements divided by the total number of measurements. The test was run a second time with measurements whose results deviated from the expected result, being sampled a second time (or “resampled”) to ensure a fault has been accurately detected. The results of these tests are shown in Table 2. The results show the MTouch system 10 has 100% accuracy in determining the presence of absence of the print with and without the second measurement. However, the BLTouch had, at most, 74% accuracy. This is considerable difference compared to the almost 0% rate of false positives and negatives. This difference is due to the probe of the BLTouch occasionally becoming stuck along the side of the cube when sampling near edges, causing an inaccurate measurement. [0084] Table 2 - Results of accuracy test for BLTouch and MTouch system 10

Sensor Accuracy Without Second Accuracy With Second

Measurement Measurement

BLTouch 72% 74%

MTouch 100% 100%

[0085] To determine the measurement period, or time needed for a single measurement, for each sensor, 100 consecutive samples were taken, and the total time recorded. The time for a single measurement was then assumed to be the average time per sample. Note, the timing values had to be changed from 0.15 seconds for the MTouch system 10 to 0.3 seconds for the BLTouch due to slower probe deployment. The measurement period for the MTouch system 10 without the error check (i.e., the second Hall effect sensor 54 reading in Figure 12 to detect a stuck probe) was also determined. The results, in Table 3, show the contact sensor 12 has a measurement period 0.378 seconds even with error checking, faster than the BLTouch by 47%. This measurement period is also within the 0.5 seconds established in the contact sensor 12 requirements.

[0086] Table 3 - Results of timing tests for BLTouch and MTouch system 10

Sensor Measurement Period without Error Measurement Period with Error

Checking [s] Checking [s]

BLTouch 0.718 N/A

MTouch 0.212 0.378

[0087] Since many other fault detection systems use non-contact sensor 12s, the need to physically interact with a newly printed layer raises concerns about distorting the print at sample points. A final test was conducted to determine if any artifacts would be left on the print by the sampling process. The test consisted of printing a 15mm cube and sampling six random points and each corner of every third layer and the last layer. A print with a relatively small cross-sectional area was chosen to give the layer less time to cool, making the layer the most susceptible to artifacts from the measurement process. All printing tests were completed using PLA plastic with an extruder temperature of 200 °C, printing speed of 60 mm/s, and travel speed of 120 mm/s. Figures 14A-14B show two cubes representative of the results, one printed with the sampling process and one printed without. The cube printed with the sampling process shows no signs of being scuffed or marked by the probe during sampling. This test was repeated three times to ensure accurate results.

[0088] 3.2 MTouch system 10 System Validation Testing

[0089] To validate the MTouch system 10 system and methodology of detecting faults, tests were conducted where a fault would be deliberately introduced to a print with the fault detection system in operation. The print layer the fault was introduced and the layer the fault was detected were recorded as well as the time elapsed before detection. All tests were repeated three times to ensure consistent results. The faults tested were layer bed separation, filament runout/jam, and layer shifting. Images of a normal print as well as a print affected by each of these faults can be seen in Figures 15A-15E. As a point of comparison, the same tests were conducted with The Spaghetti Detective (TSD) using the default settings and a Logitech C270 Webcam (720p resolution) mounted to the extrusion motor of the Ender 3 Pro using a 3D printed bracket and zip ties. Each test is described below and is accompanied with its results. The sample point generation strategy setting used during all tests are shown in Table 4.

[0090] Table 4 - Sample point generation strategy settings used during all tests of the MTouch system 10 system

[0091] The first fault detection test consisted of a bed separation fault. To reliably introduce such a fault, the print was paused before layer 27 of 52 began to print and a metal spatula was used to separate the print from the print bed while the part was held in place. The print was then resumed. Layer 27 was chosen as it is toward the middle of the print and is immediately after sample points are measured for layer 26, maximizing the number of layers and time until another layer of samples would be printed (Layer 32). The results of the test, presented in Table 5, shows MTouch system 10 detected the fault while sampling the first layer with sample points after the fault was introduced. Additionally, MTouch system 10 was able to detect the fault 154 seconds (or 44%) faster than The Spaghetti Detective.

[0092] Table 5 - Results of bed separation fault detection tests for MTouch system 10 and TSD when the fault was introduced at layer 27

Fault Detection System Layer Fault was Detected Elapsed Time [s]

TSD 35 349

MTouch 32 195

[0093] The second fault detection test consisted of a filament runout/jam fault. This fault was caused by removing filament from the extruder. Again, this fault was introduced at layer 27. The results in Table 6, show the MTouch system 10 detecting the fault while sampling the first layer with sample points after the fault was introduced. This is compared to The Spaghetti Detective which was unable to detect the fault. Looking at the fault in Figure 15, this is likely because the fault does not cause the secondary fault of spaghetti failure. The part after the fault is introduced keeps a geometric shape despite producing an unusable part.

[0094] Table 6 - Results of filament runout/jam fault detection tests for MTouch system 10 and TSD when the fault was introduced at layer 27

Fault Detection System Layer Fault was Detected Elapsed Time [s]

TSD N/A N/A

MTouch 32 201

[0095] The third fault detection test consisted of a layer shift fault. This fault was introduced to the printed part by pausing the print at layer 27, finding the current coordinates of the extruder using an M114 command, and using a GO command to move the nozzle 1 .5 mm along either the X or Y direction (both were tested). A G92 command was then used to set the position of the extruder back to the coordinates received from the M114 message response. Table 7 shows the results of this test. Looking at the results, the MTouch system 10 was, once again, able to detect the fault while sampling the first layer with sample points after the fault was introduced while The Spaghetti Detective was unable to detect the fault. Similar to the filament runout/jam fault, this is likely due to the part keeping a geometric shape and not forming any spaghetti.

[0096] Table 7 - Results of layer shift fault detection tests for MTouch system 10 and TSD when the fault was introduced at layer 27

Fault Detection System Layer X Axis Shift was Layer Y Axis Shift Was

Detected Detected

TSD N/A N/A

MTouch 32 32

[0097] Since the MTouch system 10 system pauses the print at regular intervals to measure the sample points, the time required to complete a print will increase. The last fault detection test consisted of printing a regular print with no faults with and without the MTouch system 10 system operating. The time required to complete the print in both scenarios was recorded. As Table 8 shows, the MTouch system 10 system increased the print time by 163.2 seconds (8.49%) for a 1922.5 second print. It should be noted this increase in print time can vary greatly with the sample point generation strategy values. For example, if a larger layer spacing or a lower point density is used, the increase in time will be less. However, the system may not detect faults as quickly or accurately, since there are fewer sample points to determine when something has gone wrong.

[0098] Table 8 - Results of print time test while the MTouch system 10 system is enabled and disabled

MTouch System Enabled/Disabled Average Time Required for Print [s]

Enabled 2085.7

Disabled 1922.5

[0099] Discussion, Conclusions, and Future Work

[0100] The present disclosure has presented a low-cost system for detecting millimeter scale part defects in desktop FFF 3D printers which is robust against environmental factors and versatile enough to detect several different types of faults. The system works by using a custom developed actuated contact sensor 12 to determine the presence or absence of the print at specific locations and comparing the results to pre-calculated expected values. Validation tests were conducted on the developed sensor and fault detection system to show there were operating within the requirements set. From the results of the contact sensor 12 validation tests, it was shown the actuated contact sensor 12 met all the criteria. During the design of the contact sensor 12, the total cost was kept under the target price of $100 and the contact sensor 12 is able to be controlled and powered by a Raspberry Pi. The validation tests show the average sample period of the contact sensor 12 is 0.378 seconds with an accuracy of 100% (during accuracy testing), meeting both requirements for measurement period and accuracy. The validation tests also showed the contact sensor 12 does not scratch or mar the surface of the print while taking a sample. The results of the system validation tests also show that the MTouch system 10 system can detect millimeter-scale major faults that are undetectable using The Spaghetti Detective while minimally increasing the time required to complete a print.

[0101] Finally, there are a few areas of potential future work with the MTouch system 10 fault detection system. The first area is shifting the sample point generation from Octoprint to a slicer like Cura. This would save a significant amount of time as the model recreation process can be skipped. Secondly, materials like ABS, PETG, and nylon, which require high-temperature printing, should be tested to ensure the contact sensor 12 does not affect layer adhesion or print quality in these scenarios. Additionally, as previously mentioned, the design of the contact sensor 12 could be further simplified by using alternatives to the magnet 60 and Hall effect sensor 54 such as an optical endstop, pressure sensor, or capacitive/inductive probe. A fourth area of future work is using the fault detection system to autonomously collect data to train a neural network to predict faults from the Geode. By predicting a fault ahead of time this would allow proactive steps to be taken to prevent printing part from becoming unsuitable for use in the first place.

[0102] The foregoing description of the embodiments has been provided for purposes of illustration and description. It is not intended to be exhaustive or to limit the disclosure. Individual elements or features of a particular embodiment are generally not limited to that particular embodiment, but, where applicable, are interchangeable and can be used in a selected embodiment, even if not specifically shown or described. The same may also be varied in many ways. Such variations are not to be regarded as a departure from the disclosure, and all such modifications are intended to be included within the scope of the disclosure.