Vous êtes sur la page 1sur 72

All Electric City Vehicle Report 2009

THE UNIVERSITY OF ADELAIDE

SCHOOL OF ELECTRICAL & ELECTRONIC ENGINEERING
ADELAIDE, SOUTH AUSTRALIA  5005.

B.E. in Electrical and Electronic Engineering


B.E. in Computer Systems Engineering
B.E. in Information Technology and Telecommunications

ELEC ENG 4039 A/B HONOURS PROJECT

All Electric City Vehicle Project


Prepared by Steven Dang 1147175

Each student at Level IV of the course in Electrical and Electronic Engineering, Computer
Systems Engineering and Information Technology and Telecommunications is required to
complete this course. The course involves approximately 240 hours of project work over the
whole academic year. Students are assessed on their performance in the project, a written
proposal, this written report, a technical paper, and two seminar presentations.

Date submitted: Oct 30th 2009

Supervisor: Assoc Prof Nesimi Ertugrul

Signature of Supervisor:

1
All Electric City Vehicle Report 2009

School of Electrical and Electronic Engineering

Assessment Cover Sheet


Student Name Steven Dang
Student ID 1147175
Assessment Title Final Project Report
Course/Program B.E in Computer Systems Engineering
Lecturer/Tutor Mr Charlie Green
Date Submitted 30/10/2009
OFFICE USE ONLY
Date Received

KEEP A COPY
Please be sure to make a copy of your work. If you have submitted assessment work electronically make sure you
have a backup copy.

PLAGIARISM AND COLLUSION


Plagiarism: the use of another person’s ideas, designs, words or works without appropriate acknowledgement.
Collusion: assistance in the production of an assessment submission without the express requirement, or consent or
knowledge of the assessor.

CONSEQUENCES OF PLAGIARISM AND COLLUSION


The penalties associated with plagiarism and collusion are designed to impose sanctions on offenders that reflect the
seriousness of the University’s commitment to academic integrity. Penalties may include: the requirement to revise
and resubmit assessment work, a result of zero for the assessment work; failing the course, expulsion and/or a
financial penalty.

