190 likes | 301 Views
Mover Project. Group A ECE 496 April 21 st , 2003. Group Members. Jason Hicks – Mechanical Designer Terry Jones – Software Programmer Brad Larson – Mechanical Designer Jimmy Simons – Group Leader/Programmer Santiago Zambrano – Web Designer/Communications. Overview.
E N D
Mover Project Group A ECE 496 April 21st, 2003
Group Members • Jason Hicks – Mechanical Designer • Terry Jones – Software Programmer • Brad Larson – Mechanical Designer • Jimmy Simons – Group Leader/Programmer • Santiago Zambrano – Web Designer/Communications
Overview • Goal – to create a two axis mover device to navigate a course in the smallest amount of time possible • Mechanical Design & Problems • Software/Control Design & Problems • Results & Conclusions
Mechanical design • Base & Frame Assembly • 2 Axis Mover Device • Motors • Encoders
Base & Frame Assembly • Acquired Aluminum Extrusion • Measure Maze Exterior • Assemble Base and Adjust To Fit • Erect Raised 2-Axis Support Structure • Attach Rods
Base & Frame Assembly Problems • Leveling • Fitting Rods • Adjust Rods for Bend due to Cart Weight • Acquiring Parts
2-Axis Mover Device • Purchased Base Mover and Cart • Modified to specifications of Maze • Added Parts for Stability and Reduced Friction • Fitted Cup
2-Axis Mover Device Problems • Friction between Rods and Chariot • Weight differential • Axial Strain and shutter
Motors • Tested and Discarded Original Motors • Acquired New Motors • Adjusted Motor Orientation • Acquired Replacement Belts • Implemented New Motors
Motor Problems • Original Motors were Insufficient • Original Belts had Dry Rot
Encoders • Acquired Encoders From Lab • Examined Encoders for complications • Modified Encoders for Attachment
Encoder Problems • Specific Tools were needed • Required Additional Hardware for Attachment
Software Design • Qmotor • Iobc -> getEncoderValue(0) • Iobc -> setDacValue(0,x) • While Loop • While(encoder[0] <=5000) { setDacValue getEncoderValue }
Software Design (cont.) • Iterative loop – designed to move diagonally. Small stair steps to advance in both the X and Y directions • while(situation) { while(encoder[0]<= X) while(encoder[1]<= Y) }
Control Design • Options • Constant voltage • Easy to implement • No way to start and stop the motor accurately • PD Loop control • Easily adjustable through the use of control variables • Voltage depends on distance (large distance = large voltage) • Sine wave control • Ramps the voltage up and then ramps it back down • Distance hard to compute
Sine Wave • Voltage = amplitude * Sin(frequency * encoder[1] + 0.2014) • Amplitude – adjusts voltage going to motor • Frequency – the inverse of the desired distance • 0.2014 – shifts the sine wave to start 0.2 at distance = 0
Software Problems • Sine wave initialization and start • Using control on the diagonal motions • Encoder reading errors • Overrun errors • repeatability • Control Frequency • Program method and loop control
Conclusion & Results • Bonus Day – movement with limited control • Score: 8/10 • Competition Day – finished course after several tries • Time: 5.6 seconds • Repeatability and Encoders
Thank you Any Questions?