Lab 1 QUBE-Servo Integration Workbook (Student)
Lab 1 QUBE-Servo Integration Workbook (Student)
Lab 1 QUBE-Servo Integration Workbook (Student)
Topics Covered
• Sensor calibration.
Prerequisites
• The QUBE-Servo has been setup and tested. See the QUBE-Servo Quick Start Guide for details.
1.1 Background
The QUARCr software is used with Simulinkr to interact with the hardware of the QUBE-Servo system. QUARC
is used to drive the dc motor and read angular position of the disk.
The basic steps to create a Simulinkr model with QUARCr in order to interact with the QUBE-Servo hardware
are:
1. Make a Simulink model that interacts with your installed data acquisition device using blocks from the QUARC
Targets library.
2. Build the real-time code.
1.1.2 DC Motor
Direct-current motors are used in a variety of applications. As discussed in the QUBE-Servo User Manual, the
QUBE-Servo has a brushed dc motor that is connected to a PWM amplifier. See the QUBE-Servo User Manual for
details.
1.1.3 Encoders
Similar to rotary potentiometers, encoders can also be used to measure angular position. There are many types
of encoders but one of the most common is the rotary incremental optical encoder, shown in Figure 1.1. Unlike
The encoder has a coded disk that is marked with a radial pattern. As the disk rotates (with the shaft), the light
from an LED shines through the pattern and is picked up by a photo sensor. This effectively generates the A and B
signals shown in Figure 1.2. An index pulse is triggered once for every full rotation of the disk, which can be used
for calibration or homing a system.
The A and B signals that are generated as the shaft rotates are used in a decoder algorithm to generate a count.
The resolution of the encoder depends on the coding of the disk and the decoder. For example, a single encoder
with 512 lines on the disk can generate a total of 512 counts for every rotation of the encoder shaft. However, in
a quadrature decoder as depicted in Figure 1.2, the number of counts (and thus its resolution) quadruples for the
same line patterns and generates 2048 counts per revolution. This can be explained by the offset between the A
and B patterns: Instead of a single strip being either on or off, now there is two strips that can go through a variety of
on/off states before the cycle repeats. This offset also allows the encoder to detect the directionality of the rotation,
as the sequence of on/off states differs for a clockwise and counter-clockwise rotation.
In this lab, we will make a Simulinkr model using QUARCr blocks to drive to the DC motor and the measure it
corresponding angle - similarly as shown in Figure 1.3.
Figure 1.3: Simulink model used with QUARC to drive motor and read angle on QUBE-Servo
Follow these steps build a Simulinkr model that will interface to the QUBE-Servo using QUARCr :
1. Make sure the QUBE-Servo is connected to your PC USB port and powered ON (the Power LED should be
lit).
External DAQ Users: If you are using the QUBE-Servo with an external data acquisition device, then make
sure the QUBE-Servo has been properly connected to your DAQ as dictated in the QUBE-Servo User Manual.
2. Load the Matlabr software.
3. Create a new Simulinkr diagram by going to File | New | Model item in the menu bar.
4. Open the Simulink Library Browser window by clicking on the View | Library Browser item in the Simulink menu
bar or clicking on the Simulink icon.
5. Expand the QUARC Targets item and go to the Data Acquisition | Generic | Configuration folder, as shown in
Figure 1.4.
6. Click-and-drag the HIL Initialize block from the library window into the blank Simulink model. This block is used
to configure your data acquisition device.
7. Double-click on the HIL Initialize block.
8. In the Board type field, select qube_servo_usb.
External DAQ Users: If you are using an external data acquisition device, then select the board that is installed
in your PC. For example, if you are using a Quanser Q8-USB board to connect to the QUBE-Servo then select
q8_usb.
9. Go to the QUARC | Set default options item to set the correct Real-Time Workshop parameters and setup the
Simulink model for external use (as opposed to the simulation mode).
10. Select the QUARC | Build item. Various lines in the Matlabr Command Window should be displayed as the
model is being compiled. This creates a QUARC executable (.exe) file which we will commonly refer to as a
QUARC controller.
11. Run the QUARC controller. To do this, go to the Simulink model tool bar, shown in Figure 1.5, and click on the
Connect to target icon and then on the Run icon. You can also go QUARC | Start to run the code. The Power
LED on the QUBE-Servo (or your DAQ card) should be blinking.
12. If you successfully ran the QUARC controller without any errors, then you can stop the code by clicking on the
Stop button in the tool bar (or go to QUARC | Stop).
1. Using the Simulink model you configured for the QUBE-Servo in the previous section, add the HIL Read
Encoder Timebase block from the QUARC Targets | Data Acquisition | Generic | Timebases category in the
Library Browser.
2. Connect the HIL Read Encoder to a Gain and Display block similar to shown in Figure 1.3 (without the HIL
Write Analog block). In the Library Browser, you can find the Display block from the Simulink | Sinks and the
Gain block from Simulink | Math Operations.
3. Build the QUARC controller. The code needs to be re-generated again because we have modified the Simulink
diagram.
5. Rotate the disk back and forth. The Display block shows the number of counts measured by the encoder. The
encoder counts are proportional to the angle of disk.
6. What happens to the encoder reading every time the QUARC controller is started? Stop QUARC, move
around the disk, and re-start QUARC. What do you notice about the encoder measurement when QUARC is
re-started?
7. Measure how many counts the encoder outputs for a full rotation. Briefly explain your procedure to determine
this and validate that this matches the specifications given in the QUBE-Servo User Manual.
8. Ultimately we want to display the disk angle in degrees, not counts. Set the Gain block to a value that converts
counts to degrees. This is called the sensor gain. Run the QUARC controller and confirm that the Display
block shows the angle of the disk correctly.
1. Add the HIL Write Analog block from the Data Acquisition | Generic | Immediate I/O category into your Simulink
diagram. This block is used to output a signal from analog output channel #0 on the data acquisition device.
This is connected to the on-board PWM amplifier which drives the DC motor.
2. Add the Constant block found in the Simulink | Source folder to your Simulink model. Connect the Constant
and HIL Write Analog blocks together, as shown in Figure 1.3.
Note:
We recommend including a Stall Monitor block in the main model or a subsystem as shown in Figure 1.3 and
Figure 1.6. This block will monitor the applied voltage and speed of the DC motor to ensure that if the motor is
motionless for more than 20 s with an applied voltage of over 5V, the simulation is halted to prevent damage
to the motor.
3. Build and run the QUARC controller.
4. Set the Constant block to 0.5. This applies 0.5 V to the DC motor in the QUBE. Confirm that we are obtaining
a positive measurement when a positive signal is applied. This convention is important, especially in control
systems when the design assumes the measurement goes up positively when a positive input is applied.
Finally, in what direction does the disk rotate (i.e., clockwise or counter-clockwise) when a positive input is
applied?
5. Stop QUARC.
Quanser Inc.
119 Spy Court
Markham, Ontario
L3R 5H6
Canada
[email protected]
Phone: 1-905-940-3575
Fax: 1-905-940-3576
For more information on the solutions Quanser Inc. offers, please visit the web site at:
http://www.quanser.com
This document and the software described in it are provided subject to a license agreement. Neither the software nor this document may be
used or copied except as specified under the terms of that license agreement. Quanser Inc. grants the following rights: a) The right to reproduce
the work, to incorporate the work into one or more collections, and to reproduce the work as incorporated in the collections, b) to create and
reproduce adaptations provided reasonable steps are taken to clearly identify the changes that were made to the original work, c) to distribute
and publically perform the work including as incorporated in collections, and d) to distribute and publicly perform adaptations. The above rights
may be exercised in all media and formats whether now known or hereafter devised. These rights are granted subject to and limited by the
following restrictions: a) You may not exercise any of the rights granted to You in above in any manner that is primarily intended for or directed
toward commercial advantage or private monetary compensation, and b) You must keep intact all copyright notices for the Work and provide the
name Quanser Inc. for attribution. These restrictions may not be waved without express prior written permission of Quanser Inc.