Smoothiefy your 3D Printer
I had backed a Kickstarter a couple of years back called the Cobblebot and received the kit last year. The kit and instructions were abysmal to say the least; and looks like I was one of the lucky ones – that I was able to print using my kit. However, I set about modifying the kit, based on suggestions from the Cobblebot Google+ Community, as well as my designs.
While I had been slowly but steadily improving the mechanics of the printer, adding dual extruders, et al; I had ignored the electronics till now. I was still printing through the RAMPS + Arduino Mega that Cobblebot had provided. I had been thinking of upgrading to a 32-bit board and had done some preliminary research – narrowing down to a Smoothieware based system. While the documentation on the Smoothieware wiki is great, there was no step-by-step document that detailed out how to upgrade from Marlin / Repetier to Smoothieware; there was no way to find out which settings were to be transposed where. So.. here it is.
I also did some rudimentary testing pre- and post- upgrade to compare and see if the move is even worth it. TLDR – It is most definitely worth it.
The following is the current configuration:
- Cobblebot Basic (heavily modified)
- Printable Area: ~15”x15”x15”
- Based on Wheels on V-Slot
- Moving Bed
- XY on top rails
- 2 X belts running from a smooth rod
- Dual Z motors (wired in series)
- Glass bed on 3 spring supports for leveling
- RAMPS (Chinese) with Arduino Mega (Supposedly Original)
- DRV8825 Stepper drivers
- Chimera Clone with dual Volcano Nozzles (multiple nozzles ranging from 0.4mm to 1.2mm)
- Running off a Rapberry Pi Zero with OctoPi
As I mentioned, I was among the lucky ones and was able to print from the kit, and had achieved good quality prints after all my modifications. However, I think I like to tinker with my printer, more than actually print with it
One of the few things that remained from the original kit was the electronics; and I had been thinking of upgrading to a 32-bit controller. Why? Just Because…
I chose to go with the Smoothieware based boards.
- Had read a lot about the RAMPS setup being dangerous (Watchdog not fully functional)
- Wanted to move to a 32-bit system
- Bed Leveling using a probe did not work properly on the Repetier system. Others had it functioning, just never worked for me.
- Had heard a lot about how smooth it is and how acceleration is calculated at every step
- Smoothieware has a very vibrant community of developers and they are ready to help out even noobs like me. Really impressed with the team.
Smoothieware has a few good options for boards:
- Aztech X5 and Mini
- Cohesion3D ReMiX (based on SmoothieBrainz)
I chose to go for the Cohesion3D ReMix board; the board is currently available for pre-order and I was among the lucky ones that bagged one. It has had great reviews during the New York Maker Faire (2016) and you can ask Ray Kholodovsky if he still has one to spare.
Even though I’m not an electronics engineer, I can say that the board is very well designed:
- There are clear and concise labels on all the headers and outlets
- Microcontroller pins used on the ReMix match the Smoothieboard, so that the default config file from the github works without too many changes.
- Slots for 6 stepper drivers (pin compatible with the typical Pololu drivers – you can use A4988, DRV8255 or TMC2100. Other boards primarily use the A4988 chipsets and I have been using DRV8825; and plan to upgrade to Trinamic TC2100 in the future.
- Slot for a LAN8720 for an Ethernet interface
- Built-in ESP8266 connected to the serial interface (more on this later)
- 20 Amps MOSFET for heated bed (even though I don’t have one yet) – will probably use this for some cool lighting.
- Four MOSFETs for other devices like fans, heaters, etc.
- Protected end-stop headers – can use the 12V capacitive / inductive sensors without a voltage divider.
- Native Interface for the Rep-Rap LCD (more on this later)
- There are three different inputs for power (12V-24V) – which is a double-edged sword:
- On one hand you can use multiple power supplies for different parts of the board:
- One for the main board
- One for the heater
- One for the motors and small MOSFETs
- On the other hand, if you have a single power supply, you need to jumper all the inputs together for the board to work
- On one hand you can use multiple power supplies for different parts of the board:
A few minor annoyances:
- The micro-SD card socket is right at the edge of the board, and hence the SD card juts out of the board – I feel this is a possible point of failure in the future
- One of the power sockets was a little loose – but I guess I can blame that to this being a pre-production board.
- Currently, to program the ESP8266, you need to de-solder the serial pads at the bottom. Ray has confirmed to me that in the production version, he has replaced the pads with jumpers.
- The SD card interface on the rep-rap discount LCD conflicts with the board’s SD card interface and needs to be either disconnected at startup, or the pins on EXP2 needs to be cutout.
In this section I will explain the basic settings that need to be setup for your machine to function correctly; assuming one extruder and no heated bed. I will help setup extra extruders in a follow-up post.
Download the basic 3D printing config file from the smoothieware github (https:github.com/Smoothieware/Smoothieware/raw/edge/ConfigSamples/Smoothieboard/config)
Make changes to the file as below, copy it on a micro SD card and insert the card into the board before switching on. Smoothieware allows you to make changes to all settings simply by modifying this text file – you do not have to recompile the firmware like Marlin / Repetier. (It’s easier to compile Marlin and Repetier as they work in the Arduino IDE; Smoothieware, not so much; but you should never have to compile it from source)
Set the printable volume as follows:
Row Numbers for the default configuration files are in brackets
Steps per mm for all axes
Note steps per mm for all your axes in Marlin / Repetier; add them to smoothie config:
Thermistor and PID settings for hot-ends, you should start with the settings you currently have in Marlin / Repetier, however once you power on the board, you should do a PID autotune to get the best values.
Ensure you add the following lines for all the hotends that you have. This should probably be in the default config file (and I almost missed it). Only realised that the safety features were not on when I switched on the heater without connecting the power supply. A typical marlin/repetier system will halt after a few seconds of trying to heat the hotend and not being able to do so. Smoothieware kept on trying to heat for many minutes.
See more details at http://smoothieware.org/temperaturecontrol#toc19
The only thing you need to configure on the endstops is whether they are present or not. In most printers I’ve seen, there are 3 endstops, either all min, or some combination of min / max (one for each axis).
Setting up the endstops was the most confusing bit for me, but I think I have the conversion down:
More information can be found at http://smoothieware.org/endstops and http://smoothieware.org/pin-configuration
For the reprap discount LCD Panel, Simply set panel.enable (row 277) to true and uncomment (remove the # sign from front) rows 282-289
To use the kill button on the LCD Panel modify row 67 kill_button_pin to 2.11.
Smoothieware supports the following panels:
- ReprapDiscount GLCD
- Universal Panel Adapter
- Viki2 and Miniviki2, from panucatt
See http://smoothieware.org/panel for more configuration options.
Moving from a RAMPS board to the Cohesion3D ReMix is not very difficult and is simply a matter of removing the wires from the RAMPS and putting them on the ReMix.
Disconnect drivers from RAMPS and connect them to the ReMix; would be best to keep the same drivers for the same axes. i.e. take the X-axis driver from the RAMPS and install it in the X-axis slot on the ReMix. This would ensure that you do not have to setup the current on the drivers again.
Connect the motors – make sure you mark the cables before taking them out, or you would have to test each axis to ensure that the correct motors are connected (I had to, as I was too eager to connect the motors ). If the motors run in the opposite direction from what you expected, simply reverse the connectors.
Connect LCD EXP1 and EXP2 to the board; Some LCDs may require the connectors to be reversed (mine did)
By default, the SD Card on the Reprap Discount LCD conflicts with SD card on the board and you need to cut out some pins on the EXP2 connector (or connect only the encoder pins and the kill button pins). You need to connect only the following highlighted pins on the EXP2 connector:
The thermistor(s) are connected to the headers near the bottom of the board
Connect the hotend heater to the first MOSFET on the bottom left (connects to pin 2.7)
Connect the endstops as follows:
Connect Power Supply
Re-check all the wires prior to powering up
Test print comparison
First impressions, the movements are so “smooth” – with RAMPS there were jarring noises at corners; however, with Smoothie there are no sudden moves or places where things jar. With the RAMPS setup, I had missed steps on the Y axis, and had to pause the print, home and resume again to reset the positioning. Haven’t seen that with Smoothie till now. It’s early days yet, but I think investing in the new board was a good decision.
Before I upgraded, I decided to print “CALIBLOCK – Calibration Print Toy” http:www.thingiverse.com/thing:1090268 – with my RAMPS, so that I could test the same G-code once I upgraded. It was a 3½-hour print for two of the halves with 0.4 mm nozzle and 0.28mm layer height. The author challenges people to print one half in an hour; however, I tend to print slow, so I think three and a half hours for two was pretty good. The quality of the print with the RAMPS was pretty good – except for layer 5, where I had shifting in the Y direction. But otherwise, good quality – the pieces fit together with just the right snap, and the finish was smooth:
After upgrading, I printed the same G-Code with Smoothie, and as I had mentioned before, the movement of the axes was fluid and without any jarring noises. There was no layer shifting, and even the vibrations of the frame seemed low.
To be frank, I did not see too much of a difference in the actual print; but as I had mentioned, the movements seemed a lot more fluid. I decided to print a tougher object with a higher resolution to see if I would get better results; though I don’t have a direct comparison in this case. I decided to print a lithopane at 0.1mm resolution and the results were outstanding!! My earlier attempts at printing at 0.1mm were abysmal at the best.
Overall, am happy with the print and my move to Smoothie.
- Temperature dependent switch – Smoothieware allows you to setup a temperature dependant switch that switches on automatically once your hotend reaches a certain temperature. Extremely useful for automatically switching on the hotend fan for all-metal hotends. I have it wired to my hotend as well as board fans. When the printer is not hot, the fans automatically switch off.
- The config file allows you to create custom menus on the LCD screen.
Well, all is not rosy and there are a few things that I was used to in Marlin and Repetier that aren’t available here.
- Smoothie does not support Babystepping; The developers of smoothieware feel that this is not required, as they follow the correct CNC G-codes. I hope I can convince them to include this; babystepping is simply so convenient.
- The menus for the LCD are very basic, almost as an after-thought; I believe the developers at Smoothieboard feel it’s better to use a touch-screen. Combine this with point 1 above, and the LCD is practically useless. One of my main motives for keeping the LCD screen was babystepping. Once I get my LAN interface working, my LCD is probably going – there goes one reason for using the ReMix.
- Marlin has Mesh Bed Leveling and Repetier has distortion correction – both these allow you to print on slightly curved beds; I believe Smoothieware has Delta Grid Compensation, but from my initial read on that – it is designed mainly for deltas; for Cartesians – you need to setup some workarounds (like setting home at the center of the bed); not convenient to say the least.
- The current firmware on the ESP8266 only allows a serial to wifi bridge; this was something I did not realize when I bought the board (due to my ignorance, not due to any false advertising by Ray). So you cannot use the Smoothie Web Interface over wifi.
This is something the developers should look at – ESP8266 is a cheap way to add wifi to a board. The team is looking for options and have zeroed in on using WebSockets to Serial – however, this is at a very initial stage. Let’s wait and see how this pans out. Technically, the ESP8266 is useless as of now; but I have confidence in the team behind this.Peter has successfully created a Websockets to Serial bridge that works off his LaserWeb3; still initial days, but things are looking up.
- Setup my second extruder
- Connect Inductive Sensor for bed leveling
- Wait for my LAN8270 which is coming on the slow boat from China
- Connect the SSR to a pin on the board, so that I can free up my Raspi Zero
- Buy another extruder and the diamond hot-end for multi-color prints
Nice write up. Also survived the Cobblebot experience and came out stronger.
Glad you liked it. Buying the cobblebot was probably good for me too as I learned a lot because of it.
It’s just me or we are needing some standards in order to make all the 3D printers more easy to “everything” I mean, there a re a few which are mostly plug and play, others you need to do a lot of work just for assembling it and later play, and some others looks like everything is just hard.
I think in order to improve the market, for the sellers and the users, some standards should be created, even some mandatory compatibility, so that way everything from one brand might fits on another and all connectors and improvements can be added no matter of the brand selected.