Clocks Analog Inputs Analog Outputs Digital Inputs Digital Outputs Encoder Inputs PWM Outputs Other Inputs Other Outputs Interrupts Watchdog Board-Specific Options Properties Targets See Also navigation bar

Quanser Qube-Servo 3

The Quanser Qube-Servo 3 is an integrated DC-servo motor experiment. It is designed to help teach fundamental control concepts and theories on an easy-to-use and intuitive platform. For more information, visit Quanser Qube-Servo3

The QUARC driver name for this card is qube_servo3_usb.

To select the Quanser Qube-Servo 3 HIL board, pass qube_servo3_usb as the card type argument to the hil_open function.

The Quanser Qube-Servo 3 I/O channels are described below.

Clocks

There are currently no configuration options for the Quanser Qube-Servo 3 clocks.

Analog Inputs

The Quanser Qube-Servo 3 supports one analog input, which is channel zero. The analog input measures the current to the motor in Amperes. Its maximum range is ±3A.

Analog Outputs

The Quanser Qube-Servo 3 supports one analog output, which is channel zero. The analog output drives the motor voltage. Its maximum range is ±15V. The pwm_en board specific option must not be set in order to use analog output on this card.

Digital Inputs

The Quanser Qube-Servo 3 supports three digital inputs, which are used for diagnostics. The digital inputs are enumerated in the table below.

Channel

Description

0

Amplifier fault. If the amplifer is enabled and this fault occurs, the amplifier may be experiencing excessive temperatures and shut down to protect itself.

1

Motor stall detected. Occurs when the motor is stalled or excessively slowed and the applied voltage (including deadband compensation) is greater than 5V.

2

Motor stall error. When a stall warning has been asserted continuously for approximately 3s.

Digital Outputs

The Quanser Qube-Servo 3 supports one digital output, which is channel zero. The digital output acts as an enable for the motor drive circuitry. When this output is low, the motor amplifier is disabled. When it is high, the motor amplifier is enabled.

The Quanser Qube-Servo 3 has internal stall detection and once a stall error is asserted, the amplifier is automatically disables itself. The card can be re-enabled by setting the output low then high again.

Warning

Note: Constantly resetting the amplifier whenever a stall-error occurs can result in excessive heat being generated by the motor potentially causing damage.

Encoder Inputs

The Quanser Qube-Servo 3 supports two encoder inputs. Both channels provide 24-bit count values. These two channels only support 4X quadrature mode. The encoder channels are enumerated in the table below:

Channel

Description

0

Motor position

1

Encoder 1 position (typically used for the inverted pendulum)

In order to set the encoder counters to a particular count value use the hil_set_encoder_counts function.

The first two encoder inputs are sampled simultaneously when measured using a single HIL Read block.

PWM Outputs

The Quanser Qube-Servo 3 driver supports one PWM output channel, which is channel 0. Its maximum range is ±1 mapping to ±24V. Note, however, that the Quanser Qube-Servo 3 internally limits the output voltage to 15V or a corresponding PWM value of 0.625. The pwm_en board specific option must be set in order to use PWM output on this card.

The PWM mode, frequency or configurations are fixed and cannot be modified.

Warning

Note that deadband compensation is not used in the PWM mode.

Other Inputs

The Quanser Qube-Servo 3 supports two other input channels, which are 32-bit digital tachometer readings based on a 72MHz counter. The other input channels are enumberated in the table below:

Channel

Description

14000

Motor velocity

14001

Encoder 1 velocity (typically used for the inverted pendulum)

The units are counts/s.

Other Outputs

The Quanser Qube-Servo 3 supports three other output channels, allowing the color of the LED panel to be controlled. Note that each channel supports fractional values between 0 and 1, allowing full RGB color. Refer to the table below for a list of the channels:

Channel

Description

Range

11000

Red component for LED color

0 to 1

11001

Green component for LED color

0 to 1

11002

Blue component for LED color

0 to 1

Interrupts

The Quanser Qube-Servo 3 card, or its driver, does not support any interrupt sources.

Watchdog

The Quanser Qube-Servo 3 supports a watchdog timer for resetting the outputs on watchdog expiry. Namely, the analog, digital and other output channels will be reset to the user-defined values on watchdog expiry. Resetting of the outputs occurs without software intervention, and therefore may be used as a safety mechanism in the event of software failure.

To enable the watchdog, use the hil_watchdog_start function. Be sure to reload the watchdog periodically using the hil_watchdog_reload function to prevent the watchdog from expiring.

To configure the values to which the output channels are reset on watchdog expiry, use the hil_watchdog_set_analog_expiration_state, hil_watchdog_set_digital_expiration_state and hil_watchdog_set_other_expiration_state functions to set the analog, digital and other output values on watchdog expiration respectively.

Once the watchdog has expired, further I/O on the outputs is disabled until the watchdog state is cleared.

Use the hil_watchdog_clear function to clear the watchdog state. Note that stopping the watchdog does not clear the watchdog state. The watchdog state must be cleared explicitly.

Board-Specific Options

The Quanser Qube-Servo 3 has a number of board-specific options to control specialized functionality of the card and compensate for nonlinear factors to create a near-ideal motor response.

deadband_compensation

