bigtreetech / BIGTREETECH-S42B-V1.0

The closed-loop drive is to feedback the rotation angle of the stepping motor to the control panel, compare the distance that needs to be rotated with the distance of the actual rotation, calculate the error value, and then compensate, so as to prevent the problem of multi-step and lost step. The closed-loop drive can completely overcome the lost step of the open-loop stepping motor, and can also significantly improve the performance of the motor at high speed
108 stars 53 forks source link

BTT S42B V2.0 - will not enter calibration #43

Open GhostlyCrowd opened 3 years ago

GhostlyCrowd commented 3 years ago

I've got 2 brand new BTT S42B V2.0 and I can't get either one of them to calibrate. They start up to say calibration OK but when I click calibrate with Dip4 on if does nothing, the K4 button works because I can use it to change every other menu option but selecting calibrate does absolutely zero. If i remove the magnet i get the 10 red led flash that is expected and if i click calibration with out the magnet i get a red flash again. with the magnet in i get no red led so it is seeing them magnet. I just cant calibrate the damn thing.

It's not functioning in closed loop either well it is but its acting just like it does in open loop.(dip4 off dip3 on). But it is working I can move the stepper It never corrects its self, the RPM always says 0000, error always 000.00 and degrees never change from the initial value when turning on the stepper. I've gone over the documentation several times its pretty sparse. What am I missing?

Quas7 commented 3 years ago

was dip 4 off not required for enabling writing the cal data to the flash area? not sure, how it is for v2.

GhostlyCrowd commented 3 years ago

was dip 4 off not required for enabling writing the cal data to the flash area? not sure, how it is for v2.

I've tried both on and off and regardless it won't enter a calibration state. It does nothing when selecting to calibrate.

milicigoran commented 3 years ago

i had the same problem and remember reading that for version 2 you need to have dip 1 and 2 on and for another version was 3 and 4. so i just turned 4 off right now and turned on 1 and 2 and it worked. it went into calibration mode. But whats weird is the writting said to do that after you calibrate. so try that. it worked for me. so 3 and 4 down and 1 and 2 up.

GhostlyCrowd commented 3 years ago

i had the same problem and remember reading that for version 2 you need to have dip 1 and 2 on and for another version was 3 and 4. so i just turned 4 off right now and turned on 1 and 2 and it worked. it went into calibration mode. But whats weird is the writting said to do that after you calibrate. so try that. it worked for me. so 3 and 4 down and 1 and 2 up.

MOTHER OF GOD THIS IS THE ANSWER!

GhostlyCrowd commented 3 years ago

Either the Dip switch is mounted backwards. 1 seems to be 4 and 4 seems to be 1. Dip 1 on 234 off its calibrating Now. So the PDF guide in the source code says Dip 4 on 123 off, sigh but in reality its Dip1 @milicigoran thanks!! i wasted so much time compiling and flashing because seriously how could ever BTT S42B V2.0 i got be bad???

milicigoran commented 3 years ago

I found it am accident because I have 2 other ones that it's dip 4 and they work perfect but I was in here this morning looking for a solution trying to compile with vs code. Not letting me. And I've had this new one for a few days but haven't touched it because i was waiting for my linear rails to get here and make my printer in to double z with linear rails everywhere. Anyway couldn't find a solution to my problem but your post was the last one i read before going to start the hook up process and sure enough it wouldn't calibrate. But my other one side just fine. And then i remembered reading on BTT website that for sale 1.4 turbo it's pins 3 and 4 and for 1.3 i think it's pins 1 and 2. But that's to run it after you calibrate. But since I saw that you guys tried everything else i said i might as well try pins 1 and 2. And sure enough. I was like a little kid. Didn't wait for the calibration. I went straight to the computer to let you know because I know how it is to want to do something but u just can't and hope someone else figures it out. I hate that feeling. Anywayblojfg story short glad i could help. Hope it works out for you.

GhostlyCrowd commented 3 years ago

