…hello SKR, TMC2130 and LV8729!

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.

Stepper Drivers

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.

IMAG1728~2

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.)

First Prints

…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.

Marlin bugfix-2.0.x

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. 🙂

7 thoughts on “…hello SKR, TMC2130 and LV8729!

  1. Hello mate, good job here:) I am about to replace mine old MKS Gen L 8-bit board with SKR v1.3 + TMC 2130 and LV8729. I’ve ordered LV8729 with R100 resistors, What max Vref can I use for this config?
    Second thing, my printer has dual Z motors, where for driving the second motor is used slot/driver for the second extruder, but I´d like to move to multi-material (or dual extruder, whatever) configuration. In that case, I do need to drive Z motors by one driver. What kind of solution You recommend? Running z motors in series, or parallel?
    Thank You

    Like

    1. Follow the link to the RepRap Forum: Current will be ~ (Vref * 2), so I would start around 0,65 V.
      I have always used my Z motors in parallel, since that is what the red TonXY (stock) board does. (Others use serial connection to avoid Z-desync, but I have the belt in place…)

      Like

      1. Thanks for the quick answer:) I also have the belt for z-motors synchronization. Second thing, what kind of microstepping are You using?1/256? If so, where do I find pin configuration for that option? Thank You.

        Like

      2. We’re talking about E, right? (The TMC2130s are using their 16=>256 extrapolation and it works fine for me.)
        Actually I tested 128 microsteps (and also an 8-diode-smoother) for E but couldn’t see ANY difference compared to 16. So I reverted everything to 16 microsteps.
        BIQU didn’t label the “MSx” pins underneath the SKR 1.1, but the square solder blob, belonging to the jumper next to the capacitor, should be MS1. Setting only the jumper at the other end of the row should give you MS1-low MS2-low, MS3-high – leading to 1/16 microstepping.

        Like

  2. Interesting, but I miss some I/O ports to be able to have CS for each of the X, Y, Z and E0 steppers. If i look well at your wiring, you reused the EN pins for each of the steppers. Does it mean that they will be on permanently ?
    I’m also wondering if you use a BLtouch or other kind of sensor to home the Z axis. It also requires a port with PWM if I’m not mistaken. Any feedback would be helpful before I’m giving up on this board due to not enough pins or being unable to use pins like xmax, ymax, zmax.

    On a Mks Gen L, I have 5 TMC 2130, a bltouch, a 128×64 graphics without SD card and a TFT32 with SDcard connected, all working perfectly and I still have some spare ports for RGB, fan control etc…It’s just a pity that the 2560 is no way fast enough for proper s-curve, iinear advance and other heavy stuff.

    Like

    1. First of all: Check the SKR 1.3 – you can jumper SPI or UART for TMC drivers there. (But I don’t know how they are connected there.)
      Compare the branches in https://github.com/bigtreetech if you don’t like reading Aliexpress product descriptions (which seem to be the most current informations you can get).

      Despite the fact that both controllers (NXP and Atmel) have 100 pins, those Smoothieboards aren’t using them to the same extent – so if you don’t want to trick everything into operation, I guess this one is not for you.
      The ENs are dual-used by the SPI, so:
      – The drivers are NOT enabled permanently, BUT
      – While the drivers are enabled, you can’t use the SPI and
      – While the SPI configures them (µC starting Marlin) the motors rattle a bit.

      In case you’re not dissuaded yet: I can’t help you with Auto-Levelling. I’m not doing that.
      But as I had already linked this comment via YouMagine, take a look at the entire thread (“Load more…”)
      https://github.com/MarlinFirmware/Marlin/issues/12632#issuecomment-453758717
      => There are schematics for using the BLTouch (clones) with the SKR.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.