New control board new questions about tmc2209 drivers

So ive finally moved from my stock mks robin lite v1.1 to an skr 1.4 turbo.

My board came compiled for my particular printer ( bought used) and it works (havent printed yet for reasons).

My issue is leveling my bed. I want to go to useing spring steel sheets which i have installed instead of useing glass. Or rather i want to regain my options on my print bed.

I got spoiled i guess with ubl on my old board and this one dosent have it. So im back to recompilling my firmware.

My new board has tmc2209 drivers in it so the hope is to utalise sensor less homing among other things.

I have now come across a few questions which may just need more testing on my part but here they are.

  1. can anyone explain what uart and spi mode mean/do? I believe my drivers are configured for uart mode but i dont understand what that means apart from some jumpers.

  2. do i need to have all endstops unplugged/removed to use sensorless homing? Particularily the z end stop?

  3. any advice for compiling this board/drivers and a btt tft 35 screen? I suspect i can likley get away with not worrying much about the screen but ive been wrong before.

  4. if youve made it this far, im also in the process of adding a bl touch. My problem is a few things. 1 the stock hotend/fan/gantry is proprietary. Close to an ender 3 but not close enough. Im considering trying to mod it to an ender 3 for qol and maybe to a v6 hotend. Any suggestions for this idea? Im trying the ptfang bullseye cooler but having trouble with the fan shroud in petg. Im having gaps in it. Should I try asa which i havent printed with before?

  5. thanks for any input.

Uart usually stands for “Universal Asynchronous Receiver Transmitter” which means it can send and receive at different rates. SPI I don’t remember.

What is sensor less homing?

By end stops do you mean the limit switches that tell the machine to halt at it end of travel.On an Ender 3v2 and others, if you install a BL/CR Touch you disable the z stop as the BL/CR supply that function. The rest remain the same as before.

That’s all I’ve got.

  • can anyone explain what uart and spi mode mean/do? I believe my drivers are configured for uart mode but i dont understand what that means apart from some jumpers.

I think the UART mode is part of what makes them silent it orders the communication on the channel and double-checks the message is received.

  • do i need to have all endstops unplugged/removed to use sensorless homing? Particularily the z end stop?

I’m not sure about X and Y but Z comes off if you are using the probe for Z home. I do on mine and it’s the same parts. Mine still uses the limit switches for X and Y, I’ve never looked into removing them.

  • any advice for compiling this board/drivers and a btt tft 35 screen? I suspect i can likley get away with not worrying much about the screen but ive been wrong before.

I learned that the board doesn’t know anything about the screen. the screen can take over some functions though. like filament runout for example. it’ll make it incompatible with octoprint if you hook your runout sensor to the screen though.

if youve made it this far, im also in the process of adding a bl touch.

I use BLtouch with UBL with no issues. Same MB and screen… for now, heh, don’t forget to configure the thermocouples

Thanks :slight_smile:

Sensorless homing is a feature i think unique to tmc2209 drivers.i believe prusa uses them. What it means is the driver recognises a spike in load due to higher resistance. Such as when a stepper motor is pushing against a solid object. It can replace end stops or the limit switches. Its working on my mini as a stock feature, and this board has it too. On Teaching Tech and from what i can find, it dosent work well if there is an end stop. I suspect the endstops interrupt the stepper drivers, which would confuse the sensorless homing. Which is why im curious about the z-end stop.

I dont currently have a bl touch installed beacuse i dont have a mount for it at this time. Im still in the process of finding one, or designing my own.

Currently the board dosent have ubl set up from what i can find. Hence why im going to recompile my own firmware for it. At the moment with the bed level test ive been trying it seems the corners print ok, but the middle points are too close. I tried baby stepping but that dosent seem practical enough. Id either have to get my z axis dialed in exatly and loosen my bed level screws which also dosent seem practical with my current set up.

When i used a glass bed i was able to level pretty well, but ive been spoiled with my prisa mini’s steel sheet, so im trying the hard way i guess to mimic some of its features.

I knew the screen had a runout sensor socket, but am glad to hear it messes with octoprint. The current setup dosent seem to recognise the runout sensor anyway, so ill be adding that to my compile list and make sure i use a port on the board.

A UART is a Universal Asynchronous Receiver-Transmitter. This is essentially what is being referred to when people mention a “serial port” on a computer. As the name expressly states, they are asynchronous which literally means they have no way to synchronise their communication between devices. This creates problems:

  • Both sender and receiver must be configured to use the same transmission rate. This means you can’t (easily) switch between devices with different transmission capabilities. Indeed, since they can’t coordinate anything, you can’t have more than one sender and receiver on any communication line since the standard has only one transmit and one receive port and no way to tell if another device is using it.
  • Transmission speeds are relatively slow, although, for a 3D printer, they are adequate.
  • Since they are asynchronous (do not have a built-in clock signal) they are subject to framing errors wherein a listening device, that didn’t catch the beginning of a transmission, can’t tell where in the string of ones and zeros it is. This can lead to data corruption.
  • To avoid the framing errors, Start and Stop bits are added to the transmission. Exactly how many must also be established when configuring the connection.
  • If some of the data is lost, the communication will be garbled. For that reason they also often include a data Parity bit.

The UART formed the basis of RS232 communication that was the backbone of computer bulletin board systems, pre-Internet.
That same communication standard gets used in USB communications where the cable has 4 wires: V +D -D GND. Note there is no clock signal. +D and -D (identical but inverted data channels) are used to eliminate electrical noise in the line and thus increase transmission speed.
Hence, when you connect to your printer, you have to tell the terminal software how many data bits you are using, with what type of parity (Even/Odd/None), and how many stop bits.
8 Bits is the most common data length.
Parity bits identify errors, but with short and shielded cables errors are uncommon so you can usually get away setting this to NONE.
At least one stop bit is necessary to prevent framing errors.

Note that adding parity and stop bits increases the amount of data that has to be transmitted and slows down communication. You typically have to transmit 10 signal bits to send 8 bits of data, so there’s a 25% overhead. That was OK in the 80’s but with the data throughput needed these days, it’s a big penalty.

The major disadvantage to UART is that the host computer must be constantly prepared to receive data. If the receiver becomes overworked with other tasks, data will be lost. It’s CPU intensive, and yes, there are hardware work-arounds for this.

SPI is Motorola’s Serial Peripheral Interface. It was designed for use over short distances, often between devices on the same motherboard. It got around the problem that was created as more and more peripherals started populating single motherboards. Think of display drivers, stepper drivers, USB ports, D/A converters, A/D converters, LED controllers, etc. etc.

The number of copper traces needed to interconnect all these devices quickly became unmanageable. The SPI interface enabled peripherals that use it to communicate over a 3+1wire system. Each peripheral uses 1 Chip-Select connection (and hence 1 pin from the microcontroller) but shares the Data Out, Data In and Clock signals with all the other peripherals.
The Chip Select signal tells the peripheral to get ready to send or receive data. The Clock signal tells it exactly when to read a bit on the Data In Pin or send a bit on the Data Out pin.

The CPU that handles all this can start or stop the clock at any time depending on workload and the peripherals will wait. No start/stop or parity bits are needed and the CPU is in total control of the communication. It also has a maximum transmission rate (IIRC) of 12Mhz or about 100 times faster than a UART.

Disadvantage: Uses 1 pin on the CPU for every peripheral although there are workarounds for this.

“Sensorless Homing” is an oxymoron. You can’t tell if the print head is homed if you can’t sense it’s position. If the stall current in the stepper motors is being used to determine that the print head has impacted one barrier or another, then the stepper motors are the sensors.

The only concern I have about using the stepper stall current to sense a limit is that hey involve making the print head collide with something. That just feels wrong in the long run.

I have no words of wisdom wrt the TFT35 screen. I haven’t installed mine yet.

1 Like