element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino Projects
  • Products
  • Arduino
  • Arduino Projects
  • More
  • Cancel
Arduino Projects
Blog 3d printer filament roll holder and monitor for Arduino
  • Blog
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino Projects to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: balearicdynamics
  • Date Created: 24 Jun 2017 9:37 PM Date Created
  • Views 4438 views
  • Likes 10 likes
  • Comments 6 comments
  • monitoring system
  • 3D Printing
  • arduino shield
  • ardexpert
  • load cell
  • filament monitor
  • filament dispenser
  • weight sensor
  • weight
  • arduino
Related
Recommended

3d printer filament roll holder and monitor for Arduino

balearicdynamics
balearicdynamics
24 Jun 2017

    • Introduction
      • Updates
      • Weight vs length and vice-versa
    • Finding and testing the load sensor (scale sensor)
    • The filament roll scale design
    • Assembling the parts
      • Some structure improvements
    • Circuit and wiring
      • 1. Power the system and initialise it (calculating the empty tare without the filament)
      • 2. Place the filament roll and wait the weight stabilises
      • 3. Start reading the usage (material load)
      • The project in action
    • The software

Introduction

This project aims to solve two issues I have experienced working with 3D printers: controlling the filament consumption while the 3D printer is working. After exploring several possible approaches I decided that the most reliable solution should be based on the weight control.

The ability to dynamically measure the plastic material (filament) in use by a 3D printer includes some interesting non-obvious aspects helpful in many phases of the 3D printing process.

 

Updates

On June, 30 this project has been featured on Tindie Blog | 3D Printer Filament Weight/Length Monitor

November, 11. You can find the new version of this project with Bearings and some reviewed components for better working on Shopify: 3D Printer Filament Monitor for Arduino

 

Weight vs length and vice-versa

3D printers filament is sold in weight; the most common packages are 1 or 2 Kg filament rolls. The reason is that the product format, i.e. the filament in our case is the most important aspect for the end-user but meaningless for producers. Producers just sell kilograms of plastic material (PLA or ABS); the filament is the form factor provided on the market for a specific usage. I suppose that the same company that provides PLA filament it is not excluded will also provide the same material in other formats (e.g. plates, powder, pipes, film etc. for other applications). But for a similar reason 3D printers users needs to measure their filament in length. Slicer algorithms calculate the meter of filament needed for a certain 3D printed object so it is important to know how much meters remain in the roll before starting a new object printing and how many meters are used during a print job.

We know the specific weight of the materials used for 3D printing: PLA and ABS have different specific weight and this is a constant value. We also know the filament diameter; this means that 1 Kg 1.7 mm diameter filament will be longer than 3 mm diameter filament, same weight.

Calculating the conversion between weight and length it not so difficult knowing these parameters. You can just play with an algorithm with this nice online filament calculator.

 

Finding and testing the load sensor (scale sensor)

The first step was to find the right weight sensor and test its sensitivity. I should thank to michaelkellett that addressed me in the right direction; I bought a first series of four scale sensors in the weight range of 0-5 Kg and about half gram sensitivity for 3$/piece including the HX711 based amplifier circuit (the IC datasheet is in attach to the bottom of this post)

image

imageimage

Using a 3 mm MDF sheet I have created a simple test sample to see the kind of data I should expect; after writing a few lines of code to show the readings on the serial terminal from an Arduino UNO I got a satisfying result and I definitely adopted this hardware solution.

 

The filament roll scale design

image

Recycling the idea of my 3D printer filament spool holder design I have made the design of a compact scale supporting a rotating filament roll as shown in the images below. As shown in the 3D representation the filament roll lies on the four wheels that rotates free and the support is connected to the base through the scale sensor.

imageimage

One support can be entirely built 3D printing 22 pieces with some M3 and M4 Allen screws and nuts at a very low price

image

 

Assembling the parts

After all the 22 pieces has been printed can be easily assembled together. The top and bottom surfaces will be the filament spool support and the weight material scale at the same time. The filament is tensioned by the extruder so the roll should be free to rotate lying on the four free wheels (the orange ones). As shown in the assembly steps in the image gallery below top and bottom sides of the support are joined through the load sensor. It should be in the range 5-10 Kg max to support the filament roll that weight between 1,5 Kg and 2,5Kg (2Kg plastic rolls).

 

{gallery} Scale roll support parts and assembly

image

3D printed base

image

3D printed top

image

The free wheels supports

image

The free wheel supports

image

The free wheel supports mounted on the top part

image

The top part with the free wheels assembled

image

Free wheel detail (top support)

image

The base with the four calibration screws, top view

image

The base with the four calibration screws, bottom view

image

Calibration screw with spring of the base

image

The base with the load sensor mounted, bottom view

image

The base with the load sensor mounted, top view

image

Base and load sensor assembled

image

The top support mounted on the base through the load sensor

image

The final assembly side view

 

image

Testing the support 3D printing

image

Testing the support 3D printing

 

Some structure improvements

Testing the first version of the 3D printed scale I saw that filament rolls can have different spool dimensions, also if the same weight. To manage the different widths between spools (may depends on different providers or different production batches) the top base design has been update; now it is possible to set the position of the four free wheels supports as shown in the images below.

imageimage

imageimage

imageimage

The wires coming from the load sensor are very thin and delicate so I decided that it was too risky to add a connector do I decided to include in the scale building also the HX711 filter adding two holes to the bottom part to fix the small IC board.

imageimageimage

