Skip to content

Final Project

This is where I will document the process of building my final project.

Initial thought process

A little while ago I had the opportunity to build a DIY filament extrusion kit from ARTME3D at HRW FabLab and loved every bit of the process.

Not only is the machine incredibly compact for it’s capabilities but also the engineering behind it left me speechless at some points making it probably one of my favorite things I have built in recent years.

I mean just look at how to bring the melt filter into the right shape. So simple, so elegant, I could read these docs for weeks on end.

Anyways after having built this amazing machine and producing my first few spools of recycled filament with shreds of failed prints and support material I noticed a glaring issue: there was no way to keep track of the filament’s diameter and/or roundness besides constantly checking manually with calipers.

Both of these parameters can have a big influence on print quality, so naturally I searched the internet for all kinds of filament sensors, but pretty much every single one of them was a runout sensor.

The purpose of a filament runout sensor is to warn you or automatically pause the current print job when it detects that you have no more filament left.

These, while being useful addons for any 3D printer, would not help with my issue so I kept searching and eventually found the InFiDEL, a low cost inline filament diameter estimator originally created by Thomas Sanladerer a.k.a. MadeWithLayers.

This definitely looked promising but still kind of limited, because you can’t assume that the filament you are using is perfectly round and you are only measuring the width of the cross section.

Okay so why not just put three InFiDEL probes in a row at different angles, estimate the roundness that way and Bob’s your uncle, right?

That would work, sounds like a great idea, I said, but at some point it hit me… what do you actually do with these measurements?

I mean it’s not like I am trying to sell these spools of filament with a guaranteed tolerance in diameter. No, this filament is going to be used right here in our lab, mostly for prototyping and inhouse projects.

So what if this array of probes could also be used as a printer add on just like the runout sensors? But instead of only telling the printer whether or not there still is filament to be used, it would measure the diameter and roundness and directly tell the printer how to adjust its flowrate in order to compensate for any unevenness in the filament.

And that is exactly what I plan on building, a 2in1 tool to keep your recycled filament’s tolerances in check during production and tell your 3D printer how to compensate when printing.

Here are some early sketches of what I want it to look like:

Don’t worry, the brutalist aesthetic is not set in stone.

I am a big fan of modularity when it comes to important and frequently maintained parts and since the probes are expected to produce reliable results at any given time I feel like making individual modules out of them for calibration and maintenance purposes is the right call.

It will be important that the fastening mechanism is as rigid as possible because any kind of wobble might skew the results.

Also if the printer picks up the filament right out of the machine (I should really work on a name for this) without a buffer, the distance in between needs to be spot on in order for the whole thing to work.

To enter any calibration values I plan on integrating an LCD Display.

Prusa recently released a GPIO module that is capable of sending gcode commands directly to the printer mid print via I2C. Most modern open source 3D printer mainboards have an I2C interface as well so that will probably be the next thing for me to explore.

I plan on testing the communication side of this project directly on a Pursa Mk4 printer so one of my goals is to make it directly mountable to the spool holder.

Something like this:

original source: https://www.prusa3d.com/content/images/product/86e363eb-5877-4a28-b15b-e0d1b280bfae.jpg

It should also be mountable to standard aluminium extrusions for compatibility with other printers and of course the ARTME3D Mk3 filament extruder.

That is pretty much all I have for now, let’s see where this goes.

First Models for my final project

What you see here is an early version of what might at some point become my final project, looks good so far right?

I am not quite sure yet what kind of LCD display I am going to use in the end so I just went with this model of a BTT Mini 12864 V1.0 display by Tyler Phillips on GrabCAD for now

Keep in mind that the display model was only added for demonstration, I had do remove it due to storage space constraints

I also plan on experimenting with some kind of snap fit way of mounting the sensor modules to the main body, but using built in guide rails, heatset inserts and M3 screws seems more rigid

Here is a short video of the construction process

You can dowload the final_project_week02.f3z file by clicking right here

Producing the main PCB

During the Electronics Production week I designed and milled my first PCB, which I wanted to use for my final project.

Due to shipping delays I had to use different hardware than initially planned but the layout pretty much stays the same regardless.

The core function for this board is to be the server in an I2C bus and thus be able to connect to a chain of helpers.

I designed the whole thing in KiCAD and manufactured it with an LPKF ProtoMat S63 PCB mill.

The gerber manufacturing files and design files for KiCAD are available for download right here:

Devboard_Gerbers.zip

Devboard_KiCAD.zip

Soldering the SMD components was as easy as can be with the use of solder paste and some hot plates but manually soldering on the pin headers turned out to be a gigantic pain in the rear.

At least I learnt that lesson, I guess…

The first worker board

Week 9 also known as the Input Devices week inspired me to produce a worker board featuring an ATTiny412 and a hall effect sensor.

The hall effect sensor is going to be the main tool for me to measure the filament’s thickness.

Unfortunately the board had some issues so I won’t link any design or gerber files just yet, but the adventurous ones of you can feel free to check them out via my documentation of the assignment.

Learning to program an OLED display

The soldering lesson from a few weeks ago didn’t really stick and I ended up frying my display.

Luckily the lab had more to offer and I got to work with a different one.

Since I wanted to show the filament thickness in a graph later on, I began coding exactly that.

I didn’t have any actual values yet so I went with a sine wave.

Click here to download my sine_wave.ino file.