RoboCup: Redesign 2014-2015
Contents
- 1
- 2 ATTENTION: THIS PAGE WAS ABANDONED DURING THE 2015 REDESIGN IN FAVOR OF THE ROBOCUP BOARD ON TRELLO.
- 3 Phase I: Technical Analysis
- 3.1 Phase II: Design
- 3.2 Phase III: Production
ATTENTION: THIS PAGE WAS ABANDONED DURING THE 2015 REDESIGN IN FAVOR OF THE ROBOCUP BOARD ON TRELLO.
Phase I: Technical Analysis
The first stage of the 2014-2015 RoboCup redesign involves brainstorming potential upgrades by researching new technologies/resources since the last revision. A parallel analysis of current robot bugs and potential enhancements is also done at this time. Outlined below is a listing of resources that the team used in this brainstorming stage.
Competition 2014 documentation
Team Description Papers (TDP)
Phase II: Design
During the design phase, specifications are determined for each section of the robot. Experimental results are documented here from all quantitative findings. This phase is also where the high-level ideas from Phase I are tracked to ensure completion.
Microcontroller/FPGA Processing
To Do
Successfully communicate over SPI with a current FPGA and mbed
Completed
- Build development board for testing FPGA configuration from mbed's flash storage
- Tested and confirmed working
- Obtain mbeds for robot use
- How: 15 mbeds donated by ECE department
Mechanical/Electrical Integration
To Do
Determine best solution for integrating serial identification to mechanical basesAdd connection header for ball sensor to control boardTest motor wire modifications before working on the entire batch of motorsDetermine kicker connections and integrationTentative plans for a PCI Express Mini conenction on the motor board's edge
Determine options using quarter-turn screws for electrical board attachment
Completed
- Research options for using Altium for schematic and board layout designs
- Completed Task: Contact them for a 30 day trial
- Outcome: Altium sponsorship with 6 "On-Demand" licenses for Altium Designer
- Determine location and placement for dribbler motor header
- Update hall connection header to right angled one
- Add pin locations to all connection housings in CAD part files
Update the 14-pin connection header (female) for the control-to-motor board connection- Update: Abandoned for different board-to-board connectors
- Finalize method for adjusting motor wire lengths when motors arrive
- Decision: Unsolder from motor's PCB, trim to length, and resolder to motor's PCB
- Reason: Did not want to delay ordering motors any futher & hand soldering results in higher yields compared against hand crimping
- Determine placement of battery location
- Decision: Horizontally under all electronics
Radio
To Do
Obtain breakout boards for CC1201 transceivers with integrated ANT-916-CHP antennaOrder CC1201 samples from TICurrent quantity:21
Successfully communicate using two (2) CC1201 transceivers and two (2) mbedsResearch and determine best steps for structuring radio protocol with primary and seconday frequenciesThe Crazyflie project has basic radio documentation for how they implemented real-time communication with room for expansion
Test packet optimizations - Nanopb is promosing for this
Completed
- Obtain TI's CC Debugger for interfacing transceivers with SmartRF Studio
- How: Digi-Key
Successfully communicate using two (2) nRF24L01+ transceivers and two (2) mbeds- Result: Task abandoned. Determined that a 2nd frequency band provided only nominal benefits
- Test methods using breakout boards and compare data rates
- Result: Packet processing (
~60 bytes
) for receptions estimated to consume0.2ms
to0.3ms
of processing time @60 packets/sec
- Result: Packet processing (
- Determine optimal secondary frequency for base station updates
- Decision: End result's data rate is only nominally benefitial for high-throughput broadcasting. No 2nd transceiver
- Research integration options of the CC1111 and nRF24LU1+
- Decision: Do not use SoC parts for the base station
- Reason: Keep radio software on the mbed platform's C++ libraries (SoC would require additional C code for the base station)
- Order five (5) CC1111 transceivers from TI
- Successfully communicate using two (2) CC1101 transceivers and two (2) mbeds
- Obtain breakout boards for CC1101
- How: Added SMA antenna connector to breakout boards from 2008 fleet
- Obtain breakout boards for nRF24L01+
- How: eBay
FPGA
A few minor changes to the FPGA's Verilog code must be made for the 2015 redesign. This includes migrating the [2C] interface with the kicker board to the mbed platform & enhancing encoder connections to support the new differential signals.
Setting up a computer for Verilog development
- Create an account on Xilinx's website
- The Xilinx program is called ISE Design Suite (this is on ECE's virtual lab pool computers - can connect to it from anywhere).
- The desired download link is found under the ISE Design Suite heading
- The current version at the time of this writing is 14.7 (size: ~6GB)
- The ISE Design Suite is no longer supported
- The newer version of Xilinx's software is called Vivado Design Tools, but it does not support the Spartan-3E FPGA
- Install the program to your computer
- The installer will prompt you to select an edition to install
- Select ISE WebPACK
- The installer will prompt you to select an edition to install
- Obtain a license at the Xilinx page for license management
- Open the link sent to you after requesting a license
- Navigate to the Manage Licenses tab
- Download the license called ISE WebPACK License
- Save the downloaded license file to the
~/.Xilinx
directory of your computer- The program will require you to locate the license's path at first startup
Mandatory user-provided files for Verilog synthesis
- Verilog files(s)
- Defines the HDL implementation
- File Extension:
.v
- Xilinx Constraint File
- Defines parameters for correct synthesis to the hardware (pin mappings)
- File Extension:
.ucf
FPGA commands from the 2011 robot:
Command | Read/Write | Definition |
---|---|---|
0x00
|
Read Only | Receive Data Readings |
0x01
|
Read/Write | Set motor speeds |
Example SPI Transfer (0x00 Read)
Array Index | Bit(s) | Definition |
---|---|---|
0
|
7..0 | FPGA Version (0x04 in 2014)
|
1
|
7..0 | Encoder 1 Count (LSB) |
2
|
7..0 |
Encoder 1 Count (MSB) |
3
|
7..0 |
Encoder 2 Count (LSB) |
4
|
7..0 |
Encoder 2 Count (MSB) |
5
|
7..0 |
Encoder 3 Count (LSB) |
6
|
7..0 |
Encoder 3 Count (MSB) |
7
|
7..0 |
Encoder 4 Count (LSB) |
8
|
7..0 |
Encoder 4 Count (MSB) |
9
|
7..0 |
Motor Fault |
10
|
7..0 |
Kicker Status |
11
|
7..0 |
Kicker Voltage |
12
|
7..0 |
Hall Count 1 |
13
|
7..0 |
Hall Count 2 |
14
|
7..0 |
Hall Count 3 |
15
|
7..0 | Hall Count 4 |
16
|
7..0 |
Hall Count 5 |
Example SPI Transfer (0x01 Write)
Array Index | Bit(s) | Definition |
---|---|---|
0
|
7..0 | Packet Type (0x01 )
|
1
|
7..0 | Motor 1 Speed (LSB) |
2
|
7..4 |
Reserved (Always |
3..2 | Motor 1 Drive Mode | |
1..0 | Motor 1 Speed (MSB) | |
3
|
7..0 | Motor 2 Speed (LSB) |
4
|
7..4 | Reserved (Always 0x00 ) |
3..2 | Motor 2 Drive Mode | |
1..0 | Motor 2 Speed (MSB) | |
5
|
7..0 | Motor 3 Speed (LSB) |
6
|
7..4 | Reserved (Always 0x00 ) |
3..2 | Motor 3 Drive Mode | |
1..0 | Motor 3 Speed (MSB) | |
7
|
7..0 | Motor 4 Speed (LSB) |
8
|
7..4 | Reserved (Always 0x00 ) |
3..2 | Motor 4 Drive Mode | |
0..1 | Motor 4 Speed (MSB) | |
9
|
7..0 | Dribbler Motor Speed (LSB) |
10
|
7 | Kicker Charge |
6 | Chipper Enable (1=Chip , 0=Kick )
| |
5..4 | Reserved (Always 0) | |
3..2 | Dribbler Motor Drive Mode | |
1..0 | Dribbler Motor Speed (MSB) | |
11
|
7..0 | Kicker Power (<</code>, 0xFF=6ms )
|
Required Pins
MOSI
MISO
SCK
nCS
PROG_B
To Do
Research the options for interfacing a 7-segment LED into the FPGA for battery voltage & error code displaysTransition the [2C] bus lines to the microcontrollerUpdate Verilog for new differential encoder signals (A+, A-, B+, B-)( (A+) + (A-) == 0 ) should be true for no errorsBalanced signal standard: EIA RS 422
Update Verilog for driving a bootstrap circuitAdd a writable register for enabling/disabling motor encoders
Completed
- Obtain Spartan-3E development board
- How: Found a used board on eBay
- Determine required pins for connecting FPGA
- Documented above
- Document steps for synthesizing Verilog files
- Documented above
- Successfully configured an FPGA from the mbed's on board flash storage
- Successfully synthesized a
Hello World
Verilog file using Xilinx's ISE Webtools - Determine what communications occur over the SPI bus
- Documented in the tables above
- Finalized that the 2015 motors will use the current FPGA
- Decision: Xilinx Spartan-3E
- Reason: FPGA is only used for motor control & no futher capabilities are needed
Motors
Maxon EC45Flat Custom Motor Drawing (50W) PN: 339285X
Maxon EC45Flat Motor Datasheet (50W) PN: 339285X
Maxon EC16 Motor Datasheet (30W) PN: 400161
To Do
Successfully control one of the new 50W motors with an mbed and Spartan-3E interfaceModify four (4) of the sample motors to accomidate integration into a prototyped robotLast Task: Place connectors onto the wires for all four (4) motors
Order motor controller boardsUpdate: Underway
Test different circuits and document data result set to wiki
Completed
- Order 3 DRV8301 Pre-Drivers from TI
- Update: Many samples from TI are in the electrical room now
- Finalize the protyping designs of single motor controllers
- Order motors
Motion Sensing & Motion Control
GitHub Issue for motion controlling unit
To Do
Determine best integration options for using motion processor sensor readings for enhancing on-board motion controlSuccessfully read sensor data from one of the potential motion processing chipsDetermine if the MPU-6050 is should replace the MPU-9250 according to the benefits of having a 3-axis magnometerIntegrate the MPU-9250 into the [2C] data bus lines from the mbed
Completed
Error Detection & Indication
To Do
Determine best solution for controlling the WS2812B RGB LEDUpdate: This may be abandoned because of the LED's precise timing for control
Completed
- Determine error LED interface locations with the I/O expander
- Decision: Motor 1, Motor 2, Motor 3, Motor 4, Dribbler Motor, Power Section, Radio Section, IMU Section [Required LEDs: 8
]
Order a Bus Pirate
- How: Sparkfun
- Order breakout board for RGB LED
- How: Sparkfun
- Create breakout board for MCP23017 and place on GitHub repository
Ball Sense
Main Article: RC15BallSense
The ball sensor is a pair of a laser diode and a phototransistor.
Kicker Board & Detection
To DoCreate a small microcontroller interface for the kicker boardOriginal Plan: Use a MSP430G2x from TIUpdated Plan: Use one of Atmel's ATtiny microcontrollersWhy: Much easier to implement a custom ISP with the mbedCan use the Arduino IDEmbed library already exists
Why: To allow for more disjoint kicker board development in future years. An attempt to perform more consistent soldnoid discharges with the microcontroller will be attempted this year.
Use a Serial Identification Chip for unique detection of mechanical basesMeasure the current from kicker board currently usedData exists for the 2011 kicker board. There is a 2011 kicker board (barebone) equipped with a silicon-controlled rectifier and shunt resistor for capturing oscilliscope data for this. Use a digital oscilliscope and export sampled data for waveform recreation/analysis.
Update the kicker board to accommodate the new battery's voltage of 18.5V
Completed
- Generate snapshots of the 2011 kicker board graphs for reference
- Where: Exported oscilliscope data saved in the firmware directory on software's GitHub repository. Python scripts exist for analyzing the data.
- Determine the number of capacitors that will be used
- Decision: four (
4
)820uF
capacitors
- Decision: four (
Battery & Power
The following contains a listing of batteries that were considered for the 2015 design along with other battery/power adapters and accessories.
To DoDetermine power switch placement and integrationOption 1: Use a small switch paired with a relayOption 2: Use standard mechanical switch
Research switching regular modulesOKI-78SR module
Completed
- Change the first switching regulator to accomidate for the higher voltage battery
- New part number: LM25010
- Finalized the new design's battery selection
- Result: Zippy Flightmax 2200mAh 5S 40C
Battery Accessories
- Connector: XT60 (Male)
- Connector Lead: XT60 12AWG 10cm
- Charging Cable: XT60 Banana Plug
- Balancing Board: Charge/Balance Board
All Batteries
The following list contains batteries that were considered and known about during the battery selction period. The list is not inclusive.
- Zippy Flightmax 2500mAh 5S 20C
- Zippy Flightmax 1800mAh 5S 40C
- Zippy Compact 2450mAh 5S 35C
- Turnig 2200mAh 5S 30C
- Thunder Power 2000mAh 5S 16C
Dribbler
To DoTest diamond dribbler shapeIf diamond-shaped dribbler fails, test hourglass dribbler shapeTest heatshrink viability as dribbler materialVerify notched dribbler effectiveness
Completed
- Created prototype of and tested notched dribbler
- Tested viability of electrical tape as dribbler material
- Created prototype of diamond-shaped dribbler with heatshrink
Testing Results
- Electrical tape is ineffective as a dribbler material. Fails to impart spin on the ball and leaves residue
- Notch in center of dribbler is highly effective at keeping ball centered on dribbler. Increases tolerance for robot movement without losing control of the ball. Seems to be an improvement over current plain dribbler design.
Phase III: Production
The final phase for creating the new fleet of robots involves outlining the steps and procedures for robot manufacturing and assebly. Future members can use this area as a reference for the fleet's required maintenance. It may also be benefitial for strengthening tolerances in future fleet builds.
Electronics Assembly
General
- Sparkfun's PCB assembly process
- EEVblog on anti-static bags for component storage
Solder Paste Stencil Creation
SparkFun uses SolderMask, Inc for their stencil needs
- Laser cutting kapton film
- Material: Kapton Polyimide Film
- Size:
12" x 12"
- Thickness:
0.005"
- Size:
- Test Equiptment
- Laser Cutter: Trotec Speedy 300 (
140W
)
- Laser Cutter: Trotec Speedy 300 (
- Test Results
- Will not produce required results for making a stencil
- Material: Kapton Polyimide Film
- Chemical etching aluminum
- Untested but very promosing
Prototype PCB Etching
To DoEtch CC1201 radio module boards once design is complete
Completed
- Order UV curing lamp
- How: eBay
- Order UV soldermask paints
- How: eBay
- Obtain necessary etching chemicals
- Decision: Hydrogen Peroxide & Muriatic Acid
- Decision: Motor 1, Motor 2, Motor 3, Motor 4, Dribbler Motor, Power Section, Radio Section, IMU Section [Required LEDs: 8