@milicigoran I got them all working on my test bench ramps with Pin 1 instead of 4 for calibration and pin 2 instead of 3 for closed loop enable. Pins 3 and 4 set the microsteps. It makes no sense that a different Main board for the printer would change the dip positioning needs. I still feel like my dip and your dip switches are just installed in reverse. The documentation is also lacking sadly. The PDF included with the V2.0 source shows a board layout for their old S42A with USB port still.

milicigoran commented 3 years ago

@milicigoran I got them all working on my test bench ramps with Pin 1 instead of 4 for calibration and pin 2 instead of 3 for closed loop enable. Pins 3 and 4 set the microsteps. It makes no sense that a different Main board for the printer would change the dip positioning needs. I still feel like my dip and your dip switches are just installed in reverse. The documentation is also lacking sadly. The PDF included with the V2.0 source shows a board layout for their old S42A with USB port still.

Yeah it's probably reversed because I have 2 that work normal with 4 for calibration and just b1 that's pin 1. And this one that's backwards i got on Amazon for cheaper because it was a return. And I'm betting they returned it because they couldn't get it working. They were probably trying pin 4 and when it didn't work they sent it back. Actually just now writing this i realised another variable. This one that's like yours and backwards i got with the stepper as a plug and okay package. The other ones that are dip 3 and 4 i got just the board with the oled. Did you buy the package or just the board?

milicigoran commented 3 years ago

Because it could be the package is different than if you buy just the board with the screen.

GhostlyCrowd commented 3 years ago

@milicigoran I got them all working on my test bench ramps with Pin 1 instead of 4 for calibration and pin 2 instead of 3 for closed loop enable. Pins 3 and 4 set the microsteps. It makes no sense that a different Main board for the printer would change the dip positioning needs. I still feel like my dip and your dip switches are just installed in reverse. The documentation is also lacking sadly. The PDF included with the V2.0 source shows a board layout for their old S42A with USB port still.

Yeah it's probably reversed because I have 2 that work normal with 4 for calibration and just b1 that's pin 1. And this one that's backwards i got on Amazon for cheaper because it was a return. And I'm betting they returned it because they couldn't get it working. They were probably trying pin 4 and when it didn't work they sent it back. Actually just now writing this i realised another variable. This one that's like yours and backwards i got with the stepper as a plug and okay package. The other ones that are dip 3 and 4 i got just the board with the oled. Did you buy the package or just the board?

I got the Full Kit with OLED with out the stepper from BTT's amazon store. Kind of weird. Seems like they might have had a production run that was reversed.

N6MQD commented 3 years ago

Just picked up two of the motors myself from Amazon and found the same thing. Would not work in closed-loop mode but after reading the posts here, I tried reversing the number order. I think the issue is documentation and not a reversed switch as the orientation mark on the PCB seems to match up with DIP position 1.

tnap1979 commented 3 years ago

I've just purchased 2 of these from KingPrint on amazon.ca s42b v2.0 without stepper motor.. I came here just looking for a manual.. but I'm damn glad I did because I'd have returned these myself thinking they were faulty for following old version information.. used pin 1 to calibrate, and pin 2 to set closed loop... Seems more documentation and information needed for the v2 s42b's

NZ-Nitro commented 3 years ago

I am going through the pain right now............ I find I can do the calibration but end up with a stepper that when I give it 10mm moves about 7.8, looking at your comments I am going to test this theory

NZ-Nitro commented 3 years ago

Well so far the theory is correct with the switch positions but the problem still exists, pretty average company BTT

NZ-Nitro commented 3 years ago

I I ever solve this I will share it from the rooftops bloody annoying

Sunbuzz commented 3 years ago

@NZ-Nitro I think that has to do with the steps per revolution, the S42B uses 256 steps instead of 200. (Which is 78%)

NZ-Nitro commented 3 years ago

@NZ-Nitro I think that has to do with the steps per revolution, the S42B uses 256 steps instead of 200. (Which is 78%)

It's poor design, look for my post with the answer

NZ-Nitro commented 3 years ago

