Many thanks to the awesome team at JLCPCB. I’m really impressed by the speed and the exceptionally low prices. I ordered a set of prototype boards for the V2 design on Oct 28th and they arrived today at my door. Total 8 days including shipping from China.
Here it is 150x105mm 2 layer board:
I ordered the 2660 drivers also from JLC, but I don’t like the red mask color:
The 2660 driver is 4 layer board with “gold fingers” – this is code for the board edge PCIe connector.
The purple board is the 2209 driver. That board is from ohspark. No much difference between the two, except the ENIG finish is standard on oshpark and the purple color is dope. The JLC board comes with a little chamfer around the connector, which is nice.
This is what the driver board looks like plugged in a PCIe slot.
Reflecting on the PrntrBoard V1, there are many good things that I managed to accomplish:
all 3 versions of the board (2130, 2660 and 2209) were functional
the board features were good
driver cooling was excellent
When I started 2 years ago, there were very few 32-bit boards with comparable features. Now there is quite a bit of them. I was trying to find what makes one design more popular than the other and in addition to the board features it comes down to flexibility.
In PrntrBoard V1 I was trying to provide superior cooling solution compared to the tiny replaceable driver board used everywhere. However that choice came at the expense of a monolithic design, which was expensive to make and costly to evolve. Every time I wanted to use a different driver chip I had to re-design the whole board from scratch. It was not going to be sustainable in the long run.
Announcing the PrntrBoardV2: combining all lessons learned and expanding the versatility of the design.
First major change is that the motor drivers are no longer part of the board. Because I still find the original Pololu driver form factor very limiting, I designed the motor driver carried boards to use PCIe slots instead of pin headers.
Here is what the carrier board looks like
The board has 32-bit Arm micro controller – my favorite STM32F407. There are 6 stepper motor slots, with support for 6 thermistors or 6 thermocouples (vie external boards).
There are 4 power MOSFET outputs (1 bed and 3 heaters) and 5 low power MOSFET outputs for fans or LEDs.
Connectivity is via traditional USB, micro-sd card. There are 2 more serial ports for a smart LCD controller and WiFi extension.
I have the traditional RAMPS LCD expansion headers, which should support a variety of LCD screen designs.
Last but not least there are 8 end stops and the ability to route the stall detection signal from the steppers to individual end stops or a global “Alarm” signal.
Drivers are on separate boards with PCIe card edge connectors. This is what the TMC2660 version looks like
And this is what the TMC2209 version looks like
I added some mounting holes next to the PCIe slots so the drivers would not wiggle out of the slot with extensive vibrations.
These driver boards are much larger than the Pololu drivers, which would allow for superior cooling and the ability to have more board real estate for complex designs and or big driver ICs.
In addition the driver boards are mounted vertically on the carrier board, which saves space on the carrier board and allow for excellent air flow trough the drivers with a pair of 40mm fans.
Last but not least because of the reduced requirements on the carrier board, I can use 2 layer instead of 4 layer board, which makes the cost even lower.
I can’t wait to make a few of these and run them trough some tests.
I had one RAMPS discount full graphics controller laying around from my RigidBot. I did use it with the original controller and decided to test it with the PrntrBoard.
In Rev1 and Rev2 of the board I did not have enough pins on the LCD connector to be able to use all buttons on the panel. In the Rev3 I used every last pin of the tiny 64-pin package and I just got enough (or so I thought).
I learned the SPI used by the LCD panel is not very standard and had to fight with Marlin to make the TMC drivers and the LCD co-exist on the same SPI bus.
Finally I was able to use the panel:
One of the pins I used for the button input did not quite cooperate, so I have only one button + the rotary controller for the UI. Lucky for me both Marlin and Smoothieware were functioning with that configuration.
I had to disable the TMC diver monitoring, because the LCD controller was getting confused by the SPI communication with the TMC drivers. I think I can create a small breakout board with a few AND gates to alleviate this interference.
Here is a video of the panel working in Smoothieware:
After a few unsuccessful attempts, I got Smoothie to move my stepper motors on the PrntrBoard controller.
At first the smoothie had a bug in the SPI dirver and was unable to talk to the TMC2130 chips. Fixed that, then the steppers still would not move.
I can see the drivers were sending current, because my power supply would start the fans up, but zero steps. I spend the day trying to diff the configuration between Marlin and Smoothie, but nothing was wrong. Finally caught a bug in the Stepper timers and lo and behold movement.
I’ll make a video of my Rigidbot running Smoothie on STM32 next week.