I declare that all material in this assessment is my own work except where there is clear acknowledgement or
reference to the work of others. I have read the University Statement and Definition of Plagiarism and Related
Forms of Cheating (http://www.adelaide.edu.au/policies/?230).

I give permission for my assessment work to be submitted for electronic checking of plagiarism.

Signed………………………………………………. Date ……………………………………………

PLEASE SIGN HERE

2
All Electric City Vehicle Report 2009

Acknowledgements

My profound thanks go to Associate Professor Nesimi Ertugrul for establishing this project,
allowing me to be a part of it, and providing his own time, knowledge and assistance throughout
the year.

My thanks also go to Ian Linke and Brad Pullen of the workshop, who offered us great assistance
on the project and provided us with their ideas and technical knowledge.

In addition, I’d like to express gratitude to Jaison Jacob from Semikron Pty Ltd and Prachi from
Texas Instruments who both provided assistance from their separate fields in problems
encountered by the project group in the development of the electric vehicle.

I’d like to thank our sponsors Redarc, who provided the financing for the purchase of 32 lithium-
ion batteries, with which the car would not be able to be powered and driven.

Finally, thanks must go to Michael Dawes and Brett McKinnon, my two project members who
worked on the electric car with me throughout the year.

3
All Electric City Vehicle Report 2009

Executive Summary

The aim of this project is to produce an electric vehicle by converting an existing internal
combustion engine driven vehicle to a vehicle that can be powered exclusively by electricity.
The vehicle will be designed to specifications derived from regular city commuting.

Electric vehicles represent the most environmentally friendly car fuel because it produces little or
no carbon dioxide emissions and in almost all cases, will produce fewer emissions than that of
the standard internal combustion engine car.

With the increase of prices in oil, combined with a growing awareness of the disastrous effects of
global warming, the electric vehicle is a welcome solution to an alternative type of transportation
that is environmentally friendly.

The purpose of this report is to document the work spent on this project. This report includes two
main sections; the technical content and the project management content. The technical content
entails research, design, implementations, experiments and results whilst the project management
content covers the work breakdown, timelines, milestones, group management, risks and the
budget. A brief overview is also given as an introduction into this electric car project, providing
details of its background, significance and requirements.

Producing an all-electric vehicle that can be driven on Australian roads holds great significance
in today’s society. It will demonstrate the current technologies involved in electric vehicles and
become a platform and inspiration for which everyday people who want to convert their internal
combustion cars into an all-electric car can look to.

The main concerns involved with the successful completion of this project will be the
programming of the motor control, the charging system for the batteries, obtaining the motor
angle for calculations in the motor control programming, and overall testing to ensure the car
meets all Australian Design Rules and Regulations.

4
All Electric City Vehicle Report 2009

Page of Contents
Acknowledgements........................................................................................................................3
Executive Summary.......................................................................................................................4
1. Introduction.............................................................................................................................8
1.1. Aim................................................................................................................................................................8
1.2. Background...................................................................................................................................................8
1.3. Project Scope.................................................................................................................................................9
1.4. Key Requirements.......................................................................................................................................10
1.5. Hardware Requirements..............................................................................................................................10
1.5.1. Donor Vehicle.........................................................................................................................................11
1.5.2. Motor.......................................................................................................................................................11
1.5.3. Lithium-Ion Phosphate Batteries............................................................................................................11
1.5.4. Inverter....................................................................................................................................................11
1.5.5. Sensors & Signal Conditioning...............................................................................................................11
1.5.6. Safety Circuitry.......................................................................................................................................12
1.6. Software Requirements...............................................................................................................................12
1.6.1. DSP Programming..................................................................................................................................12
1.6.2. Ni-Can Monitoring..................................................................................................................................12
2. System Overview...................................................................................................................13
2.1. 3 Phase Permanent Magnet Synchronous AC Motor..................................................................................13
2.2. Thundersky TS-LFP90AHA Batteries........................................................................................................14
2.3. Semikron SKAI 3001 GD12-1452W Inverter............................................................................................14
2.4. Resolver..................................................................................................................................................15
2.5. R/D Converter.........................................................................................................................................15
2.6. Throttle Potentionmetre...............................................................................................................................15
3. Motor Control..............................................................................................................................................16
3.1. Field Orientated Control of PMSM.............................................................................................................17
3.2. Communication between DSP and host computer......................................................................................18
3.3. Project Build Initiation Files.......................................................................................................................21
3.4. Motor Control Modules...............................................................................................................................23
3.4.1. Resolver Sensor......................................................................................................................................23
3.4.2. Current Sensors...........................................................................................................................................26
3.4.3. Clarke Transform........................................................................................................................................27

5
All Electric City Vehicle Report 2009

3.4.4. Park Transform............................................................................................................................................28


3.4.5. Space Vector Modulation............................................................................................................................28
4. Analysis of Software..............................................................................................................34
4.1. Resolver Input Testing................................................................................................................................34
4.2. Delay Methods............................................................................................................................................35
4.3. Running from FLASH.................................................................................................................................36
4.4. Clock...........................................................................................................................................................36
4.5. Resolver Output...........................................................................................................................................37
4.6. Space Vector Testing..................................................................................................................................38
5. Running the Motor................................................................................................................40
5.1. 8 State Switching Pattern............................................................................................................................40
5.2. Programming the Control Scheme..............................................................................................................40
5.3. Syncronising with the Rotor Angle.............................................................................................................42
5.4. Setup............................................................................................................................................................43
5.5. Running the Program..................................................................................................................................43
6. Project Management.............................................................................................................45
6.1. Division of Work.........................................................................................................................................45
6.1.1. Project Research..........................................................................................................................................46
6.1.2. Signal Conditioning.....................................................................................................................................46
6.1.3. Battery Monitoring System.........................................................................................................................46
6.1.4. Safety Circuitry...........................................................................................................................................46
6.1.5. Motor Position Sensor Testing....................................................................................................................47
6.1.6. DSP Programming.......................................................................................................................................47
6.1.7. Testing and Monitoring of Motor................................................................................................................47
6.1.8. Install Battery Box......................................................................................................................................47
6.1.9. Integration and Testing of Battery Monitoring System..............................................................................48
6.1.10. Integration and Testing of Safety Circuitry.................................................................................................48
6.1.11. Vehicle Roadworthy Test............................................................................................................................48
6.1.12. First Test Drive............................................................................................................................................48
6.2. Scheduling...................................................................................................................................................49
6.3. Communication...........................................................................................................................................51
6.4. Budget.........................................................................................................................................................52
6.5. Risk Analysis...............................................................................................................................................53
7. Conclusion..............................................................................................................................55
8. References..............................................................................................................................56
Appendix A...................................................................................................................................57

6
All Electric City Vehicle Report 2009

Appendix B...................................................................................................................................58
Appendix C...................................................................................................................................59
Appendix C

List of Figures
Figure 1: System Schematic..........................................................................................................13
Figure 2 : System Implementation of Motor Control....................................................................16
Figure 3 : Overall block diagram of FOC of the PMSM...............................................................17
Figure 4: Spectrum Digital Configuration Utility.........................................................................19
Figure 5: Setup for connection between DSP and host.................................................................20
Figure 6: Port A Data and Direction Control Register..................................................................25
Figure 7: Maximum Conversion Channels Register MAXCONV................................................27
Figure 8: Mathematical Clarke Transform....................................................................................28
Figure 9: Mathematical Park Transform........................................................................................28
Figure 10 : Schematic of 3 phase inverter.....................................................................................29
Figure 11: Switching pattern of 3 phase inverter...........................................................................30
Figure 12: Space Vector switching patterns..................................................................................30
Figure 13: Compare Control Register A........................................................................................31
Figure 14: T1 and T2 Control Register..........................................................................................32
Figure 15: Channel 1-R/D, Channel 2-SCSB................................................................................34
Figure 16: On Chip Flash Programmer.........................................................................................36
Figure 17: Channel 2-Clock...........................................................................................................37
Figure 18: Watch Window for resolver angle...............................................................................38
Figure 19: 3 ph power supply........................................................................................................39
Figure 20: Switching Pattern.........................................................................................................40
Figure 21: Transistor Bit Representations.....................................................................................41
Figure 22: Setup Diagram..............................................................................................................43
Figure 23: Gantt Chart...................................................................................................................49
Figure 24: Project Budget..............................................................................................................52
Figure 24: Project Budget
List of Tables
Table 1: Interface Connector Pin Assignment AMPSeal 14 pin...................................................23
Table 2: I/O MUX Control Register A Configuration...................................................................24
Table 3: Project Risks....................................................................................................................50
Table 4: People Risks....................................................................................................................50

7
All Electric City Vehicle Report 2009

Table 4: People Risks

1. Introduction

1.1. Aim

The aim of this project is to produce an electric vehicle by converting an existing internal
combustion engine driven vehicle to a vehicle that can be powered exclusively by electricity.
The electric vehicle is intended to be road legal in order for it to be driven in the city.

The existing vehicle used for this project was a red 1993 Mazda MX5, which provided a sleek,
light and well balanced body for the electric vehicle.

1.2. Background

Global warming threatens massive changes around the world in the near future, with scientists
confirming that global average temperatures have increased by 1.3oF over the last century and
average sea levels increased by approximately 6.7 inches worldwide. Worldwide spring events
such as bird migration are occurring earlier in the year and the annual extent of the Arctic sea ice
has decreased by 2.7% per decade since 1978.

It has come to a scientific consensus that human activities are the source of global warming over
the last half century. A primary culprit in global warming, air pollution and climate change is the
emissions of carbon dioxide (CO2), with a staggering 33% of these carbon dioxide emissions
coming directly from transportation in the US.

An increasing recognition of the effects of global warming combined with high oil prices has
seen research and development into alternative fuel-type transportation being conducted. This
has become a top priority both in Australia and around the world.

One solution is the electric car. An electric car is a type of alternative fuel car that utilises
electric motors and motor controllers instead of an internal combustion engine. Electric cars
represent an environmentally friendly and cost-effective form of transportation. Because electric

8
All Electric City Vehicle Report 2009

motors are more efficient that internal combustion engines, vehicles that use electricity almost
always produce less carbon dioxide emissions than gasoline vehicles.

The concept of an electric car is by no means a new one, with electricity being one of the oldest
energy sources to provide a fuel source for vehicles. The first electric car was developed as early
as 1884 and was the preferred choice of cars. However, the introduction of the internal
combustion engine in 1920, with allowed vehicle to travel greater distances, be cheaper to
purchase and more affordable to run, brought about the demise of the electric car. Technological
limitations didn’t help the electric vehicle either, with a top speed of approximately 32km/ph
achievable and battery technology was not advanced enough to allow for enough power to travel
greater distances.

Due to increasingly higher oil prices and a public awareness of global warming relating to
carbon dioxide emissions, the electric car is coming back into today’s society.

Benefitting the concept of an electric car is the development in the underlying technologies
associated with electric vehicles. This includes improvements in lithium-ion battery technology
and the introduction of the hybrid car, which combines an internal combustion engine with
supplementary electric motors to run the car at idle and low speeds. Technological limitations
that hindered the growth of the electric car in the past have now been overcome. With today’s
technology at disposal, the electric car can be developed to match performances of an internal
combustion engine whilst producing almost no carbon dioxide emissions.

1.3. Project Scope

The scope of the project was to research, design and develop the essential parts allowing for the
car to be driven and powered exclusively by electricity. The system was broken down into three
main parts; motor control using the onboard DSP located inside the inverter, a resolver board to
determine the angle of the motor, and applications and measurements that could be made
available through the CAN bus.

9
All Electric City Vehicle Report 2009

The scope of the project also includes integration of all main and secondary sub-systems,
purchasing cables to run through the car, testing, designing safety circuitry, and finding
sponsorship.

1.4. Key Requirements

This project has the following key requirements, with justifications provided for each;

• The lithium-ion batteries, in total, will be required to provide a driving distance of


approximately 50km. It has been estimated that in a regular day of city commuting, a
driving distance of 50km will be sufficient for travel and thus provides the justification
for the requirement.

• A viable and simple charging system. The car will need to be charged regularly and a
simple charging system is deemed to be necessary. It is aimed for the batteries to be
charged via a low-cost and green electrical power source, but for the time being, it is
required that the batteries can be charged via a standard power point.

• The electric car must comply with all Australian Design Rules and regulations. As the car
is intended to be driven in the city, it must me registrable, road legal, and complies with
the ADRs.

• Public appeal. For the electric vehicle to become a main form of transportation, it must
appeal to the public, in terms of not only ergonomics, but also in performance and safety.

• External sponsorship. Gaining external sponsorship is one of the aims of this project.
Sponsorship not only provides the project team with financial help, it also helps in
advertising the project to the public.

1.1. Hardware Requirements

The hardware in the vehicle, including the motor, inverter, cables, batteries and the vehicle itself,
must meet several requirements detailed below;

10
All Electric City Vehicle Report 2009

1.1.1. Donor Vehicle

The donor Mazda MX-5 must meet several government regulations in order to be registered. The
vehicle must comply with size and mass restrictions described by the Department of Motor
Vehicles. Safety requirements such as maintaining normal steering and braking must also be met.

1.1.2. Motor

The original internal combustion engine located within the Mazda MX-5 needs to be replaced
with the supplied 3-Phase Brushless Permanent Magnet Synchronous AC motor. This motor was
used in the Toyota Prius, 3rd generation.

1.1.3. Lithium-Ion Phosphate Batteries

32 Thundersky 90 Ahr LiION batteries have already been supplied. The batteries will need to be
installed into the designed battery boxes for the vehicle, and required to provide enough energy
between charges for the vehicle to travel at least 50km. A battery charging system and a battery
monitoring system must be designed and installed to effectively charge and monitor the batteries.
The batteries must be charged via a standard household 240V AC power supply.

1.1.4. Inverter

The Semikron SKAI 3001GD12-1452W inverter is used to convert the direct current (from the
batteries) to alternating current (supplied to the motor). It will be required to control the motor,
via a built in programmable Digital Signals Processing (DSP) chip, manufactured by Texas
Instruments. The requirements of this will be further discussed in the software section.

1.1.5. Sensors & Signal Conditioning

In order to control the motor, the rotor position from the sensor in the motor must be conditioned
and fed back into the inverter. The raw signal for the rotor position information is provided in the
form of an analogue signal, and must be converted into a digital signal.

11
All Electric City Vehicle Report 2009

1.1.6. Safety Circuitry

Safety circuitry for the vehicle must be designed and installed in order to ensure the user or users
are properly protected from the high voltages running through the vehicle at all times. An
emergency shutdown must also be installed to shutdown the vehicle immediately in the case of
an emergency. This emergency shutdown button must be accessible to the driver, but must not be
located in a position that enables it to be accidently pressed.

1.2. Software Requirements

The software requirements of this project will consist of two main sections;

1.2.1. DSP Programming

Ability to program the inverter has been given by Texas Instruments through the use of the
TMS320LF2407A DSP programmable chip located on board the inverter. A connection is
required from the DSP to the computer and achieved through a 14pin JTAG emulator which
connects to the PC via a parallel port to load the programs onto the inverter.

Programming of the DSP will be completed using the TI Code Composer Studio IDE, which
supports both C and Assembly language programming.

The main focus of the DSP programming is to control the inverter, which effectively becomes
the brains of the motor. Requirements for the DSP will be design, development and testing of
code programmed for motor and torque control.

1.2.2. Ni-Can Monitoring

Ability to monitor inverter operations has also been given, this time by National Instruments.
Monitoring of the inverter will be achieved via the Ni-CAN data logging interface software, Ni-
CAN for Windows. A connection is required from the CAN port of the inverter to the PC
through USB.

12
All Electric City Vehicle Report 2009

2. System Overview

The system design was broken down into subparts as shown in the figure below;

Figure 1: System Schematic

2.1. 3 Phase Permanent Magnet Synchronous AC Motor

The synchronous AC motor was used as it provided more efficiency compared to the DC motor.
It was originally used in the 3rd generation Toyota Prius and generates a maximum of 50 kW @
1200 rpm and 400 Nm @ 0 rpm of torque. The main drawback of this type of motor was that it
required rotor position feedback and is thus harder to control.

The synchronous motor has two primary parts; the stator (stationary) and the rotor (rotating). In
order for the motor to rotate, two fluxes are needed from the stator and rotor respectively. The
use of surface mounted permanent magnets is used to generate the fluxes.
The motor will be driven by a sin-wave voltage coupled with the given rotator position. The
generated stator flux combined with the rotor flux defines the torque and speed.

13
All Electric City Vehicle Report 2009

The motor has been modified for it to be attached to the existing drive train of the Mazda MX5
body and it estimated to be three times more efficient than a standard internal combustion
engine.

2.2. Thundersky TS-LFP90AHA Batteries

The Thundersky TS-LFP90AHA batteries provide a nominal capacity of 90 Ah and have an


operating voltage between 2.5 – 4.25V. Each battery weighs approximately 3.2kg and has
dimensions 145 x 220 x 61 mm. The batteries will need to be operated in an operating
temperature between -25°C and 75°C.

The Thundersky batteries are lithium-iron phosphate (LiFeYPO4) rechargeable batteries, where
the lithium ion moves from the negative electrode to the positive electrode during discharge and
from the positive electrode to the negative electrode during charge. The lithium-ion phosphate
batteries are a relatively new technology.

The advantages of lithium-iron phosphate batteries is that it’ll induce a slow loss of charge when
not in use, has no memory effects, and has one of the best energy-to-weight ratios. However, the
batteries can be easily damaged due to overcharging or discharging.

2.3. Semikron SKAI 3001 GD12-1452W Inverter

The Semikron Inverter is required to convert the DC voltage from the batteries to 3 phase AC to
power the permanent magnet synchronous AC motor.

This particular inverter has been developed for electric vehicle applications and incorporates a
heat sink, integrated current sensors, integrated temperature sensors, gate drivers and a controller
board. There are six Insulated Gate Bipolar Transistors (IGBT) located within the inverter that
are used to control the motor. This is further discussed in section 3 of this report.

The controller board located within the Semikron Inverter provides the interface circuitry for the
gate drives, voltage, current and temperature measurements. It also includes a Digital Signals
Processing (DSP) chip that is programmable and used to control the motor.

14
All Electric City Vehicle Report 2009

2.4. Resolver

The Tamagawa Singslyn Variable Reluctance Resolver is a position sensor that measures the
instantaneous angular position of the rotating shaft. It is attached to the synchronous AC motor
and operates by resolving the mechanical angle of the rotor into its Cartesian (X-Y) components.
The relationship between the rotor angle and the X-Y components is a right angle triangle.

Each angle has a unique combination of sine and cosine values, which mean the resolver can
provide the rotor position angle in one revolution (360 degrees) of the motor.

2.5. R/D Converter

The resolver outputs an analogue signal that must first be converted into a serial digital signal
before it can be fed into the inverter. This is achieved through the use of the Resolver to Digital
PCB circuit.
To convert the analogue signal, the R/D converter does two things; demodulates the signal and
then determines the angle to provide a digital representation of the rotor angle through
trigonometric identities. The R/D converter outputs the required digital angle to be used by the
inverter.

2.6. Throttle Potentionmetre

The throttle potentionmetre is similar to the Curtis PB-6 Pot Box that has been modified to
provide a 0 – 3V analog signal to the Semikron Inverter. It is powered by a 5V power supply and
uses the existing accelerator pedal and accelerator cable.

15
All Electric City Vehicle Report 2009

3. Motor Control

Motor control is required to convert the DC source to AC power to drive the motor. There are
two inputs into the inverter that come in the form of motor control sensors; the resolver and the
throttle potentionmetre.

Control of the motor is provided by the Semikron inverter, which contains the on-board
programmable Texas Instruments DSP TMS320LF2407Achip.

Motor control is based on the sensored Field Orientated Control (FOC) of the permanent magnet
synchronous AC motor using a resolver sensor.

The overall system for control implementation of the 3 phase permanent magnet synchronous
motor is shown in figure 2 below.

Figure 2 : System Implementation of Motor Control

16
All Electric City Vehicle Report 2009

The 3 phase permanent magnet synchronous motor is powered by the SKAI inverter. The
TMS320LF2407A DSP chip will be programmed to generate six pulse width modulations
(PWM) by means of space vector modulation techniques for six power switching devices in the
inverter. There are three inputs; the throttle potentionmetre, the three currents measured from the
inverter (after several calculations) and a digital signal coming from the resolver.

3.1. Field Orientated Control of PMSM

Using a field orientated control technique theoretically allows for the motor torque to be
controlled. The overall block diagram of field orientated control of the permanent magnet
synchronous motor using a resolver sensor is shown in figure 3 below.

Figure 3 : Overall block diagram of FOC of the PMSM

17
All Electric City Vehicle Report 2009

Field orientated control consists of controlling the stator currents that will be represented by a
vector. The control is based on projections that transform the three phase time and speed
dependant system into a two co-ordinate time invariant system.

The approach to implement field orientated control was to split up the overall system design into
separate, smaller modules that were to be programmed and tested individually. Once all modules
were completed, integration of all separate modules would be possible along with further testing
of the whole system.

3.2. Communication between DSP and host computer

Communication between the target TMS320LF2407A DSP and the host computer are provided
by a Spectrum Digital XDS510 PP PLUS JTAG Emulator.

The Spectrum Digital XDS510PP PLUS JTAG Emulator requires an external 5V power supply
and connects to the computer through a parallel cable. It is compatible with the
TMS320LF2407A DSP and is essentially the umbilical cord between PC software tools and the
target DSP.

Initially, there were quite a few problems in establishing communication between the target DSP
and the host computer.

From consulting with both Spectrum Digital (Manufacturers of the XDS510 PP JTAG Emulator)
and Semikron, the following steps are required to be followed in order to establish a connection;

 Turn off power to both the host computer and the target DSP
 Ensure that the drivers for the JTAG Emulator have been installed on the host computer
 Connect the JTAG Emulator to the host computer via the parallel cable
 Plug in the 5V power supply into the JTAG Emulator
 Plug in the 12V power supply into the 14pin connector located on the Semikron Inverter
 Connect the JTAG Emulator to the DSP via the 2x7 JTAG connection
 Apply power to the JTAG Emulator, DSP and host computer

18
All Electric City Vehicle Report 2009

Once these steps have been followed correctly, a Spectrum Digital Config utility is available
(this utility program will be installed with the JTAG Emulator drivers) that communicates
directly with the JTAG Emulator to test both the emulator and the software communication
layers that communicate with the emulator. The utility allows the determination of whether there
exists a problem and if it’s the emulator side or the software side.

After opening the SDConfig utility (default location will be where the drivers are installed),
highlight address 378 (default I/O address for XDS510PP PLUS JTAG Emulator), and from the
toolbar, select Configuration, Ports Available, Printer and the available ports will be shown in
the console window.

From the toolbar again, select Emulator, Test. This checks the connection all the way to the
target DSP and the emulator target scan chain length will be shown in the console window if the
connection is successful. This is shown in figure 4 below.

19
All Electric City Vehicle Report 2009

Figure 4: Spectrum Digital Configuration Utility

Figure 5 below is a diagram to setup a connection between the target DSP and the host computer.

20
All Electric City Vehicle Report 2009

Figure 5: Setup for connection between DSP and host

The 2x7 JTAG connectors from the Semikron Inverter and the JTAG Emulator were originally
both female connectors. After consulting with the workshop, a bridge connector was acquired
that converted one of the female connectors into a male connector. This allowed the JTAG
connections to be established.

It is important that all power is turned off initially before any components are connected. It is
very common for the connection to not be established if this is not the case. It is also important
that the target DSP receives the 12V power otherwise the connection cannot be setup.

The Spectrum Digital JTAG Emulator provided the vital link between the DSP and the host
computer. It provided the team with a development and debugging tool that could be used to
access the state of the DSP’s memory in real time and allowed for uploading of developed code
to control the motor.

1.1.1. Code Composer Studio v3.3


21
All Electric City Vehicle Report 2009

Code Composer Studio is an integrated development environment for TI’s DSPs and
microcontrollers. It includes compilers, source code editor, project build environment, real-time
mode, and debugger. Also included in the development environment are output windows that
allow for monitoring of the DSP memory and registers. The output window was a major feature
in Code Composer that realistically allowed the group to monitor the DSP memory, system
registers and user defined variables.

It was decided that programming of the DSP would be done in the C programming language
(Code Composer offers C and Assembly language). C provided us with a higher level language
that allowed for a larger command set, more functions to use, and easier to develop code than
assembly language.

Code Composer Studio needs to be setup when run the first time to establish the correct target
boards. From the setup menu, F2407A XDS510PP Emulator needs to be selected. This
corresponds to the TMS320LF2407A DSP connected to a XDS510PP Emulator connection that
we have. Note that the emulator should be configured for I/O port 0x378.

Once Code Composer has been setup correctly, the main screen will be accessible. From the top
toolbar, select Debug, Connect. This will connect Code Composer with the DSP and allows for
loading/testing of developed code. There is an external LED on the JTAG Emulator that will turn
on once Code Composer has connected. Note that before this step is taken, SDConfig should be
used to test the connection.

1.2. Project Build Initiation Files

Initial files are required inside the project build folder other than the main source file in order for
the project to be built correctly and be loadable onto the target DSP. These files are a 2407A
general extension language file, a linker command file, a header file, a vector asm file and the
source file.

The general extension language is an interpretive language that is similar to the C programming
language and allows for the creation of functions in Cod e Composer. The 2407A GEL file is

22
All Electric City Vehicle Report 2009

unique to the TMS320LF2407A DSP and is used to initialise the DSP’s functions, memory
addresses and automate project build options. This GEL file was automatically loaded the first
time the DSP was connected to Code Composer and has since been copied and moved into the
project build folder.

The linker command file was required to be developed by the project team as it did not come
with the DSP. The linker file was needed to configure the system memory by allocating memory
spaces specifically for their specified features. For example, memory spaces needed to be
defined for where the developed code would reside in memory, where interrupts would reside
and where inputs or outputs were mapped to. The system memory was programmed into the
linker command file similar to what was described from the memory map detailed in the DSP’s
datasheet.

This linker command file initially caused various problems as if it was not programmed
correctly, the DSP would throw an error relating to the linker file and would not let anything be
loaded onto its memory. With discussion with Texas Instruments as well as viewing example
linker files, it was eventually noted that the origin of the memory map started at memory address
0x0020 instead of 0x0000 and a separate page needed to be defined to include all memory
sections.

The source file is named main.c and contains the developed code to control the motor using a
Field Orientated Control technique.

The vector asm file includes all imitations for the system interrupts.

The 2407A header file contains all the DSP register definitions. Defined in the file are the names
of each system register, which is mapped to its corresponding memory address. This allowed for
calling of the system register by simply its name in the main file instead of referring to the
memory address of where the system register resided inside memory.

All these files are inside the project build folder and are also included in the appendix of this
report.

1.3. Motor Control Modules

23
All Electric City Vehicle Report 2009

Programming of the DSP to achieve field orientated control of the 3 phase permanent magnet
synchronous AC motor was done by splitting it up into separate software modules.

1.3.1. Resolver Sensor

The resolver is a sensor device that is used to find the angular position of the motor rotor. The
resolver outputs two analog signals in the form of a cosine and sine wave. A resolver to digital
(R/D) was designed and built in order to convert the analog signal into a digital signal that can be
sent as an input into the inverter.

The Semikron Inverter controller board has an AMPSeal 14pin water tight locking connector for
interface connections. Table 1 below shows the pins and signals for the interface connector.

Table 1: Interface Connector Pin Assignment AMPSeal 14 pin

The output coming from the R/D circuit was connected into pin 6, which is one of three digital
inputs that connect directly into the TMS320LF2407A DSP. Though the pins have been buffered
especially for encoders, they can still be used as digital inputs.

24
All Electric City Vehicle Report 2009

The three encoder inputs, ENC1, ENC2, and ENC3 from the 14pin interface connector
correspond to IOPA3, IOPA4, and IOPA5. The three digital inputs can be accessed through the
digital I/O ports of the DSP.

In order to read in the inputs, two registers are needed to be configured. Note that there are two
types of registers located in the digital I/O ports module; I/O MUX Control Registers (MCRx)
and Data and Direction Control Registers (PxDATADIR).

The I/O MUX Control Registers are used to control the multiplexor selection that chooses
between the primary function of a pin or the general purpose I/O function.

For this purpose, the control register needs to select the general purpose I/O function in order for
the input from the resolver to be read in by the DSP. There are three control registers located on
the DSP; MCRA, MCRB and MCRC. MCRA selects the I/O ports ranging from I/O PA0 to IO
PB7. Since the three encoder inputs IOPA3, IOPA4, and IOPA5 fall in this range, MCRA was
configured to select the general purpose I/O functions instead of the primary function of the pin.

Table 2: I/O MUX Control Register A Configuration

Table 2 above shows the configuration of MCRA. Notice that in order to get digital
inputs/outputs into the DSP, all 15bits in MCRA need to be set high.

25
All Electric City Vehicle Report 2009

The other type, Data and Direction Control Registers, are used to control the data and data
direction of bidirectional I/O pins.

There are six data and direction control registers; PADATADIR, PBDATADIR, PCDATADIR,
PDDATADIR, PEDATADIR, and PFDATADIR. PADATADIR contained the input required to
obtain the signal coming in from the R/D converter. Figure 6 below is a mapping of the 16bits
associated with the data and direction control register.

Figure 6: Port A Data and Direction Control Register

Bits 15-8 set the corresponding pin to either an input or output. This means that bits 14, 13, and
12 were required to be set as low to ensure pins 6, 7, and 8 (which are bits 6, 5 and 4) would be
set as digital inputs.

The challenging issue was that the R/D converter would be sending signals into the DSP over a
serial data transmission.

Serial data transmission refers to the process of sending one bit at a time over a single data line,
compared to parallel data transmission, which is the process of sending many bits over of data
over many data lines at a single time. The problem was that there aren’t enough inputs in the
DSP to accommodate parallel data transmission.

The R/D converter would send an angle that would be represented by 16 bits. The first 12 bits
would represent the number (therefore a maximum number of 212), the following bit is a parity
check bit, and the three remaining bits are always low. This meant that each block of 16 bits
coming in as an input would refer to one angle. The ensure that DSP would read in each block of
16 bits correctly and not mix up any bits was to use the serial clock register, SCSB, which
signalled to the DSP when each block of 16 bits was completed and a new block would start.

26
All Electric City Vehicle Report 2009

The number represented by the first 12 bits then needs to be subtracted by 4095 and divided by
11.375 to obtain the rotor angle that would be in the range of 0° to 360°.

This module was tested to give the correct results. Simply by moving the rotor by hand,
monitoring of the register (user defined variable of ‘angle1’) showed the expected angle given by
the resolver signals.

The resolver module works by first obtaining each of the 12 bits representing the entire angle,
which is stored as a binary number of 12 bits. This is then converted into a decimal number to
perform the necessary calculations to obtain the rotor angle.

1.3.2. Current Sensors

There are integrated magneto resistive current sensors inside the inverter that provide current
magnitude measurements and over current indication.

The current sensors are inputs that come through the Analog to Digital Converter located on the
DSP and are stored inside three result registers associated with the ADC.

The ADC located onboard the DSP has 16 analog inputs located at registers ADCIN0-ADCIN15,
and 16 individually addressable result registers, RESULT0-RESULT15, that store the results of
the analog to digital conversion. Due to the fact that the TMS320LF2407A is a fixed-point DSP,
the results stored in these registers need to be scaled in order to obtain the result in useful units.

In order to use the ADC, it must first be set up. There are two control registers, ADCTRL1 and
ADCTRL2 need to be initialised that resets all the register bits are set to their initial states. This
means bit 14 of each control register needs to be set high. There exists a maximum conversion
channels register which defines the maximum number of conversions executed. The
MAXCONV register has the following format;

27
All Electric City Vehicle Report 2009

Figure 7: Maximum Conversion Channels Register MAXCONV

Bits 15-8 are noted as reserved as should thus be set as low. In this project case, there will be
four conversions, one coming from the throttle potentionmetre and three from the current
sensors. This means the last four bits need to be set as 0100 to in order 4 conversions.

Unfortunately, scaling of the current sensors did not produce the expected outputs. All results in
the three result registers related to the current sensor inputs could not be scaled in such a way to
achieve the actual current that was measured.

The inverter was set up with an input voltage applied, a resister set up between each pair of the
bottom leg transistors, and a current clamp measuring current across the output. In software,
switching of the transistors was performed. In each case, an upper leg and bottom leg transistor
were switched on, with all other transistors off to measure the current.

1.3.3. Clarke Transform

Clarke Transformation uses the three phase currents obtained from the current sensors, ia, ib, and
ic to calculate currents in the two phase orthogonal stator axis. There currents thus get
transformed into currents iα and iβ. The two transformed currents represent the current
components in the fixed co-ordinate stator frame.

A mathematical Clarke transformation formula was programmed into the main code to transform
the three phase system into a two phase orthogonal system.

28
All Electric City Vehicle Report 2009

Figure 8: Mathematical Clarke Transform

Note that io is the homopolar component of the system and is not needed in the application of
motor control.

1.3.4. Park Transform

A Park transform is then applied to relate the current components from the stationary stator
frame (transformed currents iα and iβ) to the rotating reference frame of the rotor. The two
currents iα and iβ and transformed into isd, the real current, and isq, the imaginary current.

A mathematical Park transformation formula was also programmed into the main code to relate
the currents from the stationary axis to a rotating reference frame of the rotor.

Figure 9: Mathematical Park Transform

Note that the angle θ in the above mathematical formula corresponds to the rotor angle obtained
from the resolver module.

1.3.5. Space Vector Modulation

Space Vector Pulse Width Modulation (SVPWM) refers to a special scheme of the six IGB
transistors located in the three phase Semikron Inverter to generate pulse width modulations. It
provides a more efficient use of supply voltage in comparison with the sinusoidal method.

29
All Electric City Vehicle Report 2009

Figure 9 displays the structure of the three phase inverter with six IGB transistors and Va, Vb, and
Vc are the voltages applied to the motor windings.

SVPWM states that if an upper transistor is switched on (DTPHa, DTPHb, and DTPHc), the
corresponding transistor on the lower leg must be switched off (either DTPHa_, DTPHb_, and
DTPHc_). For example, if DTPHa is switched on, this means DTPHa_ needs to be switched off.

Figure 10 : Schematic of 3 phase inverter

When an upper transistor is switched on, the voltage applied to by the leg to the corresponding
motor winding is equal to the voltage supply. When the transistor is switched off the voltage
applied to the motor winding is zero. The on and off switching of the upper transistors thus has a
possible eight different combinations, which are shown in figure 10 below. Note that Udc is in
terms of the motor supply voltage.

30
All Electric City Vehicle Report 2009

Figure 11: Switching pattern of 3 phase inverter

These phase voltages corresponding to the eight combinations can be mapped onto a two co-
ordinate axis using the Clarke and Park transforms.

Figure 12: Space Vector switching patterns

From figure 11 above, after phase voltages are mapped onto the d-q plane, they form six non-
zero vectors and two zero vectors. Each vector state (combination of three binary digits)
represents the states of the upper transistors (ie, 001 refers to upper transistors DTPHa, DTPHb
are off and upper transistor DTPHc is on). Between each adjacent vector is an angle of 60°, with
a total of 360°.

31
All Electric City Vehicle Report 2009

Depending on what angle is read in by the resolver sensor, it can be mapped out to the
corresponding quadrant to determine the variables T0, T1, T2, and thus find the projected motor
voltage vector, Uout. T1 and T2 are the time durations for how long the specific upper transistors
are on for. T0 is half the period of the total PWM carrier period.

The projected motor voltage vector is given by Uout = T1 Ux + T2Ux_60 + T0.

SVPWM is generated with the TMS320LF2407A using the Event Manager, which has hardware
to greatly simply the generation of SVPWM waveforms.

The Event Manager module provides a broad range of functions and features that are particularly
useful in motion control and motor control applications. The TMS320LF2407A has two Event
Manager modules, EVA and EVB. For our purposes, only EVA will be used.

The first step in setting up Event Manager A to generate SVPWM is to configure the ACTRA
register to define the polarity of the compare output pins. This means setting bits 14-0 initially
high, with bit 15 also set high because we want to be moving in a counter clockwise direction.

The ACTRA register is a compare control register for EVA.

COMCONA represents the control register for EVA and controls the operation of the compare
units.

Figure 13: Compare Control Register A

32
All Electric City Vehicle Report 2009

Bits 7-0 of this register are reserved and thus remain low. Bits 15 and 12 need to be set high to
enable both the compare operation and SVPWM mode. Bits 11-10 and set as low-high for
underflow condition, which is specified as a pre-requisite for SVPWM generation.

The GP1 timer (General Purpose) also needs to be set up to allow for continuous up/down
counting mode that starts the operation.

The voltages Ux and Ux_60 can be thus determined using figure 10 above and knowing what
quadrant the angle is situated at. The switching patterns for Ux determined by the quadrants then
need to be written into the ACTRA register, in bits 14-11. For example, if the angle was in the 1st
quadrant, we need the switching pattern of 001 into ACTRA bits 14-11.

The parameters T1 and T2 can then be identified using the following derived formula;

The final step is to then store these parameters T1 and T2 in the registers CMPR1 and CMPR2.
1/2T1 needs to be stored in CMPR1 and (½*T1 and ½*T2) needs to be stored in CMPR2.

Also worth mentioning is that the register MCRA first needs to be set to 0FC0 at the start of the
space vector module, which ensures that we are able to select PWM1-6, instead of the PA and
PB data registers. As noted in table 2 of the MCRA register; bits 6 to 11 need to be set high in
order to select the PWM1-6 functions.

Figure 14: T1 and T2 Control Register

The timer control registers T1CON and T2CON are set to allow for continuous up/down
counting mode by setting them to the value 0942. In addition to this, Timer 1 period needs to be

33
All Electric City Vehicle Report 2009

set, which is the same period as that total PWM. The transistors are then switched on/off
depending on the switching pattern relating to the quadrant.

34
All Electric City Vehicle Report 2009

2. Analysis of Software

It was noted that last year’s project group also purchased the above inverter, which was decided
to be tested considering the scaling with the original inverter’s current sensors.

Luckily enough, this Semikron Inverter had installed inside its controller board a TI
TMS320LF2406A DSP, which was almost the same as the TMS320LF2407A DSP. This
essentially meant that the original program developed was able to be loaded onto this new DSP
with a few minor modifications.

The current sensors in this inverter were slightly better, but still did not output the desired result.
Instead, it was noted that the current sensors, when scaled, gave outputs that reflect 1V to 2.5A.
The problem existed that the program would not be able to differentiate between very close
numbers, such as 3A and 4A would be read in as the same number in the software.

2.1. Resolver Input Testing

The resolver board was connected up to both the rotor connections and the DSP controller board
connections. It was verified that the signals produced through the R/D converter were correct and
also inputting correctly into the DSP.

35
All Electric City Vehicle Report 2009

Delay required here

Figure 15: Channel 1-R/D, Channel 2-SCSB

Figure 14 shows the output signal of the R/D converter. Notice that where the blue vertical axes
have been placed represent each block of 16 bits required calculating the angle of the rotor. Also
note that the last 3 bits are always low.

Channel 1 represents the output, and channel 2 represents the SCSB signal. In an earlier section,
it was documented that in order for the software to be able to distinguish between each block of
16 bits was to use the SCSB signal. Once it turns on, and then low, it is followed by a block of
16 bits, after which it repeats the process and turns high momentarily before switching low
again, allowing for the next 16 bits. The software currently uses a loop that waits for the
condition in which SCSB turns high, in which it will start to read in an angle for use in the other
software modules.

It is also noted that between each SCSB high, there is a delay of approximately 1.35ms. The way
that the program has been set up, it is required for it to read in the angle and perform all the
software modules required to control the motor and finish in 1.35ms.

2.2. Delay Methods

Delay methods were created outside the main program loop to try and control the speed at which
the program was running. A simple delay method was created using a for loop that counted down
until it reached zero. Starting, from say, an arbitrary number of 50 and counting down in the

36
All Electric City Vehicle Report 2009

loop, a delay of approximately 0.02ms could be achieved. This delay method was tested using
the oscilloscope to measure the frequency.

A simple program that turned an output signal from the controller board (5V OUTX1, pin 10 of
the 14-pin interface connector) high, delay method, then switch the output signal low was used to
test this delay method and to measure the delay it would produce.

It would be simply a matter of changing the arbitrary number to achieve different delay results.
However, it was not possible to measure the outcome once the number was changed to be less
than 13. At this case, the output switching from high to low was so quick that it couldn’t be seen
on the oscilloscope, and thus could not be measured.

A delay was needed between the time SCSB went low and the first of the 12 bits started. This
can be seen in the above figure 15 where the delay required is marked.

2.3. Running from FLASH

It was possible to run the program through FLASH memory located in the TMS320LF2406A.
This was achieved through code composer studio.

On the top toolbar, select Tools and proceed to select On Chip Flash Programmer. A separate
window box will appear, select the 2406A DSP, and hit execute. Make sure the CPU is reset
before the program is run.

37
All Electric City Vehicle Report 2009

Figure 16: On Chip Flash Programmer

2.4. Clock

A clock was also generated through software to use with the R/D converter. Again, by using a
simple for loop to first, set the output signal high, delay for some time, set the output signal low,
delay for the same period of time, a clock signal was able to be generated and applied to the R/D
converter. Different delay values were experimented with until a clock frequency of
approximately 2MHz could be achieved. The clock generated achieves a clock frequency of
1.4MHZ.

The software module developed to generate this clock is found in the ‘delayout’ method in the
program.

38
All Electric City Vehicle Report 2009

Figure 17: Channel 2-Clock

2.5. Resolver Output

The resolver signals coming into the DSP were tested and provided the correct angle
representation inside the software.

The variable angle1 represents the angle, in this case, 44.21°. The array elements in the bitword
array represent the 12 bits coming into the DSP. Starting at index 11 of the array, the bits are
received and transferred into this array.

39
All Electric City Vehicle Report 2009

Figure 18: Watch Window for resolver angle

2.6. Space Vector Testing

To test that Space Vector Modulation was generating the pulse width modulations, an infinite
loop in the main code was created so that the code would simply continue to run.

The first test involved setting up resistances between the transistors and applying 3 phase voltage
to power the inverter. Theoretically, the space vector module should have been able to switch the
transistors according to the stated switching pattern derived from the angle. Unfortunately, the
initial test saw that either no current was drawn or a short circuit was created.

The short circuit could only come from the fact that both the upper leg transistor as well as the
corresponding lower leg transistor were both switched on. It took several adjustments that were
noted in the earlier space vector module section to fix this.

Timers had to be setup, including the periods, in order for the compare functions to work. It was
also noted that the transistor switching patterns were being overwritten in our code in certain
cases, which would correspond to the short circuiting.

40
All Electric City Vehicle Report 2009

After getting the combination right and setting up the event manager A correctly to produce
space vector pulse width modulation, we were able to draw current from the 3 phase voltage.

Figure 19: 3 ph power supply

Figure 17 above shows the measurements of the 3 phase power supply when it was connected up
to the inverter and the program was running. On the right hand side, it can be seen that the
inverter is drawing current. This current would be in the range of 0 to around 8A, and would
change according to when the rotor was rotated.

This test confirmed that the Space Vector module was switching the transistors and able to draw
current from the power supply. The next test needed was to capture the waveform of the current.

However, before this could be done, the program started behaving strangely after a few minor
modifications. Even though the program was changed back to what it was originally, current
could not be drawn anymore from the power supply, as each time the program was run a short
circuit would occur. All set up imitations of the event manager were double checked and
changed if needed to ensure they were set correctly according to the manual, but this still did not
solve the problem.

41
All Electric City Vehicle Report 2009

3. Running the Motor

3.1. 8 State Switching Pattern

After considerable trouble and problems involved with controlling the motor using the Field
Orientated Control approach, it was decided to attempt control of the motor using a much more
basic control scheme.

This control scheme was based on the operation of the three switches be co-ordinated so that one
switch would operate at each period of 60 degrees. This would create an output waveform that
would have six steps.

Figure 20: Switching Pattern

The above figure shoes the six step switching pattern for the voltage between terminals A and C.
The switching pattern would be the same six step switching pattern as seen here but would be
120 degrees out of phase with each other.

3.2. Programming the Control Scheme

Programming this basic motor control scheme for the three phase inverter was done in the
method ‘newManual()’ located in the program source code.

Essentially, this six step switching pattern was programmed in, and by doing so, it would also be
setting the switching patterns for the other two terminals as well (VA-B and VB-C). Switching was
done depending on what angle the rotor was in.

42
All Electric City Vehicle Report 2009

The newManual method calls six other methods, first(), second(), third(), fourth(), firth() and
sixth(). These methods were programmed to set the switching of the six transistors depending on
what angle quadrant the rotor was in. For example, first() corresponded to the switching states of
the transistors when the rotor was in between angle 0-60, second() corresponded to the switching
states of the transistors when the rotor was in between angle 60-120, and sixth() corresponded to
the switching states of the transistors when the rotor was in between angle 300-360.

The six methods used to switch the states of the inverter are all coded in a similar fashion. Bits 6
and 7 of the PADATDIR register represents the 1st top transistor and the 1st bottom transistor
respectively. Bits 0 and 1 of the PBDATDIR register represents the middle column on
transistors. Bits 2 and 3 of the PBDATDIR register represents the last column of transistors.
Note that, to program the states in, you will need to but either a 0 or 1 for each of the six bits
above according to what switching pattern is needed. It is important that the bits are also actually
opposites when you program them in; meaning that if you wanted a transistor to switch high, this
would be the same as setting that bit representing the transistor to 0, and vice versa.

Figure 21 below is a diagram of the PA and PB Data Register Mappings to each of the transistors
inside the inverter.

Figure 21: Transistor Bit Representations

There is a delay method, delayTRANS(), which changes the switching states. What happens is
that inside these six methods, the patterns are switched on, then off, then on, then off, etc to
simulate the switching speeds. To set the switching speed, simply change the value of the

43
All Electric City Vehicle Report 2009

counter inside the loop, this will result in how many times the transistors are switched up and
down in this period.

The newManual() method is built on using the six programmed states, with the switching pattern
starting at a different position depending on the angle of the rotor. These switching patterns
allow the motor to move. Note that the motor angle has been converted from mechanical angle to
electrical angle by multiplying by the number of pole pairs.

3.3. Syncronising with the Rotor Angle

This was achieved by one person rotating one of the wheels whiles the other person measured
this compared with the 12th bit of the R/D Converter board whiles it was rotating as a generator.
This allowed determining that they were slightly off by approximately 4.5 degrees. This
difference was compensated for in the program when determining the angle of the rotor. In all
the angle condition methods (first – sixth), you will notice that the actual angle sector we’re
determining has been added by 4.5 degrees, but in radians.

It was also seen whiles running these tests that the C and B phases are actually switched. So the
terminal B at the motor would need to be connected to terminal C of the inverter, and similarly,
terminal C at the motor would need to be connected to terminal B of the inverter. This completed
all necessary steps to synchronise with the rotor angle and allowed for running of the motor.

3.4. Setup

The figure below depicts a diagram of the setup required to run the motor.

44
All Electric City Vehicle Report 2009

Figure 22: Setup Diagram

3.5. Running the Program

Before running the program, ensure that the target DSP and the host computer are connected
correctly, as explained in an earlier section.

All program files are located in this directory; C:\\CCSStudio_v3.3\Myprojects. There are two
project folders that are to be used, f2407a or f2406a, depending on the DSP.

With CCS open, right click the project folder and select open project. The project files are in the
form .pjt and are located within the project folders. Once the project is opened, it must be
compiled and built. This is done by accessing Project in the top toolbar, and selecting rebuild all.
Once built with no errors, the program can be loaded onto the DSP by going to File, load
program. It can also be loaded into the FLASH memory using the on chip flash programmer.

With the program loaded, the CPU first needs to be reset, go to Debug and reset CPU, before it
can be run, using Debug-run.

45
All Electric City Vehicle Report 2009

Registers can be seen in the watch window by going to the GEL menu in top toolbar and
selecting the required system register. User defined variables can be also watched in the watch
window by right clicking the variable (in the source editor) and selecting add to watch window.

Once you have selected Debug and Run, the program should start running and you will see that
wheels will start to rotate. The program can be halted using Debug and Halt. Note that when you
want to restart the program again, you must reset the CPU before you select Run.
A copy of all the files have been put onto a CD. The latest revision of the source code in the CD
is located under the MyProjects folder, inside the 2407A folder, and named main.c.

46
All Electric City Vehicle Report 2009

4. Project Management

Project management details the organisation aspects of this project. It documents communication
procedures within the project team, division of work, milestones, scheduling, project budget, risk
management and group management.

4.1. Division of Work

To complete a project with such a large scope as the All Electric City Vehicle, the work needs to
be divided amongst the group members equally and reasonable deadlines must be set. A timeline
detailing the main tasks and milestones has been constructed by the group and can be seen in
Figure 5 below. Due to the small amount of experience the group has had in scheduling and
maintaining a timeline for such a large scale project, the timeline has been designed such that the
expected completion time of the project is approximately two weeks prior to the project
exhibition. This should allow enough time to deal with any unexpected problems that arise
throughout the course of the year, without running past the final deadline.

Most of the main tasks of the project were divided amongst the group members, while a few
tasks will be needed to be completed by the workshop team. The TAFE will also be responsible
for one of the project tasks, that being the painting of the vehicle. Along with all of the tasks
directly related to the designing and customising of the vehicle for the purpose of our project,
group members also need to work on writing reports such as the critical design review and
individual final reports, as well as creating presentations for seminars.

The main tasks can be split into three categories:


• Research and design tasks
• Implementation and testing
• Other non-technical tasks

47
All Electric City Vehicle Report 2009

In the following sections the individual tasks are described that were originally thought up by the
project team at the research stage of the project.

4.1.1. Project Research

Date Started/Completed: 02/03/09 – 22/03/09


To Be Completed By: All group members
Dependencies: None
Task Description: Research the background of the project to give the group an opportunity to
properly understand the overall goals and requirements of the project. Research previous year’s
progress and background information regarding components to be used during the project.

4.1.2. Signal Conditioning

Date Started/Completed: 27/04/09 – 17/05/09


To Be Completed By: Michael
Dependencies: None
Task Description: Design a way to condition signals coming from the motor in such a way that
they will be useful to the DSP and CAN.

4.1.3. Battery Monitoring System

Date Started/Completed: 27/07/09 – 16/08/09


To Be Completed By: Brett
Dependencies: None
Task Description: Design a system to monitor the batteries used in the vehicle and display
relevant information to the user.

4.1.4. Safety Circuitry

Date Started/Completed: 31/08/09 – 20/09/09


To Be Completed By: Steven
Dependencies: None
Task Description: Design circuitry to be implemented in the vehicle to ensure the safety of the
user in the event of an accident.
48
All Electric City Vehicle Report 2009

4.1.5. Motor Position Sensor Testing

Date Started/Completed: 06/04/09 – 03/05/09


To Be Completed By: Michael
Dependencies: This task can only be started after the motor has been installed.
Task Description: Initial testing to what outputs are available from the Prius motor.

4.1.6. DSP Programming

Date Started/Completed: 18/05/09 – 14/06/09


To Be Completed By: Brett & Steven
Dependencies: None
Task Description: Program the DSP to ensure correct operation of the motor when the car is
running.

4.1.7. Testing and Monitoring of Motor

Date Started/Completed: 08/06/09 – 26/07/09


To Be Completed By: Michael
Dependencies: Motor sensor testing must be completed prior to this task, and the accelerator
potentiometer must also be installed.
Task Description: Begin testing the motor and monitoring its outputs to ensure correct
operation.

4.1.8. Install Battery Box

Date Started/Completed: 11/05/09 – 31/05/09


To Be Completed By: Workshop
Dependencies: This task may only be completed after the battery box has been designed.
Task Description: Install the battery box into the vehicle to house the batteries.

49
All Electric City Vehicle Report 2009

4.1.9. Integration and Testing of Battery Monitoring System

Date Started/Completed: 17/08/09 – 06/09/09


To Be Completed By: All group members
Dependencies: The design of the BCS and BMS must be completed prior to this task.
Task Description: Install the battery monitoring and charging systems previously designed, and
then test them to ensure correct operation.

4.1.10. Integration and Testing of Safety Circuitry

Date Started/Completed: 21/09/09 – 04/10/09


To Be Completed By: All group members
Dependencies: The design of the safety circuitry must be completed prior to this task.
Task Description: Install the safety circuitry previously designed, and then test it to ensure
correct operation.

4.1.11. Vehicle Roadworthy Test

Date Started/Completed: 12/10/09 – 18/10/09


To Be Completed By: All group members
Dependencies: All technical tasks to be completed prior to this task
Task Description: Get the vehicle inspected by a government representative so the car can be
registered.

4.1.12. First Test Drive

Date Started/Completed: 05/10/09 – 11/10/09


To Be Completed By: All group members
Dependencies: All other design, integration and testing tasks.
Task Description: Take the vehicle out for the first test drive to ensure all individual
components are correctly integrated and the car operates as expected.

4.2. Scheduling

50
All Electric City Vehicle Report 2009

The Gantt chart featured in figure 13 below shows the timeline originally designed by the group.
It includes all associated tasks of the project on the left hand side and serves as a schedule for
task completion for all project members.

Figure 23: Gantt Chart

This initial schedule was prepared by the group were rough approximations by the group, and
unfortunately, was not upheld as strictly as it should have been. Perhaps the main reason that this
schedule became unfeasible to follow was the underestimation of the time needed to complete
tasks. Other reasons included several tasks that needed to be completed that weren’t in the
project timeline.

Most of the tasks that the group envisioned at the initial stages of the project were correct, with
the major tasks of the project being very nearly completed.

Programming of the DSP to provide motor control proved to be a more difficult task than first
expected, and could not have been completed in the time-frame of one month that was originally
estimated. The group was led to believe that there existed readily available motor control
software available from TI that could be uploaded and tested. This was not the case however, as

51
All Electric City Vehicle Report 2009

the available software packages from TI were not designed for the project’s DSP and were
incredibly complex to learn or understand.

Instead, the program would need to be developed from scratch, and this involved a tremendous
amount of research, development, debugging and consultation with TI and Spectrum Digital to
actually set up and program the initial starting files to allow a program to be loaded onto the
DSP. A steep learning curve had to be overcome to understand how the DSP worked and
learning how to program the DSP through the use of its many system registers. This task is near
completion and only requires testing of the space vector modulation module, optimisation to
include interrupts and a module to handle input from the throttle potentionmetre. Found in the
appendixes are the separate program files developed for the control of the motor.

An R/D converter was designed and created to allow for the determination of the motor position
and was successfully read in and as input by the DSP to use with the motor control program.

Power cables, power inlet, conduits, and other small components were required to be researched,
analysed and purchased that was not originally noted as a task in the timeline.

An emergency disconnect switched was also purchased that will disconnect the batteries from
the motor in the case of an emergency, and provides the essential solution for safety circuitry
originally described in the timeline.

Battery Monitoring System was made easier as this unit had already been purchased with the
bulk of the lithium-iron phosphate batteries. A charger has been researched and purchased from
the batteries after they were all individually tested to ensure they were within the acceptable
range.

Unfortunately, the individual components of the car have not been connected up nor has the
motor control software been entirely completed to allow for a first test drive. A vehicle
inspection by a government representative has also not been arranged due to the components not
being integrated.

4.3. Communication

52
All Electric City Vehicle Report 2009

Communication was a vital part in this project. Initially, two weekly meetings were set up for the
group, a formal meeting including the project supervisor, and an informal meeting with just the
group members. These weekly group meetings provided a lot of mentoring, advice, and guidance
with respect to the project and were fundamental in ensuring each group member understood the
direction the project was going. They provided an opportunity to alert the group of any new
updates or advancements as well as asking questions.

After the initial project stages, the second informal meeting between the group members was
decided to not be required. Instead, it was easier to simply approach group members during spare
times or in the project lab whenever an issue had arisen. Occasionally, additional meetings would
be set up in order to prepare for upcoming project deliverables, such as the proposal seminar and
the final seminar.

Outside of these regular meetings, the project group mainly communicated through the use of e-
mail. E-mail provided an easy approach to communicate with each other and was the main form
of communication used by the group outside of actual face-to-face contact of group meetings.
Mobile phone numbers were also exchanged between the group members in cases where
members needed to be alerted immediately of an issue.

Communication was also required to manufacturers of the separate components already


purchased and to be used in the project. This communication was required as the group regularly
sought technical assistance from these companies, which mainly included Semikron, Texas
Instruments and Spectrum Digital. Most of these communications were achieved through the use
of e-mail, which provided an easy form of communication, but not necessarily the fastest one.
No actual technical support contact from Texas Instruments was located in Australia, and as
such, phoning them was considered too expensive an option for a form of communication.
However, phone as a form of communication was possible to be used with Semikron when it was
deemed that it took too long to achieve a response from them via e-mail.

4.4. Budget

53
All Electric City Vehicle Report 2009

Figure 14 below displays a rough estimation of the budget for this year’s project that was drawn
up by the group in the initial stages of the project. It is split up into five main sections; overall
vehicle, motor, batteries, electrical accessories and inspection costs.

Figure 24: Project Budget

The budget for this year’s project involves mainly add-on accessories as all the main hardware
components have already been purchased from last year and are available to the group.

The project group came well within the estimated project budget, mainly because the battery
management system listed on the initial project budget was no longer required to be purchased
(had previously already obtained one). It is also worth mentioning that the group was able to
secure a $1000 sponsorship provided by GHD through a personal contact.

4.5. Risk Analysis

54
All Electric City Vehicle Report 2009

A list of risks was established again in the early stages of the project to mitigate any for-seen
problems that could hinder the success of the project. Mitigation strategies were also included to
reduce the likelihood of these potential risks from occurring.

Frequency rating 0- 10 where 0 = very rare, and 10=often

Severity 0-10 where 0 = incidental, and 10 = catastrophic

Probability 0-10 where 0=unlikely, and 10 = highly probable

Risk % where 0=acceptable, and 100 = mitigation action required

Risk Freq Severity Prob Risk Mitigation Resolution


Damaging the 1 9 3 30 Extensive testing on the Rebuild, replace faulty
Prius motor bench, work to known components or repurchase
safe voltage / current
levels
Damaging the 2 9 3 33 Extensive testing on the Send back to manufacturer
inverter bench, work to known for replacement or
safe voltage / current repurchase
levels, observe all
warning signals.
Damage the 1 9 4 40 Ensure correct charging Seek replacement or
batteries levels, check for any repurchase at a cost
leakage, pre-mature
damage
Unable to 1 5 5 30 Follow all procedures, Resolve issues, modify to
register MX5 obtain documentations comply with standards set,
of approval seek exceptions
Faulty MX5 3 5 5 40 Ensure mechanic parts Seek to replace
mechanical are in working condition
component

Unable to 5 6 6 66 Check all theoretical Purchase additional


achieve calculations, diagnose hardware, optimise
required motor any faults, perform equipment available
power additional simulations
with different setups

Unable to 2 8 2 20 Provide workshop with Research alternative


interface motor required information and solutions
to driveline ensure they are
progressing

Unable to 5 5 5 50 When choosing specific Look to purchase


purchase part, make sure there are equivalent part or adjust
required part equivalent parts design for different part

55
All Electric City Vehicle Report 2009

Unable to 10 2 6 72 Check interface signals, Look to different hardware,


interface with check inputs to inverter extend research.
inverter

Table 3: Project Risks

Risk Freq Severity Risk Mitigation Resolution


Losing a team 1 8 5 Ensure plan and progress Arrange with
member documented supervisor to downsize
project
Project team 2 7 20 Keep watch on progress Provide training
members lack
skills
Member 1 9 90 Instigate safety None
getting precautions
electrocuted
Member 2 8 80 Instigate safety None
injured by precautions
vehicle

Team Conflict 2 5 20 Ensure good Leader negotiates


communication resolution

Table 4: People Risks

A lot of these risks documented early on in the project did not actually occur. However, other
risks more associated with the technical aspects of the project occurred in large quantities that
weren’t documented.

These risks included;

• Not being able to get the DSP to communicate with the host computer.
• Setting illegal values into the DSP’s memory
• Not having the correct or entire documentation/manual for the Semikron inverter and TI
DSP
• Unable to test outputs from the inverter or receive in inputs to the inverter
• Long time frame to get answers for questions lodged with manufacturers
• Taking more time than initially set out to debug problems

56
All Electric City Vehicle Report 2009

1. Conclusion

57
All Electric City Vehicle Report 2009

2. References

58
All Electric City Vehicle Report 2009

Appendix A
Appendix A details the linker command file.

/*
MEMORY
{
PAGE 0: PROG: origin = 0x0020 length = 0xFEE0
VECS: origin = 0x0000 length = 0x0020
PAGE 1: DATA: origin = 0x0300 length = 0xFD00
}
SECTIONS
{
.text: PAGE = 0
.data: PAGE = 0
.cinit: PAGE = 0 // For –c and –cr
.bss: PAGE = 1

vectors: > VECS PAGE 0


}
*/

MEMORY
{
PAGE 0 : /* program memory */
VECS: origin = 00000h, length = 00040h
PASSWD: origin = 00040h, length = 00004h
FLASH: origin = 00044h, length = 07FBCh
PAGE 1 : /* data memory */
DARAN_B2: origin = 00060h, length = 00020h
DARAM_B0: origin = 00200h, length = 00100h
DARAM_B1: origin = 00300h, length = 00100h
SARAM: origin = 00800h, length = 00800h
Ext_Ram : origin = 08000h, length = 07E00h
}

SECTIONS
{
/* Sections generated by the C-compiler */
.text: > FLASH PAGE 0 /* initialized */
.cinit:> FLASH PAGE 0 /* initialized */
.const: > DARAM_B1 PAGE 1 /* initialized */
.switch: > FLASH PAGE 0 /* initialized */
.bss: > SARAM PAGE 1 /* uninitialized */
.stack: > SARAM PAGE 1 /* uninitialized */
.sysmem: > FLASH PAGE 0 /* uninitialized */
/* Sections declared by the user */
59
All Electric City Vehicle Report 2009

vectors: > VECS PAGE 0 /* initialized */

Appendix B
Appendix B details the vector.asm file.

.ref _c_int0

.sect "vectors"

rset: B _c_int0
int1: B int1 ;02h INT1
int2: B int2 ;04h INT2
int3: B int3 ;06h INT3
int4: B int4 ;08h INT4
int5: B int5 ;0Ah INT5
int6: B int6 ;0Ch INT6
int7: B int7 ;0Eh reserved
int8: B int8 ;10h INT8 (software)
int9: B int9 ;12h INT9 (software)
int10: B int10 ;14h INT10 (software)
int11: B int11 ;16h INT11 (software)
int12: B int12 ;18h INT12 (software)
int13: B int13 ;1Ah INT13 (software)
int14: B int14 ;1Ch INT14 (software)
int15: B int15 ;1Eh INT15 (software)
int16: B int16 ;20h INT16 (software)
int17: B int17 ;22h TRAP
int18: B int18 ;24h NMI
int19: B int19 ;26h reserved
int20: B int20 ;28h INT20 (software)
int21: B int21 ;2Ah INT21 (software)
int22: B int22 ;2Ch INT22 (software)
int23: B int23 ;2Eh INT23 (software)
int24: B int24 ;30h INT24 (software)
int25: B int25 ;32h INT25 (software)
int26: B int26 ;34h INT26 (software)
int27: B int27 ;36h INT27 (software)
int28: B int28 ;38h INT28 (software)
int29: B int29 ;3Ah INT29 (software)
int30: B int30 ;3Ch INT30 (software)
int31: B int31 ;3Eh INT31 (software)

60
All Electric City Vehicle Report 2009

Appendix C
Appendix C details the main source file.

#include "C:\CCStudio_v3.3\MyProjects\2407A\f2407_c.h"
#include <math.h>

int MCRA3=1; //variable for the bits


required.
int count; //variable use for counting purposes.
int sum; //variable use for sum of 16 bits.
double angle;
double angle1; //variable for angle of resolver.
int totalAngle=4096; //variable to hold 4096
int twoPi=360; //variable to hold full circle.
int adres; // our A/D result
unsigned int t;
int loop = 1;
double ia, ib, ic; //currents measured.
unsigned int ia_temp, ib_temp, ic_temp, V_REF; //temporary until
scaling takes effect.
double Vref; //scaled version of Vref.
unsigned int r, kdummy,SCSB, bit,kdummy2 ;
unsigned int SCSB1; // variables for resolver
angle
unsigned int bitword[12];
double i_alpha, i_beta, i_sd, i_sq;
double T,T0,T1,T2; //Tcalc.
double Ux, Uy; //svm.

void init()
{
/*** Configure the System Control and Status registers ***/

*SCSR1 = 0x00FD;

/*
bit 15 0: reserved
bit 14 0: CLKOUT = CPUCLK
bit 13-12 00: IDLE1 selected for low-power mode
bit 11-9 000: PLL x4 mode
bit 8 0: reserved
bit 7 1: 1 = enable ADC module clock
bit 6 1: 1 = enable SCI module clock
bit 5 1: 1 = enable SPI module clock
bit 4 1: 1 = enable CAN module clock
bit 3 1: 1 = enable EVB module clock
61
All Electric City Vehicle Report 2009

bit 2 1: 1 = enable EVA module clock


bit 1 0: reserved
bit 0 1: clear the ILLADR bit
*/
*SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
/*
bit 15-6 0's: reserved
bit 5 0: do NOT clear the WD OVERRIDE bit
bit 4 0: XMIF_HI-Z, 0=normal mode, 1=Hi-Z'd
bit 3 1: disable the boot ROM, enable the FLASH
bit 2 no change MP/MC* bit re>cts state of MP/MC* pin
bit 1-0 11: 11 = SARAM mapped to prog and data
*/
/*** Disable the watchdog timer ***/

*WDCR = 0x00E8;
/*

bits 15-8 0's: reserved


bit 7 1: clear WD :g
bit 6 1: disable the dog
bit 5-3 101: must be written as 101
bit 2-0 000: WDCLK divider = 1
*/
/*** Setup external memory interface for LF2407 EVM ***/
WSGR = 0x0040;
/*
bit 15-11 0's: reserved
bit 10-9 00: bus visibility off
bit 8-6 001: 1 wait-state for I/O space
bit 5-3 000: 0 wait-state for data space
bit 2-0 000: 0 wait state for program space
*/
/*** Setup shared I/O pins ***/
*MCRA = 0x0000; /* group A pins */
/*
bit 15 0: 0=IOPB7, 1=TCLKINA
bit 14 0: 0=IOPB6, 1=TDIRA
bit 13 0: 0=IOPB5, 1=T2PWM/T2CMP
bit 12 0: 0=IOPB4, 1=T1PWM/T1CMP
bit 11 0: 0=IOPB3, 1=PWM6
bit 10 0: 0=IOPB2, 1=PWM5
bit 9 0: 0=IOPB1, 1=PWM4
bit 8 0: 0=IOPB0, 1=PWM3
bit 7 0: 0=IOPA7, 1=PWM2
bit 6 0: 0=IOPA6, 1=PWM1
bit 5 0: 0=IOPA5, 1=CAP3
bit 4 0: 0=IOPA4, 1=CAP2/QEP2
bit 3 0: 0=IOPA3, 1=CAP1/QEP1
bit 2 0: 0=IOPA2, 1=XINT1
bit 1 0: 0=IOPA1, 1=SCIRXD
bit 0 0: 0=IOPA0, 1=SCITXD

62
All Electric City Vehicle Report 2009

*/
*MCRB = 0xFE03; /* group B pins */
/*
bit 15 1: 0=reserved, 1=TMS2 (always write as 1)
bit 14 1: 0=reserved, 1=TMS (always write as 1)
bit 13 1: 0=reserved, 1=TD0 (always write as 1)
bit 12 1: 0=reserved, 1=TDI (always write as 1)
bit 11 1: 0=reserved, 1=TCK (always write as 1)
bit 10 1: 0=reserved, 1=EMU1 (always write as 1)
bit 9 1: 0=reserved, 1=EMU0 (always write as 1)
bit 8 0: 0=IOPD0, 1=XINT2/ADCSOC
bit 7 0: 0=IOPC7, 1=CANRX
bit 6 0: 0=IOPC6, 1=CANTX
bit 5 0: 0=IOPC5, 1=SPISTE
bit 4 0: 0=IOPC4, 1=SPICLK
bit 3 0: 0=IOPC3, 1=SPISOMI
bit 2 0: 0=IOPC2, 1=SPISIMO
bit 1 0: 0=IOPC1, 1=BIO*
bit 0 0: 0=IOPC0, 1=W/R*
*/
*MCRC = 0x0000; /* group C pins */
/*
bit 15 0: reserved
bit 14 0: 0=IOPF6, 1=IOPF6
bit 13 0: 0=IOPF5, 1=TCLKINB
bit 12 0: 0=IOPF4, 1=TDIRB
bit 11 0: 0=IOPF3, 1=T4PWM/T4CMP
bit 10 0: 0=IOPF2, 1=T3PWM/T3CMP
bit 9 0: 0=IOPF1, 1=CAP6
bit 8 0: 0=IOPF0, 1=CAP5/QEP4
bit 7 0: 0=IOPE7, 1=CAP4/QEP3
bit 6 0: 0=IOPE6, 1=PWM12
bit 5 0: 0=IOPE5, 1=PWM11
bit 4 0: 0=IOPE4, 1=PWM10
bit 3 0: 0=IOPE3, 1=PWM9
bit 2 0: 0=IOPE2, 1=PWM8
bit 1 0: 0=IOPE1, 1=PWM7
bit 0 0: 0=IOPE0, 1=CLKOUT
*/

/*** Setup CAN Mailbox I/O pins ***/


/**MSGID2H = 0x0000; /* MSG ID High pins */
/*
bit 15 0: 0=Std, 1=Ext
bit 14 0: 0=Acc Mask Disabled, 1=Acc Mask Enabled (Only relevant for
receive)
bit 13 0: 0=AAM Disabled, 1=AAM Enabled (Only relevant for transmit)
bits 12-0 0: Upper 13 bits of Ext ID (12-2 store 11 bit ID for Std ID)
*/
/**MSGID2L = 0x0000; /* MSG ID Low pins */
/*
bits 15-0 0: Lower part of Ext ID

63
All Electric City Vehicle Report 2009

*/
*MSGCTRL2 = 0x0001; /* MSG Control pins */
/*
bits 15-5 0: reserved
bit 4 0: 0=Data Frame, 1=Remote Frame
bits 3-0 0: bytes used for transmission
*/
*MBX2A = 0x0000; /* Mailbox A pins */
/*
bits 15-0 0: MSG
*/
*MBX2B = 0x0000; /* Mailbox B pins */
/*
bits 15-0 0: MSG
*/
*MBX2C = 0x0000; /* Mailbox C pins */
/*
bits 15-0 0: MSG
*/
*MBX2D = 0x0000; /* Mailbox D pins */
/*
bits 15-0 0: MSG
*/
*MDER = 0x0000; /* Mailbox Direction & Enable pins */
/*
bits 15-8 0: reserved
bits 7-6 0: 0=Transmit, 1=Receive
bits 5-0 0: 0=Mbx Disabled, 1=Mbx Enabled
*/
*TCR = 0x0000; /* Transmission Control pins */
/*
bits 15-12 0: Set by internal logic on succesful transmission
bits 11-8 0: Set by internal logic on aborted transmission
bits 7-4 0: 0=No trans request, 1=Trans request set
bits 3-0 0: Reset trans request (controlled by internal logic)
*/
*MCR = 0x1403; /* Master Control pins */
/*
bits 15-14 0: reserved
bit 13 0: 0=Soft mode, 1=Free mode
bit 12 1: 0=No write request, 1=Write request to BCR1&2
bit 11 0: 0=Normal operation, 1=Power down request
bit 10 1: 0=Data sent/received 3,2,1,0,7,6,5,4, 1=Data sent/received
0,1,2,3,4,5,6,7
bit 9 0: 0=Stay in PD mode until PDR=0, 1=Leave PD mode on bus
activity
bit 8 0: 0=Normal operation, 1=Request write access to data field of
mbx in MBNR
bit 7 0: 0=Auto bus on is off, 1=Auto bus on
bit 6 0: 0=Normal mode, 1=Self test mode
bits 5-2 0: reserved
bits 1-0 1: Mailbox number for bit assertation (only 10 or 11)

64
All Electric City Vehicle Report 2009

*/
*BCR2 = 0x0000; /* Transmission Control pins */
/*
bits 15-8 0: reserved
bits 7-0 0: Baud rate prescalar (BRP=0 then 1TQ=1CPU clock cycle)
*/
*BCR1 = 0x0000; /* Transmission Control pins */
/*
bits 15-11 0: reserved
bit 10 0: CAN resynchronizes on falling edge only, 1=Reserved
bits 9-8 0: Synch jump width
bit 7 0: CAN samples only once, 1=CAN samples 3 times and makes
majority decision
bits 6-3 0: Timing seg1
bits 2-0 0: Timing seg2
*/
//resetting the fault signals and the switches.

*PADATDIR = 0xC0C0; //4


*PBDATDIR = 0x0F0F; //E

*PEDATDIR = 0xFEFF; // THESE ARE USED FOR RESETING ERROR


SIGNALS
*PFDATDIR = 0x0808;

}
void ad_init()
{

//*ADCTRL1 = 0xA10E; // calibrate ADC with 1.65V ref voltage


//*ADCTRL2 = 0x4000;

//bitdelay();

// Setup the fIrst A/D control register


*ADCTRL1=0xA180; // A/D ctl reg

// Setup the second A/D control register


*ADCTRL2= 0x4000; /* group C pins */

*MAX_CONV= 0x0003; // max_conv=max_conv+1...we're doing four channel


*CHSELSEQ1=0x6666; // we are using A/D channel 0 only , channel 1 is
not connected (v_i2)
//*CHSELSEQ2 = 0x2104;
}

void gt_AD_smp()
{
// Reset the second control register to get a new sample
*ADCTRL2= 0x2000; /* group C pins */

65
All Electric City Vehicle Report 2009

void delayout() // just a simple 24 us delay routine to produce 20kHZ


clock freqency
{ // half period of 24us for 21.09kHZ clock
frequency
unsigned int i; // for our counter
for(i = 500; i > 0; i--)
{
//asm("NOP"); // do a NOP a bunch of times

}
}
void bitdelay()
{
unsigned int i; // for our counter
for(i = 950; i > 0; i--)
{
//asm("NOP"); // do a NOP a bunch of times

}
}

double sumangle()
{
angle = (bitword[0]*1)+(bitword[1]*2)+(bitword[2]*4)+(bitword[3]*8)+
(bitword[4]*16)+(bitword[5]*32)+(bitword[6]*64)+(bitword[7]*128)+
(bitword[8]*256)+(bitword[9]*512)+(bitword[10]*1024)+
(bitword[11]*2048);
angle = 4095 - angle;
angle = angle/11.375;

return angle;
}

void delayuntilbit12()
{
unsigned int i; // for our counter
for(i = 1436; i > 0; i--)
{
//asm("NOP"); // do a NOP a bunch of times

}
}

void T1OUT()
{

*GPTCONA = 0x000A; // T1 AND T2 PIN ACTIVE HIGH

66
All Electric City Vehicle Report 2009

*T1CNT = 0x0000; //CLEAR TIMER COUNTER


*T1PR = 750; // ?????
*DBTCONA = 0x0000; // NO DEADBAND TIME
*CMPR1 = 563; // ?????
*ACTRA = 0x0000;
*COMCONA = 0x8200;
*T1CON = 0x0840;
}

void clarke()
{

i_alpha = (2/3)*ia - (1/3)*(ib-ic);


i_beta = 1.1547*(ib-ic);
}

void park()
{

i_sd = i_alpha * cos(angle1) + i_beta*sin(angle1);


i_sq = -i_alpha*sin(angle1) + i_beta*cos(angle1);

void inv_clarke()
{
ia = i_alpha;
ib = (-1/2)*i_alpha + ((0.86603)*i_beta);
ic = (-1/2)*i_alpha - ((0.86603)*i_beta);

void inv_park()
{
i_alpha = i_sd*cos(angle1) - i_sq*sin(angle1);
i_beta = i_sd*sin(angle1) + i_sq*cos(angle1);

void spaceVector()
{

*COMCONA = 0x9200; //enable compare operation, space vector mode,


reload underflow.
*T1CON = 0x4942; //continuous up/down counting mode.
*DBTCONA = 0x0BF8; //deadtime.
*ACTRA = 0xF999; //active high->active low
T0=(1/2)*T; //T0 = 50% period of total.

if (angle1 < 60)


{

67
All Electric City Vehicle Report 2009

*ACTRA = 0x9999; //state 001.


//V1=Vc=2/3. V2=Vbc=0
T2 = (T*(2/3) - T0*(2/3) - Vref*T)/(2/3);
T1 = T - T0 - T2;

//store into CMPR1 and CMR2.

else if (angle1 > 60 && angle1 < 120)


{
*ACTRA = 0xB999; //state 011.
//V1=Vbc=0. V2=Vb=2/3.
T2 = (-1*Vref)*T/(-(2/3));
T1 = T - T0 - T2;
}

else if (angle1 > 120 && angle1 < 180)


{
*ACTRA = 0xA999; //state 010.
//V1=Vb=1/3. V2=Vab=0.
T2 = (T*(1/3) - T0*(1/3) - Vref*T)/(1/3);
T1 = T - T0 - T2;
}

else if (angle1 > 180 && angle1 < 240)


{
*ACTRA = 0xE999; //state 110.
//V1=Vab=0. V2=Va=2/3.
T2 = (-1*Vref)*T/(-(2/3));
T1 = T - T0 - T2;
}

else if (angle1 > 240 && angle1 < 300)


{
*ACTRA = 0xC999; //state 100.
//V1=Va=2/3. V2=Vac=0.
T2 = (T*(2/3) - T0*(2/3) - Vref*T)/(2/3);
T1 = T - T0 - T2;
}

else
//if (angle1 > 300 && angle1 <=360)
{
*ACTRA = 0xD999; //state 101.
//V1=Vac=0. V2=Vc=2/3
T2 = (-1*Vref)*T/(-(2/3));
T1 = T - T0 - T2;
}

68
All Electric City Vehicle Report 2009

// This must be an interupt


void resolver()
{

int j =11;
int count =1;

// for use with enc1 (PIN 6) PA4 for SCSB and Serial data is on Enc3
(pin 8) PA5
// Using a serial clk of 20.88 kHZ
// 3 bit low time = 288us
while(loop == 1)
{
kdummy =*PADATDIR;
SCSB1 =*PADATDIR;
SCSB1 <<= 11;
SCSB1 >>= 15;

count = count +1;

if(SCSB1 ==0)
{
delayuntilbit12();

while(j >-1)
{
kdummy2 = *PADATDIR;

bit = *PADATDIR;
bit <<= 10;
bit >>= 15;
bitword[j] = bit;
bitdelay();
j = j-1;
}
j=11;
}

angle1 = sumangle();

void can_trans()
{
*MSGID2H = 0x0004;
*MSGID2L = 0x0000;

69
All Electric City Vehicle Report 2009

*MSGCTRL2 = 0x0008;
*MBX2A = 0xB38F;
*MDER = 0x000C;
*TCR = 0x003F;
}

void combo()
{
*PADATDIR = 0xC0C0;
*PBDATDIR = 0x0F06;

delayout();

*PBDATDIR = 0x0F0F;

delayout();
}

void main()
{

*ADCTRL1 = 0x4000; // resets adc


//*T1CON = 0x0000; //DISABLE TIMER 1
init(); // call initialization routine
ad_init(); // call the A/D initialization routine

// *PADATDIR = 0xC08F; //c08f

//*encoderInput = 0x7090; //points to memory address 7090h -


this is I/O mux control register A.

//register at this memory address contains 16 bits. Only want the


3rd bit.
//this requires shifting to only obtain the 3rd bit.

//register format = bits 15,14,.....2,1,0.


// MCRA3 = *encoderInput;
// MCRA3 <<= 12; //shifting 12 bits left.
// MCRA3 >>= 15; //shifting 13 bits right to obtain the bit 3 ()
we need from register.
*PADATDIR = 0xC040; //4
*PBDATDIR = 0x0F0E; //E

// *PEDATDIR = 0xFEFF; // THESE ARE USED FOR RESETING ERROR


SIGNALS
// *PFDATDIR = 0x0808;

70
All Electric City Vehicle Report 2009

/* ******** setting up interrupts ********* */

*IMR = 0x0000; //clearing IMR register


*IFR = 0x003F; //clearing any pending requests with 1's, not 0s.

/* ******* event manager interrupts ******* */


*EVAIFRA = 0xFFFF; /* clear all EVA group A interrupts */
*EVAIFRB = 0xFFFF; /* clear all EVA group B interrupts */
*EVAIFRC = 0xFFFF; /* clear all EVA group C interrupts */

do
{

// adres = *RESULT0; // read A/D port 0


// ia = *RESULT1; //phase current sensors
// ib = *RESULT2;
// ic = *RESULT3;

*PADATDIR = 0xC0C0; //4


*PBDATDIR = 0x0F06; //E

// combo();

// resolver();

gt_AD_smp(); // get a new A/D converter sample


delayuntilbit12(); // delay a bit. this delay will set the sample
rate
ia_temp = *RESULT0;
ia_temp = *RESULT0;
ib_temp = *RESULT1;
ic_temp = *RESULT2;
V_REF = *RESULT3;

ia_temp >>= 6;
ib_temp >>= 6;
ic_temp >>= 6;
V_REF >>= 6;

// *PADATDIR = 0xC0C0; //4


// *PBDATDIR = 0x0F0F; //E

// can_trans();

71
All Electric City Vehicle Report 2009

//printf(t);

delayuntilbit12();
// *PBDATDIR = 0x3000;

// delayuntilbit12();
*ADCTRL2 = 0x4000;

} while(loop ==1);

72

Vous aimerez peut-être aussi