Difference between revisions of "RoboCup: Redesign 2014-2015"

From RoboJackets Wiki
Jump to navigation Jump to search
 
(33 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Phase I: Techanical Analysis ==
+
= <span style="color:#B22222;"><span style="background-color:#FFFFE0;">ATTENTION:&nbsp;</span></span><span style="background-color:#FFFFE0;">THIS PAGE WAS ABANDONED DURING THE 2015 REDESIGN IN FAVOR OF THE ROBOCUP BOARD ON&nbsp;</span>[https://trello.com/ <span style="background-color:#FFFFE0;">TRELLO</span>]<span style="background-color:#FFFFE0;">.</span> =
 +
 
 +
= 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.
 
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.
  
[[RoboCup: Competition 2014|Competition 2014]]&nbsp;documentation
+
[[RoboCup:_Competition_2014|Competition 2014]]&nbsp;documentation
  
 
[[TDP|Team Description Papers]] (''TDP'')
 
[[TDP|Team Description Papers]] (''TDP'')
Line 21: Line 23:
 
[http://developer.mbed.org/cookbook/Assembly-Language#debugging-an-mbed-project-using-the-keil mbed Debugging]
 
[http://developer.mbed.org/cookbook/Assembly-Language#debugging-an-mbed-project-using-the-keil mbed Debugging]
  
==== To Do ====
+
==== <s>To Do</s> ====
  
*Successfully communicate over [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus SPI] with a current FPGA and mbed
+
*<s>Successfully communicate over [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus SPI] with a current FPGA and mbed</s>
  
 
==== Completed ====
 
==== Completed ====
Line 38: Line 40:
 
[http://wiki.robojackets.org/mediawiki/images/e/e1/RoboCup2014Design-MaxPCB_Dimensions.pdf Max PCB Dimensions]
 
[http://wiki.robojackets.org/mediawiki/images/e/e1/RoboCup2014Design-MaxPCB_Dimensions.pdf Max PCB Dimensions]
  
==== To Do ====
+
==== <s>To Do</s> ====
  
*Determine best solution for integrating serial identification to mechanical bases
+
*<s>Determine best solution for integrating serial identification to mechanical bases</s>
*Add connection header for ball sensor to control board
+
*<s>Add connection header for ball sensor to control board</s>
*Test motor wire modifications before working on the entire batch of motors
+
*<s>Test motor wire modifications before working on the entire batch of motors</s>
*Determine kicker connections and integration
+
*<s>Determine kicker connections and integration</s>
**Tentative plans for a [http://en.wikipedia.org/wiki/PCI_Express PCI Express Mini] conenction on the motor board's edge
+
**<s>Tentative plans for a [http://en.wikipedia.org/wiki/PCI_Express PCI Express Mini] conenction on the motor board's edge</s>
*Determine options using [http://www.camloc.us/camloc-quarter-turns-catalog.php quarter-turn screws] for electrical board attachment
+
*<s>Determine options using [http://www.camloc.us/camloc-quarter-turns-catalog.php quarter-turn screws] for electrical board attachment</s>
  
 
==== Completed ====
 
==== Completed ====
Line 55: Line 57:
 
*Update hall connection header to right angled one
 
*Update hall connection header to right angled one
 
*Add pin locations to all connection housings in CAD part files
 
*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
+
*<s>Update the 14-pin connection header (female) for the control-to-motor board connection</s>
 
**''Update:'' Abandoned for different board-to-board connectors
 
**''Update:'' Abandoned for different board-to-board connectors
 
*Finalize method for adjusting motor wire lengths when motors arrive
 
*Finalize method for adjusting motor wire lengths when motors arrive
Line 61: Line 63:
 
**''Reason:'' Did not want to delay ordering motors any futher & hand soldering results in higher yields compared against hand crimping
 
**''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
 
*Determine placement of battery location
 +
**''Decision:'' Horizontally under all electronics
  
 
=== Radio ===
 
=== Radio ===
Line 70: Line 73:
 
<s>[http://developer.mbed.org/cookbook/nRF24L01-wireless-transceiver nRF24L01+ C++ library]</s>
 
<s>[http://developer.mbed.org/cookbook/nRF24L01-wireless-transceiver nRF24L01+ C++ library]</s>
  
Current protocol <span style="background-color:#FFFF00;">[LINK TO BE CREATED & UPDATED]</span>
+
==== <s>To Do</s> ====
  
==== To Do ====
+
*<s>Obtain breakout boards for [http://www.ti.com/product/cc1201 CC1201]&nbsp;transceivers with integrated [http://www.digikey.com/product-detail/en/ANT-916-CHP-T/ANT-916-CHP-TCT-ND/1534437 ANT-916-CHP] antenna</s>
 
+
*<s>Order [http://www.ti.com/product/cc1201 CC1201] samples from [http://www.ti.com/ TI]</s>
*Obtain breakout boards for [http://www.ti.com/product/cc1201 CC1201]&nbsp;transceivers with integrated [http://www.digikey.com/product-detail/en/ANT-916-CHP-T/ANT-916-CHP-TCT-ND/1534437 ANT-916-CHP] antenna
+
**<s>Current quantity: <code>21</code></s>
*Order numerous [http://www.ti.com/product/cc1201 CC1201] samples from [http://www.ti.com/ TI]
+
*<s>Successfully communicate using two (2) [http://www.ti.com/product/cc1201 CC1201] transceivers and two (2) [http://developer.mbed.org/platforms/mbed-LPC1768/ mbeds]</s>
**Current quantity: <code>21</code>
+
*<s>Research and determine best steps for structuring radio protocol with ''primary ''and ''seconday ''frequencies</s>
*<code>?</code>Successfully communicate using two (2) [http://www.ti.com/product/cc1201 CC1201] transceivers and two (2) [http://developer.mbed.org/platforms/mbed-LPC1768/ mbeds]
+
**<s>The Crazyflie project has basic&nbsp;[http://wiki.bitcraze.se/projects:crazyflie:firmware:comm_protocol radio documentation] for how they implemented real-time communication with room for expansion</s>
*Research and determine best steps for structuring radio protocol with ''primary ''and ''seconday ''frequencies
+
*<s>Test packet optimizations - [http://koti.kapsi.fi/jpa/nanopb/ Nanopb]&nbsp;is promosing for this</s>
**The Crazyflie project has basic&nbsp;[http://wiki.bitcraze.se/projects:crazyflie:firmware:comm_protocol radio documentation] for how they implemented real-time communication with room for expansion
 
*Test packet optimizations - [http://koti.kapsi.fi/jpa/nanopb/ Nanopb]&nbsp;is promosing for this
 
  
 
==== Completed ====
 
==== Completed ====
  
*Successfully communicate using two (2) nRF24L01+ transceivers and two (2) mbeds
+
*Obtain TI's [http://www.ti.com/tool/cc-debugger CC Debugger] for interfacing transceivers with [http://www.ti.com/tool/smartrftm-studio SmartRF Studio]
 +
**''How:'' Digi-Key
 +
*<s>Successfully communicate using two (2) nRF24L01+ transceivers and two (2) mbeds</s>
 
**''Result:'' Task abandoned. Determined that a 2<sup>nd</sup> frequency band provided only nominal benefits
 
**''Result:'' Task abandoned. Determined that a 2<sup>nd</sup> frequency band provided only nominal benefits
 
*Test methods using breakout boards and compare data rates
 
*Test methods using breakout boards and compare data rates
Line 99: Line 102:
 
*Obtain breakout boards for [https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+]
 
*Obtain breakout boards for [https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P nRF24L01+]
 
**''How:'' eBay
 
**''How:'' eBay
 +
 +
[[File:RadioPrototype.png|500px|RadioPrototype.png]]
  
 
=== FPGA ===
 
=== FPGA ===
Line 104: Line 109:
 
----
 
----
  
A few minor changes to the FPGA's [http://en.wikipedia.org/wiki/Verilog Verilog] code must be made for the 2015 redesign. This includes migrating the [<sup>2</sup>C] interface with the kicker board to the [http://developer.mbed.org/platforms/mbed-LPC1768/ mbed] platform & enhancing encoder connections to support the new [http://en.wikipedia.org/wiki/Differential_signaling differential signals].
+
A few minor changes to the FPGA's [http://en.wikipedia.org/wiki/Verilog Verilog] code must be made for the 2015 redesign. This includes migrating the [<sup>2</sup>C] interface with the kicker board to the [http://developer.mbed.org/platforms/mbed-LPC1768/ mbed] platform & enhancing encoder connections to support the new [http://en.wikipedia.org/wiki/Differential_signaling differential signals].
  
 
==== Setting up a computer for Verilog development ====
 
==== Setting up a computer for Verilog development ====
Line 133: Line 138:
 
**File Extension: <code>''.ucf''</code>
 
**File Extension: <code>''.ucf''</code>
  
==== FPGA Commands ====
+
==== FPGA commands from the 2011 robot: ====
  
 
{| class="wikitable" style="width: 500px;"
 
{| class="wikitable" style="width: 500px;"
Line 319: Line 324:
 
| style="text-align: center;" | <code>11</code>
 
| style="text-align: center;" | <code>11</code>
 
| style="text-align: center;" | 7..0
 
| style="text-align: center;" | 7..0
| style="text-align: center;" | Kicker Power (</code>, <code>0xFF=6ms</code>)
+
| style="text-align: center;" | Kicker Power (&lt;</code&gt;, <code>0xFF=6ms</code>)
 
|}
 
|}
  
 
==== Required Pins ====
 
==== Required Pins ====
  
*MOSI
+
*<code>MOSI</code>
*MISO
+
*<code>MISO</code>
*SCK
+
*<code>SCK</code>
*nCS
+
*<code>nCS</code>
*PROG_B
+
*<code>PROG_B</code>
  
==== <span style="line-height: 1.2;">To Do</span> ====
+
==== <s><span style="line-height: 1.2;">To Do</span></s> ====
  
*Transition the [<sup>2</sup>C] bus lines to the microcontroller
+
*<s>Research the options for interfacing a 7-segment LED into the FPGA for battery voltage & error code displays</s>
*Update Verilog for new [http://en.wikipedia.org/wiki/Differential_signaling differential encoder signals] ('''A+''', '''A-''', '''B+''', '''B-''')
+
*<s>Transition the [<sup>2</sup>C] bus lines to the microcontroller</s>
**( ''('''A+''') + ('''A-''') == 0'' ) should be true for no errors
+
*<s>Update Verilog for new [http://en.wikipedia.org/wiki/Differential_signaling differential encoder signals] ('''A+''', '''A-''', '''B+''', '''B-''')</s>
*Update [https://en.wikipedia.org/wiki/Verilog Verilog] for [https://redmine.robojackets.org/issues/355 driving a bootstrap circuit]
+
**<s>( ''('''A+''') + ('''A-''') == 0'' ) should be true for no errors</s>
*Add a writable register for enabling/disabling motor encoders
+
**<s>Balanced signal standard:&nbsp;[http://en.wikipedia.org/wiki/RS-422 <span style="color:#0000FF;">EIA RS 422</span>]</s>
 +
*<s>Update [https://en.wikipedia.org/wiki/Verilog Verilog] for [https://redmine.robojackets.org/issues/355 driving a bootstrap circuit]</s>
 +
*<s>Add a writable register for enabling/disabling motor encoders</s>
  
 
==== Completed ====
 
==== Completed ====
Line 358: Line 365:
 
----
 
----
  
[http://wiki.robojackets.org/w/File:Maxon_50W_Motor_Custom_Design.pdf Maxon 50W Custom Motor Drawing]
+
[http://wiki.robojackets.org/w/File:Maxon_50W_Motor_Custom_Design.pdf Maxon EC45Flat&nbsp;Custom Motor Drawing (50W)]&nbsp;'''PN:&nbsp;339285X'''
 +
 
 +
[http://wiki.robojackets.org/w/File:Maxon_50W_Motor_Datasheet.pdf Maxon&nbsp;EC45Flat&nbsp;Motor Datasheet (50W)]&nbsp;'''PN:&nbsp;339285X'''
  
[http://wiki.robojackets.org/w/File:Maxon_50W_Motor_Datasheet.pdf Maxon 50W Motor Datasheet]
+
[http://www.maxonmotor.com/maxon/view/product/motor/ecmotor/ec/ec16/400161 Maxon EC16 Motor Datasheet (30W)] '''PN: 400161'''
  
==== To Do ====
+
==== <s>To Do</s> ====
  
*Successfully control one of the new 50W motors with an mbed and Spartan-3E interface
+
*<s>Successfully control one of the new 50W motors with an mbed and Spartan-3E interface</s>
*Modify four (4) of&nbsp;the sample motors to accomidate integration into a prototyped robot
+
*<s>Modify four (4) of&nbsp;the sample motors to accomidate integration into a prototyped robot</s>
**''Last Task:'' Place connectors onto the wires for all four (4) motors
+
**<s>''Last Task:'' Place connectors onto the wires for all four (4) motors</s>
*Order motor controller boards
+
*<s>Order motor controller boards</s>
**''Update:'' Underway
+
**<s>''Update:'' Underway</s>
*[https://redmine.robojackets.org/issues/341 Test different circuits] and document data result set to wiki
+
*<s>[https://redmine.robojackets.org/issues/341 Test different circuits] and document data result set to wiki</s>
  
 
==== Completed ====
 
==== Completed ====
Line 385: Line 394:
  
 
[http://developer.mbed.org/users/onehorse/code/MPU6050IMU/ MPU-6050 C++ library]
 
[http://developer.mbed.org/users/onehorse/code/MPU6050IMU/ MPU-6050 C++ library]
 +
 +
[https://github.com/bitcraze/crazyflie-firmware/blob/master/drivers/src/mpu6050.c Craxyflie's C code&nbsp;[MPU-6050]]
  
 
[http://developer.mbed.org/cookbook/PID PID C++ library]
 
[http://developer.mbed.org/cookbook/PID PID C++ library]
  
==== To Do ====
+
[https://github.com/RoboJackets/robocup-software/issues/118 GitHub Issue] for motion controlling unit
 +
 
 +
==== <s>To Do</s> ====
  
*Determine best integration options for using motion processor sensor readings for enhancing on-board motion control
+
*<s>Determine best integration options for using motion processor sensor readings for enhancing on-board motion control</s>
*Successfully read sensor data from one of the potential motion processing chips
+
*<s>Successfully read sensor data from one of the potential motion processing chips</s>
*Determine if the [http://www.invensense.com/mems/gyro/mpu6050.html MPU-6050] is should replace the [http://www.invensense.com/mems/gyro/mpu9250.html MPU-9250] according to the benefits of having a 3-axis magnometer
+
*<s>Determine if the [http://www.invensense.com/mems/gyro/mpu6050.html MPU-6050] is should replace the [http://www.invensense.com/mems/gyro/mpu9250.html MPU-9250] according to the benefits of having a 3-axis magnometer</s>
*Integrate the [http://www.invensense.com/mems/gyro/mpu9250.html MPU-9250] into the [<sup>2</sup>C] data bus lines from the mbed
+
*<s>Integrate the [http://www.invensense.com/mems/gyro/mpu9250.html MPU-9250] into the [<sup>2</sup>C] data bus lines from the mbed</s>
  
 
==== Completed ====
 
==== Completed ====
Line 406: Line 419:
 
----
 
----
  
==== To Do ====
+
==== <s>To Do</s> ====
  
*Determine best solution for controlling the [http://www.adafruit.com/products/1655 WS2812B]&nbsp;<span style="color:#FF0000;">R</span><span style="color:#00cc00;">G</span><span style="color:#0000CD;">B</span> LED
+
*<s>Determine best solution for controlling the [http://www.adafruit.com/products/1655 WS2812B]&nbsp;<span style="color:#FF0000;">R</span><span style="color:#00cc00;">G</span><span style="color:#0000CD;">B</span> LED</s>
**''Update:'' This may be abandoned because of the LED's precise timing for control
+
**<s>''Update:'' This may be abandoned because of the LED's precise timing for control</s>
  
 
==== <span style="line-height: 20.7999992370605px;">Completed</span> ====
 
==== <span style="line-height: 20.7999992370605px;">Completed</span> ====
Line 416: Line 429:
 
*''Decision:''&nbsp;Motor 1, Motor 2, Motor 3, Motor 4, Dribbler Motor, Power Section, Radio Section, IMU Section&nbsp;[Required&nbsp;LEDs: 8<code>]</code></li>
 
*''Decision:''&nbsp;Motor 1, Motor 2, Motor 3, Motor 4, Dribbler Motor, Power Section, Radio Section, IMU Section&nbsp;[Required&nbsp;LEDs: 8<code>]</code></li>
  
*Order a [https://www.sparkfun.com/products/9544 Bus Pirate]
+
 
 +
*<code>Order a [https://www.sparkfun.com/products/9544 Bus Pirate]</code>
 
**''How:'' Sparkfun
 
**''How:'' Sparkfun
 
*Order breakout board for <span style="color:#FF0000;">R</span><span style="color: rgb(0, 204, 0); line-height: 20.7999992370605px;">G</span><span style="color:#0000FF;">B</span> LED
 
*Order breakout board for <span style="color:#FF0000;">R</span><span style="color: rgb(0, 204, 0); line-height: 20.7999992370605px;">G</span><span style="color:#0000FF;">B</span> LED
 
**''How:'' Sparkfun
 
**''How:'' Sparkfun
 
*Create breakout board for&nbsp;[http://www.microchip.com/wwwproducts/Devices.aspx?product=MCP23017 MCP23017]&nbsp;and place on [https://github.com/RoboJackets/robocup-pcb GitHub repository]
 
*Create breakout board for&nbsp;[http://www.microchip.com/wwwproducts/Devices.aspx?product=MCP23017 MCP23017]&nbsp;and place on [https://github.com/RoboJackets/robocup-pcb GitHub repository]
 +
 +
=== Ball Sense ===
 +
 +
----
 +
 +
''Main Article: [[RC15BallSense|RC15BallSense]]''
 +
 +
The ball sensor is a pair of a laser diode and a phototransistor.
  
 
=== Kicker Board & Detection ===
 
=== Kicker Board & Detection ===
Line 426: Line 448:
 
----
 
----
  
==== To Do ====
+
==== <s>To Do</s> ====
  
*Create a small microcontroller interface for the kicker board
+
*<s>Create a small microcontroller interface for the kicker board</s>
**''Original Plan:'' Use a [http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/msp/ultra-low_power/msp430g2x_i2x/overview.page MSP430G2x]&nbsp;from [http://www.ti.com/ TI]
+
**<s>''Original Plan:'' Use a [http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/msp/ultra-low_power/msp430g2x_i2x/overview.page MSP430G2x]&nbsp;from [http://www.ti.com/ TI]</s>
**''Updated Plan:'' Use one of Atmel's [http://www.atmel.com/products/microcontrollers/avr/tinyavr.aspx ATtiny] microcontrollers
+
**<s>''Updated Plan:'' Use one of Atmel's [http://www.atmel.com/products/microcontrollers/avr/tinyavr.aspx ATtiny] microcontrollers</s>
***''Why:'' Much easier to implement a custom [http://en.wikipedia.org/wiki/In-system_programming ISP] with the mbed
+
***<s>''Why:'' Much easier to implement a custom [http://en.wikipedia.org/wiki/In-system_programming ISP] with the mbed</s>
****Can use the [http://arduino.cc/en/main/software Arduino IDE]
+
****<s>Can use the [http://arduino.cc/en/main/software Arduino IDE]</s>
****[http://developer.mbed.org/cookbook/mAVRISP mbed library] already exists
+
****<s>[http://developer.mbed.org/cookbook/mAVRISP mbed library] already exists</s>
*Generate snapshots of the 2011 kicker board graphs for reference
+
**<s>''Why: ''To allow for more disjoint kicker board development in future years. An attempt to perform more consistent soldnoid discharges with the microcontroller will&nbsp;be attempted this year.</s>
*Use a&nbsp;[[RC15MechanicalBaseIdentification|Serial Identification Chip]]&nbsp;for unique detection of mechanical bases
+
*<s>Use a&nbsp;[[RC15MechanicalBaseIdentification|Serial Identification Chip]]&nbsp;for unique detection of mechanical bases</s>
*[https://redmine.robojackets.org/issues/352 Measure the current] from kicker board currently used
+
*<s>[https://redmine.robojackets.org/issues/352 Measure the current] from kicker board currently used</s>
**Data exists for the 2011 kicker board. There is a 2011 kicker board (barebone)&nbsp;equipped&nbsp;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.
+
**<s>Data exists for the 2011 kicker board. There is a 2011 kicker board (barebone)&nbsp;equipped&nbsp;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.</s>
*Update the kicker board to accommodate&nbsp;the new battery's voltage of 18.5V
+
*<s>Update the kicker board to accommodate&nbsp;the new battery's voltage of 18.5V</s>
  
 
==== Completed ====
 
==== 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
 
*Determine the number of capacitors that will be used
**''Decision:'' <code>4</code>
+
**''Decision:''&nbsp;<font face="monospace">four (<code>4</code>) <code>820uF</code> capacitors</font>
  
 
=== Battery & Power ===
 
=== Battery & Power ===
Line 451: Line 475:
 
The following contains a listing of batteries that were considered for the 2015 design along with other battery/power adapters and accessories.
 
The following contains a listing of batteries that were considered for the 2015 design along with other battery/power adapters and accessories.
  
==== To Do ====
+
==== <s>To Do</s> ====
  
*Determine power switch [https://redmine.robojackets.org/issues/345 placement and integration]
+
*<s>Determine power switch [https://redmine.robojackets.org/issues/345 placement and integration]</s>
**''Option 1: ''Use a small switch paired with a relay
+
**<s>''Option 1: ''Use a small switch paired with a relay</s>
**''Option 2:'' Use standard mechanical switch
+
**<s>''Option 2:'' Use standard mechanical switch</s>
*Research switching regular modules
+
*<s>Research switching regular modules</s>
**[http://www.digikey.com/product-detail/en/OKI-78SR-5/1.5-W36-C/811-2196-5-ND/2259781 OKI-78SR] module
+
**<s>[http://www.digikey.com/product-detail/en/OKI-78SR-5/1.5-W36-C/811-2196-5-ND/2259781 OKI-78SR] module</s>
  
 
==== Completed ====
 
==== Completed ====
Line 482: Line 506:
 
*[http://www.hobbyking.com/hobbyking/store/__9461__Turnigy_2200mAh_5S_30C_Lipo_Pack.html Turnig 2200mAh 5S 30C]
 
*[http://www.hobbyking.com/hobbyking/store/__9461__Turnigy_2200mAh_5S_30C_Lipo_Pack.html Turnig 2200mAh 5S 30C]
 
*[http://www.cheapbatterypacks.com/product/813/1699/Thunder-Power-PL25-Series-2000mah-185v-5S-16C-LiPo-Battery-Pack.aspx Thunder Power 2000mAh 5S 16C]
 
*[http://www.cheapbatterypacks.com/product/813/1699/Thunder-Power-PL25-Series-2000mah-185v-5S-16C-LiPo-Battery-Pack.aspx Thunder Power 2000mAh 5S 16C]
 +
 +
=== Dribbler ===
 +
 +
----
 +
 +
==== <s>To Do</s> ====
 +
 +
*<s>Test diamond dribbler shape</s>
 +
*<s>If diamond-shaped dribbler fails, test hourglass dribbler shape</s>
 +
*<s>Test heatshrink viability as dribbler material</s>
 +
*<s>Verify notched dribbler effectiveness</s>
 +
 +
==== 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 ==
 
== Phase III: Production ==
Line 498: Line 544:
 
==== Solder Paste Stencil Creation ====
 
==== Solder Paste Stencil Creation ====
  
==== SparkFun uses [http://www.soldermask.com/ SolderMask, Inc] for their stencil needs ====
+
SparkFun uses [http://www.soldermask.com/ SolderMask, Inc] for their stencil needs
  
 
*Laser cutting kapton film
 
*Laser cutting kapton film
Line 511: Line 557:
 
**Untested but very promosing
 
**Untested but very promosing
  
==== Prototype Etching ====
+
==== Prototype PCB&nbsp;Etching ====
  
===== To Do =====
+
===== <s>To Do</s> =====
  
*Etch [http://www.ti.com/product/cc1201 CC1201] radio module boards once design is complete
+
*<s>Etch [http://www.ti.com/product/cc1201 CC1201] radio module boards once design is complete</s>
  
 
===== Completed =====
 
===== Completed =====
Line 525: Line 571:
 
*Obtain necessary etching chemicals
 
*Obtain necessary etching chemicals
 
**''Decision:''&nbsp;[http://en.wikipedia.org/wiki/Hydrogen_peroxide Hydrogen Peroxide] & [http://en.wikipedia.org/wiki/Hydrochloric_acid Muriatic Acid]
 
**''Decision:''&nbsp;[http://en.wikipedia.org/wiki/Hydrogen_peroxide Hydrogen Peroxide] & [http://en.wikipedia.org/wiki/Hydrochloric_acid Muriatic Acid]
[[Category:RoboCup]] [[Category:Electrical]]
+
[[Category:RoboCup]] [[Category: 2014-2015]]

Latest revision as of 21:39, 13 June 2018

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)

Electrical Board Error Logs

Past Electrical Designs

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


mbed Debugging

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


Max PCB Dimensions

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
  • 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


CC1101 C++ library

nRF24L01+ C++ library

To Do

  • Obtain breakout boards for CC1201 transceivers with integrated ANT-916-CHP antenna
  • Order CC1201 samples from TI
    • Current quantity: 21
  • 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 consume 0.2ms to 0.3ms of processing time @ 60 packets/sec
  • 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

RadioPrototype.png

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

  1. Create an account on Xilinx's website
  2. 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
  3. Install the program to your computer
    • The installer will prompt you to select an edition to install
      • Select ISE WebPACK
  4. 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
  5. 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 0x00)

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 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
    • Balanced signal standard: EIA RS 422
  • 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 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 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


MPU-9250 C++ library

MPU-6050 C++ library

Craxyflie's C code [MPU-6050]

PID C++ library

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

  • Order breakout boards (3) for MPU-6050
    • How: eBay
  • Order breakout board for MPU-9250
    • How: eBay

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]

    Ball Sense


    Main Article: RC15BallSense

    The ball sensor is a pair of a laser diode and a phototransistor.

    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: 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 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

    • 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

    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

    Completed

    • Change the first switching regulator to accomidate for the higher voltage battery
    • Finalized the new design's battery selection

    Battery Accessories

    All Batteries

    The following list contains batteries that were considered and known about during the battery selction period. The list is not inclusive.

    Dribbler


    To Do

    • Test diamond dribbler shape
    • If diamond-shaped dribbler fails, test hourglass dribbler shape
    • Test heatshrink viability as dribbler material
    • Verify 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

    Solder Paste Stencil Creation

    SparkFun uses SolderMask, Inc for their stencil needs

    • Laser cutting kapton film
    • Chemical etching aluminum
      • Untested but very promosing

    Prototype PCB Etching

    To Do
    • Etch CC1201 radio module boards once design is complete
    Completed