This option offsets the motor command by the specified voltage multiplied by the sign of the applied voltage to compensate for amplifier deadband. At zero volts, no offset is applied. The default value is deadband_compensation=0.3. This option is only available for analog outputs and will be ignored if the pwm_en option is used. This parameter can be tuned on a per-device basis by stalling the motor, sweeping the voltage from -10V to +10V and observing the offset of the current measurement from a linear line of the same slope that is a function of the motor resistance. Note that the sweep should be faster than 3s to avoid a stall error.

min_diode_compensation

Internal protection diodes create a small, non-linear effect near zero. This effect can be removed with the diode compensation factors. After determining the deadband compensation at the the +/-10V range, stall the motor and sweep the voltage from -10V to +10V while observing the current measurement. Any remaining "deadband" near the zero crossing is removed by the min_diode_compensation value. The effect diminishes linearly to the value of max_diode_compensation value. The default value is min_diode_compensation=0.3. The value must be great or equal to zero and less than max_diode_compensation value to be active. This option is only available for analog outputs and will be ignored if the pwm_en option is used.

max_diode_compensation

Internal protection diodes create a small, non-linear effect near zero. This effect can be removed with the diode compensation factors. After determining the deadband compensation at the the +/-10V range, stall the motor and sweep the voltage from -10V to +10V while observing the current measurement. Any remaining "deadband" near the zero crossing is removed by the min_diode_compensation value. The effect diminishes linearly to the value of max_diode_compensation value. The default value is max_diode_compensation=1.5. The value must be great or equal to zero and greater than min_diode_compensation value to be active. This option is only available for analog outputs and will be ignored if the pwm_en option is used.

pwm_en

Set this option to "yes", "y", or "1" to enable control of the motor using PWM command.

Warning

When this option is set, the analog output cannot be used. All references to setting initial and final outputs must be removed. In Simulink, in the HIL Initialize block on the Analog Outputs tab, change the Analog Output Channels from [0] to []. On the PWM Outputs tab change the PWM Output Channels from [] to [0]. Also note that deadband compensation is disabled and any user-specified value in the board-specific options will be ignored.

enc0_velocity

Set this option to the minimum velocity in counts per second that should be detected by the motor digital tachometer. This limit is an artificial limit that is useful when friction stops the device long before it reaches the slowest detectable velocity of the Quanser Qube-Servo 3 hardware. If this option is set to zero then the slowest velocity measurable by the hardware is used. The default value is enc0_velocity=3.0 which disables the clamping function.

enc1_velocity

Set this option to the minimum velocity in counts per second that should be detected by the pendulum digital tachometer. This limit is an artificial limit that is useful when friction stops the device long before it reaches the slowest detectable velocity of the Quanser Qube-Servo 3 hardware. If this option is set to zero then the slowest velocity measurable by the hardware is used. The default value is enc1_velocity=3.0 which disables the clamping function.

Properties

The Quanser Qube-Servo 3 driver currently supports the following read-only properties:

Property

Type

Description

PROPERTY_INTEGER_VENDOR_ID

Integer

Vendor identifier associated with the hardware

PROPERTY_INTEGER_PRODUCT_ID

Integer

Product identifier associated with the hardware

PROPERTY_INTEGER_FIRMWARE_MAJOR_VERSION

Integer

Major version number of the firmware (hardware)

PROPERTY_INTEGER_FIRMWARE_MINOR_VERSION

Integer

Minor version number of the firmware (Qube interface)

PROPERTY_INTEGER_FIRMWARE_BUILD

Integer

Build number of the firmware (currently always zero)

PROPERTY_INTEGER_HARDWARE_VERSION

Integer

Revision number of the firmware (currently always zero)

PROPERTY_STRING_MANUFACTURER

String

Manufacturer of the device

PROPERTY_STRING_PRODUCT_NAME

String

Product name of the device

PROPERTY_STRING_MODEL_NAME

String

Model name of the device

PROPERTY_STRING_SERIAL_NUMBER

String

Serial number of the device

PROPERTY_STRING_FIRMWARE_VERSION

String

Firmware version of the PC interface

Targets

Target

Supported

Comments

QUARC Win32 Target

Yes

Fully supported.

QUARC Win64 Target

Yes

Fully supported.

QUARC Linux Nvidia Target

No

Not supported.

QUARC Linux QBot Platform Target

No

Not supported.

QUARC Linux QCar 2 Target

No

Not supported.

QUARC Linux QDrone 2 Target

No

Not supported.

QUARC Linux Raspberry Pi 3 Target

No

Not supported.

QUARC Linux Raspberry Pi 4 Target

No

Not supported.

QUARC Linux Raspberry Pi ARM64 Target

No

Not supported.

QUARC Linux RT ARMv7 Target

No

Not supported.

QUARC Linux x64 Target

No

Not supported.

QUARC Linux DuoVero Target

No

Not supported.

QUARC Linux DuoVero 2016 Target

No

Not supported.

QUARC Linux Verdex Target

No

Not supported.

QUARC QNX x86 Target

No

Not supported.

Rapid Simulation (RSIM) Target

Yes

Supported with no communication to the hardware.

Normal simulation

Yes

Supported with no communication to the hardware.

See Also

 

navigation bar