Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Robot Design and Control: Tube Climber Project - Prof. Lippold Haken, Study notes of Electrical and Electronics Engineering

A report on a robotics project where a robot was designed and built to climb up a vertical tube. The introduction, electronic and mechanical design, operation instructions, problems encountered, and conclusions. It also includes schematics, diagrams, and source code for the robot's finite state machine and controller.

Typology: Study notes

Pre 2010

Uploaded on 03/13/2009

koofers-user-j3z
koofers-user-j3z 🇺🇸

10 documents

1 / 25

Toggle sidebar

Related documents


Partial preview of the text

Download Robot Design and Control: Tube Climber Project - Prof. Lippold Haken and more Study notes Electrical and Electronics Engineering in PDF only on Docsity! Shaun Armstrong Tube Climber Robot ECE 395 (ADSL), Fall 2005 1 Table of Contents Page(s) Contents 2 Table of Contents 3 Introduction 3 - 4 Electronic Design 4 - 5 Mechanical Design 5 Operation Instructions 5 - 6 Problems 6 Conclusions 6 Ideas for Project Expansion Appendices 7 A: References and Data Sheets 7 B: Pin Assignments C: Diagrams and Schematics 8 Figure 01: Finite State Machine Diagram 9 Figure 02: Power Circuit for Valves 10 Figure 03: Delrin Manifold Schematics 11 Figure 04: Aluminum Manifold Schematics 12 Figure 05: Original Robot Manifold Schematics 13 Figure 06: Overall Robot Design 14 Figure 07: Control Box for Robot 15 Figure 08: Robot in Vertical 4” Diameter PVC Tube, Climbing Upward 16 Figure 09: Concept Sketch #1 of Original Project, “Burrowing Robot” 17 Figure 10: Concept Sketch #2 of Original Project, “Burrowing Robot” 18 - 24 D: Source Code 2 stroke and the lower air intake. All of the #10-32 intakes were ported to ¼” flexible plastic tubing. The lines of tubing were then run through the hole in the bottommost aluminum manifold of the robot and run as a “tail” to the robot controller. Further specifications can be found in Appendix C, Figures 03, 04, and 05. Operation Instructions The robot is able to climb 4” diameter hollow tubing as per my testing and demonstrations. First, power on the FPGA, connect the programming cable, and program the FPGA. Then, with the control box unpowered and both switches in the off position, connect the ribbon cable from the control box to pins 1 through 14 of bank D of the FPGA (see pin assignments table). Then, after making sure the FPGA connection is correct, connect a 6V power supply (output currently off) to the provided ports on the control box. Assuming that the appropriate tubes have already been connected through the output air ports on the control box, make sure that the air valve on the side of the control box is open, and connect a 45 psi compressed air supply. Place the robot into the tube you wish for it to climb, allowing space for the tail to feed into the tube. Once this has been done, enable your 6V power supply and flip the Run switch to begin the climbing process. Flip the Reset switch for 1 second at any time to disable the robot. For robot retrieval, disconnect your air supply from the control box, leaving the box’s external valve open. Allow the robot to run normally until its components deflate. Be prepared to stop the robot’s descent, as the robot will slide back down the tube. Problems Burrowing Robot My Burrowing Robot idea ran into problems from the start. The mechanism by which I wanted to dig initially ranged anywhere from using conveyor belts with oversized teeth to using cylinders covered in expanded teeth to displace dirt. My overall problem was not the displacement of the dirt, but the potential packing of dirt in front of the robot, which would immobilize the robot. After a number of potential designs (some of which are included in the Appendices of this report), I believed that a wedge-like design made of vacuum cleaner brushes would be able to clear enough dirt to allow the robot to move. Little did I know that the friction and pressure from the surrounding dirt on the top and bottom of the robot would prevent it from moving. At this point, I scrapped the idea and began to work on the Tube Climber. Tube Climber Two main problems with the Tube Climber came in the form of electrical problems and programming nuances. It took quite a number of weeks and numerous designs before I was finally able to build a functional finite state machine on the D2. The main problems were getting the clock divider to work properly and getting the board to properly interface with simple test protoboard layouts. I eventually solved the clock divider problem by looking at old code I had used in ECE 385 coupled with searching for syntax nuances of certain variable types in VHDL. The interfacing problem was 5 primarily due to not using large enough value resistors and not having a detailed enough specification of how much current the D2 could safely sink. The most frustrating problem with the Tube Climber was getting the inflatable air bladders not to leak. The bladders have a hole built in to one end of each bladder to allow pressurized water to pass through for their normal application. Unfortunately, these holes presented major problems regarding air leaks for my design. I wound up meeting with the head of the ECE Machine Shop, Scott McDonald, about twice a week to try to figure out a way to successfully seal the air bladders. After a large number of attempts at screwing them shut, gluing them with neoprene, clamping them, and other attempts, we finally found a solution in countersinking the manifolds to fit the ends of the bladders and screwing them into the aluminum manifolds. When the bladder would expand, the end of the bladder would press up into the countersunk area and form an airtight seal. This finally solved the largest problem of the project. Conclusion The Tube Climber project was quite a lot of fun. I enjoyed trying to use the air bladders for a purpose for which they were definitely not designed. I gained knowledge of how to work with pneumatics and air muscles, which will be useful for the future expansion of this project or any other pneumatics-related projects. The project successfully completed its re-designated goal of climbing up a vertical tube. Ideas for Future Project Expansion Use the Digilent D2 onboard parallel port instead of output banks A-F During the early phases of the project, I managed to burn out a D2 board due to an accidental electrical short and not following proper disconnection safety. The ports in the banks A-F connectors are unbuffered and can sink current directly into the Spartan 2 chip. This short could have been prevented had I used the parallel port instead, as all the parallel port pins are attached to resistors. Add ability to turn Another idea I had during the course of my project was to make the robot able to turn 90 degrees around corners. This would require the replacement of the 2-way pneumatic cylinder with an asymmetric set of cylinders or air muscles. The asymmetry of a set of three muscles or cylinders could be used to make the upper part of the robot enter into adjacent pipes. More digital control Instead of using pre-determined timing to control the expansion of the robot parts, I could instead use closed-loop feedback from sensors on the robot to sense when a bladder set is inflated. This would add a degree of challenge to the FPGA controller and make the project more digitally-based. 6 Appendices Appendix A: References and Data Sheets 1) 2N3053 Datasheet http://www.micropik.com/provisional/PDF/2N3053.pdf 2) Mouse Pneumatic Valves Datasheets: Models ECO-3M-, EC-2M http://www.poweraire.com/pdf/other/clippard/Mouse_Valves.pdf http://www.clippard.com/downloads/general/PDF_Documents/ NEW!%202005%20Catalog/Electronic%20Valves.pdf http://www.clippard.com 3) Digilent D2 FPGA (with Spartan 2 chip): http://www.digilentinc.com/Data/Products/D2/D2-rm.PDF http://www.digilentinc.com/Data/Products/D2/D2-sch.pdf Appendix B: Pin Assignments D Connector Bank Bank Pin # Signal D2 Board Pin # 1 GND - 2 VU* - 3 VDD33 (3.3V DC) - 4 Unused 127 5 OUT<0>** 125 6 OUT<3>** 126 7 OUT<1>** 122 8 Limit Switch / Reset 123 9 OUT<2>** 120 10 Start Button 121 11 OUT<4>** 115 12 OUT<7>** 119 13 OUT<5>** 113 14 OUT<6>** 114 * : The pin connected to VU was intentionally disconnected during robot use, as the use of VU could potentially cause a short and burn out the FPGA. ** : These are the output signals that controlled the eight valves. They were treated as a single 8-bit signal within the FPGA. 7 Figure 03: Delrin Manifold Schematics 10 I 1 i Figure 04: Aluminum Manifold Schematics 11 ~ } | fot | [o? MovuriNG | AzmsrRonG, savsl Pimensions A mevdling att af biteary f\ f\ 4 labatesie ects) — BCE 345 [ ' STARMS TRO LAWL. EDU | Ty | \ } {| | ma? Must attach te air blader 4 | Theeati Vecap lectler®) Wo 1 yo Thonaded needs 44 he 10-32 oa Theudeol 1 S20 oF threading s ee preumedi gee ~y - ij BLADDERS roe ee | pes veap tops * seul | am ' \ | pottem mounTinG tf \ bladder pe \ Neel } atl tet | le \ || Same a5 above, except Tor counter mont} | \ \ | 2ho37 threading | \ i a | height \ attach te aie bladde a <bove | eal | R : 1 avend inner | enleance 2 Ss ~Fiael wey to attich to EL deed thtendltg aX inner batten Filling | “ho pneumatic “cylintdee Figure 05: Original Robot Manifold Schematics 12 Figure 08: Robot in Vertical 4” Diameter PVC Tube, Climbing Upward 15 Figure 09: Concept Sketch #1 of Original Project, “Burrowing Robot” 16 Figure 10: Concept Sketch #2 of Original Project, “Burrowing Robot” 17 entity state_machine is Generic ( count_target : integer := 3 ); Port ( Button : in std_logic; limit_switch : in std_logic; Clk : in std_logic; Clk_main : in std_logic; counter_reset : out std_logic; count_enable : out std_logic; signals : out std_logic_vector(7 downto 0)); end state_machine; architecture Behavioral of state_machine is --Define finite state machine. type cntrl_state is (HALT, EXP_CYL, INF_TOP, DEF_BOT, RET_CYL, INF_BOT, DEF_TOP); signal state, next_state : cntrl_state; begin ---------------------------------------------------------------- -- operate_control -- -Controls state transitions of finite state machine. ---------------------------------------------------------------- --operate_control : process(limit_switch, Clk) operate_control : process(Clk, Button, limit_switch, Clk_main) begin if(limit_switch = '1') then state <= HALT; elsif(rising_edge(Clk_main)) then --Execute state on rising clock edge. state <= next_state; end if; end process; ---------------------------------------------------------------- -- get_next_state -- -Controls next state based on status of current state. ---------------------------------------------------------------- get_next_state: process(state, Clk) variable count_up : integer range 0 to count_target; begin if(rising_edge(Clk)) then count_up := count_up+1; case state is when HALT => --HALT state. if(Button = '1') then next_state <= EXP_CYL; else next_state <= state; 20 end if; count_up := 0; ---------------------------------------------------------- when EXP_CYL => --Expand pneumatic cylinder state if(count_up = count_target) then count_up := 0; next_state <= INF_TOP; else next_state <= state; end if; ---------------------------------------------------------- when INF_TOP => --Inflate top bladder if(count_up = count_target) then count_up := 0; next_state <= DEF_BOT; else next_state <= state; end if; ---------------------------------------------------------- when DEF_BOT => --Deflate bottom bladder if(count_up = count_target) then count_up := 0; next_state <= RET_CYL; else next_state <= state; end if; ---------------------------------------------------------- when RET_CYL => --Retract cylinder if(count_up = count_target) then count_up := 0; next_state <= INF_BOT; else next_state <= state; end if; ---------------------------------------------------------- when INF_BOT => --Inflate bottom bladder if(count_up = count_target) then count_up := 0; next_state <= DEF_TOP; else next_state <= state; end if; ---------------------------------------------------------- when DEF_TOP => --Deflate top bladder if(count_up = count_target) then count_up := 0; 21 next_state <= EXP_CYL; else next_state <= state; end if; end case; end if; end process; ---------------------------------------------------------- ---------------------------------------------------------------- -- output_variables -- -Controls outputs based on state ---------------------------------------------------------------- output_variables: process (state) begin case state is when HALT => count_enable <= '1'; counter_reset <= '0'; signals <= "00000000"; when EXP_CYL => count_enable <= '1'; counter_reset <= '0'; signals <= "00011000"; when INF_TOP => count_enable <= '1'; counter_reset <= '0'; signals <= "00000001"; when DEF_BOT => count_enable <= '1'; counter_reset <= '0'; signals <= "10000000"; when RET_CYL => count_enable <= '1'; counter_reset <= '0'; signals <= "00100100"; when INF_BOT => count_enable <= '1'; counter_reset <= '0'; signals <= "01000000"; when DEF_TOP => count_enable <= '1'; counter_reset <= '0'; signals <= "00000010"; end case; 22
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved