Discussion of Snapmaker J1 Firmware Updates

Glass thickness is useless if you want use sheets or other glass. You only can set from 4,50 between 5,50

I had expected something like that - the clamps on the heat bed have their functional limits. But one millimeter adjustment range is fine IMO to use everything I could think of as useful within the mechanical contraints of the printer (clamps as mentioned, rather flexible bed requiring a glass plate) since you can get glass plates in 3, 4 and 5mm thickness.

More useful without the limitation.
I got more Offset. So itā€™s not helpful
If you put metal or magnetic sheet on it, also not helpful, have 3,38 then

Yes I agree. It would have been more useful with a larger adjustment range, but maybe they donā€™t want people to be able to force the buildplate up into the nozzle to hard.
Maybe itā€™s the same with moving the buildplate manually up and down. It would have been nice but in theory somebody could (disable software endstop/alter home offset or whatever) and force the buildplate up into the nozzle.

It would be a lot better to use stall detection IMO. Then we could safely have a big adjustment range for thickness of the buildplate and also be able to move the bed up and down manuallyā€¦

Yes Im with u. The system from the Bamboo is pretty good and you donā€™t need to level manual, but have fine adjustment. Missed that on the J1
Complete auto level will much easier with the 2 heads.

Are you saying that you added another 3,4mm on top of the standard 5mm build plate? O.o That is some weird setup - but if it works for youā€¦ I would search for some 2mm plate to add below the magneticā€¦ whatever you use. Then you are within limits and also donā€™t risk damaging anything.

@Rwide Stall detection with a leadscrew with a low pitch as it is used for the z axis is a tricky thing - I wonder if that works at all since. Do you know any printers that use this successfully?

Well I have not done it myself but if you google sensorless z homing you can find examples. I would assume the problem with sensorless homing/stall detection in Z is more related to accuracy. In this example that I was talking about it would be only for extra safety. I donā€™t think that would be very hard to implemate considering others have done itā€¦

Change the glass with a magnetic sheet I mean

Well, but we are not talking about homing here but rather about sensorless nozzle detection.

The difference is that you can add a rather massive collar around the lead screw as an endstop when homing. That one can be detected by the motor currents since the bed holder drives directly against that collar. Things connecting bed and collision surface that can flex here are therefore just the leadscrew, and that one will not bend since force and collision surface are axially aligned. Therefore almost no elastic deformation is possible.

But in the case of the nozzle, you drive the bed surface against the nozzle. Things that can flex here are the bed frame, the lead screw, the housing, the y axis, the x axis and the hotend - with a lot of bending involved, resulting in a much reduced stiffness of the contact point.

Think of a piece of wire, with you wanting to increase the distance between the end surfaces. In the first case you have a perfectly straight piece of that wire. This means you only can increase the distance between the end surfaces by pulling on it hard as hell and try to get the wire longer.

In the second case the wire has roughly the shape of a large ā€œGā€ or at least a ā€œCā€. Here, you can easily increase the distance between the endpoints by simply bending the wire.

The easier you can increase the distance between the end of the wire, the less the motor current will rise when you collide with the endstop. That is much harder to detect.

Well my understanding is that the resistence/current would increase until threshold is reached. As I stated before, the accuracy is not that important in this caseā€¦

No, stall detection on the TMC drivers works by checking the so called ā€œback EMFā€ of the motor (there are some videos out there explaining some details) - in short the controller tries to figure out the currents in the motor coils that are generated by the magnetic field in the motor and then tries to find a sharp change in these currents that might indicate a stall.

Details should in the data sheet of the TMC stepper driver - they call it ā€œStall Guardā€.

The problem of this technology is that it requires high speed changes to work since the induced currents are near to zero when the system is static (i.e. the motor runs at a constant speed) and get higher the higher the change in a given (short!) time period is. For details about why this happens, you can take a look at self-induction of electric coils.

Additionally, you need to keep stall detection significantly above any backcurrent changes that might occur when intentionally accelerating or decelerating the printer, thus: the higher the printing acceleration in nomal use, the more difficult stall detection.

If I remember correctly (should be somewhere here in the forum?), the Snapmaker team has already enabled stall detection for the J1 by the way to at least somewhat reduce the risk of breaking a forgotten glass plate during calibration. But that is all you can achieve with stall detection as.it seems.

Ok sure. The back-EMF is how the load is measured. I did not know that, but if I understand it correctly, it is still true that, that the current would increase to overcome the load until the load threshold is reached.
Also, are backcurrent changes in load really relevant? I would assume there is a gcode command in marlin for enabling and disabling stall guard, so you could use it only when homing and when moving bed manually, but I could be wrongā€¦

Cheers

I see now that there is a homing stall detection enabler/disabler in the user interface. Maybe someone could explain to me: If there is stall detection, then whats the point of limiting the adjustment range of the glassplate so much?

No, this is not what it does, and that is the problem. The back EMF is induced by the motor in our case by suddenly decelarating due to the contact. It will reach a certain peak depending on the deceleration value per millisecond, and that peak is measured. This means: starting from a given speed, the motor will generate a higher peak if it it is decelerated faster - but not if it is decelerated longer.
Compare it with bumping into a wall: your fist is the motor, and the pain you get is the back emf current. if you punch your fist into a rubber wall, it will be decelerated rather slowly and will not hurt yourself much - if you punch into a concrete wall, however, your fist will be decelerated very fast and it will hurt more.
If you are punching harder (i.e. accelerate your fist more before it touches the wall), the rubber wall will be deformed more but you will not hurt your fist much more. On the concrete wall however, you probably start breaking bones at some point.
In both cases however, it you keep on pushing after your fist has contacted the wall, not much else in terms of ā€œpainā€ will happen.

I am not too deep into how Marlin handles (de)activating the Stall Guard of the TMC drivers, but if I am not mistaken from my (failed) experiments with my Duet printer, setting that flag requires the stepper drivers to be restarted whenever StallGuard is activated or deactivated - which then would mean the homing position will be lost whenever this setting would change.

Regarding the limitation: IMO the reason behind this is mainly because Snapmaker wants to make the printer idiot proof. The J1 is sold world-wide after allā€¦
A too thin plate will not be held in place correctly by the clamps, resulting in the calibration being wrong: the black PCB that shapes the heat bead is neither really stiff nor really even - all this is achieved by pressing the glass plate against the bed. Without the glass plate, the bed on my printer is more than 2mm off - only if I attach the glass plate, the bed gets even.
A too thick plate will however bend the clamps out of shape which then will result in the original printing plate not being clamped reliably any more - which then again means the original plate will be too thin to flatten the head bed.

And now think what a possible idiot might do when he finds out that the bed of his J1 behaves strangely and ā€œprints badlyā€ after he forced the clamps shut with a 7 or 8mm thick printing plate ā€œbecause the setting allows itā€ and then reverts to the original oneā€¦ or if he uses a 2 or 3mm printing plate - again ā€œbecause the setting allows itā€ - and then finds out that the plate is not held in place and the print head collides with the protruding clampsā€¦

1 Like

I get what your saying. I thaught the stallguard was based of torque resistance to the motorshaft but youā€™re saying that itā€™s based on deceleration/unit of time? I think I need to read some more about this to wrap my head around how it works. But thanks for the explanation.

As for idiotproofing the printer, I think less is more sometimes, but that just my opinionā€¦ I would have liked to be able to put on a 3mm garolite or polycarbonate plate for example and simply input the thickness in the user interfaceā€¦

Yeah, itā€™s definitely broken. Sending a file through the latest OctoPrint to the machine results in unexpected extruder behavior and positioning, especially when running multiple extruders.

The same file that prints just fine through the USB drive will not print correctly when sent through OctoPrint to the J1.

Itā€™s a bummer, because the more I got familiar with OctoPrint, the more I liked it. It fills in a lot of the gaps not covered by Luban / J1 hardware.

BlockquoteThe heating order is not in the firmware. Itā€™s in the start gcode so you can change it yourselfā€¦ But yea itā€™s very strange heating the nozzles firstā€¦

How do I change the start G-Code in Luban? I see it in Cura, but not in Luban. Or, do I have to go in and manually edit my files each time?

I donā€™t think itā€™s possible in luban atm. Maybe it would be easier to just switch to Cura than editing Gcode files with text editor every time? =D

I fully agree with you there - this is one of the reasons why I want to have full firmware access - either by Snaomaker making all the sources including the display public (probably wonā€™t happen) or by throwing out the electronics and adding an open system!

But given the completely braindead product liability rules in some parts of the world that brought us such wonderful inventions like ā€œCaution! Hotā€ signs on coffee mugs I probably would be as cautious as Snapmaker if I were a companyā€¦

1 Like

I would suggest saving and editing the file with a text editor of your choice :wink:

1 Like