Difference between revisions of "RoboCup: Redesign 2014-2015"
(Transclude Ball Sens information) |
m |
||
Line 437: | Line 437: | ||
---- | ---- | ||
− | {{:RC15BallSense | + | {{:RC15BallSense}} |
=== Kicker Board & Detection === | === Kicker Board & Detection === |
Revision as of 19:37, 27 January 2015
Contents
- 1 Phase I: Techanical Analysis
- 2 Phase II: Design
- 3 Phase III: Production
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.
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 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
- Tentative 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
Current protocol [LINK TO BE CREATED & UPDATED]
To Do
- Obtain breakout boards for CC1201 transceivers with integrated ANT-916-CHP antenna
- Order 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
- 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
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
- Research the options for interfacing a 7-segment LED into the FPGA for battery voltage & error code displays
- 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
GitHub Issue for motion controlling unit
To Do
- Determine best integration options for using motion processor sensor readings for enhancing on-board motion control
- Successfully read sensor data from one of the potential motion processing chips
- Determine if the MPU-6050 is should replace the MPU-9250 according to the benefits of having a 3-axis magnometer
- Integrate 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 LED
- Update: 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
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
- 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.
- Generate snapshots of the 2011 kicker board graphs for reference
- Exported oscilliscope data saved in the firmware directory on software's GitHub repository. Python scripts exist for analyzing the data.
- 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: 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 Do
- Determine power switch placement and integration
- Option 1: Use a small switch paired with a relay
- Option 2: Use standard mechanical switch
- 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
Prototype PCB Etching
To Do
- Etch 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