Project Weekly Progress Report

Project Title:
Microcontroller Implementation of a Small Robot Arm Controller

Week of:  March 21st, 2000

Engineers:
Megan Bern and Ritesh Patel

Advisor’s Signature:  _________________

Grade:  _______

=================================================================
 

Objective:

        For the week of March 21st, 2000, the first objective is to fix a problem with the controller shown in Figure 1.  This block diagram does not represent unity gain.  The lack of a gain of 0.05 after the step input will give 20° of position of the robot arm for every 1 volt input into the controller.  The second objective is to continue the menu system.

Figure 1:
Block Diagram of P Controller

Progress:

         The problem with Figure 1 was that the value used for 35.66 is software was 70/3.  This value, 70/3, is not equal to 35.66.  Instead the value below will replace 70/3 in software.

 
        When this number is divided by 20, it becomes:
 

        Replacing 70/3 by [7/4+1/30] will make a huge different in the output position of the robot arm.  After the change was made in the software, Prg4d_df.a51, attached to this report, the robot arm moved from approximately -30° to +30°.  This was compared to the simulation of Figure 1 using Simulink for a step input of 5V.  This result is shown in Figure 2.

Figure 2:
Simulink Results for P Controller


 

        The simulation results and the experimental results are a very close match.  This verifies that our P controller shown in Figure 1 has been implemented in software.

         The menu system was the next objective for this week.  We have completed the main menu prompt.  It reads the following:

Press 1 or 2
1=In 2=Out For Menus

        The code is written to except only a 1 or a 2 from the keypad.  This is shown in Prg4d_df.a51.  If a 1 is excepted, the code will jump to a INPUT1 subroutine.  If a 2 is excepted, the code will jump to a OUTPUT1 subroutine.

 Once in the INPUT1 subroutine, the microcontroller will write the following to the LCD:

Press 1 0r 2
1=JOYSTICK 2=INSIG

        The code is written to except only a 1 or a 2 from the keypad.  If a 1 is excepted, the RAM location called joy will change from a 0 to a 1.  The interrupt will check this RAM location and allow the input to an A/D from the joystick if there is a 1.  It will then loop back to the main menu prompt and wait for the next input before it turns the joystick off.  If a 2 is excepted, it will then go to another prompt which has not been developed yet.  Right now it just loops back to the main menu prompt.

     Once in the OUTPUT1 subroutine, the microcontroller will write the following to the LCD:

Press 1 For Error
or 2 For Other Sigs

        The code is written to except only a 1 or 2 from the keypad.  If a 1 is excepted, the error signal will be displayed which has not been developed.  For now, it loops back to the main menu prompt.  If a 2 is excepted, the microcontroller will write the following to the LCD:

Press 1 For Output
or 2 For Other Sigs

        The code is written to except only a 1 or 2 from the keypad.  If a 1 is excepted, the output position signal will be displayed which has not been developed. For now, it loops back to the main menu prompt.  If a 2 is excepted, the microcontroller will write the following to the LCD:

Press 1 For Filtered
Pos or 2 Other Sigs

        The code is written to except only a 1 or 2 from the keypad.  If a 1 is excepted, the filtered position signal will be displayed which has not been developed. For now, it loops back to the main menu prompt.  If a 2 is excepted, the microcontroller will write the following to the LCD:

Press 1 For Command
or 2 For Other Sigs

        The code is written to except only a 1 or 2 from the keypad.  If a 1 is excepted, the command signal will be displayed which has not been developed. For now, it loops back to the main menu prompt.  If a 2 is excepted, it loops back to the main menu prompt since feedforward control has not been developed yet.
This is as far as we got on the menu system.
 
 

Conclusion:

         Overall we implemented the block diagram shown in Figure 1 in software.  The robot arm was moving as expected.  We are on schedule.  Week 9 will be used to proceed with our menu system. Below is the schedule for weeks 9-12.

Schedule for Weeks 9-12

                                                                             Week 9 Menu System
                                                                             Week 10 Testing and Evaluation
                                                                             Week 11 Modify/add to Menus
                                                                             Week 12 Proportional-derivative Controller