My first iteration of the soldering machine was based on Prusa MK3 chassis. It worked well enough but the wiring was very messy and I was not happy with it. It was more of an experimental platform than something useful.
For V2 I decided to use an old MendelMax 3 chassis that I had. As 3d printer that was quite outdated, but the motion platform was sturdy and reliable.
I re-used most of the carriage design from the first version. I added a GoPro fixture, so I can mound an LED light on the carriage itself instead of the side of the machine. In theory this should provide more consistent illumination for the camera.
I was also not happy with the fume exhaust design on the V1. It was using a small 40mm fan that was very noisy, the carbon activated filter piece was very small and it looked very ugly.
For the V2 I decided to put the fan and filter on top of the machine, next to the solder wire motor/extruder. It took quite a bit of experimentation to find the right hose to connect the two. I tried thin silicone hose, that was too thin and the walls would collapse during movement. I tried thicker vinyl hose but that was too rigid and would obstruct the movement of the head. Finally I settled on a corrugated PVC hose – it is flexible enough and would not collapse on it own.
The other experiment was to find what size fan I should use. I tried 60mm, 70mm and 80mm axial fans but they would not provide sufficient airflow, when the filter mount was attached. I finally settled on a 7035 centrifugal fan. I started with 120mm centrifugal fan, but that was too big and loud.
Here is a video of the fume exhaust system in action:
I was perusing trough the parts catalog offered by JLCPCB for their assembly service and found this awesome micro controller STM32H750VB it is quite an upgrade over the good old F407 part. It runs newer Cortex-M7 ARM core, it has double precision FP unit and can run at sweet 480MHz. Best of all it was mostly pin compatible with the F407. I had to re-route one side of the pins, but it was fairly quick.
The only down side is that the build-in flash is a bit limited – 128KB, but I think I can work with that. I’ll order some boards with that processor once the factories in China are bully back in business.
The updated design is on my github page in the “new_cpu” branch.
Here is a picture of the driver boards. I tested all of them and they worked flawlessly out of the box.
These are the semi-assembled controllers. I use semi-assembled, because only the SMT components were populated and I have to spin my soldering robot to work on the thru hole connectors.
Next I tested the sensorless homing capability of the TMC2209 drivers. After some tuning of the sensitivity parameter is works very well. You can see one linear rail axis homing with no sensors in this video:
I also decided to work on improving the mounting of the drivers to the board. The driver boards were not very stable in the PCI Express slots and I designed these little plastic holders to fix them in place.
They are bolted to the bottom of the controller PCB. The drivers are very well affixed in place.
While I was trying to get my 2004 LCD panel to work with the controller, I found that not all “standard” EXP1 and EXP2 connectors have the same orientation. At first I though that the SKR 1.3 board, just has them backwards, but I then found this article on the RepRap discussion forum. It appears that the original schematics had an error and now some boards/displays are just backwards. I quickly flipped the connector on my 2004 display and with worked, but this can be quite frustrating.
I made a small PCB that one can use to flip the polarity of the connectors. “To flip or not to flip” seems to be ongoing question.
I tried to do some thermal testing on the TMC2660 drivers. First I tried running my puny motor at 2A with a 60cm 5V fan blowing at the driver. This kept the driver quite cool, which was a not interesting.
I was planning to run all 3 axis at the same time, but my heat sink was just a bit too tall and was touching the other driver :-(. I ordered slightly shorter ones, but they have to swim trough the pacific ocean first.
While I was enjoying torturing the poor motor at it’s rated limit. The thermal camera picked an unusual hot spot on the board. The reverse protection diode was cooking quite a bit. Serves me right for being lazy and not doing the reverse protection the proper way. Even with only one motor running, the diode was dissipating quite a bit of heat. I can’t imagine in what world this part is rated for 10A continuous current. Maybe it needs a small refrigerator attached.
Anyway I changed the schematics to use a proper P-channel MOSFET and a zener.
I added a small cooling pad on the PCB to help the transistor cool off. Hopefully this will not overheat with full 10A load.
I also decided to test one of the last remaining circuits on the board – the servo connectors. This proved to be quite the challenge. There was a serious contention for Timer #7 on the micro controller.
First Marlin’s temperature control was set to use Timer 7. This was not making the Servo module happy. I moved the temperature module to use Timer 8. Then I found that the SoftwareSerial code was also trying to hijack Timer 7. Moved that to Timer 12.
Finally the servo was working properly. I was able to set the position with the M280 command. I decided to quit while I was ahead.
I was feeling elated by my success with the FYSETC mini 12864 panel and I tried my old “REPRAP Discount Graphics” panel. I thought “surely this should work as well it’s the same SPI graphics LCD after all”.
We you guessed it – work it did not. I tried software SPI, hardware SPI, nothing. Looks like I had to read the manual. Shame!!!
Here is what I found. The old “discount graphics lcd” is not quite the same chip. It uses ST7920 controller, which is a supreme oddball. It uses some very strange scheme and transfers data 4 bits at a time.
Then I remembered I had added support for hardware SPI for that chip since PrntrBoard V1. Why was it not working?
Well, it was because for some strange reason the data pins on the panel are not connected to the SPI interface on the EXP2 connector, so the u8g library has to use software SPI emulation and I didn’t add support for that.
So fixed that, now I have both hardware support and software emulation for the st7920 driver and here it is working:
Next I’m waiting on some 2004 LCD screens to arrive. These should be easier, since there is no hardware protocol involved.
First my woes with the TMC2209 driver boards are ongoing. The company making the PCBs called that they could not complete my last two prototype designs. The issue was that I didn’t pay attention to the fabrication capabilities and used the wrong design rules.
Long story short I had to re-wire part of the board to meet their spec and submit another order. Alas that meant I have to wait another two weeks for the boards to appear 🙁
In the mean time I was trying to test what I can with the rev1 prototype I had. I tested the heaters and thermistors are working. Now it was turn to my old nemesis – the LCD panel.
The software for these LCD panels is remarkably convoluted and not at all supported on STM32 series of MCUs. I had to write two more drivers for the U8G library, but finally some good progress:
I got the FYSETC mini 12864 panel to work. To finish the week, I also verified the SD-card interface is working.
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.