Interstitial Firmware Releases

Brad wrote:

After FW updates, must i recalibrate?

If you have a calibration that you are happy with, I don’t think so.

David Lang

1 Like

@bar - loaded 0.70.2-

  • I don’t recall seeing the ‘error 3’ before
  • is the index.html Version: 0.7 vs firmware version: 0.69 an issue?

Serial Messages
[MSG:INFO: Channel auto report interval set to 50 ms]
[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]
[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0]
error:3
[MSG:INFO: Caution: Unlocked]
Index.html Version: 0.7
[MSG:INFO: Firmware Version: 0.69]
[MSG:INFO: Motor detected on Top Left]
[MSG:INFO: Encoder connected on Top Left]
[MSG:INFO: Magnet detected on Top Left]
[MSG:INFO: Motor detected on Top Right]
[MSG:INFO: Encoder connected on Top Right]
[MSG:INFO: Magnet detected on Top Right]
[MSG:INFO: Motor detected on Bottom Left]
[MSG:INFO: Encoder connected on Bottom Left]
[MSG:INFO: Magnet detected on Bottom Left]
[MSG:INFO: Motor detected on Bottom Right]
[MSG:INFO: Encoder connected on Bottom Right]
[MSG:INFO: Magnet detected on Bottom Right]

C Peter Lotz wrote:

@bar - loaded 0.70.2-

  • I don’t recall seeing the ‘error 3’ before
  • is the index.html Version: 0.7 vs firmware version: 0.69 an issue?

Yes, you always need to upgrade the index at the same time as the firmware.

David Lang

I thought I had. Apparently I was wrong…

@bar can I just confirm that you can have multiple frame sizes and calibrations as long as you just use the correct yaml file…??

So if I have a bench top config that never changes and a garage floor config that never changes size and location of anchors, I should then be able to just upload the saved yaml file for each when I want to use the different frames …?

1 Like

OK, so I had a mismatched setup, but I fixed that, so- first impressions of 0.70.2

  • It’s much faster - previously times to a default calibration at 47 minutes 40 seconds, with 0.70.2 it was 20 minutes 10 seconds
  • The spiral out from the center eliminates the first two big moves (center/center to bottom/center, and bottom/center to bottom/left) and the corresponding pucker factor with belt slack

Other than setting my anchor dimensions, I left everything at the default values-

First pass -

...

Fitness: 1.5736402 in 100
Fitness: 1.5736402 in 200
Fitness: 1.5736402 in 300
Fitness: 1.5736402 in 400
Fitness: 1.5736402 in 500
Fitness: 1.5736402 in 600
Fitness: 1.5736402 in 700
Fitness: 1.5736402 in 800
Fitness: 1.5736402 in 900
Fitness: 1.5736402 in 1000

Calibration complete 
Calibration values:
Fitness: 1.5736401428046956
Maslow_tlX: 2.9
Maslow_tlY: 2363.0
Maslow_trX: 3578.2
Maslow_trY: 2362.9
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3576.4
Maslow_brY: 0.0
These values have been automatically saved for you.

...

Fitness: 1.0870249 in 100
Fitness: 1.0894014 in 200
Fitness: 1.0901219 in 300
Fitness: 1.0921239 in 400
Fitness: 1.0940121 in 500
Fitness: 1.0980349 in 600
Fitness: 1.0980349 in 700
Fitness: 1.0980349 in 800
Fitness: 1.0980349 in 900
Fitness: 1.0980349 in 1000
Fitness: 1.0980349 in 1100
Fitness: 1.0980349 in 1200
Fitness: 1.0980349 in 1300
Fitness: 1.0980349 in 1400
Fitness: 1.0980349 in 1500

Calibration complete 
Calibration values:
Fitness: 1.098034978563063
Maslow_tlX: 0.5
Maslow_tlY: 2363.0
Maslow_trX: 3575.5
Maslow_trY: 2368.8
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3574.4
Maslow_brY: 0.0
These values have been automatically saved for you.

...

