Have the setup kit work out the centre a geared-up rig needs
This commit is contained in:
parent
57a166c9a4
commit
7ef2abcd4a
|
|
@ -271,6 +271,23 @@ again; too weak and the motor stalls on ordinary friction mid-sweep, trips the
|
||||||
same latch, and records a phantom endstop. The firmware's `steps_per_rev` guard
|
same latch, and records a phantom endstop. The firmware's `steps_per_rev` guard
|
||||||
is what catches the second case, so it has to be set from the real travel.
|
is what catches the second case, so it has to be set from the real travel.
|
||||||
|
|
||||||
|
> **The centre lives in `config.ini`, not here.** `install.sh` cannot write it —
|
||||||
|
> `hardware.ini` is merged *over* `config.ini` and wins, so a shared key would
|
||||||
|
> silently discard whatever `gimbal heading setup` had saved. What it does instead
|
||||||
|
> is work the requirement out from `steps_per_rev` and print it as a `NOTE` in the
|
||||||
|
> block, because the default is wrong for any geared-up rig:
|
||||||
|
>
|
||||||
|
> ```
|
||||||
|
> ; NOTE: half this travel is 605389 counts, so config.ini needs
|
||||||
|
> ; [Motor] yaw_center_count = 1000000 (or anything above 605389)
|
||||||
|
> ; The 500000 default would put the negative end at -105389.
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> The range is centre ± half the travel, so a centre below half-travel puts the
|
||||||
|
> negative end under zero. On tower 121 the inherited `500000` homed to
|
||||||
|
> `-104749..1104749`; at `1000000` it homes to `395194..1604807`. A warning names
|
||||||
|
> it after every home if it is still too small.
|
||||||
|
|
||||||
**`travel_deg` is a nameplate fact**, and the host divides the measured homing
|
**`travel_deg` is a nameplate fact**, and the host divides the measured homing
|
||||||
travel by it to derive `[Motor] <axis>_counts_per_deg` into `config.ini`. A rough
|
travel by it to derive `[Motor] <axis>_counts_per_deg` into `config.ini`. A rough
|
||||||
angle gives a proportionally rough degree scale - 1 % out here is 1 % out on every
|
angle gives a proportionally rough degree scale - 1 % out here is 1 % out on every
|
||||||
|
|
|
||||||
|
|
@ -299,6 +299,24 @@ do_vimba() {
|
||||||
# and a non-numeric value makes the program refuse to start with a message about
|
# and a non-numeric value makes the program refuse to start with a message about
|
||||||
# a config key. Absent, it starts and reports the axis as undeclared - naming the
|
# a config key. Absent, it starts and reports the axis as undeclared - naming the
|
||||||
# missing keys and which axis will not move, which is the useful failure.
|
# missing keys and which axis will not move, which is the useful failure.
|
||||||
|
# The centre lives in config.ini, not here - it is calibration, and hardware.ini
|
||||||
|
# is merged OVER config.ini, so a shared key would silently discard whatever
|
||||||
|
# `gimbal heading setup` had saved. All this file can do is say what the value
|
||||||
|
# has to be, which it can work out from the travel.
|
||||||
|
#
|
||||||
|
# The range is centre +/- half the travel, so a centre below half-travel puts the
|
||||||
|
# negative end under zero. The long-standing 500000 default suits the Delta's
|
||||||
|
# ~89k half-travel and does not survive a gear ratio several times higher.
|
||||||
|
center_note() {
|
||||||
|
local steps="$1" ax="$2"
|
||||||
|
[[ -z $steps ]] && return 0
|
||||||
|
local half=$(( steps / 2 ))
|
||||||
|
local want=$(( (half / 1000000 + 1) * 1000000 ))
|
||||||
|
echo "; NOTE: half this travel is $half counts, so config.ini needs"
|
||||||
|
echo "; [Motor] ${ax}_center_count = $want (or anything above $half)"
|
||||||
|
echo "; The 500000 default would put the negative end at $(( 500000 - half ))."
|
||||||
|
}
|
||||||
|
|
||||||
kv_or_todo() {
|
kv_or_todo() {
|
||||||
local key="$1" value="$2" why="$3"
|
local key="$1" value="$2" why="$3"
|
||||||
if [[ -n $value ]]; then
|
if [[ -n $value ]]; then
|
||||||
|
|
@ -400,6 +418,7 @@ EOF
|
||||||
"mechanical angle between the hard stops. Rough is fine to start; every bearing inherits its error proportionally until 'gimbal heading setup' supersedes it"
|
"mechanical angle between the hard stops. Rough is fine to start; every bearing inherits its error proportionally until 'gimbal heading setup' supersedes it"
|
||||||
kv_or_todo "steps_per_rev" "$STEPS_PER_REV" \
|
kv_or_todo "steps_per_rev" "$STEPS_PER_REV" \
|
||||||
"measured full travel IN COUNTS - read it off a homing run. The only guard against a PHANTOM endstop"
|
"measured full travel IN COUNTS - read it off a homing run. The only guard against a PHANTOM endstop"
|
||||||
|
center_note "$STEPS_PER_REV" "$ax"
|
||||||
kv_or_todo "sw_mode" "$SW_MODE" \
|
kv_or_todo "sw_mode" "$SW_MODE" \
|
||||||
"TMC SW_MODE. 0 = no physical switches (StallGuard homing); set the bits if this axis has REFL/REFR wired"
|
"TMC SW_MODE. 0 = no physical switches (StallGuard homing); set the bits if this axis has REFL/REFR wired"
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue