Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback on MRR ESPA #1

Open
vivian-ng opened this issue Aug 13, 2019 · 13 comments
Open

Feedback on MRR ESPA #1

vivian-ng opened this issue Aug 13, 2019 · 13 comments

Comments

@vivian-ng
Copy link
Collaborator

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
Copy link
Collaborator Author

vivian-ng commented Sep 13, 2019

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:

  • No active cooling: ~135degC (20A VBED fuse); ~100degC (VBED and BED connectors)
  • Bottom cooling: ~95degC (20A VBED fuse); ~75degC (VBED and BED connectors)
  • Top cooling: ~90degC (20A VBED fuse); ~75degC (VBED and BED connectors)
  • Top and bottom cooling: ~75degC (20A VBED fuse); ~50degC (VBED and BED connectors)
    (above are temperatures during heating up phase)

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:

  • Board in open air (unenclosed), mounted to top and bottom panels using spacers, and no side panels.
  • 12V 40mmx40mm fan mounted 30mm above the board, blowing directly down on the top side of the board. Fan is offset by 10mm from center of board toward the edge with VBED connectors.
  • Bottom clearance of 5mm below the board.
  • Started heating bed from room temperature to 100degC.
  • After reaching 100degC, maintained at 100degC for 10 minutes.
  • Started heating hotend from room temperature to 240degC when bed reached 90degC.
  • Maintained hotend at 240degC until end of test.

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:

  • First and foremost, avoid having to use 12V to power the heated bed in the first place. That is why the bed control is isolated with an optocoupler. This allows a separate 24V power supply to be used to power the bed.
  • If 12V must be used, it is best to avoid putting the board within an enclosure.
  • If an enclosure must be used, ensure adequate air flow to remove heat from the VBED fuse, connectors, and bed MOSFET. A 80mm by 80mm fan directly blowing onto the top side of the board is recommended.

@vivian-ng
Copy link
Collaborator Author

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
Copy link

h55ia commented Sep 17, 2019

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
Copy link
Collaborator Author

@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
Copy link
Collaborator Author

  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
Copy link

luc-github commented Oct 12, 2019

@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
Copy link
Collaborator Author

@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
Copy link

luc-github commented Oct 12, 2019

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
Copy link

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

@vivian-ng
Copy link
Collaborator Author

@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
Copy link
Collaborator Author

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
Copy link
Collaborator Author

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
Copy link
Collaborator Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants