ME 3902 - Project Based Engineering Experimentation
This project, which was a 3D printer monitoring system, was designed to help keep track of the internal enclosure temperature, track the humidity within the enclosure, and included a fire protection system to protect myself and the printer in the event of a fire. My hopes were that by tracking the internal enclosure temperature, it would allow me to protect my stepper motors that are housed within the enclosure, and by tracking the humidity within the enclosure, the print quality from the filament would improve.
For each of these components for the monitoring system, I included a set of outputs, which included a set of LEDs, a buzzer, and an LCD screen that displayed how each of these sensors, and the resulting values they were obtaining, were doing. In the event of high humidity, or high temerature within the enclusire, I wanted a red LED to turn on and preset warnings on the LCD screen to appear, with a buzzer also turning on for the high temperature readings. For a mid-range warning level for both humidity and temperature readings, I wanted a yellow LED to turn on, along with preset warnings for each on the LCD screen to appear. When every system was in acceptable range, I wanted a green LED to remain on. For the fire protection system, whenever a potential flame is detected, I wanted the system to turn on a red LED and have a preset warning on the LCD to appear, with green LED to remain on at all other times.
My hope for this project was that I could add a secondary safety to the Thermal Runaway Protection that is already enabled on my printer, while also improving print quality by tracking the humidity of the enclosure/filament, and increasing the lifespan of the printer by not allowing the stepper motors to get too hot by tracking enclosure temperature. The Fire Protection System is also a new system that I hope to further develop as there isn't an accessible system that directly tracks flames (Thermal Runaway Protection checks fluctuating temperature ranges of the hot-end). On top of this, there is no monitoring system that tracks the humidity of an enclosed printer in order to better the print quality.
Moving forward, I hope to implement other sensors that track air quality and the particulates in the air from 3D printing, while also trying to incorporate a Bluetooth or WiFi capability to send me updates on what is going on with the monitoring system. I would also like to figure out a way to have the system turn off the printer if the fire protection system was ever to trip. This is something that Thermal Runaway Protection does in the event of major temperature fluctuations, to prevent the spread of the fire. I also have plans to convert this system to a Raspberry Pi, which I already have set up with OctoPrint, which is a system used to control a 3D printer remotely. With OctoPrint, you can add a variety of sensors, and my hope is to add the sensors I have here, as well as the air quality/particulate sensors.
Goals/Motivations:
My goals for this project were to create a monitoring system for my enclosed 3D printer that will keep track of the internal enclosure temperature to allow me to protect my stepper motors that are housed within the enclosure, to track the humidity within the enclosure, and thereby improve the print quality of the printer, and finally include a fire protection system to protect myself and the printer in the event of a fire.
My motivations for this project was to add a secondary safety to the Thermal Runaway Protection that is already enabled on my printer, while also improving print quality and increasing the lifespan of the printer, through humidity tracking of the enclosure/filament and temperature tracking of the enclosure, respectively. With no current system on the market that directly tracks and prevents fires on 3D printers, (Thermal Runaway Protection only checks fluctuating temperature ranges of the hot-end), I thought this would be an interesting problem to solve. On top of this, there is no monitoring system that tracks the humidity of an enclosed printer, thereby improving the print quality, along with temperature tracking for the printer to increase the lifespan.
General Idea:
For each of these components of the monitoring system, I wanted to include a set of outputs, which included a set of LEDs, a buzzer, and an LCD screen that displayed how each of these sensors, and the resulting values they were obtaining, were doing. In the event of high humidity, or high temperature within the enclosure, I wanted a red LED to turn on and preset warnings on the LCD screen to appear, with a buzzer also turning on for the high temperature readings. For a mid-range warning level for both humidity and temperature readings, I wanted a yellow LED to turn on, along with preset warnings for each on the LCD screen to appear. When every system was in acceptable range, I wanted a green LED to remain on. For the fire protection system, whenever a potential flame is detected, I wanted the system to turn on a red LED and have a preset warning on the LCD to appear, with green LED to remain on at all other times.
BOM:
The following is every necessary component to recreate this Monitoring system
Arduino Uno
Half Breadboard
DHT22 Temperature/Humidity Sensor: Will only use the Humidity Component of this system
DS18B20 Temperature Sensor: Will be used for the temperature component of this system
Infrared Flame Sensor: Will be used for Fire protection system.
Jumper Wires: Various wire types, such as Male-Male, Female-Female, Male-Female
1602 LCD Screen: Used for output of system
LEDs: Red, Yellow, and Green LEDs: Used for output of system
Potentiometer: Used to adjust brightness level of LCD screen
Buzzer: Used for output of system
Considerations:
Considerations I made throughout this project and my thought process for each decision.
One thing I considered was the Temperature range I would need to measure, which is why I eventually decided to use a DS18B20 Temperature sensor and not just the included temperature readings from the DHT22 Sensor. This was because the maximum temperatures I would need to measure would be above the accurate temperature measurements the DHT22 sensor is capable of (80C), whereas the DS18B20 temperature sensor is capable of a range from -55C to 125C with a +/-0.5C accuracy over the whole range.
I chose the DHT22 sensor over the DHT11 sensor because of the lower humidity ranges it was capable of measuring. The DHT11 sensor, which is capable of reading between 20-80% humidity levels, would not be low enough if my goal is to get the filament and enclosure at the lowest possible humidity. Therefore, I chose the DHT22 sensor which is capable of measuring between 0-100% with a 2-5% accuracy.
My professor suggested that I consider the temperature measurement location as this will significantly impact the resulting measurements obtained. After thinking about it, I believe that the best location to measure the temperature within the enclosure would be the upper portion of the printer close to the stepper motors, as these motors are the thing I am most concerned about making sure to keep below certain temperatures.
Qualitative Expectations:
Below you can see the exact sensors that were used for specific value readings, along with the accuracy of each, the LCD readout (for Low, Medium and High values), and the control device that will be used to calibrate each sensor.
Schematic:
Testing:
I started by testing each individual sensor and component with a test code by itself, and once I completed every test, I began by adding one component at a time to the LCD test code while also adding the code components to it as well. Once everything was completely wired and ran correctly, I began tweaking the chose a bit here and there to refine everything.
LCD Screen Tests: Below are the results of the code and wiring that I completed:
DHT11 Sensor Tests: Below are the results of the code and wiring for the DHT11/22 Sensor: I used the DHT11 sensor while I waited for the DHT22 sensor to arrive. Other than having to change the type from 11 to 22 in the code, the wiring and code are the same for both.
Flame Sensor Tests: Below are the results of the code and wiring for the Analog Flame Sensor:
DS18B20 Sensor Tests: Current code not working: Will be continuing this next week:
Final Wiring Before and After 3D printed enclosure:
Calibration:
Calibration was needed to determine how accurate the sensors and the data they collect are. I performed calibration by comparing thtem to known working measurement devices, and doing this multiple times in multiple settings to ensure that each sensor has a variety of data points to calibrate them.
I used a Capillary Rise Thermometer to calibrate the DS18B20 temperature sensor that would be used to measure the temperature of the stepper motors inside the enclosure. Because it would be operating at higher temperatures, I made sure to do the calibration with the 3D printer at these higher temperatures. I took the temperature in a few places and recorded the temperatures from the sensor and compared them to the Capillary Rise Thermometer. Below are the results of this test, along with the portion of code to account for this calibration. More measurements in more locations will be required to fully calibrate this device, with a much more diverse temperature range, especially closer to the temperatures that I hope for the maximum temperatures inside the enclosure to be.
I initially planned on using a hygrometer to calibrate the DHT22 sensors, but found that this sensor is super accurate out of the box, moreso than even the portable Hygrometer I got to measure and calibrate the sensor. Because of this, I am assuming the readings on the DHT22 humidity sensor to be accurate. I originally planned to perform these calibration tests both inside and outside in multiple locations to get a variety of data points, to ensure the sensor is calibrated in the mid-range level of what it is capable of.
For the Analog Flame Sensor, instead of calibrating the actual sensor, I messed around with the threshold that is incorporated in the code that changes the sensitivity of the sensor, and when it would trigger an alert for a fire. Because I would rather be more cautious for a fire, I put this very close to the highest sensitivity value, until it started producing too many errors. I eventually settled on the default 200 value, which I found to be currently a good setup to measure flames within a 2-foot distance.
Below is the code to account for the calibrated sensors
Final Code:
Conclusions:
Throughout this project, I have learned a lot about how to wire multiple sensors together and how to keep track of the portions of code associated with each sensor. I have also learned a lot about how to incorporate sensors that we used in class in everyday life.
From this class, I have been getting into the code portion of these types of projects especially, which at first, I did not expect, but now hope to further pursue as an interest of mine for my personal projects. From this class I also learned a lot about calibration and how important it is to get accurate results when you go to use the sensors in application. In the future, I hope to calibrate all the sensors even further, and try different methods to do so.
Future:
If I were to do this project again, I would potentially try to also incorporate other sensors that track air quality and the particulates in the air from 3D printing, while also trying to incorporate a Bluetooth or WiFi capability to send me updates on what is going on with the monitoring system.
I would also like to figure out a way to have the system turn off the printer if the fire protection system was to ever trip. This is something that Thermal Runaway Protection, which is built into the printer does in the event of major temperature fluctuations, to prevent the spread of the fire.
Moving forward, I specifically have plans to convert this system to a Raspberry Pi, which I already have set up with OctoPrint, which is a system used to control a 3D printer remotely. With OctoPrint, you can add a variety of sensors, and my hope is to add the sensors I have here, as well as the air quality/particulate sensors I mentioned earlier into a system that can track even more on my printer. I plan to start by just implementing the DHT22 humidity sensor, and then moving forward with a variety of temperature sensors for different purposes and the flame and air quality sensors.
With OctoPrint, I will also have the ability to track for longer durations of time, and keep this data together for more research purposes in the future.