Log in

View Full Version : LM_API_CFG_NUM_BRUSHES


biojae
18-03-2010, 00:26
On this page of the firstforge site (May require login) :

http://firstforge.wpi.edu/integration/viewcvs/viewcvs.cgi/CANJaguar%20for%20Java/src/edu/wpi/first/addons/JaguarCANProtocol.java?root=canjaguar&rev=9&system=exsy1002&view=markup

There is a line :


public static final int LM_API_CFG_NUM_BRUSHES = (LM_API_CFG | (0 << CAN_MSGID_API_S));


If we tell the jaguar how many brushes our motor has, could we use the motor's brushes as a simple tachometer so that we could do closed loop (somewhat) speed control without adding additional sensors (encoders, potentiometers, etc.)?

edit:
And if this could be used, how many brushes do the CIMs have?

If this could be used, would this work for a speed reference (or even position)?


public static class SpeedReference {

public final byte value;
static final byte kEncoder_val = 0;
static final byte kBrush_val = 1;
public static final SpeedReference kEncoder = new SpeedReference(kEncoder_val);
public static final SpeedReference kBrushes = new SpeedReference(kBrush_val);

private SpeedReference(byte value) {
this.value = value;
}
}

biojae
27-03-2010, 00:07
So, the banebots RS-555 has 5 brushes. If I had a jaguar on the CAN bus, could the brush count be used for either the Position or speed control mode?

would something like this work?



public static class PositionReference {

public final byte value;
static final byte kEncoder_val = 0;
static final byte kPotentiometer_val = 1;
static final byte kBrushes_val = 2;
public static final PositionReference kEncoder = new PositionReference(kEncoder_val);
public static final PositionReference kPotentiometer = new PositionReference(kPotentiometer_val);
public static final PositionReference kBrushes = new PositionReference(kBrushes_val);

private PositionReference(byte value) {
this.value = value;
}
}

public void configMotorBrushes(short brushes) {
byte[] dataBuffer = new byte[8];
byte dataSize;

dataSize = packINT16(dataBuffer, brushes);
setTransaction(LM_API_CFG_NUM_BRUSHES, dataBuffer, dataSize);
}

CANJaguar brushedDCMotor = new CANJaguar(2, ControlMode.kPosition);
brushedDCMotor.setPositionReference(PositionRefere nce.kBrushes);
brushedDCMotor.configMotorBrushes(5);
brushedDCMotor.enableControl(0.0);