The enclosure used for this project is a Hammond 1553BBKBAT. To begin, holes for the OLED and switches are milled (or drilled) into the top half.
Next the bottom half is milled in several areas to make space for all of the internal components. Yes, it's a tight squeeze once everything is installed!
- Holes for the UVC LEDs
- Grooves to accommodate LED mounting screws, washers, and wires
- Removal of 4 PCB mounting posts
- Removal of the battery compartment flap
Top piece with the switches installed, each has a JST-PH connector soldered on with heat shrink tubing for additional insulation. In this view the pushbutton switch is on the left, and the power switch is on the right.
Bottom half completed. The battery contacts seen here will be added in a later step.
Two battery contact holders are milled out of 1/4" thick ABS plastic. Grooves and channels are made to accommodate contacts and wires.
Identical format is used for both sides.
Both pieces installed into the battery compartment with 2-sided tape.
3Printed circuit board (PCB)
A custom PCB fits snugly into the enclosure. Notice the side slots which hug the mounting posts. I'll be posting more details about the circuit at a later time.
Rather than etching the boards myself, I had them commercially made by DKRed and it was definitely worth it. They have high quality coatings, solder masks, and silkscreen labels for all the parts.
Components are soldered onto the circuit board. The Arduino board is installed with only the necessary pins populated, this frees up space on the main circuit board and reduces the amount of soldering needed.
The OLED connector is removed from its own board to provide clearance, and soldered onto the PCB. A cable included with the OLED is cut into half and soldered directly onto the OLED circuit board. An equivalent 4-pin JST would have occupied more space. Alternatively, the display can be hard-wired to the PCB with standard ribbon cable (paying attention to signal polarities).
(This one is smaller than a 4-pin JST. Be careful not to damage these connectors as I have no idea where to find a replacement.)
4LEDs, heat sinks, fan, and temperature sensors
Here are the goods! These LEDs come pre-soldered to a heat sink called a metal core printed circuit board (MCPCB). The oness selected for this project also contain a 60° lens made of special material (silica or fused quartz) since most materials inherently block UVC wavelengths (glass, acrylic, plastic, etc.). Focusing the light onto a smaller area also increases exposure, meaning more germs will be inactivated at a faster rate.
They can also be purchased separately and soldered on, but the cost savings is not significant, especially when there's a chance of ruining an expensive part while soldering.
SV-LED-314E heat sinks are designed for individual LEDs/MCPCBs. Here they are milled (slowly) using drilling oil and short bursts of incremental depth so the CNC machine doesn't break bits, push the part out of alignment, or send everything vibrating off the desk. Drilling oil helps keep the bit and workpiece cool, while removing metal bits from the drilling path and minimizing the amount of metal dust in the area.
Holes are tapped to fit #2-56 screws.
The heatsinks have tapped holes for the LEDs and for mounting themselves to the front faceplate of the enclosure. The fan's existing mounting holes are gently tapped by hand to avoiding damaging the plastic frame.
Notice that a "fin" is missing from each one to make space for the thermal sensors. This was done by simply gripping each fin with a pair of long-nosed pliers and wriggling back and forth until it breaks off.
The LED slabs are wired/soldered together in series with a JST plug. Long #2-56 screws are inserted into the front plate, along with spacers, to prepare for the next steps.
The heat sinks are coated with a bead of thermal compound to help transfer heat away from the LEDs.
The LEDs are now mounted onto the heatsinks using 5mm long #2-56 screws and nylon washers to prevent short-circuiting. Each temperature sensor is also soldered to a JST-PH plug as shown in the next photo.
IMPORTANT - Remember to add the nylon washers for electrical insulation
Each LM335Z temperature sensor. The first pin is unused and may be cut. Pin 2 is the positive lead, and pin 3 is the negative (ground).
The fan is installed the logo facing outwards to pull air through the enclosure and expel it out of the front panel. Two connector pins are soldered onto the fan's wires and inserted into an empty JST-PH plug. The fan socket is at the bottom center of the PCB.
The heat sinks are also mounted to the front panel with longer #2-56 screws and 1/4" nylon spacers. This provides clearance from the mounting slots at the front of the enclosure so that everything will fit.
The temperature sensors are placed into the empty fin slot of each heatsink with thermal paste, then secured with Gorilla Glue. (Yes, really.) After drying, the excess glue can be filed, sanded, or cut so that it does not protrude and push against the circuit board later.
The heatsinks are mounted so that the LEDs are facing downward through the bottom half of the enclosure. The thickness of the enclosure is enough to keep the lenses from making contact with any surface, and a 1mm gap between the MCPCB and the enclosure allows air to be drawn in around the heat sinks.
5Lights, camera, action!
Yup, it's legit! Pure germicidal UVC.
Illuminating a white towel on the floor. Not all bleached items will glow under UVC; some are designed to glow under UVA (party "black lights"). Not much disinfection is happening here, this is just a demo of distance and brightness.
Ideal distance for disinfection with this device is approximately 2 inches.
Temperature taken from the fan area (left) and from the front of the LEDs (right).
Absolute maximum rating for these devices is 100°C (212°F), the controller is set to power the lights off at a more conservative 52°C (125°F).
(Below) Testing the temperature sensor's response with cooling spray. It was instantly covered with a thick layer of frost.
The Arduino controller monitors the LEDs' temperature and power consumption and will power them off if either becomes excessive. It will also attempt to identify any error conditions that may happen, display a message, power the LEDs down, and lock the unit out of operation until it is turned off or power cycled.
Most of these are self-explanatory. Some of these shots were simulated by deliberate tampering (such as disconnecting a temp sensor), and others were produced by actual use. Isn't testing fun?
The first picture was taken before I raised the "threshhold" temperature.
If one of the temperature sensors cannot be read (loose wire, etc.) the following message would be displayed. Of course if the ambient temperature was really -450°F, germs would not matter.
High current simulated by passing a magnet over the hall effect current sensor.
If power is detected when there should be none.
Of course, having no output at all would pose an issue as well.
If the power and/or pushbutton switch is inadvertently held on for 4 seconds or longer, the device will power the LEDs down and lock itself out of operation until it is turned off or power cycled.
What project would be complete without Clippy the assistant. Here's a possible overheating message that wasn't included in the final build.
7Setup screen and sensor configuration
Holding the pushbutton down while powering the device on will enter a diagnostic/setup mode. This splash screen is displayed briefly.
The status of the controller's data lines are displayed, along with raw analog input readings of the temperature, battery, and LED current measurements. This can be useful when troubleshooting sensors or ADC sampling.
Holding the pushbutton down for more than one second will cycle through different values for the current sensor sensitivity ("Sens:"). This allows the builder a choice of available sensors. Pushing the button briefly will commit the selected value to the controller's EEPROM and return the device to normal operation.
Options: OFF, 200mV/A, 264mV/A, 400mV/A, 800mV/A
The reason for this feature: lately the sensors have been backlogged among the various parts distributors (Digikey etc.) and similar models are available from multiple manufacturers (Allegro, TI, etc.). If none are available, or the builder decides to forego current measurement, this option can be disabled by selecting "OFF". The controller defaults to 264mV/A which appears to be the most common value for 3V sensors.
Sensors with a lower sensitivity value are not recommended due to voltage fluctuations and the inherent noise level of the Arduino controller's ADC. Lower mV/A would represent a lower dynamic range to sample from and result in lower reading accuracy.