Filament monitor for Arduino

Prototype is alive

The first prototype is running by about three days and after some revisions on the Arduino software (mostly on the calculation algorithms) it works fine, ready for the public.

The electronics

  • Arduino uno R3
  • 5kg max load sensor
  • Mx711 chip analog to digital sensor amplifier
  • A very small circuit with two buttons and a dip-switch
  • 16×2 alphanumeric LCD monochrome display
  • Orange LED (shows the load sensor readings when flashing)

That’s all

Arduino firmware

Easy to use

The Arduino script has been done to make the use of the tool while 3D printing; it works in a semi-automatic mode and does not need calibration or settings. One of the most interesting aspects is the ability to manage automatically the filament roll also if it is not on start. Then you can change it (e.g. changing the filament colour or material) and the system continue working.

What you should know

Before starting using the filament monitor you need to know the empty roll weight. This is the only fixed variables that can’t be calculated or deducted internally. Knowing this value is easy and you do not need to have an empty roll, obvious! If you weight on a digital scale (possibly one for kitchen more precise than a bigger one) you see that the 1Kg filament roll weight some more, e.g. 120 Gr. This is the weight of your roll that should be setup as the filament tare.

You should also know: Material (PLA or ABS are supported), filament diameter and full roll weight. These values should be preset through the three dip-switches as shown in the following table:

Meaning    Off     On
Material   PLA    ABS 
Diameter  1.75mm  3mm
Weight     1kg    2kg

How-to usage

  1. Power-on the support without the filament roll and wait for the display showing Started, The system is self-calibrated to the internal zero point.
  2. Put the filament roll on the rotating support and press the control button. Arduino calculates the effective weight,  deduct the filament tare and enter in the Ready state: remaining meters and percentage of filament as shown too
  3. Press the control button again; it enters in the Load state and you can start printing!

Pressing the second button you switch between grams and centimeters the constantly updated value of the consumed filament on the second line. The first line instead shows the remaining meters and the used percentage.

Note: as the length in centimeters reach the value 100 (1 meter) the displayed value is shown in meters instead.

 

 


3D Printer Filament Monitor

First of all we should consider the following points:

  1. For obvious reasons of easy pricing the plastic of 3D printing filament is sold and managed at source on a weight based. Despite it is distributed in form of filament, useful for the 3D printers. The most common diameters are 1.75 and 3 mm thick.
  2. 3D printers – especially the slicers algorithms – calculates the printing time based on the – average – Extruder speed integrated with the filament diameter, the nozzle size and the layer thickness. It has sense because as a matter of fact the physics of the slicer is calculating a solid 3D object divided in slices where the speed as well as extrusion temperature impact on the final quality. So while doing the slicing calculations it is easy and useful to collect the number of meters needed to 3D print a certain object.
  3. Depending on the material we use filament has different performances; I mean same weight corresponds to different metering of the roll (filament diameter makes the difference)
  4. We know – or it is easy to know the specific weight of the materials, e.g. PLA and ABS have different specific weights: one meter of PLA has different weight than one meter of ABS, same diameter. A good value can be obtained by the filament calculator
  5. The entire process to measure weight and lenght of the filament (used, remaining etc.) should be cheap and easy and efficient too
  6. Asking for external – producers/distributors – help making complex changes is senseless. We have a problem and we should solve it. Not change the world to avoid the problem.

Considering the above points the right approach for a dynamic measuring of the 3D printers filament usage is surely weight-based.

About one year ago I have created an original 3D printable filament spool support. The assembly guide is shown in an instructable: 3D Printer Filament Spooler Support Assembly Guide I used for all my 3D printings without problems.

Now the 3D Printer Filament Monitor integrates this support with a weight sensor creating an Arduino based device for real-time filament monitoring. Also in this case the entire structure is fully 3D printed and the images below shows how it is built.

 

The math of filament

Recently I followed with a certain interest a project trying to calculate the 3D printers filament consumption during jobs. The ReFILL agent project first published on Hackster.io bases the calculation on the number of rotations of the filament roll detected by an RFID sensor. Then when the filament is near to finish an automatic order can be sent to amazon for replacement.

To be honest the idea has not convinced me too much because it is too complex to manage (every roll should be modified by the user adding a printed RFID tag and the measure is subject to a too big systematic error.

As I have explained in my comments on the Element14 blog post ReFILL-ament for3D printers the base principle is not correct and the systematic error is amplified and distributed up to the finished project.

To manage the math of the filament we should start from a different approach, not the too effimere roll rotation approach. This is the reason I started the 3D printer filament monitor project a couple of weeks ago.

Coming soon: TiltPan Micro Camera Arduino Shield

The next project will be published, soon available on Tindie.com is the TiltPan Micro Camera Arduino Shield. In the following video you can see the prototype on-the-move.

TiltPan Assembled 3Main features

  • Dual-axis tilt and pan 180 Deg movement with micro servos
  • Board shield arduino compatible with Duemilanove, Diecimila, Arduino UNO R1/R2
  • include a full HD micro camera
  • Shooting and video saved on the camera micro SD (up to 32Gb)
  • Arduino library provided with the shield (under development)
  • Can be easily adapted to other cameras
  • Full camera control (power, shooting mode, etc.)
  • Can capture time-lapse variable sequences
  • Independent power supply for the camera and servos
  • Can capture semi-spherical panoramas (need separate stictch software to assemble the image)
  • Independent axis movement in the sequences (tilt-only, pan-only) or synchronized movement (tilt-pan together)
  • More options and features are under testing

Test example

The video below shows a sequence only created with the device.

Test settings

  • One shoot every 4 seconds
  • First move from left-bottom to up-right, 1 Deg step on the longer axis (pan rotation)
  • Second move from the previous position to the middle position, pan rotation only, 1 Deg step
  • 512 frames shoot in the same position