Extend, retract not working that well, setup missing size box

extend and retract work a little but never fully, not after several tries, when assembling I was trying to have the least binding I could with the motor placement. extending fully doesnt leave enough time in that mode to extend all 4 fully, when you have to pull on two and then the remaining two, there is only enough time for one, be nice if this was a toggle or the timer duration was longer

there is no size box in the setup menu like the one bar uses in the video,

i feel testing the motors assembly would have been good before assembling the entire unit - just a thought.

i got the 4 anchor points attached to the frame but this thing is a hot mess trying to get it to do what its supposed to and not have it get tangled now

1 Like

There isn’t a time limit on that mode…it should stay in that mode for as long as needed so I think that something else might be going wrong here.

Have you updated to the latest firmware and index html file? Things are still changing pretty quickly so it’s worth getting the latest update so that everything works right

what version of firmware are you on?

David Lang

the other issue having to do a retract all before extend, is that necessary to take off the anchors each time through setup

.72 firmware,

I just deleted everything i have downloaded, redownloaded so there is no wrong files, then uploaded the yaml, index, and firmware files from the github

so the index file needs to stay as .gz i have figured out

I now have a matching interface with all the correct boxes on the setup screen. let me go from here now.

1 Like

Bear Fulmer wrote:

the other issue having to do a retract all before extend, is that necessary to take off the anchors each time through setup

Yes, you will be unable to fully retract with the belts attached to the anchors.

David Lang

1 Like

Bear Fulmer wrote:

.72 firmware,

I just deleted everything i have downloaded, redownloaded so there is no wrong files, then uploaded the yaml, index, and firmware files from the github

then i get upload rejected, not enough space. do i need to delete them first?

you should not, but make sure that you are uploading the files with exactly the
same names (and make sure that the index.html.gz is getting uploaded compressed)

David Lang

1 Like

I got the firmware and files updated correctly, I will disconnect the four anchors and get back to trying to retract, then extending fully and see if that works correctly now.

about the 'machine size", what size is it referring to, is it the physical size of the frame, is it the size at the attachment points, is it the size of the spoil board, what size is it asking for?

1 Like

I would like to say thanks so far for the help and I would love to contribute to this possibly in the instructions to help remove some of the ambiguity

1 Like

Bear Fulmer wrote:

about the 'machine size", what size is it referring to, is it the physical size of the frame, is it the size at the attachment points, is it the size of the spoil board, what size is it asking for?

size of the anchor points.

This is a starting point for the calibration. It adjusts from these numbers, so
it’s useful to have them in the ballpark (or you can do multiple calibration
runs, each one getting closer to accurate)

David Lang

1 Like

Bear Fulmer wrote:

I would like to say thanks so far for the help and I would love to contribute
to this possibly in the instructions to help remove some of the ambiguity

This will help a lot, it doesn’t take long for us to get to where we know enough
that we don’t understand that something isn’t clear.

David Lang

1 Like

ok, i got a full retract, then extended, it was roughly in the middle with the bottom two slack, it started calibration and then stopped in the middle of calibration,

the calibration went for about a minute,

now I got to pull it all off again and start over?

is there some way to have it save initial calibration data somehow so we dont have to do a full rectract, extension, once we put it on the frame after the very first time it should be good right?, really we are just calculating the same thing without all the extra work, it just throwing out our data seems not right.

1 Like

Bear Fulmer wrote:

ok, i got a full retract, then extended, it was roughly in the middle with the bottom two slack, it started calibration and then stopped in the middle of calibration,

what error did you get?

the calibration went for about a minute,

now I got to pull it all off again and start over?

is there some way to have it save initial calibration data somehow so we dont have to do a full rectract, extension, once we put it on the frame after the very first time it should be good right?, really we are just calculating the same thing without all the extra work, it just throwing out our data seems not right.

There are two separate things happening here

  1. getting to a known belt position (retract/extend)

right now, the maslow requires this every time you power cycle it. There is talk
of a future version not requiring this, but if the belt spools move while it is
powered off, the maslow has no way of knowing that the belt lengths have
changed, which could cause grief.

the encoders measure the angle of the sprockets but do not know where the belt
is (or how many turns the encoders have made). It only knows where the belts are
when it retracts them until the motors hit their current limit (at which point
it believes that they are fully retracted, i.e. length 0)

This work is pending until we get the calibration working better.

  1. calibration (figuring out where the anchors really are in relation to each
    other)

This only needs to be done once (unless you change the frame), at the end it
saves the new positions (it may do so after each stage of calibration, I’m not
sure). you can look in the maslow.yaml file (either by downloading the file or
in the settings tab) to see the maslow_* values that are currently saved.

David Lang

1 Like

here is a copy of the maslow.yaml file as i turn it on this morning.
is there a way to see if it had saved the correct values, well i guess it doesnt matter since you have to calibrate it every time the power cycles, i had no idea thats what it would take to use it

i thought maybe it could calibrate from 4 known points . like the four corners of the spoil board or something, maybe some magnets in the board like the prusa does.

board: Maslow
name: Maslow S3 Board
meta:
Maslow_vertical: true
maslow_calibration_grid_width_mm_X: 2000.000000
maslow_calibration_grid_height_mm_Y: 1000.000000
maslow_calibration_grid_size: 9
Maslow_brX: 2967.000000
Maslow_brY: 0.000000
Maslow_brZ: 117.000000
Maslow_tlX: 0.000000
Maslow_tlY: 2428.000000
Maslow_tlZ: 144.000000
Maslow_trX: 2967.000000
Maslow_trY: 2428.000000
Maslow_trZ: 97.000000
Maslow_blX: 0.000000
Maslow_blY: 0.000000
Maslow_blZ: 75.000000
Maslow_Retract_Current_Threshold: 1300
Maslow_Calibration_Current_Threshold: 1300
stepping:
engine: Timed
idle_ms: 240
pulse_us: 4
dir_delay_us: 0
disable_delay_us: 0
segments: 12

uart1:
txd_pin: gpio.1
rxd_pin: gpio.2
rts_pin: NO_PIN
cts_pin: NO_PIN
baud: 115200
mode: 8N1

spi:
miso_pin: gpio.13
mosi_pin: gpio.11
sck_pin: gpio.12

sdcard:
cs_pin: gpio.10
card_detect_pin: NO_PIN
frequency_hz: 8000000

kinematics:
Cartesian:

axes:
shared_stepper_disable_pin: NO_PIN
shared_stepper_reset_pin: NO_PIN
x:
steps_per_mm: 80.000000
max_rate_mm_per_min: 2000.000000
acceleration_mm_per_sec2: 25.000000
max_travel_mm: 2438.399902
soft_limits: false
homing:
cycle: -1
allow_single_axis: true
positive_direction: true
mpos_mm: 0.000000
feed_mm_per_min: 50.000000
seek_mm_per_min: 200.000000
settle_ms: 250
seek_scaler: 1.100000
feed_scaler: 1.100000

motor0: 
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 1.000000
  dc_servo: 
    id: 255
    timer_ms: 10

y:
steps_per_mm: 80.000000
max_rate_mm_per_min: 2000.000000
acceleration_mm_per_sec2: 25.000000
max_travel_mm: 1219.199951
soft_limits: false
homing:
cycle: -1
allow_single_axis: true
positive_direction: true
mpos_mm: 0.000000
feed_mm_per_min: 50.000000
seek_mm_per_min: 200.000000
settle_ms: 250
seek_scaler: 1.100000
feed_scaler: 1.100000

motor0: 
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 1.000000
  null_motor: 

z:
steps_per_mm: 100.000000
max_rate_mm_per_min: 400.000000
acceleration_mm_per_sec2: 10.000000
max_travel_mm: 100.000000
soft_limits: false
homing:
cycle: -1
allow_single_axis: true
positive_direction: true
mpos_mm: 0.000000
feed_mm_per_min: 50.000000
seek_mm_per_min: 200.000000
settle_ms: 250
seek_scaler: 1.100000
feed_scaler: 1.100000

motor0: 
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 1.000000
  tmc_2209: 
    uart_num: 1
    step_pin: gpio.15
    direction_pin: gpio.16
    disable_pin: NO_PIN
    r_sense_ohms: 0.110000
    run_amps: 1.000000
    hold_amps: 0.500000
    microsteps: 1
    toff_disable: 0
    toff_stealthchop: 5
    use_enable: true
    addr: 0
    run_mode: StealthChop
    homing_mode: StealthChop
    stallguard: 0
    stallguard_debug: false
    toff_coolstep: 3

motor1: 
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 1.000000
  tmc_2209: 
    uart_num: 1
    step_pin: gpio.46
    direction_pin: gpio.38
    disable_pin: NO_PIN
    r_sense_ohms: 0.110000
    run_amps: 1.000000
    hold_amps: 0.500000
    microsteps: 1
    toff_disable: 0
    toff_stealthchop: 5
    use_enable: true
    addr: 1
    run_mode: StealthChop
    homing_mode: StealthChop
    stallguard: 0
    stallguard_debug: false
    toff_coolstep: 3

control:
safety_door_pin: NO_PIN
reset_pin: NO_PIN
feed_hold_pin: NO_PIN
cycle_start_pin: NO_PIN
macro0_pin: NO_PIN
macro1_pin: NO_PIN
macro2_pin: NO_PIN
macro3_pin: NO_PIN

coolant:
flood_pin: NO_PIN
mist_pin: NO_PIN
delay_ms: 0