Fitness: 0.9291548 in 100
Fitness: 0.9291548 in 200
Fitness: 0.9291548 in 300
Fitness: 0.9291548 in 400
Fitness: 0.9291548 in 500
Fitness: 0.9291548 in 600
Fitness: 0.9291548 in 700
Fitness: 0.9291548 in 800
Fitness: 0.9291548 in 900
Fitness: 0.9291548 in 1000

Calibration complete 
Calibration values:
Fitness: 0.9291547386427094
Maslow_tlX: 1.0
Maslow_tlY: 2363.0
Maslow_trX: 3575.5
Maslow_trY: 2368.8
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3575.0
Maslow_brY: 0.0
These values have been automatically saved for you.

...

Fitness: 0.6869876 in 100
Fitness: 0.6869876 in 200
Fitness: 0.6869876 in 300
Fitness: 0.6869876 in 400
Fitness: 0.6869876 in 500
Fitness: 0.6869876 in 600
Fitness: 0.6869876 in 700
Fitness: 0.6869876 in 800
Fitness: 0.6869876 in 900
Fitness: 0.6869876 in 1000

Calibration complete 
Calibration values:
Fitness: 0.6869875759670862
Maslow_tlX: 1.0
Maslow_tlY: 2363.0
Maslow_trX: 3576.0
Maslow_trY: 2368.8
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3575.0
Maslow_brY: 0.0
These values have been automatically saved for you.

...

Fitness: 0.6856780 in 100
Fitness: 0.6856780 in 200
Fitness: 0.6856780 in 300
Fitness: 0.6856780 in 400
Fitness: 0.6856780 in 500
Fitness: 0.6856780 in 600
Fitness: 0.6856780 in 700
Fitness: 0.6856780 in 800
Fitness: 0.6856780 in 900
Fitness: 0.6856780 in 1000

Calibration complete 
Calibration values:
Fitness: 0.6856780035524978
Maslow_tlX: 0.9
Maslow_tlY: 2363.0
Maslow_trX: 3576.0
Maslow_trY: 2368.8
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3575.0
Maslow_brY: 0.0
These values have been automatically saved for you.
[MSG:INFO: Calibration complete]

I did get some [MSG:ERR: Motor current on Bottom Right axis exceeded threshold of 4000] and [MSG:ERR: Motor current on Top Left axis exceeded threshold of 4000] on both passes.

After this, I restarted and jogged all around the perimeter, More slack than I expected- and not always on the ‘trailing’ belt, but no major issues.

Using the same yaml, I ran another calibration;

...

Fitness: 1.3745099 in 100
Fitness: 1.3745099 in 200
Fitness: 1.3745099 in 300
Fitness: 1.3745099 in 400
Fitness: 1.3745099 in 500
Fitness: 1.3745099 in 600
Fitness: 1.3745099 in 700
Fitness: 1.3745099 in 800
Fitness: 1.3745099 in 900
Fitness: 1.3745099 in 1000

Calibration complete 
Calibration values:
Fitness: 1.374509987189567
Maslow_tlX: 0.9
Maslow_tlY: 2363.0
Maslow_trX: 3574.7
Maslow_trY: 2368.8
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3574.4
Maslow_brY: 0.0
These values have been automatically saved for you.

...

Fitness: 1.0057866 in 100
Fitness: 1.0057866 in 200
Fitness: 1.0057866 in 300
Fitness: 1.0057866 in 400
Fitness: 1.0057866 in 500
Fitness: 1.0057866 in 600
Fitness: 1.0057866 in 700
Fitness: 1.0057866 in 800
Fitness: 1.0057866 in 900
Fitness: 1.0057866 in 1000

Calibration complete 
Calibration values:
Fitness: 1.0057865919997522
Maslow_tlX: 0.7
Maslow_tlY: 2363.0
Maslow_trX: 3575.3
Maslow_trY: 2368.8
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3574.4
Maslow_brY: 0.0
These values have been automatically saved for you.

...

Fitness: 0.8455283 in 100
Fitness: 0.8455283 in 200
Fitness: 0.8455283 in 300
Fitness: 0.8455283 in 400
Fitness: 0.8455283 in 500
Fitness: 0.8455283 in 600
Fitness: 0.8455283 in 700
Fitness: 0.8455283 in 800
Fitness: 0.8455283 in 900
Fitness: 0.8455283 in 1000

Calibration complete 
Calibration values:
Fitness: 0.8455283178002736
Maslow_tlX: 1.1
Maslow_tlY: 2363.0
Maslow_trX: 3575.3
Maslow_trY: 2369.0
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3574.6
Maslow_brY: 0.0
These values have been automatically saved for you.
[MSG:INFO: Calibration complete]
...

Fitness: 0.6132582 in 100
Fitness: 0.6132582 in 200
Fitness: 0.6132582 in 300
Fitness: 0.6132582 in 400
Fitness: 0.6132582 in 500
Fitness: 0.6132582 in 600
Fitness: 0.6132582 in 700
Fitness: 0.6132582 in 800
Fitness: 0.6132582 in 900
Fitness: 0.6132582 in 1000

Calibration complete 
Calibration values:
Fitness: 0.6132582132905934
Maslow_tlX: 1.1
Maslow_tlY: 2363.0
Maslow_trX: 3575.8
Maslow_trY: 2369.0
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3574.6
Maslow_brY: 0.0
These values have been automatically saved for you.

...

Fitness: 0.6134705 in 100
Fitness: 0.6134705 in 200
Fitness: 0.6134705 in 300
Fitness: 0.6134705 in 400
Fitness: 0.6134705 in 500
Fitness: 0.6134705 in 600
Fitness: 0.6134705 in 700
Fitness: 0.6134705 in 800
Fitness: 0.6134705 in 900
Fitness: 0.6134705 in 1000

Calibration complete 
Calibration values:
Fitness: 0.6134705118834759
Maslow_tlX: 1.0
Maslow_tlY: 2362.9
Maslow_trX: 3576.3
Maslow_trY: 2368.1
Maslow_blX: 0.0
Maslow_blY: 0.0
Maslow_brX: 3574.7
Maslow_brY: 0.0
These values have been automatically saved for you.
[MSG:INFO: Calibration complete]

I’m not sure what to make of the fact that I got higher fitness values on most of the intermittent calculations the second time, but a lower final fitness.

All in all, it seems like a major improvement.

1 Like

Yup, that is exactly correct!

I’ve been seeing this too. Looking into that is coming up on my todo list

Glad to hear it :grinning:

2 Likes

Here is 0.71.1 which is more robust to single encoder read failures. We’re reading from the encoders thousands of times per second and a single read failure shouldn’t result in the machine stopping. The system will now warn you, but not stop unless the encoder read is failing more than 10% of the time.

Only firmware.bin is needed for this update:

firmware.bin (1.6 MB)

2 Likes

Thank you! this did help me as I saw the message and it didn’t stop. However, we may also need similar logic on the measurement one as I hit that one next… The measurement one is not quite as dangerous as the thing is not moving. this one ruined a couple runs for me with the current movement continuing on despite gcode being stopped and sys.state set to alarm. I’m not sure why it doesn’t stop movement immediately, and this seems like something I’ll keep looking into. Maybe whatever the pause ! is calling needs to be called from our panic/estop too…

1 Like

Here is 0.72.1 which saves the z-axis position through power cycles. The z-axis height will automatically be set to zero at the beginning of the calibration process and then remembered in non-volitle memory which means it won’t be lost during power cycles.

We also now have a “Zero Z” button which resets the machine’s understanding of where the bottom of the z-axis is.

To use it just lower the z-axis all the way down and then press “Zero Z” from then on the machine will keep track of where the z-axis is even if the power is turned off.

This update also makes it so that the z-axis offsets for each arm stored in the calibration file are sent to the browser and used to compute the results in the calibration process so you will want to update your maslow.yaml file also with this one, or at least grab the tlz, trz…etc values which have changed.

index.html.gz (156.1 KB)
maslow.yaml (3.2 KB)
firmware.bin (1.6 MB)

