Introduction: Dust Collector Monitor V4

About: Hiking, Woodworking, PCB design using Eagle, Writing Software for MacOS and AVR, 3D Design using Fusion 360

This is the 4th version of my dust collector monitor. Like the previous version, this version monitors both the dust bin level and the filter.

How it works: To monitor the bin level a small motor with a paddle is mounted to the top of your dust bin. When the shavings reach the paddle the added resistance on the paddle triggers an alert. To monitor the filter, the pressure within the duct just before filter is monitored. An alert is triggered when the pressure goes above a preset value.

This version lowers the complexity and cost of the previous version by removing two features:

- This version does not monitor the open state of your blast gates.

- This version does not send a status message to your FM and/or bluetooth equipped hearing protector.

This version has a 4 inch TFT LCD display with a touch panel. The previous version’s display is only 1.3 inches and uses buttons to navigate. The larger display also makes it easier to see the status of the filter.

This version is easier to assemble because the board hosts an STM32 “Blue Pill” module. Being able to remove this module makes it easier to update the software. The STM32 runs up to 7 times faster than the 16MHz Atmega644PA processor used in the previous version. The STM32 module is much easier to acquire than the Atmega644PA. The STM32 module itself is less than half the cost of just the Atmega644PA chip (post pandemic price.)

This version is powered using a 12V 1A plug-in adapter. The previous version’s power supply requires 110 to 220V AC supplied by a power cable that is either hardwired to the dust collector control box or plugged into an electrical outlet.


Supplies

Monitor board is available at PCBWay. Note that this is a bare board. The board parts list is available on PCBWay.

4 inch Display board. As noted in The Board step below, you can use either the board I designed or a generic 4 inch display module. The display board I designed is available at PCBWay. The board parts list is available on PCBWay.

If using my display board: FFC Cable 15cm 12P, Reverse Direction, Pitch 1.0mm source

BluePill module with GD32F103CBT6 source

Pipe Fitting - right angle G1/8 NPT to 3.9mm tubing connector source

11x7x2mm O-ring source

Tubing, 3/16" ID x 5/16" OD source Note that the tubing I used has a thick wall. A thinner wall would probably work because this line is under extremely low pressure.

Dwyer® Static Pressure Tip model A‑302 source

12V LED Strobe source

Bin Paddle Motor, 6V 60 RPM with M3x55mm shaft source

HX2.54 2P and 3P female connector shells and pins. These are widely available on AliExpress. If you don’t already own a crimper I would recommend Iwiss model SN-01BM source

Motor control cable, shielded 2 cond. 22 awg with drain wire. The cable I used: Carol Cable Co: C2514.21.10. This cable is expensive and hard to source. You could probably use something reasonably priced like this. Note that the length needed depends on the distance from the monitor board to the dust bin.

Flasher/Strobe cable, any 2 conductor 22 to 26 awg stranded wire. You could use leftover motor control cable.

Motor cable: 4.5cm 2 cond bonded red/black 24 or 26 awg wire source

(5) M2x5 stainless steel button head screws source

(4) M2x4 stainless steel button head screws source

(4) M2x12 stainless steel flat head screws source

(2) M3x8 stainless steel button head screws source

(6) M3x16 stainless steel button head screws source

(6) M3 stainless steel washer source

(6) M3 stainless steel nuts source

12V 1A plug-in adapter source

Step 1: The Boards


The bare board I designed is available from PCBWay here.

The board requires 12 volts DC. This is because the warning flasher needs ~12V. The 12V is stepped down to 5V and 3.3V via two LDO voltage regulators. There is also a CR2032 battery holder to provide power to the real time clock when the 12V is not present.

