Difference between revisions of "RoboCup: Redesign 2014-2015"
Line 412: | Line 412: | ||
==== To Do ==== | ==== To Do ==== | ||
− | *[[RC15MechanicalBaseIdentification|Serial Identification Chip]] | + | *Create a small microcontroller interface for the kicker board |
+ | **''Original Plan:'' Use a [http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/msp/ultra-low_power/msp430g2x_i2x/overview.page MSP430G2x] from [http://www.ti.com/ TI] | ||
+ | **''Updated Plan:'' Use one of Atmel's [http://www.atmel.com/products/microcontrollers/avr/tinyavr.aspx ATtiny] microcontrollers | ||
+ | ***''Why:'' Much easier to implement a custom [http://en.wikipedia.org/wiki/In-system_programming ISP] with the mbed | ||
+ | ****Can use the [http://arduino.cc/en/main/software Arduino IDE] | ||
+ | ****[http://developer.mbed.org/cookbook/mAVRISP mbed library] already exists | ||
+ | *Generate snapshots of the 2011 kicker board graphs for reference | ||
+ | *Use a [[RC15MechanicalBaseIdentification|Serial Identification Chip]] for unique detection of mechanical bases | ||
*[https://redmine.robojackets.org/issues/352 Measure the current] from kicker board currently used | *[https://redmine.robojackets.org/issues/352 Measure the current] from kicker board currently used | ||
**Data exists for the 2011 kicker board. There is a 2011 kicker board (barebone) equipped with a [http://en.wikipedia.org/wiki/Silicon-controlled_rectifier silicon-controlled rectifier] and [http://en.wikipedia.org/wiki/Shunt_(electrical) shunt resistor] for capturing oscilliscope data for this. Use a digital oscilliscope and export sampled data for waveform recreation/analysis. | **Data exists for the 2011 kicker board. There is a 2011 kicker board (barebone) equipped with a [http://en.wikipedia.org/wiki/Silicon-controlled_rectifier silicon-controlled rectifier] and [http://en.wikipedia.org/wiki/Shunt_(electrical) shunt resistor] for capturing oscilliscope data for this. Use a digital oscilliscope and export sampled data for waveform recreation/analysis. | ||
Line 418: | Line 425: | ||
==== Completed ==== | ==== Completed ==== | ||
+ | |||
+ | *Determine the number of capacitors that will be used | ||
+ | **''Decision:'' <code>4</code> | ||
=== Battery & Power === | === Battery & Power === |
Revision as of 04:25, 25 January 2015
Contents
Phase I: Techanical 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.
Logical Controlling Unit
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
- Research options for using Altium for schematic and board layout designs
- Contact them for a 30 day trial
- Determine best solution for integrating serial identification to mechanical bases
- Add connection header for ball sensor to control board
- Test motor wire modifications before working on the entire batch of motors
- Determine kicker connections and integration
- Determine options using quarter-turn screws for electrical board attachment
Completed
- 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
- 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
Radio
Current protocol [LINK TO BE CREATED & UPDATED]
To Do
- Obtain breakout boards for CC1201 transceivers with integrated ANT-916-CHP antenna
- Order numerous CC1201 samples from TI
- Current quantity:
21
- Current quantity:
?
Successfully communicate using two (2) CC1201 transceivers and two (2) mbeds- Research and determine best steps for structuring radio protocol with primary and seconday frequencies
- The 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
- 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
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 (<, 0xFF=6ms )
|
Required Pins
- MOSI
- MISO
- SCK
- nCS
- PROG_B
To Do
- Transition the [2C] bus lines to the microcontroller
- Update Verilog for new differential encoder signals (A+, A-, B+, B-)
- ( (A+) + (A-) == 0 ) should be true for no errors
- Update Verilog for driving a bootstrap circuit
- Add 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 50W Custom Motor Drawing
To Do
- Successfully control one of the new 50W motors with an mbed and Spartan-3E interface
- Modify four (4) of the sample motors to accomidate integration into a prototyped robot
- Last Task: Place connectors onto the wires for all four (4) motors
- Order motor controller boards
- Update: 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
To Do
Completed
- Order breakout board for MPU-9250
Error Detection & Indication
To Do
- Determine best solution for controlling the WS2812B RGB LED
Completed
- Order a Bus Pirate
- Order breakout board for RGB LED
- Create breakout board for MCP23017 and place on GitHub repository
Kicker Board & Detection
To Do
- Create a small microcontroller interface for the kicker board
- Original Plan: Use a MSP430G2x from TI
- Updated Plan: Use one of Atmel's ATtiny microcontrollers
- Why: Much easier to implement a custom ISP with the mbed
- Can use the Arduino IDE
- mbed library already exists
- Why: Much easier to implement a custom ISP with the mbed
- Generate snapshots of the 2011 kicker board graphs for reference
- Use a Serial Identification Chip for unique detection of mechanical bases
- Measure the current from kicker board currently used
- Data 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
- Determine the number of capacitors that will be used
- Decision:
4
- Decision:
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 Do
- Determine power switch placement and integration
- Research switching regular modules
- OKI-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
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
- Untested but very promosing