MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.33k stars 19.25k forks source link

TMC Driver support #5333

Closed DeathmannX closed 7 years ago

DeathmannX commented 7 years ago

Hi, is the support also avaible for TMC2100? If yes how does this work?

cfelicio commented 7 years ago

Since TMC2100 just interpolates from 1/16 to 1/256 microsteps, wouldn't it work by itself, without needing any firmware changes? Did you try? I haven't received mine yet, so can't test.

DeathmannX commented 7 years ago

This is what i got currently: https://drive.google.com/open?id=0BxLYV9G8oHT2dkl6dllBX0hVVjQ

I don't did something in Marlin to define that this is a TCM 21XX. My X, Y and Z are up to 12V and my E is up to 4V~

My Z dosen't work correctly currently.

Kaibob2 commented 7 years ago

Tmc2100 don't have SPI support, so there is no need for the firmware to support them explicitly. Just jumper your Mainboard to 16 microsteps for the axis you have installed the TMC2100 driver at and that's all. The driver will interpolate to 256 microsteps. See #4966

Kaibob2 commented 7 years ago

My X, Y and Z are up to 12V and my E is up to 4V~

What are these voltages? Measured where?

DeathmannX commented 7 years ago

X, Y, Z = https://de.aliexpress.com/item/JK42HS48-1684-01-1-8-degree-2-Phase-NEMA17-hybrid-stepper-motor-42mm-stepping-motor-for/2036904482.html

E = http://e3d-online.com/Electrical/Stepper-Motors?product_id=357

Kaibob2 commented 7 years ago

I see. The voltages are not very relevant. You have to adjust the current for each stepper with the potentiometer on the driver. Check this site http://reprap.org/wiki/TMC2100 Especially Setting the reference voltage / motor current

Kaibob2 commented 7 years ago

Your X, Y, Z steppers are rated 1,68A and your E steppers 1,5A. Use the formula to calculate Vref, measure it and adjust it to a value as low as possible without loosing torque. The lower the current the lower the driver temperature.

Kaibob2 commented 7 years ago

The potentiometers react extremely sensitive. Be careful not to overpower the steppers. So, adjust them when the steppers are disabled. I would suggest you start with a Vref of 2.1V which equals 1.5A.

Kaibob2 commented 7 years ago

Forget the previous post. Better start with 1.5V and then increase to a maximum of 2.1V. Sorry for that.

DeathmannX commented 7 years ago

Da ich dir hier keine Privaten Nachrichten schicken kann ganz kurz mal auf Deutsch.

Ich habe mein Multimeter angeschlossen und auf 20V Gleichstrom gestellt und da z.B. an meinem Potientiometer 0,77 gemessen. Damit kann/muss ich jetzt hoch auf 2,1V liege ich da richtig? Das sind mir gerade zu vielen Zahlen sry. :D

Kaibob2 commented 7 years ago

Aber nur ausnahmsweise in deutsch. 0,77V Vref sind ca 550mA am Stepper. Das ist reichlich wenig.

180px-tmc2100_vref_pins An dieser Stelle müssen gemessen gegen Masse ca. 1,5V anliegen. Dann bekommt der entsprechende Stepper 1,065A. Mit diesem Wert würde ich starten. Dann gucken ob die Stepper genug Drehmoment haben. (Achse festhalten, sind später erfahrungswerte) Wenn die Stepper kaum Kraft haben dann Vref bis maximal 2,0V hochdrehen. Wenn es den Treibern zu warm wird wirst du es im Betrieb an Schrittverlusten merken bzw. kompletter Ausfall einer oder mehrerer Achsen. Passieren kann aber eigentlich nichts, die schalten halt ab 150°C ab.

For the future: We should really try to always communicate in english, as this might become useful for another participant here.

Kaibob2 commented 7 years ago

Looking at your video it might also be that your Z steps/unit aren't set correctly. The Z steppers are trying to turn but then only make a humming sound. You can calculate them here http://prusaprinters.org/calculator/#stepspermmlead

Fulg commented 7 years ago

Check that the coil pairs are correct with a multimeter. If the pairs are crossed then the motors will just vibrate instead of turning. There is no standard on the 4-pin connector or on the wire colors.

http://42bots.com/tutorials/stepper-motor-wiring-how-to/

DeathmannX commented 7 years ago

Z Steps are correct callculated and the coil pairs are correct.

FIXED#### If i enter M119 and trigger the Z Probe (the LED turned on from the Probe) it shows Open and not triggered.

I use a npn Probe and use this wiring: http://www.3d-proto.de/public/img/IndSensorSetup.png

I checked it 1000 times and nothing helpd.

End

I only have to find out, why this Z Axis don't move down...

thinkyhead commented 7 years ago

Try using lower speeds with the Z axis. If it works at lower speeds then you may only need to adjust the max speed and max acceleration for Z.

DeathmannX commented 7 years ago
/**
 * Default Axis Steps Per Unit (steps/mm)
 * Override with M92
 */
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 3200, 160 } //3703

/**
 * Default Max Feed Rate (mm/s)
 * Override with M203
 */
#define DEFAULT_MAX_FEEDRATE          { 300, 300, 20, 25 } //Feedratze Z before 200

/**
 * Default Max Acceleration (change/s) change = mm/s
 * Override with M201
 *
 * Maximum start speed for accelerated moves: { X, Y, Z, E }
 */
#define DEFAULT_MAX_ACCELERATION      { 2000, 2000, 50, 1000 } //Z before 100

/**
 * Default Acceleration (change/s) change = mm/s
 * Override with M204
 *
 *   M204 P    Acceleration
 *   M204 R    Retract Acceleration
 *   M204 T    Travel Acceleration
 */
#define DEFAULT_ACCELERATION          100    // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION  1000    // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION   100    // X, Y, Z acceleration for travel (non printing) moves

/**
 * Default Jerk (mm/s)
 *
 * "Jerk" specifies the minimum speed change that requires acceleration.
 * When changing speed and direction, if the difference is less than the
 * value set here, it may happen instantaneously.
 */
#define DEFAULT_XJERK                 10.0
#define DEFAULT_YJERK                 10.0
#define DEFAULT_ZJERK                  0.2
#define DEFAULT_EJERK                  2.4

Is this slow enough? I realy don't know how slow or fast i have to go to get this Z working. :/

I tryed it but still: nothing happens just

echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing echo:busy: processing

justmyopinion commented 7 years ago

You do not give any information which HW you are using so how should anyone guess what would be suitable for you :-( This is however a widely used setting for a standard RepRap based printer: #define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }

DeathmannX commented 7 years ago

HW what do you mean? My Printer is (if that is what you mean) a Prusa i3 with a Ramps 1.4 Board and TMC 2100 Stepper Driver.

Blue-Marlin commented 7 years ago

The typical max feedrate for a i3 with M5 lead screws and 16 micro steps is usually about 3.5 to 4 - for me a bit more when using only 8 micro steps or dual drivers. Using 265 micro steps here will cause enormous step rates, a Arduino Mega can't handle. My guess is a max feedrate of about 0.25mm/s for a M5 screw 265 microsteps and a 16MHz mega.

DeathmannX commented 7 years ago

I got all config pins on the drivers so it is not 256 micro steps. Sry i forget that.

thinkyhead commented 7 years ago

@Blue-Marlin I believe the 256 micro-steps is internal to the TMC2100 but from the firmware perspective it's just 16.

Kaibob2 commented 7 years ago

I believe the 256 micro-steps is internal to the TMC2100 but from the firmware perspective it's just 16.

This is exactly what it's like.

There is 3200 Z steps in his config which would be for a M6 threaded rod. Right?

With M5 it should be 4000 and then a maximum speed of 4mm/s should be no problem.

Kaibob2 commented 7 years ago

Does this endless echo:busy: processing come up when you send a G28 Z?

Kaibob2 commented 7 years ago

One more thing. In my opinion this is not a Marlin related issue, maybe you better discuss this in the reprap forum at http://forums.reprap.org/

DeathmannX commented 7 years ago

Yep 3200 steps and yes the endless Messages are still there. I'am look for help for this Problem at 2 Forums and here.

thinkyhead commented 7 years ago

If it says "busy:processing" it means it never returns from G28. But it also means that it's in a loop calling idle() somewhere. (Most likely in planner.buffer_line.)

Is this a delta or a cartesian?

Fulg commented 7 years ago

If you have all the CFG pins cleared (MS1-2-3 unset) on an unmodified Waterott driver then you are in 1/16 mode, interpolated to 1/256 to the stepper. If you modified the board in some way (like some online sources suggest) or if you use the cheaper MKS clones instead of Waterott, then the drivers may behave differently.

If you use real Waterott boards, make sure you soldered all the pins (some guides suggest leaving some pins out) and have not soldered extra jumpers on the driver board. Then remove all three MSx jumpers, configure Marlin as if you had 1/16 microsteps, and you're golden.

If you are stuck in StealthChop mode (i.e. the fully quiet mode of the TMC2100) then the drivers have almost no useful torque, possibly failing to raise the Z axis on a cartesian-type machine like yours.

DeathmannX commented 7 years ago

Prusa i3 https://drive.google.com/file/d/0BxLYV9G8oHT2dkl6dllBX0hVVjQ/view Drivers are real from Watterot with Pins pre assembled.

Ramps 1.4 is a normal one.

thinkyhead commented 7 years ago

Did you lower your max feedrate for Z to 5 or 4? After changing it, don't forget to use M502 followed by M500 to use the new value set in your config and to save it to the EEPROM.

DeathmannX commented 7 years ago

Did it and nothing happend. Still stucked and the Feedrate is at 5.

Configuration: http://pastebin.com/DHtW1wiX

thinkyhead commented 7 years ago

From your video it looks like the Z starts to move, but then gets stuck. Is the current set properly on the Z stepper drivers?

DeathmannX commented 7 years ago

Yes, i updated my Comment before with the configuration file. ;)

