Objective:
The goal is to design a motor shield for the purpose of teaching motor control in a modern embedded computing environment. The popular arduino platform has substantial support and straight forward development tools that allow students to concentrate on developing control algorithms instead of learning software tools. This also allows students to leverage and improve their c programming while providing a gentel introduction to embedded systems. While there are a number of motor shields available for the arduino, none of them surveyed allow for closed loop control where current sensing is integrated into the motor driver. In addition, most of the boards are suitable for lower currents which eliminates their utility for controlling existing equipment. This project will create an arduino motor shield for the standard Duemilanove board which can control up the three motors (1 high current (30 Amps) and 2 lower current (2.5 Amp) all with integrated current sensing for closed loop control. In addition, the board will have interfaces for quadrature encoders with analog pre-processing to simplify their implementation.
Details:
The planned board will focus on closed loop control. An external board (arduino) will drive one high current motor (16V 30amps based on STMICROELECTRONICS VNH2SP30-E) and two lower current drivers (28 V 2.5Amp continuous 5 Amp peak drivers based on the FREESCALE SEMICONDUCTOR MC33887VW). Both the controllers will have current sensors routed back the the ADC on the micro for the closed loop control. In addition there will be three interfaces for quadrature encoders based on a 74XX74 flip flop.
First the schematic for one of the low current drivers. (Thanks to pololu and datasheet)
Will need to build this twice sharing the power caps, reverse protection mosfet and power input.
Here is the schematic for the high current driver (Again thanks to datasheet and pololu)
Student Task Sequence:
- Understand the Arduino environment. Install the current arduino environment and work through the basic tutorials on Lady Ada’s site. Get familiar with checking out equipment from Smeaton 303. You may be able to do this quickly, but take the time to understand them to save yourself grief later!
- Attach the ArduMotor board and interface it with the arduino. Use the sample sketch on the linked page. Chat with Dr. Lopes about some suitable motors in the lab to control.
- Define some simple objectives that you want to achieve with your test code with the arduoMoto board. This could be writing routinues to have the motor run for a specified time, forward backwards etc. If you are waiting for the protoboards to arrive (see next) rig up some encoders for the motor. (Either optical or hall effect.) Interface these to the ardumotor board. Write some code for the ardumotor board to do position control of the motors based on the encoders.
- Check and see if the 33887 and 2SP30 protoboards have arrived. Assemble these. (IE solder on headers and connectors.) Read all the available information on these boards.
- Write some arduino code to control the two motor driver boards. Port what you have done for the ardumotor board to support each of these boards.
- Use the current sense outputs from each of the boards. First connect these to the ADC. Will you need an amplifier for the current sense output?
- Once you understand the proto boards, lay out schematics to include all the parts on one shield. Meet with Shelia and the staff in SM303 to learn about this process at the Uni. Do some research to find a default cad model for an arduino shield. Think about all the things that need to go on the board. Use all surface mount components. Try to make the board with one controller(VN) and the other on the opposite(MC) Minimize the number of vias between the two sides of the board!!!!!!!! We can’t do plated thru holes.
- Order components. The motor driver chips and mosfets are already ordered. You will need to sort out all the small components with Shelia. Generate a BOM etc.
- Have the board made. Work with Shelia Storm and Bob to coordinate this.
- Populate the board.
- Test the board.
- While you are waiting for the board to be made start thinking about control code using the current sense data and/or the encoder data. Read about PID control. Implement a P, PD, and PID controller on the board. If you are stuck waiting on hardware, work in matlab and create a model of the transfer function of the system. Dr. Lopes will advise you during this portion.
- Once your board is tested and bugs are worked out, design a final product that takes into account good design criteria relative to an end user perspective. Convert the design to double sided and 2 or 4 layer using a much finer pitch. Think carefully about optimal connectors and connector placement. Get a set of quotes from local (Dr. Culverhouse is the inhouse expert on this.) and international vendors (olimex in romania and golden phoenix in china) to produce a set of 10 of the final board.
- Write your report!

