PONF Project: development platform buildup backstage

The first step of the hardware building of the PONF project has been done. The image gallery shows the backstage transforming a vintage 70’s analog reflex to the development platform for the electronic back of the PONF dual-back camera.

Arduino controlled motorized 3D printer filament dispenser

I have made and used for months the filament roll support based on the mechanics illustrated in the mentioned project but some filament issues have not yet been solved by this tool.

When it is used by 3D printers filament – usually almost robust – is pulled by the extruder while the roll is placed nearby free to rotate. I have observed meaningful differences in the material behaviour depending on the usage level, based on 1Kg filament rolls. A new filament spool flows almost well but the force applied by the extruder should be relatively relevant. The extruder motor (a Nema17 stepper motor) is not damaged but the two gears of the extruder collect particles of the plastic material due the applied force; this requires extruder maintenance after a while to avoid clogging of the filament in the hot end. These particles tends to detach and mix with the clean filament while it is feeding the hot end nozzle increasing clogging problems and a general more frequent nozzle wear; this occurs more frequently with 0.3 mm diameter nozzles.

When the filament roll is half used and more its spirals become smaller and in some environmental conditions the filament tend to break too frequently.

Long print jobs become less reliable; for example I can’t leave the printer working alone for an entire night without controlling it. Thus the idea to make a controlled filament feeder figured a precise series of issues to solve.

  • Make the automated engine almost simple and easy to reproduce
  • Reduce as much as possible the number of non-3D printable components to make it
  • Reduce as much as possible the stress applied to the extruder while printing
  • Use a low cost and easy to program micro controller board
  • Use the weight load sensor to keep under control che filament consumption and filament feeding
  • Manage the environmental noise interfering with the filament weight measures

Also using a single 3D printer we frequently manage more filament rolls (different colors) not all at the same level depending on the print job we are doing. Using an Arduino and the TLE94112EL shield motor controller may result the most reliable and cheaper solution: the board can control up to 6 different brushed motors with simple commands. This Infineon board has its own half bridge motor controller including three different frequencies PWM channels: 80, 100 and 200 Hz. In practice this means running motors sending commands from Arduino keeping the MCU free to other tasks while motors are running.

See more on Element14:

3D Printer Filament Automatic Dispenser for Arduino – part 1 Design and Hardware

3D Printer Filament Automatic Dispenser for Arduino – part 2 Connection and Software

I sell on Tindie

On Tindie blog today

Thanks to Jeremy Cook for featuring the 3D printer filament monitor on Tindie blog!



I sell on Tindie

Prusa I3 Aluminium Plus

Recently, I had the chance to use the latest model manufactured by Geeetech, i.e. the 3D Printer Prusa I3A Plus. They launched this new version on the market focusing on the most evident innovation: the external control box that embeds all the electronics; Power unit, front panel LCD and rotating switch, SD Card slot, main board controller and motor controllers, and the switching power unit.

Read the full review on electroschematics.com

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.