thinkyhead commented 7 years ago

The feedrate of 5 may still be too high. Try going back to 2. (M203 Z2) On my own i3 I use 2.25.

DeathmannX commented 7 years ago

same thing with 2 :( I changed already the Stepper Driver from Z on the Board with a other TMC 2100 and A4988.

thinkyhead commented 7 years ago

What does the output of M503 S0 look like?

DeathmannX commented 7 years ago

SENDING:M503 S0 M92 X80.00 Y80.00 Z3200.00 E160.00 M203 X300.00 Y300.00 Z2.00 E25.00 M201 X2000 Y2000 Z50 E1000 M204 P100.00 R1000.00 T100.00 M205 S0.00 T0.00 B20000 X10.00 Y10.00 Z0.20 E2.40 M206 X0.00 Y0.00 Z0.00 M301 P21.11 I1.49 D74.69 M200 D3.00 M200 D0 M851 Z-0.82

Fulg commented 7 years ago

Maybe your Z driver is defective. If you swap the driver board from X (which we see working in your video) with Z, does the problem move to that axis? Do you have a spare TMC2100 driver to try?

I believe the constant echo:busy: processing is normal, since the Z is not moving the G28 command never ends, because the Z endstop is never triggered. You should be able to regain control of the printer once you trigger the Z endstop manually.

DeathmannX commented 7 years ago

Like i already postet a hour ago i tryed that already. https://github.com/MarlinFirmware/Marlin/issues/5333#issuecomment-264325912

I've got a backup Ramps 1.4 Board here and i will try that later.

PS: I tryed that also already to manualy trigger the Probe but not that god idea. I can make a Video of that to later.

thinkyhead commented 7 years ago

Like i already postet a hour ago i tryed that already.

Let's list all the things you've tried so far:

Anyone have other ideas?

justmyopinion commented 7 years ago

Disconnect motor from threaded rod mechanically and see if motors are running when set free Be sure motors are on same direction. If motors are on same driver, set current to drive two motors if not working, change/swap motors.

Kaibob2 commented 7 years ago

Drivers are real from Watterot with Pins pre assembled.

If we take a look at these tables from TMC2100 datasheet, then we want the driver board to have the following potentials on CFG1-3:

tmc config tmc config2

Like this: tmc2100 pcb

When all pins are assembled and all jumpers are installed on the RAMPS 1.4 board the potentials will be

This results in 16 microsteps without interpolation to 256 microsteps. This by itself might no be problem as only the interpolation won't be activated. BUT VCC on CFG3 might be problematic as the current sensing works different.

Long story short: If on the TMC driver board ALL pins are assembled then NO jumper on the Ramps 1.4 board have to be installed. Because Jumper 1 on the Ramps pulled down via R8 the potentials will then be correct. Inside Marlin you have to configure for 16 microsteps.

z-pins

Marlin doesn't know anything about the jumper settings, they only configure the hardware (stepper driver).

DeathmannX commented 7 years ago

Ok I'm happy to say that i got it.

I changed my Ramps 1.4 Board and this didn't change anything. After that I put out 1 Motor and 1 of to worked after that small test.

After that I thought maybe the wire is damaged from the motor that doesn't work so I changed on board the wires and it seems to be working.

So I decided to put the other Motor on and now both worked.

That's it :) Thx Guys for all your help. Without you I wouldn't have tried it. 👍

Kaibob2 commented 7 years ago

Great, i don't understand exactly what it was, but i guess it was a wiring problem. Nevertheless you should consider my last post as this is the correct way your Ramps should be jumpered for use with the TMC2100.

cfelicio commented 7 years ago

I got my TMC2100 today and will try on ramps. So, if I read correctly, since it has all the pins, I should remove all the jumpers on ramps to get 16 microsteps interpolated to 256? Thanks! :)

Kaibob2 commented 7 years ago

@cfelicio Correct!

cfelicio commented 7 years ago

Cool, just reporting back it worked, also need to revert the stepper cable (or adjust direction in firmware), works like a charm, so quiet! Highly recommended for X and Y, I can only hear the fans on the printer now!

thinkyhead commented 7 years ago

Thanks for suffering so the rest of us don't have to. I'll be trying these steppers in a project some time in the next month or so.

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.