The board has two pressure sensors, one for the ambient pressure and one for the duct pressure. The Bosch BMP280 digital pressure sensors are tiny. They are difficult to solder. I solder the sensors to the board last. I add a very small amount of solder paste to the sensor pads and melt it with my hot air gun. With the solder still molten I use tweezers or something with a small point to equalize the amount of solder on each of the sensor’s 8 pads. While the solder is still molten I place the BMP280 on the pads. You do not want to press down on the BMP280 once it’s placed. Doing so will generally cause a short between one or more pads. This is why it’s very important to have the same small amount of solder on each pad. I have tried using BGA solder balls but I’ve never been able to get it to work. Regular solder paste seems to work best (for me.)

As shown in the annotated board picture above, the board has five small buttons. These buttons are currently only used to initiate and save the touch screen alignment. You can optionally only install the button marked U (Up) and E (Enter.) as these are the only buttons currently used by the software. You could also install the 2x3 pin Buttons header instead of installing any buttons and implement the two required buttons on a protoboard.

The board has connections for the warning flasher, bin motor, SD card, STM32 “BluePill” module, and the display. The display can be an off-the-shelf 4 inch module or the display board I designed. The off-the-shelf board would use the 14 pin header on the edge of the board. The board I designed uses the 12 pin FFC connector. I also designed a board that converts the 14 pin header of the off-the-shelf module to 12 pin FFC.

The bare display board I designed is available on PCBWay here. You can also use an off-the-shelf 4 inch board as-is or convert it to use an FFC cable using my display conversion board that is available on PCBWay here (unfinished bare board.) 

My Board:


Generic 4 inch module:

Generic 4 inch board with my FFC adaptor board mounted:


Choosing the blue pill module:



The amount of flash memory required to hold the compiled code plus the fonts is 103KB. The generic BluePill modules generally come with either 32KB or 64KB of flash (STM32F103C6T6 or STM32F103C8T6 chips.) The next size up is the CBT6 with 128KB of flash, which is not a common option from most BluePill module vendors. The C8T6 is officially 64KB but it is made on the same die as the 128KB CBT6. The only difference is STMicroelectronics only tests the first 64KB on the C8T6. From all of the C8T6 modules I’ve tried, I haven’t had any issues when loading more than 64KB.

Having said that, there are some issues unrelated to the flash size. The generic STM32 BluePill boards keep crappy time when the RTC is running on the 3V backup battery. This seems to be due to poor crystal layout and/or the load capacitor values used. In my testing I swapped out a few of the STM32F103C8T6 chips with a GD32F103CBT6, and the GD32 keeps excellent time. So GigaDevice, the manufacturer of the GD32, has a more robust RTC implementation that overcomes the poor board layout.

The alternative to the generic BluePill is to spend a bit more and buy a WeAct Studio BluePill+ module. As with most WeAct Studio products, these boards are very well designed. The crystals are isolated and very close to the mcu. The RTC on battery backup with a STM32F103CBT6 keeps great time. In addition to offering the 128KB STM32F103CBT6, WeAct offers several different equivalent chips for less money: APM32F103CBT6, GD32F103CBT6 and CH32F103CBT6. I tested the APM32 and GD32. Of the four, I prefer the GD32. As when used on the generic blue pill, the GD32 keeps excellent time and it runs at a higher clock speed so it is noticeably zippier. It also seems to load flash faster.

The only drawback is that the STMicroelectronics STLINK-V3, used to load flash, only recognizes STM32 chips. To program the other chips I use an STLINK-V2 clone. Warning: of the four STLINK-V2 clones I purchased, two were DOA. It turns out these two STLINK-V2 clones used a little known chip manufacturer and were never tested. I swapped out the faulty chips with Geehy APM32F103CBT6 and was able to get them working.

Note that the WeAct Studio BluePill+ module supplies 5V to a pin that is ground on the generic board. To fix this simply pull this pin from the 20 pin female header. You might want to pull this pin even if you’re using the generic board. At some point you may decide to use a BluePill+. 

Step 2: Loading the Monitor Software

Download the software from GitHub here

In order to compile the software using the Arduino IDE, the STMicroelectronics package must be installed. The steps needed to install the STMicroelectronics package is not included in this instructable. Use Google.

The monitor software requires the SdFat library by Bill Greiman. This is installed via the Arduino IDE Library Manager (Tools->Manage Libraries…) Search for SdFat. Install if not already loaded. I used version 2.2.2, which at the time was the latest version. Note that the SdFat library is used only to export/import preferences and could be removed to save space.

- Launch the Arduino IDE (if not already)  

- Open the Arduino IDE preferences and point the Sketchbook Location to the “Dust Collector Monitor V4” folder.

- From the Arduino IDE Tools menu set the board to:

Arduino Tools Menu

- Connect your ST-LINK programmer to the BluePill. Note that if your BluePill is installed on the Monitor board, use the board power. Of the 4 wires from the ST-LINK, don’t connect the 3v3 wire to the BluePill.

From the Arduino IDE, upload the sketch.


Step 3: Aligning the Display

This project uses a resistive touch panel that needs to be aligned before use.

Because the touch panel can’t be used prior to alignment, to initiate the alignment procedure you press the Enter button (center button) of the 5 buttons on the dust collector monitor board. Once pressed the following will be displayed:

Follow the displayed instructions. Keep selecting the white dot within the circle till the magenta dot covers or nearly covers the white dot.

As noted in the instructions within the screenshot, you keep selecting the white dot within the white circle till the accuracy is acceptable. Acceptable is defined as the magenta dot completely covering or mostly covering the white dot. You then press the Enter button on the dust collector monitor board to save the alignment parameters to the EEPROM. All preferences, such as the alignment parameters and pressure thresholds are stored on a 24C64 EEPROM, not on the BluePill module. This allows you to swap out the BluePill module without having to re-create the preferences.

The video in the introduction demonstrates the dust collector monitor startup. This video was taken in my cousin’s shop. The clean pressure shown in the video is 7.2 hPa which would be considered nearly fully loaded for the filter in my shop. In my shop the clean pressure is around 2.5 hPa and the dirty pressure is 7.5 hPa. The point being, the clean and dirty pressure values may vary quite a lot depending on the installation.

Step 4: Print the 3D Parts

Note that the files DCM STM32 top and DCM STM32 base are sized for the 4 inch display module I designed. If a generic 4 inch display module is used, use DCM STM32 generic base and DCM STM32 generic top. I have not 3D printed these generic files so you should probably print the top first and test fit the generic 4 inch display. Even though the generic modules look the same, I have no way of knowing if all 4 inch generic display modules have the same dimensions and hole placement.

Download and print the base and top. The base needs to be printed using a layer height of 0.15 or less, with the support placement setting set to everywhere, and the support overhang angle set to 80. The part of the base that connects to the pressure sensor should be as air tight as possible. Any leakage will effect the duct pressure readings. I also print the top at the same layer height.

If after printing the base you determine that base print isn’t air tight due to the print layers not bonding properly, you can apply a thin layer of plastic epoxy to the inside and outside of the base around the area of the duct to board transition connection to attempt to seal any air leaks.

You need two Motor Mount Paddles and the Motor Mount itself. The layer height for these prints don’t really matter. The Motor Mount needs the same support as the DCM STM32 base.

The Flasher Mount Base and the Flasher Mount are optional. Like the Motor Mount, these can be printed at any layer height. I found the base that comes with the flasher clunky and hard to use so I redesigned it.

If you don't have easy access to a 3D printer, you may want to consider using a 3D print service such as PCBWay.

Step 5: Assemble the Monitor Box

After printing the top and base the threads in the base print need to be tapped. The threads as printed are G1/8 NPT but they still need to be tapped to clean them up.

Wrap PTFE pipe tape around the right angle G1/8 NPT to 3.9mm tubing connector.

Screw the adapter into the base.

Drill out the two 4mm mounting holes in the base.

Place an 11x7x2mm O-ring in the bottom of the case to seal the duct pressure sensor to the base.

Insert the board into the base aligned with the 5 mounting holes.

Use 2 M2x5 button head screws to initially mount the board.

Make sure the SD card can be inserted. If not, remove the board, then remove plastic from the case’s SD entrance hole till it can easily be inserted into the SD slot on the board.

Once the board fits, install the remaining M2x5 screws.


On the top, clean out/drill through the four outside corner holes used to attach the top to the base using a 2.2mm drill bit as shown below. Leave the four inside holes used to mount the display untouched.

Use a chamfering bit on the top four holes till they accept flat top M2x12 screws flush with the top. 

Remove the protective film on the 4 inch display module.

Place the display module in the top and secure it using 4 M2x4 button head screws. Later you’ll need to test the touch panel to make sure the clearance between the top and the touch panel isn’t affecting the panel. If the panel isn’t responding to pen presses you may need to insert paper shims between the display board and the top to relieve any pressure from the top on the touch panel.

Step 6: Build the Cables

Flasher cable: The flasher comes with an unterminated red and black bonded cable. It’s not very long. You can extend this cable using any two conductor wire that is at least 26 AWG, and no more than 22 AWG because the end needs to be terminated with an XH2.54 2 pin connector as shown below:

Motor cable: The paddle motor wire is very short. I used 24 AWG wire with an XH2.54 2 pin connector. The length is critical, otherwise it won’t fit properly within the motor mount base.

Motor cable extension: The wire used should be shielded 22 AWG 2-conductor preferably with drain wire. It’s very important that this wire be shielded with the shield connected to chassis ground (chassis ground is not VSS/GND/board ground.) The collector bin generates a huge amount of static electricity. The cable I used, Carol Cable Co: C2514.21.10. I found a similar wire on AliExpress for a reasonable price. 

Determine how long the motor cable should be. Because the wire I used has a drain wire I added an additional length to extend the drain wire long enough to attach to the metal frame of the dust collector (i.e. chassis ground.)

The ends should look like this:

Monitor Board Drain Wire: Next to the XH2.54 three pin connector is a single pin 90 header. This is the connection for the chassis ground. A wire needs to run from this pin to earth ground. The screw that holds most AC wall plate covers to the electrical outlet is earth ground. If the screw is plastic or nylon it needs to be swapped out with one that’s metal. The cable I made is 22 AWG with a spade lug on one end and a Dupont connector on the other.

Chassis Ground Cable

Step 7: Mount the Motor and Static Pressure Tip

Carefully insert the motor with attached motor cable into the 3D printed motor mount. If you look into the slot for the motor you should see a T shape at the bottom of the shaft. The goal is to get the wire folded over the end of the motor into this T slot. If you've cut the cables exactly as stated in the cable assembly photo, the connector will sit in the connection slot as shown in the photo below. If the cable is the correct length yet it extends too far into the connection slot, the problem may be that you didn't get the wire into the T shaped pocket in the bottom of the motor slot.

Connect the motor extension cable with the drain wire folded back over the wire sheathing. Apply a dab of plastic epoxy to the sheathing where it comes in contact with the motor mount and press the wire into the slot. Set the assembly aside and wait for the epoxy to cure. This will keep the wire from popping out when applying the silicone.

Vacuum the drum cover. Drill three 3.2mm (1/8”) holes in the drum cover using the Motor Drilling Template.PDF provided below. Position the motor mount template in a location that generally gets lifted higher than the rest of the cover when emptying the drum. For me that is as shown in the photos. I've yet to come close to damaging the paddles and shaft.

Vacuum the drum cover and clean the surface with window cleaner.

Place a bead of silicone as shown on the motor mount.

Secure the motor mount to the cover using two stainless steel M3x8 pan head screws with M3 washers.

Wait for the silicone to cure.

Info Screen

Position the paddles on the motor shaft with the paddles flush with the end of the shaft. Secure the paddles using six stainless steel M3 x 16 screws with washers and nuts.

