I experimented with a sinusoidal inputs to see how the system responds. I started with a sinusoidal PWM, going full range in a 2 second cycle. I discovered that the cart slowly traveled to the left while cycling. At the time, I assumed it was due to the cable carrier.
My next test was using PID onboard the FPGA to control the current. I used a sinusoidal current setpoint. The cart cycled very nicely, but I discovered it traveled to the right while cycling and did it fairly quickly. After about 10 cycles, it traveled the entire length of the rack.
To investigate further, I propped up the cart so it wouldn’t move while cycling. I discovered that the travel had nothing to do with the cable carrier and the motor behaved almost exactly the same when it wasn’t moving the cart. I figured out that the direction of travel is a significant variable that I will need to deal with. It may end up being a simple proportional thing, where I use a multiplication factor to make both directions equal.
My plan is to collect a good amount of data while cycling the motor at different rates, then building a table that relates acceleration to speed and current. I haven’t figured out exactly how I am going to do it yet, but I am working on it. Once I have the table, I am hoping it will enlighten me on how to model the motor and cart. If all else fails, the table could be used as the model.