Follow up comment from BTT hello Generally speaking, the motherboard firmware is set to 16 subdivisions. If the motor is 1.8 degrees, the number of pulses is 16200=3200. If you use our S42B motor and set 16 subdivisions, our S42B pulse number is 4096, so 4096/3200=1.28. You need to use the original number of pulses per millisecond 1.28 to get the correct number of pulses per millisecond. If S42B is set to 8 subdivisions, our S42B pulse number is 2048, so 2048/3200=0.64. You need to use the original number of pulses per millisecond * 0.64 to get the correct number of pulses per millisecond. Similarly, if 32 subdivision is used, the calculation method is the same as above. Sincerely, BIQU customer service

jammi commented 2 years ago

Generally speaking, the motherboard firmware is set to 16 subdivisions. If the motor is 1.8 degrees, the number of pulses is 16200=3200. If you use our S42B motor and set 16 subdivisions, our S42B pulse number is 4096, so 4096/3200=1.28. You need to use the original number of pulses per millisecond 1.28 to get the correct number of pulses per millisecond. If S42B is set to 8 subdivisions, our S42B pulse number is 2048, so 2048/3200=0.64. You need to use the original number of pulses per millisecond * 0.64 to get the correct number of pulses per millisecond. Similarly, if 32 subdivision is used, the calculation method is the same as above.

You could better just say it's using 256 steps per rotation instead of the usual 200 or 400. For instance on Klipper, just configure with full_steps_per_rotation: 256 instead of the usual full_steps_per_rotation: 200.

Anyhow, I have two of your modules that don't work properly and one that works most of the time, but not always. I think you could be much more responsive on updating your documentation and help your customers.

jcmental commented 1 year ago

So guys, sorry new to all this stuff. I finally got the stepper to calibrate by setting all dip switches to of then turning #1 back on. it says it’s calibrated on start up now, and I’ve managed to change the rotation of of one of the steppers. But I don’t know what to do now? Do I switch dip 1 to off? I’m not sure what switch to turn on for closed loop?

oriwheb commented 1 year ago

Putting this here in case someone else roams the internet for answers: https://github.com/bigtreetech/BIGTREETECH-S42B-V1.0/issues/24#issuecomment-950551658

Basically: The hardware/firmware changed, but the wires from the S42B to the motor didn't, so you need to pop the pins out of the cable connector and rearrange them as shown in the link above (the S42B's side of the cable is easier to deal with).

The classic symptom of an improperly wired cable is when the calibration process thunks along and stutters back and forth rather than doing clean steps in one direction then the other. Another sign of improper cabling is if when trying to move the motor via the printer board/screen the motor locks up and starts heating up, this is probably because the wiring confuses the S42B since the movement does not match with what it thinks it sends to the motor, so it locks up in 'fixing the position' of the movement.

If the tiny screen module doesn't update in real time when you move the bed you can reset it to see the new degree. Note that the screen might not show any data (only 000's) if DIP 3 is 'off'.

As for the DIP pins: 1 & 2 are supposed to match your chosen subdivision (microsteps) via the screen module. 3 in the 'on' position is for enabling closed-loop feedback (basically the entire point of all of this). Turn it off for open loop printing and debugging I guess. 4 is the calibration enabling pin. Without it in the 'on' position you can't calibrate. I personally haven't seen any issues with calibrating while 3 is in 'on'. For any DIP pin switching to take effect, you have to press the reset button (or cycle the power to the entire printer I guess).

Sadly, like I said, BTT change things up inconsistently, so some people get their DIP pins installed in reverse, so 1 is calibration, 2 is closed loop, and 3 & 4 are microstepping. Copying this straight out of the PDF in BTT's github: 1st 2nd subdivision impulses per circle 1024: 1 1 4 impulses per circle 2048: 0 1 8 impulses per circle 4096: 1 0 16 impulses per circle 8192: 0 0 32 Set your 1 & 2 DIP pins according to this. There's no need to turn them on or off when calibrating or enabling closed-loop.

Some people have issues with the magnet being too deep inside of the motor encasing, so propping the magnet up on glued non-magnetic material might help with properly tracking the magnetic field. You can see such interference visually if you have a piece of magnetic paper. Note that according to BTT the distance between the encoder and the magnet should be between 2mm and 4mm.