halui.spindle−override.counts - change every 10%

More
7 years 2 days ago #149005 by Cynas
Hello, I need to change the value exactly every 10%.
I have a 13 position switch with variable resistance connected to analogin0. The resistance value does not change linearly.

spindle-scale ->> conv-float-s32
Code:
switch position 1 -> spindle-scale = 0 switch position 2 -> spindle-scale = 1 switch position 3 -> spindle-scale = 3 switch position 4 -> spindle-scale = 4 switch position 5 -> spindle-scale = 6 switch position 6 -> spindle-scale = 7 switch position 7 -> spindle-scale = 9 switch position 8 -> spindle-scale = 11 switch position 9 -> spindle-scale = 12 switch position 10 -> spindle-scale = 14 switch position 11 -> spindle-scale = 17 switch position 12 -> spindle-scale = 20 switch position 13 -> spindle-scale = 23

Resolution can be increased using scale.gain.

How should I write it down?
Code:
spindle-scale = 0-----> counts 0 spindle-scale = 1-----> counts 2 spindle-scale = 2-----> counts 4 .................. spindle-scale = 9-----> counts 16 ..................

What HAL component should I use?

Currently, everything works only the value does not change lines.

Please Log in to join the conversation.

More
7 years 2 days ago #149009 by cmorley
Are you using halui.spindle-override.direct-value ?
In the problem converting arbitrary input steps to exact discreet steps ?
Can you share the HAL code you have ?

Chris

Please Log in to join the conversation.

More
7 years 2 days ago #149012 by Cynas
Code:
loadrt conv_float_s32 count=1 loadrt scale names=spindle-scale addf spindle-scale servo-thread addf conv-float-s32.1 servo-thread setp halui.spindle-override.direct-value false setp halui.spindle-override.count-enable true setp spindle-scale.gain 12 setp spindle-scale.offset 0 setp halui.spindle-override.scale 0.004347826086956521 net spindle-analogue hm2_7i76e.0.7i76.0.0.analogin0 => spindle-scale.in net spindle-convert spindle-scale.out conv-float-s32.1.in net spindle-override conv-float-s32.1.out halui.spindle-override.counts

I would like to assign specific values to a specific switch position.
Code:
switch position 1 -> override = 30% switch position 2 -> override = 40% switch position 3 -> override = 50% switch position 4 -> override = 60% .............................. switch position 12 -> override = 140% switch position 13 -> override = 150%

Please Log in to join the conversation.

More
7 years 2 days ago #149013 by cmorley
set direct-value to true
then adjust halui.spindle-override.scale to suit

Chris

Please Log in to join the conversation.

More
7 years 2 days ago #149014 by Cynas
Thank you!
I'll check it tomorrow.

I would like to assign specific values to a specific switch position.
Code:
switch position 1 -> override = 30% switch position 2 -> override = 40% switch position 3 -> override = 50% switch position 4 -> override = 60% .............................. switch position 12 -> override = 140% switch position 13 -> override = 150%

I'm afraid the values will not increase linearly.

Please Log in to join the conversation.

More
7 years 2 days ago #149015 by cmorley
look at the lincurve component. I haven't used it but I think it will do what you want.
(linearlize the float input)

a buch of window comparators going to a mux would work too

Andy P will probably chime in - he is very good at this sort of thing.


Chris

Please Log in to join the conversation.

More
7 years 2 days ago #149016 by Cynas
I would need to check the results to compare it with the given range and then if true send a specific value to halui.spindle-override.counts
Code:
example spindle-scale = x x<2 --> y =30% 2<x<5 ->> y= 40% ................ ...............

is there any hall component?

Please Log in to join the conversation.

More
7 years 2 days ago #149018 by cmorley

Please Log in to join the conversation.

More
7 years 1 day ago #149062 by Cynas
I did it and it works correctly.

Maybe someone will be useful as an example.
Control spindle 30-150%
Code:
loadrt lincurve personality=13 addf lincurve.0 servo-thread setp halui.spindle-override.direct-value true setp halui.spindle-override.count-enable true setp spindle-scale.gain 1 setp spindle-scale.offset 0 setp halui.spindle-override.scale 0.1 net spindle-analogue hm2_7i76e.0.7i76.0.0.analogin0 => spindle-scale.in net spindle-convert spindle-scale.out conv-float-s32.1.in net spindle-override1 conv-float-s32.1.out conv-s32-float.0.in net spindle-raw conv-s32-float.0.out => lincurve.0.in setp lincurve.0.x-val-00 0 setp lincurve.0.y-val-00 3 setp lincurve.0.x-val-01 1 setp lincurve.0.y-val-01 4 setp lincurve.0.x-val-02 3 setp lincurve.0.y-val-02 5 setp lincurve.0.x-val-03 4 setp lincurve.0.y-val-03 6 setp lincurve.0.x-val-04 6 setp lincurve.0.y-val-04 7 setp lincurve.0.x-val-05 7 setp lincurve.0.y-val-05 8 setp lincurve.0.x-val-06 9 setp lincurve.0.y-val-06 9 setp lincurve.0.x-val-07 11 setp lincurve.0.y-val-07 10 setp lincurve.0.x-val-08 12 setp lincurve.0.y-val-08 11 setp lincurve.0.x-val-09 14 setp lincurve.0.y-val-09 12 setp lincurve.0.x-val-10 17 setp lincurve.0.y-val-10 13 setp lincurve.0.x-val-11 20 setp lincurve.0.y-val-11 14 setp lincurve.0.x-val-12 23 setp lincurve.0.y-val-12 15 net spindle-corrected-lincurve lincurve.0.out => conv-float-s32.4.in net spindle-override2 conv-float-s32.4.out halui.spindle-override.counts

Thank you for your help

Please Log in to join the conversation.

Time to create page: 0.199 seconds
Powered by Kunena Forum