Motion Control and Motor Drives

cancel
Showing results for 
Search instead for 
Did you mean: 

Closed loop velocity control based on load cell force

Hello,

 

My application is for a drill, that drills into rocks of various densities for the purpose of collecting rock core samples.

 

My setup has 2 motors which get controlled, one spins the drill bit at a constant velocity, the other moves the drill mechanism along a Z axis.

 

For efficient cutting, it is desired to apply a constant force between the drill bit and the rock.  I have a load cell which measures the force being exerted by the drill bit on the rock surface, and this force can be adjusted by changing the velocity of the Z axis.  So I would like to employ closed loop control to adjust the Z axis velocity to maintain a constant force on the rock.

 

Platform: cRIO 9073, with NI 9505 & 9215 Modules, Labview 2010 Full with RT and FPGA modules.

 

The load cell is by Transducer Techniques, and I use their TMO-1 module to condition the signal, the output of which is attached to an input of the 9215 module, where 0-100 lbs equates to 0-8VDC.

The motors and encoders for the Drill and Z axis are connected directly to the 9505 modules.

 

Right now I am using a modified version the example found in ...\examples\CompactRIO\Module Specific\NI 9505\Velocity Control (closed loop)\Velocity Control (closed loop) - NI 9505.lvproj to accomplish velocity control of the motors.

 

My questions are:

1) Do I have the appropriate NI hardware/software for this task?

2) With my current hardware setup, what would be an appropriate way to control my Z axis velocity rate based on Analog feedback from the load cell?

3) Development time is a critical factor, so are there any toolkits etc that are easy to get started with that would drastically decrease my development time, or do I already have everything I need?

 

Thank you for your time

-MK Hokie

0 Kudos
Message 1 of 4
(6,110 Views)

yes, the equipment you have chosen and the example will be a good starting point.

A couple of points.

are the motors that you are using powerful enough to drive the drill and z-axis?

 

the 9215 by default is configured as "calibrated" meaning it will return a fixed point value representing volts.  the PID routine works in integer I16.  either set the module as "raw" or multiply the fxp value time a scale factor to get  I16 with an appropriate range.  add a force feedback loop on z -axis to use force feedback instead of velocity feedback.  leave the existing velocity feedback in place to use for traversing. (only one or the other would be enabled)

 

one of the issues you will have is the transition between not drilling (travel) and engaged (drilling).

I would suggest a rapid traverse till you get close and then a slow traverse that will stop when a low force is encountered.  you have now kissed the drill surface.  If you only use a slow traverse, it will take forever to engage the drill .

The enable the force loop with very small force setpoint and ramp the setpoint up to desired force by using a rate limiter on force setpoint.

it is possible to develop a combined routine that will just switch from velocity to force feedback, but you may want to get the simple stuff working first.

 

If you run into the drill surface with any significant velocity, bad things will probably happen.

 

You should also put some travel limits on the z-axis to limit the extent of travel so it does not run out of z-axis travel.

you should also look at the status bits of the drive axis to detect drive fault stop drill, reset, put in velocity control and back out.

 

Stu
0 Kudos
Message 2 of 4
(6,104 Views)

instead of dual velocity and force loops, you can also try a very small force command with the integrator held in reset until engaged and then enable integrator and ramp to desired force setpoint.  downside is the travel velocity is not controlled and may vary over time and operating conditions.  sounds like a fun project.

Stu
0 Kudos
Message 3 of 4
(6,102 Views)

1. Your hardware and software look appropriate assuming the motors are compatible with the 9505s.  You didn't mention the NI SoftMotion module in your software list which is something you will need.

 

2.  There are a few ways of doing this.  One method would be to have a force PID loop that would attempt to maintain a force setpoint by directly outputting values to your torque loop.  In this case, the drill would essentially move as fast as it could while maintaining the force setpoint.  Another option is to have the force loop output a velocity setpoint.  You would then have a velocity PID loop that outputs torque values to the torque loop.  By adding this additional velocity loop you could have control over your maximum and minimum velocities.  There are likely other alternatives as well, but these are the first two that come to mind.

 

3.  Unfortunately there are no shipping examples that close the loop on force feedback.  My advice would be to start with the NI 9505 shipping example and adapt it to your needs.  There are quite a few things you will want to change though.  Do you know if you will need to use the trajectory generator to move the drill into position before starting the force control?

 

Assuming you don't need any trajectory generation, you can scrap the entire RT portion of the NI 9505 example and just create the necessary FPGA code.  On the FPGA, you won't need the Spline or Synchronization code either because this information would no longer be coming from RT.   You could take these out and replace the position loop with a force loop and possibly a velocity loop and your FPGA program would basically be finished.  In fact the only real motion IP that you will need is for the encoders (assuming you want velocity control) and PID.  Then you would need to create an RT VI that allows you to send down enable, disable, PID gains, and setpoints. 

If you do need trajectory generation, you would want to keep most of the example code the way that it is, but then program in a 'Force Mode' that utilizes the force and velocity controly as described above.  You could think of it as having two different routines programmed side by side. 

0 Kudos
Message 4 of 4
(6,097 Views)