Determining OUTPUT_SCALE with PWD to BDC motor
15 Nov 2020 04:08 - 15 Nov 2020 04:30 #189429
by lrak
Determining OUTPUT_SCALE with PWD to BDC motor was created by lrak
Looking at the pid-block-diag - ( wish I had the original - this copy hurts the eyes).. I have a good understanding of PID loops.
Seems important to have the output scaled correctly for the FF parts before starting the tuning process.
linuxcnc.org/docs/devel/html/hal/rtcomps.html#_pid
So a DC motor gets a speed from this equation:
w = V/k - TR/k^2
k and R are constants - but k in the torque term it is squared so less of a factor (torque load slows things down a bit) so I see this as mostly a velocity input device. The slowing of the speed by tool force has to be corrected by the PID loop.
I am thinking of the electric output of pwgen as a voltage - 7i29
I have numbers for the motors, but I don't think useful - which makes me think that a basic test of sending some number to the pwmgen and timing the speed to connect the number with machine-units/sec.
I've looked at a lot of the threads here on tuning - I see 10V bit for analog systems, but nothing about what I'm set to do.
If I set PID all to zero - and FF0 to 1 - it seems like I should be able to command some continuous jog-rate and look at velocity?
Am I on the right track?
Seems important to have the output scaled correctly for the FF parts before starting the tuning process.
linuxcnc.org/docs/devel/html/hal/rtcomps.html#_pid
So a DC motor gets a speed from this equation:
w = V/k - TR/k^2
k and R are constants - but k in the torque term it is squared so less of a factor (torque load slows things down a bit) so I see this as mostly a velocity input device. The slowing of the speed by tool force has to be corrected by the PID loop.
I am thinking of the electric output of pwgen as a voltage - 7i29
I have numbers for the motors, but I don't think useful - which makes me think that a basic test of sending some number to the pwmgen and timing the speed to connect the number with machine-units/sec.
I've looked at a lot of the threads here on tuning - I see 10V bit for analog systems, but nothing about what I'm set to do.
If I set PID all to zero - and FF0 to 1 - it seems like I should be able to command some continuous jog-rate and look at velocity?
Am I on the right track?
Last edit: 15 Nov 2020 04:30 by lrak. Reason: readability
Please Log in or Create an account to join the conversation.
15 Nov 2020 04:39 #189431
by cmorley
Replied by cmorley on topic Determining OUTPUT_SCALE with PWD to BDC motor
I think you are asking what units to set the scale at.
You could scale this to represent:
motor speed (scale of maximum axis speed in machine units per second)
voltage,(scale of maximum voltage)
duty cycle (scale of maximum duty cycle)
or anything else.
I strongly recommend axis speed; then the experts can look at your numbers with a normalized reference.
Chris
You could scale this to represent:
motor speed (scale of maximum axis speed in machine units per second)
voltage,(scale of maximum voltage)
duty cycle (scale of maximum duty cycle)
or anything else.
I strongly recommend axis speed; then the experts can look at your numbers with a normalized reference.
Chris
The following user(s) said Thank You: lrak
Please Log in or Create an account to join the conversation.
15 Nov 2020 22:40 #189484
by lrak
Replied by lrak on topic Determining OUTPUT_SCALE with PWD to BDC motor
@cmorley
I had the units figured out - I'm trying to determine how to measure what OUTPUT_SCALE should be.
pwmgen.N.scale is normally set to OUTPUT_SCALE
Where:
Mu = Machine units
Dc = duty cycle
V = or 'value' ( the commanded input to pwmgen in Mu/s )
S = scale
So I need to find S where
V = Dc * scale
So the question is how to do this test - calibrate lets me play with FF0 - this didn't work. kicks out errors ..
So I looked at pwmgen.00.value and encoder.00.velocity while doing a continuous jog --
I was able to set OUTPUT_SCALE to 50 and get close match between value and velocity, but if I change the jog speed - this relationship moves around - probably the TR/k^2 term There is a minimum amount to make things move.
Could be I need to use the pwmgen.N.offset parameter? It is on the man page, but not in hm2_7i93.0.pwmgen.00 ???
There was a place where PWC said FF1 needs to be quite accurate "FF1 should be set to within 1/10 1%"
Don't understand what he means now?
I had the units figured out - I'm trying to determine how to measure what OUTPUT_SCALE should be.
pwmgen.N.scale is normally set to OUTPUT_SCALE
Where:
Mu = Machine units
Dc = duty cycle
V = or 'value' ( the commanded input to pwmgen in Mu/s )
S = scale
So I need to find S where
V = Dc * scale
So the question is how to do this test - calibrate lets me play with FF0 - this didn't work. kicks out errors ..
So I looked at pwmgen.00.value and encoder.00.velocity while doing a continuous jog --
I was able to set OUTPUT_SCALE to 50 and get close match between value and velocity, but if I change the jog speed - this relationship moves around - probably the TR/k^2 term There is a minimum amount to make things move.
Could be I need to use the pwmgen.N.offset parameter? It is on the man page, but not in hm2_7i93.0.pwmgen.00 ???
There was a place where PWC said FF1 needs to be quite accurate "FF1 should be set to within 1/10 1%"
Don't understand what he means now?
Please Log in or Create an account to join the conversation.
15 Nov 2020 23:10 #189485
by lrak
Replied by lrak on topic Determining OUTPUT_SCALE with PWD to BDC motor
See attached --
Better on the eyes
Better on the eyes
Please Log in or Create an account to join the conversation.
15 Nov 2020 23:47 #189486
by PCW
Replied by PCW on topic Determining OUTPUT_SCALE with PWD to BDC motor
I would do as cmorely suggests and set OUTPUT_SCALE to the
velocity in machine units per second at full voltage (100% PWM)
Then FF1 should be very close to 1
velocity in machine units per second at full voltage (100% PWM)
Then FF1 should be very close to 1
The following user(s) said Thank You: lrak
Please Log in or Create an account to join the conversation.
16 Nov 2020 22:50 #189556
by lrak
Replied by lrak on topic Determining OUTPUT_SCALE with PWD to BDC motor
Fairly close to what I did. .. I just shouldn't have done it at slow speed. Going fast makes the second term of
w = V/k - TR/k^2 insignificant.
If I use that scale number pwmgen.N.value and encoder.N.velocity now match very close if I stay below max (112.5mm/s).
Going full speed was easier said than done. Not for the faint at heart - don't want to be near an end of travel..
Always got following errors, but after adjusting the ini file - I could get up to 112mm/sec and It would error before I could test..
By using encoder.N.velocity at max speed for OUTPUT_SCALE - it makes pwmgen.N.value and encoder.N.velocity now match very closely if I don't go over max.
,.,.
I have what I think is close to your procedure for H-bridge with a couple of questions:
Set Deadband to resolution *0.6
Set OUTPUT_SCALE to encoder.N.velocity when pwmgen is pedal-to-the-metal
Set FF1 = 1
Set P to low value ( What is low? -- 1/2 the oscillation point? )
Might help to describe the closeness to oscillation with this:
en.wikipedia.org/wiki/Damping_ratio#/med...r_Damping_Ratios.svg
Set D below buzzyness - ( a few wiggles in f-error plot ? )
Set FF1 so that the actual position does not lead or lag the commanded position at full speed
Set FF2 so that the actual position does not lead or lag the commanded position during acceleration
Increase P as much as possible without causing overshoot
Increase I below but close to instability. No slow hunting oscillations..
w = V/k - TR/k^2 insignificant.
If I use that scale number pwmgen.N.value and encoder.N.velocity now match very close if I stay below max (112.5mm/s).
Going full speed was easier said than done. Not for the faint at heart - don't want to be near an end of travel..
Always got following errors, but after adjusting the ini file - I could get up to 112mm/sec and It would error before I could test..
By using encoder.N.velocity at max speed for OUTPUT_SCALE - it makes pwmgen.N.value and encoder.N.velocity now match very closely if I don't go over max.
,.,.
I have what I think is close to your procedure for H-bridge with a couple of questions:
Set Deadband to resolution *0.6
Set OUTPUT_SCALE to encoder.N.velocity when pwmgen is pedal-to-the-metal
Set FF1 = 1
Set P to low value ( What is low? -- 1/2 the oscillation point? )
Might help to describe the closeness to oscillation with this:
en.wikipedia.org/wiki/Damping_ratio#/med...r_Damping_Ratios.svg
Set D below buzzyness - ( a few wiggles in f-error plot ? )
Set FF1 so that the actual position does not lead or lag the commanded position at full speed
Set FF2 so that the actual position does not lead or lag the commanded position during acceleration
Increase P as much as possible without causing overshoot
Increase I below but close to instability. No slow hunting oscillations..
Please Log in or Create an account to join the conversation.
Time to create page: 0.068 seconds