MBL 1660 - deliver pure current

8 years 4 months ago #29531462 by MaxMotor

We are using a roboteq motor controller for our student project, which is a one-wheeled skateboard that is working like a segway. We are using a external controller (MyRio) to control the skateboard calculate the required torque, which the motor is to deliver. So all in all we are using the motor controller in a classic master-slave relationship, where the motor controller in torque mode is supposed to supple the motor with the required current.
The motor controller is set to read the analog port, where the mV is in the range of [100:4900] and 2500 mV is when the motor supplying 0 A, the motor controller is supposed to deliver up to 30 A to our motor. Our problem is, the motor controller's PID, we have set the I and D part to zero and are only using the P part, and are only interested in the P because both the I and D part gives us bad performance when used together with the MyRio. Our question is therefor if anyone knows what we should set our P to, so we get the wanted current with our reference signal.
To set some context, with the P set to 1.3, our skateboard balances and drives perfectly with a 20kg weight at either side, but it can't drive with a person, and we know from a previous setup that the motor is strong enough to drive with a person, when using a ESCON motor controller

Please Log in or Create an account to join the conversation.

8 years 4 months ago #29531463 by niko
Hello Max

In torque mode, the I gain is the most important. So first try P=0, I=1, D=0

Then work with the chart on the run screen to verify that the amps are read correctly and that torque mode does work and does stabilize the amps.

In order to reach the desired amps, I remind you that the motor command x you give tries to reach (x/1000)*AmpsLimit Amperes.

If you have difficulties reaching a stable operation, then I propose you try a technique to control the motor amps (and therefore the torque) using an approach that is based on the technique discussed in this article


The idea is that you will measure the motor rotation speed. From this, you determine the back EMF. Knowing the motor resistance and the battery voltage, you can then determine the PWM level to apply to the motor in order to reach the desired amps. This technique is a little more work but you should find it to give better results and faster response.

Please Log in or Create an account to join the conversation.

8 years 4 months ago #29531464 by MaxMotor
Hallo Niko

We have read several places to set P=0, I=1, D=0, but this does not seem like a good solution for our setup, since when we do this, and are under the run mode, if we increase to 30 (3%) the motor starts to run very fast, and it seems it also winds-up since the motor doesn't stop when we set the value to 0, it only stops when we change the value to -30. We have set the motor options to all the correct values, IA 9 pole pairs and 30 A max. Is this behavior normal for the MBL 1660, seems like it is missing anti-wind-up?

Could you elaborate on your equation, (x/1000)*AmpsLimit Amperes, it would mean a x = 4900 (max value) it tries to reach 147 A, it would make more sence if the equation is ((x-2500)/2500)*AmpsLimit ?

Please Log in or Create an account to join the conversation.

8 years 4 months ago #29531465 by niko
As stated above x is the motor command, with range -1000 - 1000.

If you have set the analog input as motor command, then according to the limits you have set, it is tranaslated to-1000 - 1000 range.

Switch to open loop and set the motor command to 1000 and to -1000 and see how much amperes are measured. This should be the range of amperes that your setup can reach. From what you described looks like the controller is trying to reach amperes that it cannot reach.

Please Log in or Create an account to join the conversation.

Moderators: tonysantoni
Time to create page: 0.067 seconds