imageimageimage

imageimageimage

 

Circuit and wiring

The image below shows the functional design of the circuit and the interface

image

As the filament is usually available in two different dimensions, 1.75 and 3 mm diameter, the rolls are available in different weights and we should consider using at least two kinds of materials it was necessary to provide a three dip switch to select these three settings before starting the system. Making the first experiments I saw tat it was impossible to distinguish automatically the three phases when a 3D print job starts:

 

1. Power the system and initialise it (calculating the empty tare without the filament)

image

2. Place the filament roll and wait the weight stabilises

image

3. Start reading the usage (material load)

(consumption can be expressed in grams or centimeters)

imageimage

I have added two push buttons; an action button to manually set the three phases and a measure unit switch to select the visualisation on the display: filament units in grams or in centimeters/meters.

To have a complete status of the hardware a 3mm orange LED blink during every weight reading cycle while for the display I have used a shift register display (the full documented project is in these two articles: Enrico Miglino on ElectroSchematics.com  and Arduino 16x2 LCD Shift Register Library - Part 2 ) based on 74HC595 shift-in register I have built in past to reduce the usage of Arduino pins.

As the MC711 already generates a digital signal only two pins are needed to connect it to the Arduino board.

 

The project in action

The video below shows the first prototype and the final building in action after software filtering calculations have been included in the building.

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

The initial part of the video shows how connecting the sensor only without controls, due to unpredictable weight fluctuations it is almost impossible to control the three phases mentioned above while the second part shows the final version accordingly with the wiring scheme.

 

The software

The Arduino sketch is built in two parts for better readability: an header file defining all the constants used by the calculations as well as the pin settings and the source functions in the .ino file. All the project is distributed under the LGPL 3.0 license and is available on GitHub: https://github.com/alicemirror/3DPrinterFilamentMonitor-LCD

Additional libraries added to the sketch are the bodge MX711 library fo manage the scale IC and the updated library for the shift-LCD fixed compatible with the last versions of Arduino IDE, available in attach to this post.

Attachments:
imagehx711_datasheet.pdf
ShiftLCD_Fixed-master.zip
  • Sign in to reply

Top Comments

  • michaelkellett
    michaelkellett over 8 years ago +3
    Nice to see the complete thing and I'm very happy that the load cell works out OK. In commercial designs of load cell interfaces (for high speed weighing conveyors and in store scales) I've ended up with…
  • balearicdynamics
    balearicdynamics over 8 years ago in reply to michaelkellett +3
    Hi Michael! True, it is a good accelerometer and I don't apply any digital filter excluding the MX711 amplifier. But there is a reason: fluctuations are just the value-added of this stuff. The software…
  • michaelkellett
    michaelkellett over 8 years ago in reply to balearicdynamics +3
    Looks good - I like the idea of the noise as meta-data ! MK
  • mcb1
    mcb1 over 8 years ago

    Very nice.

    I'm thinking that the load cell might make a very useful measuring device when mixing resin.

     

    Is there a link to where you got your from.?

     

    Mark

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • balearicdynamics
    balearicdynamics over 8 years ago in reply to abhijitnathwani

    Hi Abhijit,

     

    thank you. The fluctuations will be used in a proficient way. Next few days I will update the software with more details. There should be a version running without the manual settings. In cases like these there is the advantage that the fluctuations are not random but can be clearly identified as are generated by specific conditions. The same approach become almost impossible or extremely difficult if applied to a general and non constant measuring environment.

     

    Enrico

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • abhijitnathwani
    abhijitnathwani over 8 years ago

    Nice work balearicdynamics ! I did not knew load cell could be used so effectively. I also worry about the fluctuations in the readings.

     

    Abhijit

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • michaelkellett
    michaelkellett over 8 years ago in reply to balearicdynamics

    Looks good - I like the idea of the noise as meta-data !

     

    MK

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • balearicdynamics
    balearicdynamics over 8 years ago in reply to michaelkellett

    Hi Michael!

    True, it is a good accelerometer and I don't apply any digital filter excluding the MX711 amplifier. But there is a reason: fluctuations are just the value-added of this stuff. The software on GitHub is not 100% complete but also the "quiet" conditions of measure are mediated with a fluctuation of +/- 0.15 gr that is almost meaningless (I should place just the weight in grams instead a float high precision to the final value). But there are several kind of fluctuations:

    1. Less than 1-5 gr to be adducted to the environmental noise, so the readings are discarded
    2. Less than 1 gr so the readings are mediated as they depends on the mechanical characteristics of the object; by definition the weighted subject is not stable at all.
    3. In the range of 10-50 grams that means that there is a 3D printer at work. Filament is not tensioned but it is continuously moved.
    4. Higher than 50 grams that means that the Extruder is tensioning the filament

    I use these information in two ways.

     

    In this building: The unwanted fluctuations 1 & 3 are excluded by the reading while when fluctuations of kind 4 I just wait for a couple of seconds before the next reading so the entire system return to the average stable conditions. Depending on the different kind of fluctuation I can show different information on the display (e.g. "loading" "working" "finished")

    In the next version: It is a motorised version so the case 1, 2 and 3 are managed as explained above while the fourth generates the automatic feedback "feeding" to avoid extra-tension in charge to the extruder that can generate issues in the printing process.

    The image below shows a preview of what it will be; this enhanced version will be the side-project of the Infineon DC motor controller Arudino shield that can control several rolls at the same time.

     

    Enrico

    image

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube