The Vintage 555 button debouncer

Buttons and tactile switches are frequently used in many projects involving micro controllers; one of the most frequent issue we met is related to unwanted multiple transitions when the button is pressed once.

Tactile switches, as well as push buttons are mechanical components subject to the problem of bouncing. When a button is connected to a digital GPIO input pin (i.e. an Arduino pin configured as INPUT) we ideally expect that when the button is pressed we get only one high digital signal; unfortunately this rarely happens. During the mechanical movement the physical material vibrates affecting the voltage and the transitions between the On/Off status are not so clear as we usually need. Micro controllers and FPGA are fast enough reading the microseconds oscillations when the button is pressed, resulting multiple readings while apparently we are pressing the button only once.

Read more on Element14 full post: Vintage 555

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