Tuesday, July 23, 2019

MRR ESPA basic ESP32-based 3D printer control board

I am happy to say that I am almost ready to unleash my 3D printer control board to the world. It is based on the ESP32 microcontroller, and after many revisions and lots of testing, it is almost ready to be released.

The MRR ESPA is the basic version. No whistles, no bells. It supports 4 stepper motors, a single hotend, and a heated bed. It can be connected to a host computer via USB, and can read directly from a microSD card too. The heated bed is isolated from the rest of the board via an optocoupler, so a separate power supply can be used to drive the heated bed, and this power supply can even be a different voltage.
 This is the MRR ESPA hooked up to my Ender-3.

A sample of the print. This is a simple test for stringing. I am using a direct drive setup on my Ender-3, and this was printed with 2mm retraction with a retraction speed of 25mm/s.

There is also a connector for a touchscreen controller like the MKS TFT32 (which is basically a host computer). However, common LCD controllers like the RepRap full graphics smart controller are not supported due to a lack of pins.

Wait, no LCD controller? Then how do you control the board?

Well, there is the USB port, right? This means you need to connect the board to a host computer, either a PC, or maybe a Raspberry Pi running Octoprint.

But that defeats the purpose of using the ESP32.

The ESP32 microcontroller comes with WiFi. And there is actually a fork of Marlin out there now that can be used on the MRR ESPA, and this fork gives the MRR ESPA a web UI. All you need to do is flash the firmware, and do the initial configuration to allow the MRR ESPA to connect to your home network via WiFi. Subsequently, all you need is a web browser; this can be a PC, a tablet, or even a smart phone. Files can be sent to the MRR ESPA via the web UI, you can start prints, set temperatures, move the print head, etc.

Sound great! But what are the limitations?

Well, this is the basic version, and due to a lack of pins on the ESP32, you are basically stuck with the features that this has. For stepper drivers, it can support the normal A4988, and you can use the silent TMC2130 and TMC2208 drivers in standalone/legacy modes. Basically, no SPI or UART control. However, there are two spare pins on the board, so if you really want TMC2130 drivers in SPI mode, you can actually use up to 2 of them (probably for the X and Y axes). Still, this support is in the pipeline, because from the software aspect, SPI mode support of TMC drivers for the ESP32 is still under development. But it should be ready soon.

And watch for the more advanced version of the MRR ESPA, which expands the board with additional outputs, allows up to 5 stepper drivers, and can be used with a LCD controller like the one on the Ender-3.

Note: Pre-launch version now available here. Some information on this has been updated here.

Monday, July 22, 2019

Playing with fans

In dabbling with 3D printers, one of the things that I had to deal with is ventilation. Fans.

Fans are used to cool the hotend so that the filament does not melt too far up the heat throat, causing clogs. Fans are used to cool the filament after it has been pushed out of the nozzle so that it hardens and bonds with previous layers. Fans are used to cool down the main control board, especially the drivers for the stepper motors, which can get quite hot.

And fans can also be quite noisy.

The standard fans you usually find on a 3D printer are these 40mm fans. They are 40mm by 40mm, and 10mm thick. They come in both 24V and 12V versions, as these are the common voltages used for 3D printers. There is also the blower type of fan, usually known as 5015 fans as they are 50mm in diameter and 15mm thick.



Fans, however, are available in other dimensions too. Recently, I have been playing around with 80mm fans. These are 80mm by 80mm; thickness can be 10mm, 15mm, or 25mm. What is amazing is that those 80x80x10mm fans are really quiet. They push out more air, but generate less noise that the 40x40x10mm fans. And so, I have been using them for my case fan (to cool the control board) instead of the usual 40x40x10mm fans. Super reduction in noise. I recommend them to everyone who wants to have a quieter setup. It is probably the reason they are used in computers too.

The 80x80x15mm fans push a lot of air too, but also sound a lot louder. To me, they are great as generic fans, like if I need to make a small desktop ventilation fan and don't mind the noise.

Blower type fans are also found in other voltages too, like the 5V ones below.

Back to the sound level issue. There are people out there who would spend the extra money (like, 5 times the money) for quiet fans like the Noctua. Unfortunately, I do not have that kind of money, so what I do is to get a fan rated for a higher voltage, and use it at a lower voltage. For example, I use a 12V fan to cool my Raspberry Pi, running the fan at 5V. It pushes out enough air to keep the Pi cool, but generates a lot less noise. This is a bit difficult for 24V setups, since 48V fans are not as readily available. Still you can always connect a power resistor in series with a 24V fan to lower the voltage across the fan; this waste energy, though. And make sure the resistor is rated for that kind of heat dissipation; a 2W resistor should be enough, but those 1/8W or 1/4W resistors we usually use for breadboards will NOT do.

Conclusion:
- Use 80x80x10mm fans for cases and such to cool the control board.
- Use a lower voltage to drive the fan (5V for 12V fan, or 12V for 24V fan; doing the reverse will overwork the fan, generate lots of noise, and shorten the life of your fan dramatically).

Saturday, July 20, 2019

Diff/merge tool: Meld

In my work with designing a 3D printer control board, there is a need to work with the latest developmental version of Marlin firmware. But updating the configuration files can be quite tedious, since I need to do line by line comparison.

Then, I came across Meld.

And kicked myself for not finding it earlier.

It makes line by line comparison so much easier. The program itself compares the two files (it can actually compare up to three files, but I only need to compare two), and highlights all the differences. With a single click, you can choose to copy lines from one file to the other, either to update file A with the corresponding lines in file B, or the other way round.

This makes it so much easier to update the latest version of the configuration files with the settings that I have been using. And I can't believe I have lived with my manual, line-by-line way of doing things all this time.