2 Likes

Updated to 0.74 and failed calibration with low calibration (0.44).
Maslow0.74CalibrationLog.txt (8.5 KB)

After refreshing and doing a retract all post calibration here are the values.

[MSG:INFO: Set to comply]
[MSG:INFO: Retracting all belts]
[MSG:INFO: Bottom Right pulled tight with offset -0.032]
[MSG:INFO: Top Right pulled tight with offset 0.000]
[MSG:INFO: Bottom Left pulled tight with offset -0.054]
[MSG:INFO: Top Left pulled tight with offset 0.032]
1 Like

Here is firmware 0.74.1 which is a bit of a research project that I’d love feedback on (I’ve started a new thread for that here).

This is an exploration into quantifying frame flex automatically. If you press the “Apply Tension” it will take two measurements. The first measurement is taken with the tension set to Maslow_Calibration_Current_Threshold and the second measurement is taken with the tension set to Maslow_Calibration_Current_Threshold+500.

We can then compare those two and see how much the frame is flexing as the tension increases.

It seems pretty repeatable to me. My default frame consistently gives a result of 0.1mm of flex while my steel frame is consistently worse at 0.6+mm of flex.

Only firmware.bin is needed for this update:
firmware.bin (1.6 MB)

See Quantifying Frame Flex for more discussion on this idea

3 Likes

Here is 0.74.2 which adds a bit more robustness against the “15mm error while moving” issue. I’m not 100% sure if that issue was caused by a single bad encoder read, or a single bad position target (I think that I’ve seen both) but in either case a single bad data point was causing everything to shut down which isn’t really necessary. This update makes it keep track of the number of issues and only halt if they happen more than 5 times in a row indicating that we are actually significantly off target.

Only the firmware.bin is needed for this update.
firmware.bin (1.6 MB)

This update does not contain the new frame flex calculation experiment in 0.74.1

Thanks Bar. I know you are working on a lot at once, and I appreciate you! Could I ask you to note what branch(s) the code for these interstitial builds are coming from so I can take a look at which code you are adding so I can get better at it?

2 Likes

Absolutely, usually these are released after the changes are merged into Maslow-main but in this case since I’m not sure that the frame flex measurements are ready for main the changes are on GitHub - BarbourSmith/FluidNC at Test-frame-flex

1 Like

context: I’m still on 0.70

In this instance, I’m assuming I should update all files for 0.74, copying across my calibration to the new yaml file, and then I can update to this firmware?

1 Like

Carson Barry wrote:

context: I’m still on 0.70

In this instance, I’m assuming I should update all files for 0.74, copying across my calibration to the new yaml file, and then I can update to this firmware?

correct.

David Lang

2 Likes

Went to do this just now, but the two yaml files don’t have a clear pattern that tells me what I need to bring across to maintain my calibration from the previous.

It appears that the formatted section of the uncalibrated yaml with notes is for setting up calibration specifically and should be replaced with the part of the calibrated yaml that has measurements, but it isn’t clear how much needs brought across, where to stop, etc
.

The important to retain results of the calibration are Maslow_xxn (where xx is tl, tr, bl, br and n is X and Y)

For mine:

Maslow_brX: 2427.800049
Maslow_brY: 0.000000
Maslow_tlX: -52.500000
Maslow_tlY: 2442.600098
Maslow_trX: 2427.100098
Maslow_trY: 2427.399902
Maslow_blX: 0.000000
Maslow_blY: 0.000000
1 Like

@bar, running 0.74.2 I’m running into constant 15mm errors. I run into the problem consistently but resetting the machine, Retract/Extend/Tension then jog the machine around several times. A few times I then clicked the “take tension” button again in Setup because the belts weren’t tight. The machine would move to the middle of the workspace and tighten. I’d then jog a bit more and the machine would start moving very fast and more than the jog command specified (i.e. a 50mm command seemed to move twice as far - not sure of the exact distance). Then eventually it would throw the errors.

I’ve attached the serial log.
Maslow-serial-3.log (5.9 KB)

1 Like