maplerainresearch / MRR_ESPA

A basic 3D printer control board based on ESP32
Other
52 stars 18 forks source link

Feedback on MRR ESPA #1

Open vivian-ng opened 4 years ago

vivian-ng commented 4 years ago

TMC2130 support for Marlin 2.0 bugsfix has been successfully compiled to run with ESP32. A native ESP32 pin needs to be used for the CS pin, for example, GPIO21 (SDA) or GPIO22 (SCL).

TMC2208 and TMC2209 drivers will need a bit more work, since they will likely need to use software serial, and there are currently issues with compiling software serial on TMCStepper library: ESP32 is no SoftwareSerial Compatible Platform ESP32 compatibility Each of these drivers also needs 2 native ESP32 pins, which is a luxury that cannot be easily spared since the ESP32 has very few pins to start with in the first place. So it is unlikely the board will ever be designed to support TMC2208/TMC2209 drivers via jumper settings, because at most, it will only be able to support ONE single axis given the number of spare pins available.

For SPI mode, users will just need one jumper wire (female-to-female) per stepper driver to connect the CS pin for the respective axis to a spare pin (GPIO0, GPIO21, and GPIO22).

vivian-ng commented 4 years ago

This is more a "note to self" on the testing for thermals. Edited with more thermal testing information

Running on 12V, heating up a 310mm by 310mm heated bed, the temperatures observed using a HY-18 MLX90640 thermal camera:

Bottom cooling was a 80x25mm fan mounted 5mm below the board, directly blowing at the bottom side of the board. Top cooling was a 80x25mm fan mounted 30mm above the board, directly blowing at the top side of the board.

Obviously, the best way to cool the board when used with 12V for the heated bed is with both top and bottom cooling. But if you cannot mount a fan to the bottom side of the board, it seems that top cooling only is a good alternative. Mounting a fan on the top side not only helps to keep the fuse (which is running current through it at close to its current limit) and the MOSFET (not really an issue) cool, it can also help to cool down the stepper motor drivers too.

Whatever the case, it is best to leave a gap of at least 5mm below the board to allow for air flow.

More thermal testing. Test conditions:

Observed temperatures when heating up (before bed reaches 100degC): ~130degC (20A VBED fuse); 100degC (heated bed MOSFET); 95degC (VBED and BED connectors)

Observed temperatures when maintaining 100degC: ~90degC (20A VBED fuse); 80degC (heated bed MOSFET); 70degC (VBED and BED connectors)

As expected, the fuse, MOSFET, and connectors reached high temperatures when pushing a lot of current (15A at 12V) during the heating up phase, as this is when the full current is being passed through to bring the heated bed up to the required temperature. However, once the required temperature is reached, the current required drops, and corresponding, the temperature.

Based on this, when running on 12V:

vivian-ng commented 4 years ago

I have finally managed to find a PCB manufacturer to get a proper quote. I have launched this project on Kickstarter based on the quote to make it available to everyone who wants one but do not have the time/resources to make one themselves. The reward is priced at cost: 76.5% production and shipping, 5% Kickstarter fees, 4.5% Kickstarter payment provider fees, 6% bank fees, 8% taxes.

For those who already have the required components on hand, making your own board by ordering a PCB (from JLCPCB, for example) is the cheaper option. But for those with no such components, I think backing this Kickstarter is the easy (and cheaper) way since the unit price is based on a larger production volume.

Anyway, here is the link: MRR ESPA Kickstarter page

h55ia commented 4 years ago

No UART, then it's not for me, hope another version releases with UART in the future, but nonetheless thank you for doing this

vivian-ng commented 4 years ago

@h55ia No problem! Thanks for being interested.

Anyway, it is unlikely that any ESP32 board I came up with in the future will support TMC drivers in UART mode. SPI, yes. UART, no. Because the ESP32 only has 3 sets of hardware serial, and one of those is already being used by the serial terminal (CH340). Which leaves only two, for probably X and Y axis at best. Even if more pins are available, software serial for the ESP32 now is still... not really ready to support this. Also, TMCStepper library (used by Marlin for TMC drivers) currently does not support software serial for ESP32, and unless someone takes the time to work on that, is unlikely to in the near future.

If UART is a gamebreaker for you, one possibility is to get any of the new STM32-based boards tested working with TMC2208 or TMC2209 in UART mode. Then, connect a ESP32 with ESP3D flashed on it to the STM32-based board via serial. WiFi and ESP3D won't be native on that STM32-based board, but at least it will have WiFi and a web interface. And UART.

vivian-ng commented 4 years ago
  1. Update on thermals. I think I managed to find the issue with my thermal problems. The reason why the fuse is getting so hot during the heating of the heated bed is because my heated bed is not 180W (@12V) as I thought it was supposed to be. I measured the current when heating, and it was registering 24A! Obviously, that is not good news for my fuse, which is rated for 20A. No wonder my fuses were getting hot, and after sustained heating, breaking (as they are supposed to). But at least the terminals held out, and did not burn. The VBED fuse will be changed to 30A ones.

  2. Update on Kickstarter. This update is a bit late since the project funding period has been over for more than a week, but the funding goal was not met, so for the moment, "mass" production will not be taking place. Still, I will see if I can get a few pieces put together and sell it directly to those who want one.

luc-github commented 4 years ago

@vivian-ng do you have a youtube video showing your board features in action ? This would complete the one you have on kickstarter which show pictures but no live action. This would help to communicate on your boards I thinlk Additionnaly host kickstarter video on youtube would help to be shared. I cannot share current one from my phone :(

vivian-ng commented 4 years ago

@luc-github I do have some other videos, including the Kickstarter video, on YouTube.

Kickstarter video Using a smartphone to control a 3D printer Another webUI video

Anyway, I will hand solder a few boards, and set up a page for people who are interested to directly buy using PayPal payment. Have to find time to set up that page, though.

luc-github commented 4 years ago

weird. When I type 'Marlin ESP32' in youtube search none of them pop up . They need some keywords/tags: ESP32 and Marlin, I guess

luc-github commented 4 years ago

@vivian-ng you need to enable issues in your repository settings ^_^

vivian-ng commented 4 years ago

@luc-github Thank you for the tip! BTW, can you email me your address at info_at_maplerain.com? I want to send you the MRR ESPA and MRR ESPE (current versions).

vivian-ng commented 4 years ago

I have made the MRR ESPA v1.3 available here for those who wish to try one without having to get all the parts and solder everything by yourself. I have been using this version for quite a while now and it has been running quite smoothly.

If you have a smart phone or tablet lying around, you can even use it as a on-demand controller. That's what I do because my printer is located a distance away from my PC. While I usually control my printer via the PC, I have an unused smart phone near the printer so that I can control the printer from nearby too (such as when doing manual mesh bed leveling or loading filament).

vivian-ng commented 4 years ago

This is the reason why SDA and SCL are purposely left unused on the MRR ESPA. I knew that ESP3D supported OLED displays via I2C, and also knew that the ESP32 did not have enough pins to support a LCD controller like the RepRap full graphics smart controller. So the MRR ESPA was designed to have the I2C pins (SDA and SCL) unused so that they can eventually be used to connect some kind of controller over I2C.

Now, the OLED display has been tested to work. The only thing remaining is to find some form of I2C rotary encoder (like this one here) and get it to work in Marlin.

To enable OLED display, uncomment #define U8GLIB_SSD1306 in Configuration.h.

vivian-ng commented 4 years ago

See this comment about MONITOR_DRIVER_STATUS conflicting with SDSUPPORT when using TMC drivers in SPI mode. See this comment for the PR.