probe:
pin: NO_PIN
check_mode_start: true

macros:
startup_line0:
startup_line1:
macro0:
macro1:
macro2:
macro3:

start:
must_home: true
deactivate_parking: false
check_limits: false

parking:
enable: false
axis: Z
target_mpos_mm: -5.000000
rate_mm_per_min: 800.000000
pullout_distance_mm: 5.000000
pullout_rate_mm_per_min: 250.000000

user_outputs:
analog0_pin: NO_PIN
analog1_pin: NO_PIN
analog2_pin: NO_PIN
analog3_pin: NO_PIN
analog0_hz: 5000
analog1_hz: 5000
analog2_hz: 5000
analog3_hz: 5000
digital0_pin: NO_PIN
digital1_pin: NO_PIN
digital2_pin: NO_PIN
digital3_pin: NO_PIN
digital4_pin: NO_PIN
digital5_pin: NO_PIN
digital6_pin: NO_PIN
digital7_pin: NO_PIN

NoSpindle:

arc_tolerance_mm: 0.002000
junction_deviation_mm: 0.010000
verbose_errors: false
report_inches: false
enable_parking_override_control: false
use_line_numbers: false
planner_blocks: 16

I think that this is the import question

Your results should be automatically saved for you as long as the machine thinks they are good enough to be worth saving (fitness more than 0.5)

it said the motors were not safe to move or something, i did not write it down, when i opened up the setup screen it had not saved the vertical orientation possibly, i rechecked everything

this morning about 5 mins ago it finished calibration successfully.

I thought when i pressed extend all that it meant the same as retract all, all being the entire belt length, so after retraction I was expecting the extend to go the length of the belt and not off a dimension, i understand that it uses the setup dimensions to extend them just enough
to put it roughly in the center.

now that it has calibrated is this only good until i shut the machine off?

1 Like

No, calibration is a one time thing. You won’t need to do it again unless you build a new frame with different anchor point locations.

If you turn the machine off you will need to do Retract All → Extend All → Take Slack to extend the belts and attach them to the frame again.

Bear Fulmer wrote:

here is a copy of the maslow.yaml file as i turn it on this morning.
is there a way to see if it had saved the correct values, well i guess it doesnt matter since you have to calibrate it every time the power cycles, i had no idea thats what it would take to use it

what calibration sets are:

Maslow_brX: 2967.000000
Maslow_brY: 0.000000
Maslow_tlX: 0.000000
Maslow_tlY: 2428.000000
Maslow_trX: 2967.000000
Maslow_trY: 2428.000000
Maslow_blX: 0.000000
Maslow_blY: 0.000000

These look like the numbers that you entered manually, so it probably did not
save anything as a result of your calibration (nothing after the decimal,
everything a perfect rectangle is unlikely in the real world)

Maslow_Retract_Current_Threshold: 1300
Maslow_Calibration_Current_Threshold: 1300

@bar, we should change the UI so that when the retraction is set, the
calibration is set as well

i thought maybe it could calibrate from 4 known points . like the four corners of the spoil board or something, maybe some magnets in the board like the prusa does.

The problem is that those aren’t really known points. their distance can vary
slightly depending on the spoil board (which also may not be a perfect
rectangle) and we don’t know where they are in relationship to the anchors.

there are some discussion threads on other ways to do calibration, and ideas are
welcome. I would suggest starting a new thread and trying to work out the math
there. Remember, the only things you really ‘know’ are the Z offset to the
anchors and the length of the belts (and the Z offsets are only somewhat known)

David Lang

just for follow up here is what it looks like now

board: Maslow
name: Maslow S3 Board
meta:
Maslow_vertical: true
maslow_calibration_grid_width_mm_X: 2000.000000
maslow_calibration_grid_height_mm_Y: 1000.000000
maslow_calibration_grid_size: 9
Maslow_brX: 2945.899902
Maslow_brY: 0.000000
Maslow_brZ: 117.000000
Maslow_tlX: -4.300000
Maslow_tlY: 2422.399902
Maslow_tlZ: 144.000000
Maslow_trX: 2942.699951
Maslow_trY: 2421.199951
Maslow_trZ: 97.000000
Maslow_blX: 0.000000
Maslow_blY: 0.000000
Maslow_blZ: 75.000000
Maslow_Retract_Current_Threshold: 1300
Maslow_Calibration_Current_Threshold: 1300
stepping:
engine: Timed
idle_ms: 240
pulse_us: 4
dir_delay_us: 0
disable_delay_us: 0
segments: 12

uart1:
txd_pin: gpio.1
rxd_pin: gpio.2
rts_pin: NO_PIN
cts_pin: NO_PIN
baud: 115200
mode: 8N1

spi:
miso_pin: gpio.13
mosi_pin: gpio.11
sck_pin: gpio.12