The static pressure tip is installed in the duct just before the filter. Oneida, the manufacturer of my dust collector, has instructions on how to install the tip here

Run the tubing from the pressure tip to the connector on the monitor box. I used tie wraps and saddle type tie wrap mounting blocks to keep the motor control wire and tubing in place.

Step 8: Software User Guide

The main menu used to access the various panes and dialogs is displayed by pressing the icon in the top right corner.

Selecting Info within the main menu will display the information pane. The date and time is set using the Set Clock dialog. The temperature unit is set using the Utilities dialog. The pressure value unit is set using the Filter Settings dialog. 


Selecting Filter Status within the main menu will display the filter status pane. This pane displays the efficiency of the filter, where 0% is most efficient, and 100% is fully loaded/dirty. In addition, you can optionally show the duct static pressure in the lower left corner of this pane. The fan icon in the lower right corner is enabled and animates with the appearance of fan blades turning when the dust collector is running.


Selecting Filter Settings within the main menu will display the filter settings dialog. The Pressure unit popup menu allows you to choose either hectopascal or inches of water as the pressure unit. Once selected this unit will be used in this dialog and the information and filter status panes.

The clean and dirty pressures determine the range of pressure values displayed in the filter status pane, where clean is 0% and dirty is 100%. These pressures can be set manually using the stepper controls to the right of each value, or by pressing Set when the dust collector is running. Pressing the Set button associated with the clean pressure should only be done after you’ve thoroughly cleaned the filter. Pressing the Set button associated with the dirty pressure should only be done when you know that the filter needs to be cleaned. For example, you can start off by manually setting the dirty pressure significantly higher than the clean pressure, then run the collector till you notice the collector isn’t efficient as you would like, meaning it’s time to be cleaned. Once set you can then manually adjust either pressure as desired. When the filter is 100% loaded a warning dialog will be displayed. 

The checkbox below the clean and dirty pressure values is used to display or hide the static duct pressure in the lower left corner of the filter status pane.

Press OK to save your changes or Cancel to discard them.


Selecting Bin Settings within the main menu will display the filter settings dialog. The software can ignore the motor entirely if the bin level is being monitored by some other means. Unchecking the Disable motor checkbox means you’ve installed and intend to use the bin motor. The Bin warning threshold value determines when the bin is considered full. The load on the bin motor is monitored while the dust collector is running. When the shavings in the bin come in contact with the spinning paddles, the load on the bin motor will increase. When the load reaches the threshold value a warning dialog will be displayed.

Press OK to save your changes or Cancel to discard them.


Selecting Set Clock within the main menu will display the set clock dialog. Select the date and time component value to be changed, then use the stepper control to adjust the value. You can use the Utilities dialog to change the format from 12 to 24 hour as desired.

Press OK to save your changes or Cancel to discard them.


Selecting Utilities within the main menu will display the utilities dialog. Pressing the Start button will turn on the dust bin motor for testing without the dust collector running. Once pressed the button text will change to Stop. You can Close the window and switch to the Info pane to see the current motor value.

There are a few settings that can’t be set from the UI directly. For these you need to save the settings to an MS-DOS (FAT32) formatted SD card with a capacity of no more than 32GB.

Insert the card in the SD card slot. 

Press Save to create the text file DCSettings.txt.

Remove the card and edit this file on your computer.

There are only two fields that should be edited: (although all can be edited/loaded)

- temperatureUnitCelsius, set to true for Celsius, false for Fahrenheit.

- hourFormat, set to either 12 or 24 for 12 or 24 hour format.

Reinsert the SD card into the SD card slot.

Press Load to read and load the settings. Note that this function can’t be cancelled.

Press Close to dismiss the dialog.


Selecting About within the main menu will display the about dialog. This dialog displays the version and copyright notice.

Press Close to dismiss the dialog.

Step 9: Conclusion

I hope you liked this instructable. Send me a message if you have any questions.