As mentioned in my last post I finally swapped the „BOARD_MELZI_TRONXY“ of my X5S. When we discussed on FB, when exactly the Melzi’s processing power gets insufficient, the Bigtreetech / BIQU SKR v1.1 was already on it’s way from China. (Via Aliexpress, not directly via the manufacturer.) The advantages of current 32bit ARM core microcontrollers are described in detail here – and even if I still wanted to use Klipper some day, it would also work on that board…
The Controller Board
The hint leading to the SKR originally was directed towards the Panucatt Re-Arm replicas BIQU started producing, but in the comments the SKR was mentioned as the cheaper option – if you don’t already have the proper RAMPS. Another user had an 8bit KFB in use for quite some time. So BIQU already had gathered experience in combining “all functions but the stepper drivers” into their boards.
The SKR is a “Smoothieboard” derivative, but Marlin bugfix-2.0.x can be compiled for it – and that’s what I intended. For reasons of clarity, I’ll report on that at the end of the post, though.
It can use up to five stepper drivers – so you can go for dual Z drivers and endstops (eliminating the need to sync your X5S’s Z via belt) or dual extrusion. Bigtreetech have published some files on it on Github. I would not call that “Open Source”, but it should suffice as documentation to work with the board properly.
As I didn’t have a spare RAMPS on hand and wanted to choose those divers myself, the SKR was the one I went for. It was on sale, so I got it for a ridiculously low price of 15.08 € – including shipping, of course. Even DHL express shipping in my case. According to the Bigtreetech FB-Group there is an upgrade under way, so maybe they wanted to gather feedback as quickly as possible…
Edit: They skipped 1.2 and announced the SKR V1.3 for 2019-03-01 via Facebook.
The stepper drivers for the sockets were not in the package. One reason was customs, as they wave through anything below 26,-€ and a few cent (until 2021 – let’s see how many new officials they’ll hire by then…) The other reason was that BIQU placed the TMC2130 ICs on top of their PCBs – so you can’t heatsink them anymore properly. Watterott designed the “SilentStepStick” with ICs on the bottom for a reason. And FYSETC were at least copying that correctly. 😉 24.73€ for a pack of four BTW. Their v1.1 is the SPI-mode-model.
Edit: BIQU now also have a v1.1 TMC2130 StepStick with the IC on the right side.
Why the 2130? In this overview from Trinamic they scored the most ✔. 😉 And Prusa uses them on the EinsyRambo. Even without caring about stall detection / sensorless homing I wanted the on-the-fly parametrization and diagnosis capabilities.
If you hate wiring those SPI cables, take a look at the TMC2208 instead – that one can be configured via UART (e.g. FTDI-Cable) once and keep it’s settings then. It doesn’t have to be initialized via the controller board at powerup. More info on how they compare to the 2130s here.
As the SKR doesn’t have the two-headers-for-one-driver configuration for Z, like the TronXY Melzi, my first workaround was soldering a header to one of the Stepstick-Protectors and plugging that into the empty E1-socket. Now the second Z motor could be used via the header there. Pic below shows the board on “SKR V1.1 / MKS Gen-L mounting bracket 2020 extrusion by Speedy_67“.
Can’t recommend those Trianglelab driver protectors, however. They used some strange wire-wrap posts, that are not 0.64×0.64mm², but stamped flat. They have contact problems in the sockets of the SKR (which I perceived as rather tight). Re-soldered mine with proper pins as a quick&dirty fix during CNY. The fitting terminals are somewhat special…
Later during the Chinese New Year, I stumbled upon the “tmc2130 incompatible linear advance / stepper pulse, spreadcycle problems” issue. I could get the extruder working by configuring the right combination into the SKR’s Marlin, but torque was low. I ordered an LV8729 driver board via eBay. (ST’s STSPIN820 were not readily available, so I went for the Sanyo / now On Semi driver.) The ebayer (“Meltbro”) printed the packaging and an adjustment tool.
Extruder running at full torque now? Not really. The old “Tronxy-Melzi” had the “StepStick, limited to 1.5A”-configuration (0.1 Ohm sense resistors). And the Prusa-Extruder could grind the filament with it. Here I could max out the Vref to 1.095 of 1.100 V and the extruder worked, but skipped at higher print speeds. Other driver boards could be turned higher than that, but not this one.
Turns out FYS had used R220 (0.22 Ohm) sense resistors, like the ones on the development board, on their PCB. In the RepRap Forums was already calculated, that I was limited to 1.0 A that way.
My solution to the problem was exchanging the two 1210 R220 resistors against two 1206 R100 ones. With the lower resistance the smaller form factor should not be a problem – sending 2 A through 0.1 Ohm causes a drop of 0.2 V and thus 400 mW of power loss. “Half-Watt” resistors should handle that.
Problem solved – extruder has enough torques now.
Serial Peripheral Interface
The SPIs were another construction site. That’s not a specific SKR problem, but one of all the LPC1768/LPC1769 Smoothieboards. They have less pins than the Arduino Mega and share the hardware SPI of the display controller and the external SD card. And if you’re not defining it differently, you’ll also have the TMC2130s on that.
The SPI problems would be a lot smaller, if the display drivers on those graphical LCDs (“12864”) would work properly – but they don’t. They ignore their “Slave Select” line and always listen. Which leads to garbage on the display, if you talk to stepper drivers or SD cards on the same bus.
And I had to check out the external SD interface via SPI, as I couldn’t get printing from the board’s SD card working. The TronXY “RepRapD1scount Smart Controller” didn’t have the parts populated. But luckily I had them.
The full Marlin Github discussion about that is here. Using “SDCARD_SORT_ALPHA” can get the display at least readeable enough to select a file (by stopping to constantly access the card, while you are in the file select menu). Now I can insert an SD card and have OctoPrint dump my object there – so the Gcode can be accessed with minimum latency.
The pinout I used for the stepper drivers and the configuration for it came from “myseg” and his descriptions on Marlin Github as well as his own Github upload. The funny thing is, that he used the Enable pins for SPI (soft-SPI-library, to seperate the TMCs from the Display) and it works. You notice a small jerk when Marlin boots and when you issue the M122 command (“TMC Debugging”) – so I won’t try configuring the drivers during print or bother with sensorless homing. 😉 Pins are not plentifully available on the SKR, but the ones for the endstops are there.
The Smart Controller plugged right in and worked. No problems with rotated headers, like reported elsewhere.
I had to turn the shroud for the hot end fan, though. (Alternatively the crimp contacts of the female-on-wire connector could be unlocked carefully and interchanged.)
…turned out well enough. Cali Dog has a few marks on it, but as already reported the extruder was not on full torque – and I did not bother turning on Linear Advance yet.
That was printed like depicted. With only the four TMC2130s.
After posting my files on YouMagine (there are folks out there, who want a working .bin to check their boards) and changing the E driver, I startet cleaning up the mess.
The Z axis is a little more susceptible to the motors being not “it step” with the Trinamic drivers and as E was now running on the LV8729, I could use two TMC2130s for Z. If I could have used that setup from the beginning, I would have added that second Z endstop instead of the belt, but for now I’m going to leave it that way.
First long print became the base plate for “Tevo Tarantula Control Box by rebeltaz“. It’s similar enough to the Sgabolab case I used with the TronXY Melzi, but more sturdy and you can remix it. Took screws for ATX cases (UNC #6) for it, because a had a lot of them.
As you can see above, the screen is bigger than the Tarantula’s – so big, that it protrudes on top, if you want to use the SD card slot already designed in. And it was meant for the MKS Gen L v1.0 board, wich has the same fixing points, but no SD card slot. Didn’t get that right at first try.
Also had to make the cable entry bigger with my step drill.
Still tinkering with it in OpenSCAD, so no files online yet.
First things first:
- Backup Smoothieware and it’s configuration from the SKR’s SD card.
- You don’t need the BIQU Marlin branch – it was merged into the regular tree immediately. Take the latest “plain vanilla” Marlin.
- On Win10 you also don’t need an extra USB driver. The “Marlin Re-ARM SDCard 01 USB Device” will be recognized automatically.
- If your PC can’t get a USB descriptor: Don’t panic, reset (or power-cycle) the SKR! That SD-Bootloader seems to hang after an update, but before that it finishes flashing correctly.
- Some people had to explicitly disable LPC_SD_ONBOARD and enable LPC_SD_LCD to get Marlin working on the SKR.
- Users also reported problems with their SD card from BIQU – so try another one, if you experience problems.
- Try not using USB, but PSU power for the 5V supply rail (jumper near the microcontroller) to avoid trouble.
The rest is already documented well:
For 32bit Marlin 2 you need PlatformIO. BIQU made a step by step instruction using VS Code (.docx in Dropbox), but I went via “PlatformIO with Atom” => http://marlinfw.org/docs/basics/install_platformio.html
That is a bit more complicated, than just unpacking the Arduino IDE, but I had no trouble getting those software packages to run and opening the Marlin project.
You need to modify three headers here (Configuration.h, Configuration_adv.h & pins_BIQU_SKR_V1.1.h) – and you need to do it one step at a time. There is a reason, why this is not yet called stable. Many combinations of features can get you into trouble and if you activate everything you want at once, you are sure to hit at least one of them.
As the IDE is a bit hacked together the “Auto Build” script does not realize if you have saved your changes – so check yourself, before hitting that menu entry.
Once you got your Marlin compiled, check the …\.pioenvs\LPC1768\ path for the “firmware.bin” and put that into the root directory of the SKR’s SD card.
Hit reset on the board, wait for the firmware to be flashed, hit reset again to restart the board manually (I had configurations, that were able to start from flashing, but most were not) and Marlin should start and connect to your favourite host. Printrun/Pronterface in my case. Your PC should see not only the virtual com port (VCP) but also the SD card as mass storage (MSD) – and “firmware.bin” should have turned to “firmware.cur”.
If you jumped here without reading the points above: My files were dropped here for reference. => https://www.youmagine.com/designs/work-in-progress-marlin-bugfix-2-0-x-for-bigtreetech-biqu-skr-v1-1
Did it solve the blobs-and-zits issue?
Well, sort of. Quality definitely got better. The left one of my MAKE:-shootout-derived curvy test shapes was printed with the Melzi, the right one with the SKR. Not perfect yet, but I’m workin on it…
…and did I mention how INCREDIBLY QUIET the steppers are now?! You could hear the machine through two storeys of the house before the upgrade. But thanks to the microstep extrapolation from 16 to 256 you only hear the nozzle blower now. 🙂