sdcard:
cs_pin: gpio.10
card_detect_pin: NO_PIN
frequency_hz: 8000000

kinematics:
Cartesian:

axes:
shared_stepper_disable_pin: NO_PIN
shared_stepper_reset_pin: NO_PIN
x:
steps_per_mm: 80.000000
max_rate_mm_per_min: 2000.000000
acceleration_mm_per_sec2: 25.000000
max_travel_mm: 2438.399902
soft_limits: false
homing:
cycle: -1
allow_single_axis: true
positive_direction: true
mpos_mm: 0.000000
feed_mm_per_min: 50.000000
seek_mm_per_min: 200.000000
settle_ms: 250
seek_scaler: 1.100000
feed_scaler: 1.100000

motor0: 
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 1.000000
  dc_servo: 
    id: 255
    timer_ms: 10

y:
steps_per_mm: 80.000000
max_rate_mm_per_min: 2000.000000
acceleration_mm_per_sec2: 25.000000
max_travel_mm: 1219.199951
soft_limits: false
homing:
cycle: -1
allow_single_axis: true
positive_direction: true
mpos_mm: 0.000000
feed_mm_per_min: 50.000000
seek_mm_per_min: 200.000000
settle_ms: 250
seek_scaler: 1.100000
feed_scaler: 1.100000

motor0: 
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 1.000000
  null_motor: 

z:
steps_per_mm: 100.000000
max_rate_mm_per_min: 400.000000
acceleration_mm_per_sec2: 10.000000
max_travel_mm: 100.000000
soft_limits: false
homing:
cycle: -1
allow_single_axis: true
positive_direction: true
mpos_mm: 0.000000
feed_mm_per_min: 50.000000
seek_mm_per_min: 200.000000
settle_ms: 250
seek_scaler: 1.100000
feed_scaler: 1.100000

motor0: 
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 1.000000
  tmc_2209: 
    uart_num: 1
    step_pin: gpio.15
    direction_pin: gpio.16
    disable_pin: NO_PIN
    r_sense_ohms: 0.110000
    run_amps: 1.000000
    hold_amps: 0.500000
    microsteps: 1
    toff_disable: 0
    toff_stealthchop: 5
    use_enable: true
    addr: 0
    run_mode: StealthChop
    homing_mode: StealthChop
    stallguard: 0
    stallguard_debug: false
    toff_coolstep: 3

motor1: 
  limit_neg_pin: NO_PIN
  limit_pos_pin: NO_PIN
  limit_all_pin: NO_PIN
  hard_limits: false
  pulloff_mm: 1.000000
  tmc_2209: 
    uart_num: 1
    step_pin: gpio.46
    direction_pin: gpio.38
    disable_pin: NO_PIN
    r_sense_ohms: 0.110000
    run_amps: 1.000000
    hold_amps: 0.500000
    microsteps: 1
    toff_disable: 0
    toff_stealthchop: 5
    use_enable: true
    addr: 1
    run_mode: StealthChop
    homing_mode: StealthChop
    stallguard: 0
    stallguard_debug: false
    toff_coolstep: 3

control:
safety_door_pin: NO_PIN
reset_pin: NO_PIN
feed_hold_pin: NO_PIN
cycle_start_pin: NO_PIN
macro0_pin: NO_PIN
macro1_pin: NO_PIN
macro2_pin: NO_PIN
macro3_pin: NO_PIN

coolant:
flood_pin: NO_PIN
mist_pin: NO_PIN
delay_ms: 0

probe:
pin: NO_PIN
check_mode_start: true

macros:
startup_line0:
startup_line1:
macro0:
macro1:
macro2:
macro3:

start:
must_home: true
deactivate_parking: false
check_limits: false

parking:
enable: false
axis: Z
target_mpos_mm: -5.000000
rate_mm_per_min: 800.000000
pullout_distance_mm: 5.000000
pullout_rate_mm_per_min: 250.000000

user_outputs:
analog0_pin: NO_PIN
analog1_pin: NO_PIN
analog2_pin: NO_PIN
analog3_pin: NO_PIN
analog0_hz: 5000
analog1_hz: 5000
analog2_hz: 5000
analog3_hz: 5000
digital0_pin: NO_PIN
digital1_pin: NO_PIN
digital2_pin: NO_PIN
digital3_pin: NO_PIN
digital4_pin: NO_PIN
digital5_pin: NO_PIN
digital6_pin: NO_PIN
digital7_pin: NO_PIN

NoSpindle:

arc_tolerance_mm: 0.002000
junction_deviation_mm: 0.010000
verbose_errors: false
report_inches: false
enable_parking_override_control: false
use_line_numbers: false
planner_blocks: 16

This is the important part, we can see here that those numbers have been computed by the calibration process and aren’t the numbers that you entered anymore

1 Like