Title: Cetus3D printer mods (free cetus !) Author: paco Date: 2019-01-16 Type: article The Cetus is a 3D printer by [Tiertime][1]. It's small and affordable (although not on the super cheap range of the Chinese printers). Also the quality of the build and hardware components is quite good, featuring linear rails and a 32bit cpu. The downside to this printer is that the firmware on the printer is not open source, and it does not work with gcode as the vast majority of the other printers on the market do. Once you buy it, you're stuck with the slicer that Tiertime provides which, of course, only works for Mac and Windows ... and although it is super simple and "it just works", it's really annoying in some aspects. So, there's the reason on trying to fix something that's not broken. There's a [company][2] that has developed a drop-in replacement of the original cpu board, but that runs with an open source firmware ([smoothieware][3]). The main goal is to use open source software on all the steps of the process, from design to print, so I won't have nasty surprises in the future (when Tiertime discontinues the printer, or stops giving support for it, or any of the fun stuff companies like to do, so they try to force you to buy new products) and use the OS that I want, and also a better control of the print settings for some 3D models that need more than the basics. The model I own is a MKII. This model does not have end stop switches. The homing is done when the cpu detects that the motors are stuck because they have reached end of travel. A bit crude, but I guess it saves cost on production. So, the first step for this conversion is to install limit switches. This is called "downgrade to MKI by Tinyfab". This needs to be done because the new cpu does not support that kind of brute homing. Also, I prefer the switch homing, as is less aggressive with the hardware, specially the motors and some small printed parts [Here][4] and [here][5] you can find a tarball with the files needed to print the adapters for the limit switches. They are the same files provided by Tinyfab, but renamed so it's clear which ones do you need to use. You'll need both X and Y axis pieces and one of the Z axis pieces depending on the model you have (standard or extended). If you plan to use a capacitive bed sensor, print also the piece to fix it to the hot end carriage. [Here][6] and [here][7] you can find a 3D model I did for that, as the one Tinyfab provides was broken for me. Print this before any disassemble of the machine of course ! You can check the installation process on Tinyfab website. For me it was a little bit different than the pictures they show. So I'll try to describe it. * Remove the X motor (the one for the bed). That will set the belt loose. Insert the small X axis piece on the aluminium profile, put together the other part and the limit switch and secure that with screws to the piece you just inserted on the profile. Put then back the motor in place. You can push the tension mechanism for the belt from the other side of the track to make your life easier when putting back the belt on the pulley. * This one is the tricky one. The Y axis. Remove the motor too. In my case I had to remove the motor mount too, as you have to reach the screw that secures the belt to the hot end carriage. Be careful, as this will set the tension belt mechanism loose and the spring is quite strong. Pull out (but not entirely) the carriage, so the mentioned screw is visible. Take it out and replace it for the longer piece you printed. This is the one that will activate the limit switch. Put all back together carefully. Now remove the small cable routing piece that is attached to the motor, and replace it with the bigger Y axis piece you printed. The limit switch goes inside it. * The last one, Z, is the easy one. Just take out the first 2 screws on the vertical linear rail and pull out the whole cap (oh, you should remove the filament if you have any and the plastic tube). The limit switch goes inside the new cap. It can be a bit difficult to see, but there are a couple of holes for screws inside the piece so you can secure the switch to it. The switch bearing faces up. The pictures on the website may give you a hint. Now it's time to open the main printer case and access the motherboard. Remove the current _"limit switches"_, in case of the MKII those are some extensions to the cables that come from the motors. Connect the new ones in place and route the cables so they are not in the way and all axis can move freely. I routed mine below the Z axis motor. In case you also want to use the bed capacitive probe, you'll have to solder a connector to the "case open" slot and put the X axis limit switch there (and the bed probe where the X limit is supposed to be). This is needed because the case open slot does not provide the power needed by the capacitive sensor. Also, some changes will be needed on the config later. Remove the stock cpu and replace it by the tinyfab one. Simplest step in the whole process. Get the last firmware file from Tinyfab website. It comes with an example config file already. Connect the printer via USB to a computer. It will appear as an external drive. That's the SD card on the printer board. At this point, if you just copy the config file as the Tinyfab docs say and reboot the printer, you're almost good to go. Put there the firmware and rename it to 'firmware.bin' so it gets upgraded on next boot, just in case the cpu did not have the last version installed already. Set up the `gamma_max`, which is the max travel on the Z axis. I did this manually with the _"paper"_ method. So connect with a Gcode sender program like Repetier-Host or UGS. Then: * Home all axis with `G28` (be prepared to turn the printer off in case of failure, one axis going to the other side, ....) * Set coordinates to absolute with G90 * Go to 0,0 on XY with `G0 X0 Y0` * Lower Z until the nozle traps the paper. Take a look at Z position. That's your new `gamma_max`. Now, enjoy your free 3D printing experience ! I did some config tweaks though. [Here][8] and [here][9] they are for reference. Basically, I removed the section for the second hotend, as it was bothering me and I'll never have one on this printer. Changed the X axis limit switch pin, as there is now the capacitive bed sensor, so `alpha_max_endstop` is now `2.13^` I also enabled the zprobe, set up the good pin number `1.24!^` and did the bed level process. It's a bit tricky, but it works in the end (mind that I use the "Rectangular grid compensation" method as described on smoothieware [website][10], maybe the easier triangular method is enough) * Home all axis with `G28` * Start the probe process with `G32` * Save the results and the calibration file with `M500` and `M374` * Home again and you're good to go. This calibration will be read on power up by the printer, so no need to do it again unless you change something related to the bed plate. Some things to take into consideration, I cheated a bit to be able to perform the process. The way it works is, you define a bed size and an odd number to be the size of the probing grid, in my case 7 (so 7x7 points will be probed). You al so need to enter the offset of the nozle and the probe. The problem is that that offset gets added to the bed dimensions for probing, so in my case the offset would be +40 for the X and -10 for the Y, that means that the probing would start at -40 on the X and will end on 190 on the Y. Maybe for other printers that makes sense, but the Cetus has its travel limited to the size of the bed. So what I end up doing, was set up a bed grid size of 140 on the X by 170 on the Y and setting up only the Y offset. It's not perfect, but is close enough and it works kind of right. Also I did a pid temperature auto test. You can get more info about this [here][11]. It can easily be done with the command: M303 E0 S210 `M303` is the actual command, `E0` is the heater (0 as is the first and only), and `Sxxx` is the target temperature. Use a temperature you're going to use in real prints. At the end you'll get a message like: Cycle 4: max: 246.189, min: 227.627, avg separation: 0.418274 Ku: 34.9838, Pu: 39.85 Trying: Kp: 21.0 Ki: 1.053 Kd: 105 PID Autotune Complete! The settings above have been loaded into memory, but not written to your config file. So there you have your pid values you can put on the config file. Mine won't be probably good for you, although default ones may work. And finally I modified the max PWM value for the hot end control. The default was 160 and I could not get the hot end to temperature ... it fell always short. Maybe 255 is too much and a little lower is ok, I still have to try that. I hope is not too much and I don't fry something. With all this, the Cetus is now a normal printer you can use in combination with the open source slicer and gcode sender of your choice. I personally prefer [Slic3r][12] and [Octoprint][13] (so the printer is not right next to me). [1]: https://www.cetus3d.com/ [2]: https://www.tinyfab.xyz/ [3]: http://smoothieware.org/ [4]: https://e1e0.net/files/cetus_limit_switch.tar.gz [5]: gopher://e1e0.net:70/0/files/cetus_limit_switch.tar.gz [6]: https://e1e0.net/files/cetus_zprobe_holder.stl [7]: gopher://e1e0.net:70/0/files/cetus_zprobe_holder.stl [8]: https://e1e0.net/files/cetus_config.diff [9]: gopher://e1e0.net:70/0/files/cetus_config.diff [10]: http://smoothieware.org/zprobe#probing-for-cartesian-machines [11]: http://smoothieware.org/temperaturecontrol#pid-autotuning [12]: https://slic3r.org/ [13]: https://octoprint.org/