Programming and Controls Workshop
Download
Report
Transcript Programming and Controls Workshop
Programming and Controls for
FIRST – The Basics
Tom Barch, Scott VanBrocklin
and Kayla Peltier
February 5th, 2008
Agenda
System Overview
How the systems works – Controls Block Diagram
Robot Controller
Operator Interface
Overview of the controls used and how they work
How to get started with the EasyC Program Software
Default Code Reference Guide – How and why to use
MPLAB and IFE Loader – How to install and use
Default Code – An overview
Downloading the Code to the Robot Controller
Overview of the pneumatics system – Block Diagram
Controlling the pneumatics – Understanding the controls
Controls
Programming
Pneumatic Controls
Robot Controller or RC
Robot Controller
System Block Diagram
Operator Interface or OI
Operator Interface
System Block Diagram
Tether Communications
Radio vs. Tether communication
If the controllers ‘see’ a tether cable
connection, then they will communicate via
the tether port.
If no tether connection exists, then they
will attempt to use the radio signal.
Note: Connecting via radio at the
competition other than during a match is
not allowed and can be dangerous if
another teams operator interface controls
your robot.
Controls
Understanding the controls will help to understand the
software variables and how the software is modifying
and outputting them to get the Robot to move.
The joystick is read by the Operator Interface and is
transmitted to the Robot Controller. It usually drives
a pwm output which controls a Victor 883 or 884
speed controller. The speed controller maybe wired to
a drill motor.
By pressing the joystick, we hope to control the speed
and direction of the motor to get the Robot to move.
Lets start with the Joystick.
Joystick
The joystick consists of two potentiometers mounted
to a stick that vary as the stick is moved along its
axis.
One potentiometer is mounted in the x axis or left –
right direction and the other is mounted in the y axis
or forward – backward direction.
As the potentiometer moves from one extreme to the
other, the operator interface reads the voltage from 0
to 5 volts.
This voltage is broken into an 8 byte variable that
ranges from 0 (0 volts) to 254 (5 volts).
Joystick - continued
Full forward in the y
axis will result in p1_y
= 254.
When the joystick is in
the center, it reads
127.
Full backward would
read 0
Victor Speed Controller
The input to the speed controller is a pwm signal that
varies from software value of 0 to 254.
Battery and ground is supplied to two input terminals
and the two output terminals can be wired to an
electrical load like a drill motor.
At an input of 127, the two outputs which we will call
m+ and m- are at 0 volt difference
As the pwm increases from 127 toward 254, the
voltage varies from a positive difference of 0 to 12
volts.
As the pwm decreases from 127 towards 0, the
voltage varies from a negative difference of 0 to 12
volts.
Victor 884 speed controller
Joystick to Motor
The joystick variable read by the Operator Interface is
the same as the variable outputted to the pwm output
to drive the motors forward and reverse.
In the default software, port one y axis is output
directly to pwm01 port:
pwm01 = p1_y;
In the default software, port two y axis is output
directly to pwm02 port:
pwm02 = p2_y;
The two of these make up the tank drive (two
joystick).
The software also outputs joystick one x and y axis to
pwm ports 13 and 15 to get one joystick drive.
Joystick Switches
Located on the joysticks are four switches that are read
by the computer as 0 or a 1. When the switch is closed,
then the variable is read as a one.
These switch inputs are mapped to the relay outputs.
relay1_fwd = p1_sw_trig;
relay1_rev = p1_sw_top;
relay_5_fwd = p1_sw_aux1;
relay_5_rev = p1_sw_aux2;
Spike Controller
The spike controller is a relay or electronic switch that will
drive two outputs based on the inputs.
The reason for two input and two outputs are to enable the
output to be driven positively or negatively to drive a small
motor forward or reverse.
When the inputs to the relay are driven both as 0, then the
outputs are both at 0 volts. One input is called Fwd and
one is called Rev. One output is m+ the other is m-.
If the Fwd input is a 1 and the Rev input is a zero, then the
m+ output will be 12volts and the m- output will be 0 volts.
The spike can be used to drive small motors, lights, air
compressor, or any other 12 volt electrical load. The
concern is the current draw which is much lower then the
speed controllers.
Spike Blue Controller
Spike Truth Table
The truth table for the input to output is as
follows:
Spike alternative circuit
The spike can also be used to drive two
different outputs in a on/off sequence.
An example would be two solenoid valves.
Programming the Robot Controller
Using EasyC
“EasyC” is very useful for people who
do not have much experience with
programming.
It’s a much simpler version of the “C”
language
Teams may choose to program with
either “EasyC” or the standard “C”
with MPLAB
Getting Started With EasyC
Begin by setting up
your robot controller
by selecting “Robot
Controller Setup” in
the Options toolbar.
Select the “FRC Robot Controller” and the “FRC
2006-2008 (PIC18F8722)” device…and click
“ok”.
Loader Setup
Go to the “Build and Download”
toolbar and click “Loader Setup”
Make sure the settings are as
follows…
Downloading Default Code Using
EasyC
You can either:
Write your own default code or
Use the one provided by the EasyC
Software.
To download the default
code provided by EasyC
go to the “Build and
Download” toolbar and
click “Download Default
Code”
It will ask you if you’re sure you
want to download the program…click
“yes”
The computer will then erase the
memory on the robot controller
and download the default code.
Robot Controller Code
MPLAB IDE v6.30 is the C programming editor
and complier from PC Microchips used to edit
and compile the code.
IFE Loader is a program that will download the
complied code into the robot.
None of this is necessary if the default code is
used.
If modifications are necessary (custom
functions are needed/variables need to change
slightly), the code will only need modifications
instead of a complete re-write.
Default Code Reference Guide
Available from Innovation First website
http://www.ifirobotics.com/
(in the Robot Controller section at the bottom)
Shows OI wiring/variables to RC
variables/output for the default code
functions.
Contains the variable listing for modification
of default code.
FRC 2004 RC Default Code Reference Guide.pdf
Table of Contents
Joystick Function
Joystick plugged
into port 1
Y-Axis is forward
– backwards
(tank drive)
P1_y is the
variable used
in the software
to read this
function
RC PWM1 is the port
that the left side
victor should be
plugged into to make
port 1 the left joystick
for tank style drive
Single Joystick Drive
Missing from default guide – It is on the
front cover but hard to read.
Connect the right drive motors to PWM13
and/or PWM14 on the RC.
Connect the left drive motors to PWM15
and/or PWM16 on the RC.
MPLAB Install
Adobe PDF
document exists on
CD
Has the defaults
and instructions for
installing MPLAB as
well as the IFE
loader.
C-BOT_Install_129-2004.pdf
MPLAB and Default code
After downloading the default code, place
the unzipped files in a directory, preferable
in c:\code\frccode.
MPLAB and First recommends a simple
directory. My Documents is a complex
directory in Windows 2000 and Windows
XP.
Saving an old revision and creating a new
one is done by copying the folder and
pasting to new director (i.e. copy
c:\code\frccode into a new directory
c:\code\frccode1 and so on).
Opening the default workspace
Do not use the file open command. Use
the open workspace command.
User_routine.c
Most of the code changes will be made in
the user_routine.c file
Custom code should be placed in
Process_Data_From_Master_uP function at
/* Add your own code here */.
The specific functions for most of the
inputs/outputs are in the Default_Routine
which is at the bottom of User_routine.c
The variables can be modified in the default
routine, but make sure to use new revision
directories here so that changes can be
reversed.
Modifying a variable
Lets say that the right side joystick is backwards.
When the joystick is pressed forward the robot moves
backward.
There would be two options. Change the M+ and Mterminals on the Victor (this is actually the
recommended fix)
The software could also be changed to reverse the
direction on the motor.
Locate the default statement for the right controller
pwm02 = p2_y;
The code could be modified as follows:
pwm02 = 254 – p2_y;
Modifying a variable (continued)
P2_y
0
254
127
42
212
86
168
Formula
254 – 0 = 254
254 – 254 = 0
254 – 127 = 127
254 – 42 = 212
254 – 212 = 42
254 – 86 = 168
254 – 168 = 86
pwm02
254
0
127
212
42
168
86
Compiling the code
In MPLAB, select the Project menu and
select the Build All command.
The Output window will have the comments
on if the build was successful or if there are
errors.
If there are errors, locate the error and fix.
Be careful with where the error occurs. The
actual error can be many lines of code
before the syntax error. An example would
be a begin comment marker without an end
marker. All the code will be commented out
until the next end marker.
Loading the code into the RC
IFE Loader is the program used to download the compiled
code.
Make sure that the RC program port is plugged into a serial
com port on the computer.
Set the IFE loader to the com port plugged into.
Press the program button on the RC and then press the
download button.
The terminal window can be used in conjunction with the printf
command to display variables on the terminal window.
Remember that the printf statement will output every time the
command executes. If the printf is in the slow loop it will print
every 26.2ms or even faster in the fast loop. This may be hard
to read with the data scrolling off the screen.
The buffer is a circular buffer so it won’t fill up. The old data
won’t be there either, so you may need some type of logic to
keep the data on the screen.
Pneumatic Controls Block Diagram
Pneumatic Controls
The air compressor is wired through a relay controlled by the
pressure switch.
Controlling the pneumatic cylinders is then accomplished
through a single or double solenoid valve.
When the pressure switch drops below the set switch point, the
relay is energized turning on the air compressor.
When the pressure exceeds the set switch point, the relay is deenergized turning off the air compressor.
“Single-acting” or single solenoid valve will extend the air cylinder
while the solenoid is energized. When the solenoid is deenergized, the air cylinder will close.
“Double-acting” or double solenoid valve will extend or open a air
cylinder when one of the solenoids is activated and will close when
the other solenoid is activated. After either solenoid is
deactivated, the air cylinder will remain open or closed.
These solenoid valves are controlled via a spike.
Spike Truth Table
Single Solenoid Valve (two valves wired to M+ & M-)
INPUTS
OUTPUTS
Fwd
Rev
M+
M-
Indicator
Solenoid Function
0
0
GND
GND
Orange
Off / Brake Condition (Default)
1
0
+12V
GND
Green
Solenoid1 Activates (M+)
0
1
GND
+12V
Red
Solenoid2 Activates (M-)
1
1
+12V
+12V
Off
Solenoid 1 & 2 Activates
Double Solenoid Valve (both positives wired to M+ & M- with grounds to ground block)
INPUTS
OUTPUTS
Fwd
Rev
M+
M-
Indicator
Solenoid Function
0
0
GND
GND
Orange
Off / Brake Condition (Default)
1
0
+12V
GND
Green
Solenoid Activates Direction A
0
1
GND
+12V
Red
Solenoid Activates Direction B
1
1
+12V
+12V
Off
Solenoid Activation is unknown
Summary
There are other websites for
resources.
The www.usfirst.org has many
presentations on the subjects
presented here.
Hopefully this has been informative
and will help in the coming weeks.