Vous êtes sur la page 1sur 46

Variable Frequency Drive

Introduction
1.1 Overview:
Previously there were many ways to control speed and torque of induction motor which
will be further discussed in literature review later. Variable Frequency drive was
introduced as methods used in near past, were neither energy efficient nor effective
under certain circumstances.
Unfortunately VFD is not locally produced in Pakistan, but still used in industries by
importing them. As it is a effective device people who own machines and who require
their motor to be driven at fixed speed only, regardless of load do need to use VFD. As it
is not manufactured locally, people who purchase them need to pay higher than its
actual cost; secondly the VFDs are not brand new but are used and bit worn out.
To overcome this problem we have designed our own VFD, and all the components
used in the manufacturing are easily available in our country. To make this project more
valuable we have added the wireless controlling factor for the ease of person operating
the plant where he could monitor and control the RPMs of the motor from quite a
distance.

1.2 Objective:
Induction motors are fixed speed and frequency dependant motors which are used in
most industries because of its reliability, reduced cost and rugged nature. In industrial
applications which require variable speed, the use of induction motor is limited as a
result of low efficiency and high cost penalty associated with the existing control
techniques. The development and progress in the field of power electronics has made
way to the manufacturing of ac controlled drives that are known as variable frequency
drives (VFDs), which are now widely used in different parts of the world to control and
manage the speed and torque of induction motors at optimal maintenance cost with
better efficiency.
A VFD is a device closely designed to observe and make changes to the speed of the
motor by adjusting in such a way that the induction motor returns to its original speed
with in no time. This task is achieved by generating AC at desired frequency which will
help in adjusting the speed of the motor. If found the most efficient point of speed
through mathematical calculations, where motor will give its best output, VFD will make
sure the motor runs at that particular speed only, even at varying loads. This step will be

Variable Frequency Drive

then very beneficial in terms of reducing power loss which leads to effectively reducing
expenses.
VFDs have several different applications spreading from small house hold items to
gigantic industrial machines like cranes etc.
They are also extensively used in elevators and drilling machines, even a single phase
VFD is placed in a fan, to make the best cooling system by making the blades of the fan
turn and keep turning at the correct speed. Variable frequency output on a oscilloscope
can be seen in (fig1.1) below. Variable frequency drives can be classified as;
Current source input VFDs
Flux vector pulse width VFDs
AC VFDs
PWM-VFDs

Fig 1.1

Variable Frequency Drive

Literature Review
2.1 Introduction:
This chapter is where we discuss the research we did before we started our project.
Previously done research on our project topic and methods applied in past will be
shown. Research is about different techniques used to control speed of the induction
motor, layout of hardware and layout of software interface. All research by us for our
final year project will also be shown.

2.2 Technology:
2.2.1 What is speed and torque?
Speed and torque are main characteristics of the induction motor on which its whole
principle of the induction motor relies. Speed and torque are dependent on slip of the
motor, slip which differs between zero being when motor running at synchronous speed
and 1 when the rotor is stationary, defines the torque of the motor.

2.2.2 History
After a long and tiring research starting from 1824 by the French physicist, Francois
Arago on motor and alternating current to 1889 where Mikhail Dolivo-Dobrovolsky
invented the induction motor. As time passed, more research followed different types of
induction motor to be invented. These are the same induction motors we use to date
with minor alterations but basic principle being the same. The problem arrived when
people observed the unusual behavior of motor at different/fluctuating voltage levels,
which made them, had no control over the motor as they wanted it to run it at different
speeds. This made scientists to research about the controlling of speed and torque of
induction motor. Different methods are as following:
1. Resistor in series: as resistor is an energy dissipating device, connecting in
series with the motor and power supply, drops the voltages fed to the motor
which caused motor to slow down. Problems regarding this technique were loss
of energy in dissipation and every time different value resistor was needed for a
different speed
2. Variable Resistor: also known as selector switch is the same phenomena as
stated above but having the facility of variable speed option without replacing
different value resistors again and again. Example of this can be seen in and old
fan regulator as shown in (fig.2.1)
3

Variable Frequency Drive

3. Motor Winding: speed of the motor is dependent upon its rotor and stator
windings. As winding produces flux, change in flux produced, changes the
speed of motor. This method is costly and difficult as assembly of motor is
complex and it is not feasible to every time change the winding for a new speed
required for the motor to function on.
4. Poles: this technique depending on the formula Ns= (120*frequency)/poles. As
shown number of poles is inversely proportional to synchronous speed of the
induction motor. Where changing the poles changes the speed but yet it is
another difficult technique due to the complex structure and assembly of the
induction motor.
5. Pulse Width Modulation: also known as PWM was most used technique
previously until VFD came in the market. Still people who have not updated to
VFD use this as a second best technology but his some drawbacks such as
back emf, no brake control, dead time in sine wave etc. (fig 2.2) shows how
switching and triggering mechanism of PWM works.

Fig 2.1

Variable Frequency Drive

Fig 2.2

Proposed Design

3.1 Introduction:
The speed of induction motor is directly dependent upon the frequency supplied from
the power input and inversely dependant on the poles of the motor. Proven by this
formula Ns= (120*frequency)/poles. As changing the poles is a difficult task as
discussed in the literature review, speed is now dependent upon frequency.
The block diagram of the proposed design in (fig 3.1) consists of the following blocks:
1.
2.
3.
4.
5.
6.

ZigBee Transceiver
Micro Controller
Induction Motor
Infra Red Sensor
Liquid Crystal Display
Computer

Variable Frequency Drive

3.2 Block Diagram:

3.3 Explanation:
Supplied frequency to the motor can be controlled by first converting the single phase
power supply from the grid with the help of a rectifier, which makes into a DC power. If u
fed this DC power to switching sequence MOSFETs (H bridge) circuit, you can achieve
your desired frequency by adjusting the switching speed controlled by a PIC micro
controller which generates 2 PWM and 2 digital signal to a set of 4 MOSFETs (metal
oxide field effect transistor) signals which converts DC power to 230V AC power that is
fed to motor. Micro controller is already programmed and you can find its code at the
6

Variable Frequency Drive

end of this report. An IR sensor which works same as a taco meter used to measure
revolutions of a rotating object; it keeps updating the revolutions of the motor to the
controller through a feedback path as shown in the block diagram.
A ZigBee which is a wireless transceiver connected with micro controller and computer,
1 each transmits information to and from micro controller to the computer and vice
versa. ZigBee helps the person who is monitoring at a distance to set any desired value
for the RPMs of the motor it needs to operate on, plus it updates the person with the
real time RPMs of the motor, so the person can be satisfied by the value he applied. A
user friendly interface shown in (fig 3.2) is designed to set, stop and monitor the speed
of the motor. Its code can also be found at the end of the report.

Fig 3.1

Variable Frequency Drive

3.4 Algorithm:

Variable Frequency Drive

Hardware Implementation
9

Variable Frequency Drive

4.1 Power Supply:


There are two power supplies made in this project, one 5v regulated supply as it is the
requirement for the controller power input, the other used by the other rectified without
stepping down to be fed to the H bridge circuit so our project is no more dependent
upon the grid supply for any fluctuations or change in frequency would not affect the
process as we again generate our own AC supply from the rectified supply according to
our own need.

Fig 4.1

4.1.1 Transformer
This is the same as seen on streets or in sub-stations, just it is small in size as it needs
to step down single phase voltages (220V). Transformer works on the principle of
electromagnetic induction (Faradays`s law) that is why AC supply from the grid is first
stepped down by the transformer as seen in (fig 4.1).
There are two coils on a two winding transformer known as primary coil and secondary
coil. Primary being the input and secondary being the output, there is no physical
contact or electrical connection between the two coils. Transformer dissipates very little
power which is almost negligible, so power input is considered as power output. If
voltage is being stepped down, so current needs to be stepped up because power is
constant and has to satisfy the formula Power=Voltage*Current.
The amount of voltage being stepped up or stepped down is decided by the turn ratio
between primary coil and secondary coil. To reduce the voltage number turns in
secondary coil should be less then number of turns in primary.

10

Variable Frequency Drive

Fig 4.2

4.1.2 Rectifier
It converts AC to DC, there are several ways to connect diodes for instance center
tapped transformer which uses two diodes, but we are using four diode bridge rectifier
as mostly used and produces full wave varying DC. A single diode can also rectify AC
but it does half of the job, it only rectifies half cycle of the sine wave, either positive or
negative depending upon the direction it is placed in.

4.1.3 Single Diode Rectifier


A single diode either placed in forward bias or reverse bias with respect to load or
supply will only conduct once through the cycle, either positive or negative depending
upon its position, the other half cycle is blocked as diode acts as an open circuit, giving
no output for the rest of the half cycle. This creates gaps in the output as seen in (fig
4.3).

Fig 4.3

4.1.4 Bridge Rectifier


A bridge rectifier, made with a combination of four diodes, which works in pair of two for
every half cycle to make a full wave rectifier. The arrangement of diodes can be seen in
the (fig 4.4) given below. When a sine wave AC passes through this rectifier, two diodes
conducts as they are in forward bias with the direction of the current for the first half
cycle and then the other to who were previously reverse biased becomes forward
biased as the direction of the current changes after every 180 degrees.

11

Variable Frequency Drive

Fig 4.4

4.1.5 Smoothing Filter


Large value of electrolytic capacitor is used as a smoothing element because a full
bridge rectifier does not provide a pure DC output. The DC output is varying so the
capacitor discharges providing enough current to fill the falling gap as shown in (fig 4.5).
The capacitor again charges quickly near the rising peak so it can discharge again near
the falling peak.

Fig 4.5
We do not a get a perfect smoothing as the capacitor voltage falls as it discharges,
giving a small ripple voltage. In many circuits 10% ripple in supply voltage is negligible
and (fig 4.6) below shows
the recommended value of the capacitor. Bigger the size of the capacitor, fewer the
ripples it allows to form.
.
12

Variable Frequency Drive

Fig 4.6
C = capacitance (Farads)
I = current (amperes)
Vs = peak-peak value of DC (volts)
f = frequency from grid (60Hz in Pakistan)

4.1.6 Regulator (LM 7805)


Voltage regulation ICs are easily gettable in the market with preset output (5V, 12V and
15V). They are also classified by the maximum current they can pass through. Every
circuit which requires DC to operate needs to have a voltage regulator, even your
chargeable devices which works on DC but you plug it into AC port to charge, is
because your charger contains a voltage regulator. A pin diagram for the voltage
regulator LM 7805 used in our project is shown below in (fig 4.7)

4.1.7 Pin diagram for 7805


1. DC supply voltage input
2. Neutral (grounded)
3. Preset voltage at output

Fig 4.7
13

Variable Frequency Drive

This IC is designed to provide output voltage of +5V, but its output current is as low as
150mA which can be improved up to 1 amp if a heat sink is added to the circuitry. Just
like this other voltage regulation ICs of the same chip family can be bought from the
market for different voltage levels. A minimum of at least 3V operating voltage is
required by the IC. If the regulator is not connected according to its pin diagram,
provided in the data sheet easily available from the internet, you may result in damaging
the chip completely which cannot be fixed and has to be replaced by a new one.

4.1.8 Power supply circuit diagram

Fig 4.8

4.1.9 Circuit Description


The 220V supply from the power socket is fed to the adapter mounted on the board, an
electronic mechanism within the adapter converts 220V to 12V output at its secondary
end. This 12V-1A output is applied to the full bridge rectifier. The output of this full bridge
rectifier is pulsating DC or varying DC. This DC out is fed to smoothing capacitor which
tries to finish the ripples from the pulsating DC, bigger the capacitor, fewer the ripples.
The output from the filter capacitor reaches the voltage regulator LM 7805 which turns it
input to 5V-1A DC output. This DC is used to power on master micro controller PIC
16F877A and slave micro controller PIC18F452.

4.2 Liquid Crystal Display (LCD):


Crystalloids dot matrix (alphanumeric) LCDs can be purchased with manufacturing
options of backlight. The latest technology in LCDs proves in efficient power utilization
14

Variable Frequency Drive

which gives higher power efficiency. These models can be merged with different types
and configuration microprocessor.

Fig 4.9

Key Features:
1.
2.
3.
4.
5.
6.
7.

Switching speed upto 2 Mhz


Hold up to 80 characters
High bit generator
Duty cycles can be altered through programming
Cursor option available
Vast spectrum of functions.
Automatic reset on power restart

4.3 MICRO CONTROLLER:


Master
The 40 pin DIP (dual inline packaging) scheme with a switching speed of 200
nanoseconds can easily be programmed by burning it through its specific burner. This
PIC 16f877a can contain up to 256 bytes of data which can be edited any time as this
micro controller contains EEPROM (Electrically Erasable Programmable read-Only
15

Variable Frequency Drive

Memory). This micro control is one of the PIC16fXXX family members, with other
members differing from each other in terms of feature. Pin configuration shown in (fig
4.10).

Slave
This is the PIC18f452 micro microcontroller from the family PIC18fXXX, with a switching
speed of100 nanosecond, used as a slave or secondary processor in this project. This
is a 40 pin DIP architecture with pin diagram and each pins configuration can be found
below (fig 4.11). This peripheral device powers up with a 5V DC supply and can be used
for processing at greater speed. This is a re-programmable device, which can be burnt
again and again through its burner as these 256 bytes of EEPROM is electronically
erasable memory. It can contain up to 77 word instructions. The code compiler of this
device is user friendly and for guidance tutorial videos can be seen from internet.

4.3.1 Key features

10-bit Pulse Width Modulation


Memory of 256 bytes (erasable)
25mA required for every input/output
Programmable
Slave Ports available
Strength
Switching speed (24 MHz)
Memory Lock
128 x 8-bit Internal RAM
32 Programmable ports
2 Counters
Interrupt
Serial Channel

4.3.2 Pin Configuration

16

Variable Frequency Drive

Fig 4.10

17

Variable Frequency Drive

Fig 4.11

4.3.3 Explanation
Master controller acts as the main controller as it needs to do all the major work and
take decisions according to its program. It not only directs the slave controller when to
work and how to work but it is continuously in touch with the computer as ZigBee
protocol is connected to. This controller does all the talking, such as it needs to take or
check for any new value of the RPM or new minimum temperature needs to be set in
degrees Celsius and update computer with ongoing values and status on the board. A
feedback from the motor is received through Hall Effect sensor, to make sure the motor
is running on the desired value set by the user, this task is achieved by comparing
feedback value and value set by the user. (Fig 4.12) shows the diagram of master slave
and its connection described below
Pin 2: Power supply (5V)
Pin 3: Heat sensor
18

Variable Frequency Drive

Pin (19-22, 27-29): Connected with LCD


Pin (25, 26): Serial port
Pin 33: feedback value from motor
Pin (34-40): Connection with slave

Fig 4.12

Slave controllers main and only target is the switching of MOSFETs (H-bridge), the
speed of switching decides the frequency of AC output that will be generated. Slave
controller sends message to driver IC connected with MOSFETs, 1 driver controls 2
MOSFETs and helps slave controller in switching efficiently. Heat sink is connected with
every MOSFET, as it is a power circuit, and many MOSFETs burnt without heat sink.
(Fig 4.13) shows the diagram of slave controller with its different connection. Working of
pins is defined below.
Pin 2: Enable signal
Pin (3-5, 7) input from master controller
19

Variable Frequency Drive

Pin (15-18): Output to induction motor


Pin (19-22, 27-29): Connected with LCD

Fig 4.13

4.4 MOSFET CIRCUIT DIAGRAM:

Fig 4.14

20

Variable Frequency Drive

4.4.1 Circuit Explanation


The circuit is created to get the control of AC induction motor`s speed and DC motor
further coupled with it. The MOSFET are used to control the speed of the motor by
varying the frequency and supply voltage to the motors input. The MOSFET is switched
on orders of master controller at high speed with the help of PWM waves. The PWM
and digital waves are generated by the PIC micro controller. The PWM and duty cycle is
controlled by the program.
Through the slave micro controller a double PWM pulse and a double digital signal is
produced which is fed to a combination of 4 MOSFETs arranged in a manner, making a
H-bridge (DC to AC). The switching of the MOSFETs, when which will be turned on and
conducts will be helped by the driver ICs installed (1 IC controls 2 MOSFETs). This
process is closely managed as this is the most crucial stage of the project, where
switching of the MOSFETs decides the output frequency of the AC source fed to the
motor. This is the whole motive of the project, controlling motor speed through
frequency.

4.5 HALL EFFECT SENSOR:


It is a transducer (that converts into physical quantity) that varies its output in form of
pulses with respect to the change in magnetic field around it. Taking this point into
account, we placed this sensor very close to the shaft of the induction motor. As the
shaft is visible and can be seen when rotating we tightened a smack screw and top of
the shaft which will move with shaft and definitely with the same speed as of the motor.
As screw is a metallic object, when it passes close to the sensor, it cuts its magnetic
field generating a small value of voltage which is read in the form of pulses. Pulses per
second gives the revolutions of motors per second as screw will cut magnetic field only
once per revolution. The result of the pulses is send to master micro controller passing
through a Schmitt trigger circuit, where rest of the calculation is done. Hall
Effect sensors comes in handy for positioning and speed detection therefore we have
taken its help in this project just for speed detection only.

4.6 SINGLE PHASE INDUCTION MOTOR:


Induction motor also known as asynchronous motor, is frequency dependant motor. This
is why VFD is applicable on this and nearly every motor that works on AC as they are
frequency dependant. The two main parts of this motor are rotor and stator, rotor being
the movable part and stator being the stationary part as the name suggests. There is no
physical contact between the two and are separated by air gap only. It is an
asynchronous motor because its rotor moves at a slower speed than that of the
synchronous speed. The stator winding is supplied with AC voltage which produces
21

Variable Frequency Drive

induced voltage in rotor winding using the induction theory. (Fig 4.15) shows the
physical shape or induction motor also used for pumping water at home. We have used
0.25 HP (horse power) 186.5W (watts) single phase induction motor in our project.
An induction motor does not require mechanical substitution, self start or DC input as it
works on the phenomenon of induction. This motor`s two main rotor types are wound
type and squirrel cage rotor. Induction motors are preferred in industries because of
their rugged, economical and reliable nature.

Fig 4.15

4.6.1 Synchronous Operating Speed


AC motor has the synchronous operating speed (Ns), which is expressed in revolutions
per minute (RPMs) as:

Ns=120xfrequency
No. of Poles
As seen in the formula synchronous speed is directly proportional to frequency supplied
through AC input. If keeping poles of the motor constant, synchronous speed can only
be controlled by changing the frequency.

4.6.2 Slip
It is the gap left between the motor`s operating (Nr) speed and synchronous speed (Ns)
at the same frequency. It is defined is ratio or percentage with formula
22

Variable Frequency Drive

Slip = Ns - Nr
Ns
Where Ns is the synchronous speed and Nr is the rotor operating speed, the value of
slip lies between 0 and 1. Slip is equal to 1 and when rotor is at rest means Nr=0 and
slip is equal to 1 when Ns=Nr.

4.6.3 Power factor


In simple words power factor is the angle between voltage and current. When AC
current passed through different type of devices, it makes either current or voltage lag
behind each other. Power factor = Cos(x)= Voltage x Current
The power factor changes with load, being near to as low as 0.30 with no load condition
to around 0.90 with full load condition due. Power factor can be enhanced by
connecting capacitor banks or phase advancers either on motor itself or, on a common
supply which is fed to more than 1 motor, or this may cause penalty in your bill for not
keeping your power factor near to unity by your service provider.

4.7 DC MOTOR & LOAD:


As the title of this report suggests, that automatic speed and torque of single phase
induction motor will be achieved with variable load. To keep budget in mind and looking
after all the resources available and to show that this VFD works with variable load, we
coupled a DC motor which will work as a DC generator and power up load (bulbs) of
different rating.
DC motor which is acting as a generator takes its mechanical input from induction motor
as their shaft is physically coupled. On the other side DC generator produces DC output
which is fed to a combination of bulb holder on which different ratings of bulbs are
placed. Different combination of bulbs are switched on at different time to show the
phenomenon of variable and when all bulbs are switched off no load condition is
achieved and can be even tested.

23

Variable Frequency Drive

Fig 4.16

4.8 ZIGBEE PROTOCOL:


It is a wireless, serial type communication protocol and is formed by an IEEE 802.15.4
standard. It uses low power and is a efficient transmission device with communication
range of 10-100m (meter) line of sight depending upon surrounding conditions and
environmental characteristics. ZigBee transfer data at a rate of 250kb/s. Its main
advantages include security, low expense and easy-fast connectivity with its paired
device. It is a universal communication and accepted worldwide but from past few years
this device is used in terrorist activities causing it to be banned and rarely found in some
countries.
Key Features:
1. Frequency Range (2.4-2.48)GHz
2. low power intake
3. Less waiting time
4. Multi tasking
5. 65000 nodes available
6. Security
7. Avoids interferences
8. Quality link
24

Variable Frequency Drive

Fig 4.17

4.9 GRAPHICAL USER INTERFACE (GUI):


We designed a user friendly interface using programming language C# (sharp). If you
know basic programming language such as C or C++, you can easily design a user
interface by looking at video tutorials easily available on You Tube or internet. There are
two main operations provided to the user through GUI, first setting a desired value for
the speed of motor, secondly temperature set point of the motor. Two more blocks
included for live feed of ongoing temperature and speed of motor through ZigBee so
user has the knowhow of the situation. A master button is set to start or stop the motor
instantly and a heat sensor is placed near the motor to measure temperature. If
temperature exceeds above set point a warning sign appears on the interface and
motor stops automatically. A separate box for history is also designed as values keep
updating after every second, so if the user does not look at the screen for a while, he
can always see history box for previously occurred values.

25

Variable Frequency Drive

Fig. 4.18

4.10 CIRCUIT DIAGRAM:

Fig 4.19

26

Variable Frequency Drive

RESULT & FUTURE DEVELOPMENT


5.1 Result:
The result in the table and graph below clearly shows that speed of the motor is directly
dependent upon applied frequency. Second way of achieving this result is by altering
the poles of the motor but that would be an expensive change and very much time
consuming. PWM generates required pulses of different widths which are combined to
make a complete output waveform. As speed varies with respect to frequency, this
device is therefore known as VFD (Variable Frequency Drive).
Hz
RPM

20
600

25
750

30
900

35
1050

40
1200

45
1350

50
1500

55
1650

60
1800

Fig 5.1

27

Variable Frequency Drive

5.2 CONCLUSION:
By looking at the output graphs (fig 5.1) and tables of the results obtained at different
loads and even no load condition, it is observed that VFD helps you in keeping the
speed of the motor constant and it runs at the same value you desire regardless of the
load. This was only possible because induction motor and every other motor which runs
on AC is frequency dependant. Taking advantage of this dependency we designed a
single phase VFD, which works best with single phase induction motor and helps it to
maintain its speed by increasing or decreasing the fed frequency through input in steps.

5.3 1-PHASE TO 3-PHASE VFD:


A 3 phase VFD is as similar as single phase VFD, almost same schematic as shown in
the figure below. A 3 phase VFD requires faster processing because it needs to make
H-bridge produce 3 sine waves at the same time. To overcome this problem the existing
micro controller 16f877a in single phase VFD is replaced with 18f2431. The
replacement is necessary because the existing micro controller only produces 2 PWM
signals at a time, whereas 3 phase VFD requires 3 PWM signals at a time.
Unfortunately a slave will be attached to it as it is not the fastest of the controllers and if
not used with a slave controller; it will go in wait state every time. If this 18f2431 is
replaced with much faster 30f4011, you will not require a slave controller as this fast
controller will even do slave`s work in the required time.
Talking about the H-bridge, previously made with 4 MOSFETs, it was used to generate
AC sine wave at required frequency. Now as we are talking about 3 phase, therefore a
H-bridge will be required that produces three sine waves at a time, 120 degrees apart.
To make this task happen; a 6 MOSFETs based H-bridge is required. Last change is the
input supply, obviously you need a 3 phase input supply to make 3 phase VFD work.
These minor changes with required wiring will change single phase VFD to 3-phase
VFD.

28

Variable Frequency Drive

Fig. 5.2

5.4 FUTURE DEVLOPMENT:


Mostly we have a misconception about UPS (uninterrupted power supply), what we
usually install in our homes is not a UPS but just an inverter with batteries. The major
difference between the two is about the delay occurring in switching, the basic inverter
takes about a second or two, to switch from grid supply to batteries whereas UPS gives
no interruption and non of your device connected with this UPS will be switched off for
even a nano second.
The secret behind UPS magical working can be found in its schematic, its just the
change in order of components of inverter that changes a simple inverter into a UPS.
This production was successful as there are many places such as life supporting
system etc. where power should be available 24x7.
In online UPS system the device does not operate on direct grid for even a second, it is
the battery bank that supplies power to the device continuously. What happens is grid
supply is taken in, stepped down, rectified and fed to battery banks. On the other hand
of the bank, reverse procedure occurs, supply out of the battery is inverted, stepped up
and fed to the device it is connected to. The batteries are supplying power all this time,
therefore is grid supply cuts off, batteries will still be supplying what they have stored
and no switching time will lapse in this procedure because system was already running
on batteries.

29

Variable Frequency Drive

A VFD device which we have designed can do all this rectification and inversion and
can be turned into an online UPS if connected with battery banks and a pure sine wave
filter.

30

Variable Frequency Drive

PROGRAMMING CODES
SLAVE MICRO CONTROLLER:
#include <18F452.h> //INCLUDE IC HEADER FILE
#FUSES HS,NOWDT
//No Watch Dog Timer
#FUSES WDT128
//Watch Dog Timer uses 1:128 Postscale
#FUSES NOBROWNOUT
//No brownout reset
#FUSES NOLVP
//No low voltage prgming, B3(PIC16) or B5(PIC18) used
for I/O
#use delay(crystal=20000000) //DEFINE CRYSTAL VALUE
#byte
#byte
#byte
#byte
#byte

porta=0xf80
portb=0xf81
portc=0xf82
portd=0xf83
porte=0xf84

//DEFINE PORT RAM ADRESS


//DEFINE PORT RAM ADRESS
//DEFINE PORT RAM ADRESS
//DEFINE PORT RAM ADRESS
//DEFINE PORT RAM ADRESS

#define LCD_RS_PIN
PIN_d0 //DEFINE LCD PINS
#define LCD_RW_PIN
PIN_d1 //DEFINE LCD PINS
#define LCD_ENABLE_PIN PIN_d6 //DEFINE LCD PINS
#define LCD_DATA4
PIN_d5 //DEFINE LCD PINS
#define LCD_DATA5
PIN_d4 //DEFINE LCD PINS
#define LCD_DATA6
PIN_d3 //DEFINE LCD PINS
#define LCD_DATA7
PIN_d2 //DEFINE LCD PINS
#include "lcd.c"
#bit
#bit
#bit
#bit
#bit

enable=porta.0 //DEFINE CONTROL SIGNAL PINS


inc1=porta.1 //DEFINE CONTROL SIGNAL PINS
inc2=porta.2 //DEFINE CONTROL SIGNAL PINS
dec1=porta.3 //DEFINE CONTROL SIGNAL PINS
dec2=porta.5 //DEFINE CONTROL SIGNAL PINS

#bit
x=portc.3 //DEFINE OUTPUT PINS
#bit
y=portc.0 //DEFINE OUTPUT PINS
#define f_max 4500
//DEFINE FREQUENCY MAXIMUM AND MINIMUM LIMITS
#define f_min 2000
//DEFINE FREQUENCY MAXIMUM AND MINIMUM LIMITS
const int16 pwm_tab[20]= // PWM VALUE TABEL
{
0, 86, 170, 248, 319, 381, 430, 467, 489, 497, 489, 467, 430, 381, 319, 248, 170, 86,0,0
};
//////////////VARIABLES
31

Variable Frequency Drive

int1 flag=0;
int pwm_tab_counter=0;
int16 freq=4400;
#include "vfd_fun.c"
#INT_TIMER1
void TIMER1_isr(void)
{
set_timer1(65535-freq);
//set timer value
pwm_tab_counter++;
//increment tab counter
if(pwm_tab_counter>18) {pwm_tab_counter=0;flag=~flag;}// check tab counter limits
if(flag)
// //if flag equal to 1
{
// then make +ve cycle
y=0;x=1;
//
set_pwm1_duty((int16)pwm_tab[pwm_tab_counter]);
//
}
//
else
//
{
//
x=0;y=1;
//else make -ve cycle
set_pwm2_duty((int16)pwm_tab[pwm_tab_counter]);
//
}
}
void main()
{
set_tris_a(0xff);//initialize io ports
set_tris_c(0x00);//initialize io ports
lcd_init();// initialize lcd
lcd_putc("VARIABLE FREQUENCY\n DRIVE");//put default text
printf(lcd_putc,"\fFREQ VAR=%Lu"freq);//
delay_ms(1000);//delay
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); //initialize timer and its interrupt
enable_interrupts(INT_TIMER1);
//initialize timer and its interrupt
enable_interrupts(GLOBAL);
//initialize timer and its interrupt
while(TRUE)
//initialize timer and its interrupt
{
if(enable==1) //if enable is 1 then perform vfd
{
vfd_init();// initialize vfd
while(enable==1)// do this while enable signal is 1
{
if(dec1==1) {freq+=10;if(freq>f_max) freq=f_max;}//make increment or decrement
if signal is ok
else if(dec2==1) {freq+=50;if(freq>f_max) freq=f_max;}//make increment or
decrement if signal is ok
32

Variable Frequency Drive

else if(inc1==1) {freq-=10;if(freq<f_min) freq=f_min;}//make increment or decrement if


signal is ok
else if(inc2==1) {freq-=50;if(freq<f_min) freq=f_min;}//make increment or decrement if
signal is ok
else ;
printf(lcd_putc,"\fFREQ VAR=%Lu"freq);//print new value to lcd
delay_ms(300);//delay for next round
}
}
else
{
vfd_off();//turn off vfd
lcd_putc("\fNO INPUT");delay_ms(1000);//put on lcd new data
}
}//while
}//main
///////////////////

MASTER MICRO CONTROLLER


#include <16F877A.h>
#device adc=10
#FUSES HS,NOWDT,PROTECT,CPD
//No Watch Dog Timer
#FUSES NOBROWNOUT
//No brownout reset
#FUSES NOLVP
//No low voltage prgming, B3(PIC16) or B5(PIC18) used
for I/O
#use delay(crystal=20000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
#byte porte=0x09
#bit
#bit
#bit
#bit
#bit

enable= portb.7
inc1= portb.6
inc2= portb.5
dec1= portb.4
dec2= portb.3

#define LCD_RS_PIN
#define LCD_RW_PIN

PIN_d0
PIN_d1
33

Variable Frequency Drive

#define LCD_ENABLE_PIN PIN_d6


#define LCD_DATA4
PIN_d5
#define LCD_DATA5
PIN_d4
#define LCD_DATA6
PIN_d3
#define LCD_DATA7
PIN_d2
#include "lcd.c"
////////////////////variables
int t1_counter=0;
//timer counter variables
int16 RPS,RPS_counter;
//rps and rps counter variables
int1 flag=0;
//
flag for data transmit
int32 temp_sp=50,rps_sp=50; //
temperature variables + rps setpoint
//float i;
//
int32 temp;
//
temperature variables
//////////////////////////////fun prototype
int32 rx_data();
// data to variable func
void serial_Send();
//serial sending func
void process_limits();
// limit processing variables
///////////////////////////// include library
#INCLUDE <stdlib.h> //include studio library
#include "adc_file.c"
// include adc file
////////////////ext interrupt
#INT_ext
void ext_isr(void)
{
rps_counter++; /// inc rps counter
for(char i=0;i<100;i++);// make delay
}
/////////////////////////////timer interrupt
#INT_TIMER1
void TIMER1_isr(void)
{
set_timer1(65535-25000);// set timer new value
t1_counter++; // inc timer1 counter
if(t1_counter>25)// check timer value if one second is ok
{
RPS=rps_counter;// copy rps counter to rps
rps_counter=0;// make zero
t1_counter=0;// make it zero
}
}
////////////////////////////////////serial interrupt
int enable_flag=0;// enable flag
#INT_rda
void rda_isr()
{
char c=0; // zero variable
34

Variable Frequency Drive

c=getch();// get data


if(c=='T')// if it is T then it is temperature varialbe
temp_sp=rx_data();// read temp
else if(c=='R')// if it is c then read temperature
rps_sp=rx_data();//
else if(c=='D')//if it is d then turn on flag 1
flag=1;
else if(c=='S') {enable=1;enable_flag=1;putc(c);putc('\n');}// if it is s then enable
else if(c=='E') {enable=0;enable_flag=0;putc(c);putc('\n');}// if e then turn off vfd
}
////////////////////////////////////////////////////main program
void main()
{
delay_ms(10);
set_tris_b(0b00000001);portb=0;// initialize io ports
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
//init timer
lcd_init();//init lcd
lcd_putc("VARIABLE FREQUENCY\n DRIVE");//put default data
enable_interrupts(INT_TIMER1);// enable timer interrupt
ext_int_edge( H_TO_L ); // initialize external interrupt edge
enable_interrupts(INT_ext);//turn on all interrupt//
enable_interrupts(INT_rda);//turn on all interrupt
enable_interrupts(GLOBAL); //turn on all interrupt
adc_init(); //intiialize adc
// enable=1;enable_flag=1;
while(TRUE)
{
printf(lcd_putc,"\fRPS =%03Lu RSP=%03Lu"RPS,rps_sp); //print new data to lcd
printf(lcd_putc,"\nTEMP=%03Lu TSP=%03Lu"temp,temp_sp); //print new data to lcd
temp=process_analog(0);//read temperature
process_limits();//check limits
if(flag==1) serial_Send();//send serial data
delay_ms(100);// make delay for next round
}
}
////////////// limits function
void process_limits()
{
if((temp>temp_sp)&&(enable_flag==1))
{enable=0;enable_flag=0;printf("E\n");delay_ms(100);serial_send();delay_ms(100);printf
("O\n\r");}
if(temp>temp_sp) {enable=0;enable_flag=0;}
if(enable_flag==1)
{
if(RPS<rps_sp-5)
{
35

Variable Frequency Drive

inc1=0;inc2=1;dec1=0;dec2=0;
}
else if(RPS<rps_sp)
{
inc1=1;inc2=0;dec1=0;dec2=0;
}
else if(RPS>rps_sp+5)
{
inc1=0;inc2=0;dec1=0;dec2=1;
}
else if(RPS>rps_sp)
{
inc1=0;inc2=0;dec1=1;dec2=0;
}
else {inc1=0;inc2=0;dec1=0;dec2=0;};
}
}
///////////////////////// //data conversion function
int32 rx_data()
{
char STR[10]={"ABCD\0"}; //string variable
char c,length=0;// variable
c=0;length=0; // init variables
do{
//loop to get new data
c=getch();
//loop to get new data
str[length++]=c; //loop to get new data
}
//loop to get new data
while(c!='\n'); //loop to get new data
str[length]=0; //make string end
return(atoi32(str)); // make variable against string
}
void serial_Send()
{
printf("R=%03Lu\n"RPS);delay_ms(10);//send rps value
printf("T=%03Lu\n"temp);delay_ms(10); // send temperature value
flag=0;//clear flag
}

36

Variable Frequency Drive

GRAPHICAL USER INTERFACE (GUI):


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Variable_Frequency_Drive
{
public partial class VFD : Form
{
/*
variables
*/
string rxstring = "ABC";
public VFD()
{
InitializeComponent();
}
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
rxstring = serialPort1.ReadLine();
this.Invoke(new EventHandler(process_serial_data));
}
catch (Exception dc)
{
MessageBox.Show(dc.ToString());
}
}
void process_serial_data(Object sender, EventArgs e)
{
debug.Text = debug.Text +"\n\r"+ rxstring;
if (rxstring[0] == 'R') rpm_textbox.Text = rxstring;
37

Variable Frequency Drive

else if (rxstring[0] == 'T') temp_textbox.Text = rxstring;


else if (rxstring[0] == 'O') MessageBox.Show("OVER HEATING FAULT");
else if (rxstring[0] == 'S')
{
START_STOP.BackColor = Color.Green;
START_STOP.Text = "PRESS TO STOP";
}
else if (rxstring[0] == 'E')
{
START_STOP.BackColor = Color.Red;
START_STOP.Text = "PRESS TO START";
}
}
private void setpoint_button_Click(object sender, EventArgs e)
{
serialPort1.WriteLine(rpm_sp_textbox.Text);
}
private void temp_button_Click(object sender, EventArgs e)
{
serialPort1.WriteLine(temp_sp_textbox.Text);
}
private void VFD_Load(object sender, EventArgs e)
{
timer_start.Start();
try
{
if (!serialPort1.IsOpen)
{
serialPort1.Open();
// serialPort1.WriteLine("\n\rPORT OPEN");
}
}
catch (Exception dc)
{
MessageBox.Show("Port not found");
Application.Exit();
}
}//VFD1 load

private void VFD_FormClosing(object sender, FormClosingEventArgs e)


{
38

Variable Frequency Drive

try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
}
}
catch (Exception dc)
{
MessageBox.Show(dc.ToString());
}
}
private void START_STOP_Click(object sender, EventArgs e)
{
if (START_STOP.BackColor == Color.Red)
{
serialPort1.WriteLine("S");
START_STOP.BackColor = Color.Green;
START_STOP.Text = "PRESS TO STOP";
}
else
{
serialPort1.WriteLine("E");
START_STOP.BackColor = Color.Red;
START_STOP.Text = "PRESS TO START";
}
}
private void timer_start_Tick(object sender, EventArgs e)
{
serialPort1.WriteLine("D");
timer_start.Start();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
MessageBox.Show("IT IS JUST LOGO");
}
}
}

39

Variable Frequency Drive

namespace Variable_Frequency_Drive
{
partial class VFD
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed;
otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.rpm_textbox = new System.Windows.Forms.TextBox();
this.setpoint_button = new System.Windows.Forms.Button();
this.rpm_sp_textbox = new System.Windows.Forms.TextBox();
this.temp_sp_textbox = new System.Windows.Forms.TextBox();
this.temp_button = new System.Windows.Forms.Button();
this.temp_textbox = new System.Windows.Forms.TextBox();
this.serialPort1 = new System.IO.Ports.SerialPort(this.components);
this.timer_start = new System.Windows.Forms.Timer(this.components);
this.START_STOP = new System.Windows.Forms.Button();
this.debug = new System.Windows.Forms.TextBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
40

Variable Frequency Drive

((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// rpm_textbox
//
this.rpm_textbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)
(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
this.rpm_textbox.Font = new System.Drawing.Font("Arial", 20.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rpm_textbox.ForeColor = System.Drawing.Color.Black;
this.rpm_textbox.Location = new System.Drawing.Point(34, 63);
this.rpm_textbox.Name = "rpm_textbox";
this.rpm_textbox.Size = new System.Drawing.Size(212, 39);
this.rpm_textbox.TabIndex = 0;
this.rpm_textbox.Text = "0";
//
// setpoint_button
//
this.setpoint_button.BackColor = System.Drawing.Color.Fuchsia;
this.setpoint_button.Location = new System.Drawing.Point(34, 214);
this.setpoint_button.Name = "setpoint_button";
this.setpoint_button.Size = new System.Drawing.Size(212, 56);
this.setpoint_button.TabIndex = 1;
this.setpoint_button.Text = "SAVE";
this.setpoint_button.UseVisualStyleBackColor = false;
this.setpoint_button.Click += new
System.EventHandler(this.setpoint_button_Click);
//
// rpm_sp_textbox
//
this.rpm_sp_textbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)
(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
this.rpm_sp_textbox.Font = new System.Drawing.Font("Arial", 20.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rpm_sp_textbox.ForeColor = System.Drawing.Color.Black;
this.rpm_sp_textbox.Location = new System.Drawing.Point(34, 137);
this.rpm_sp_textbox.Name = "rpm_sp_textbox";
this.rpm_sp_textbox.Size = new System.Drawing.Size(212, 39);
this.rpm_sp_textbox.TabIndex = 2;
this.rpm_sp_textbox.Text = "R20";
//
// temp_sp_textbox
//
this.temp_sp_textbox.BackColor = System.Drawing.Color.FromArgb(((int)
(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));

41

Variable Frequency Drive

this.temp_sp_textbox.Font = new System.Drawing.Font("Arial", 20.25F,


System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.temp_sp_textbox.ForeColor = System.Drawing.Color.Black;
this.temp_sp_textbox.Location = new System.Drawing.Point(272, 137);
this.temp_sp_textbox.Name = "temp_sp_textbox";
this.temp_sp_textbox.Size = new System.Drawing.Size(198, 39);
this.temp_sp_textbox.TabIndex = 5;
this.temp_sp_textbox.Text = "T50";
//
// temp_button
//
this.temp_button.BackColor = System.Drawing.Color.Fuchsia;
this.temp_button.Location = new System.Drawing.Point(272, 214);
this.temp_button.Name = "temp_button";
this.temp_button.Size = new System.Drawing.Size(198, 56);
this.temp_button.TabIndex = 4;
this.temp_button.Text = "SAVE";
this.temp_button.UseVisualStyleBackColor = false;
this.temp_button.Click += new System.EventHandler(this.temp_button_Click);
//
// temp_textbox
//
this.temp_textbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)
(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
this.temp_textbox.Font = new System.Drawing.Font("Arial", 20.25F,
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.temp_textbox.ForeColor = System.Drawing.Color.Black;
this.temp_textbox.Location = new System.Drawing.Point(272, 63);
this.temp_textbox.Name = "temp_textbox";
this.temp_textbox.Size = new System.Drawing.Size(198, 39);
this.temp_textbox.TabIndex = 3;
this.temp_textbox.Text = "0";
//
// serialPort1
//
this.serialPort1.PortName = "COM7";
this.serialPort1.DataReceived += new
System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived);
//
// timer_start
//
this.timer_start.Interval = 2000;
this.timer_start.Tick += new System.EventHandler(this.timer_start_Tick);
//
// START_STOP
//
42

Variable Frequency Drive

this.START_STOP.BackColor = System.Drawing.Color.Red;
this.START_STOP.Location = new System.Drawing.Point(200, 317);
this.START_STOP.Name = "START_STOP";
this.START_STOP.Size = new System.Drawing.Size(347, 94);
this.START_STOP.TabIndex = 6;
this.START_STOP.Text = "PRESS TO START";
this.START_STOP.UseVisualStyleBackColor = false;
this.START_STOP.Click += new
System.EventHandler(this.START_STOP_Click);
//
// debug
//
this.debug.Location = new System.Drawing.Point(502, 40);
this.debug.Multiline = true;
this.debug.Name = "debug";
this.debug.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.debug.Size = new System.Drawing.Size(205, 230);
this.debug.TabIndex = 8;
//
// pictureBox1
//
this.pictureBox1.Image =
global::Variable_Frequency_Drive.Properties.Resources.UMT;
this.pictureBox1.Location = new System.Drawing.Point(34, 300);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(127, 111);
this.pictureBox1.SizeMode =
System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 9;
this.pictureBox1.TabStop = false;
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.Location = new System.Drawing.Point(39, 28);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(121, 31);
this.label1.TabIndex = 10;
this.label1.Text = "REV P/S";
//
// label2
//
this.label2.AutoSize = true;
43

Variable Frequency Drive

this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 20.25F,


System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.Location = new System.Drawing.Point(280, 28);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(133, 31);
this.label2.TabIndex = 11;
this.label2.Text = "CELCIUS";
//
// VFD
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(731, 423);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.debug);
this.Controls.Add(this.START_STOP);
this.Controls.Add(this.temp_sp_textbox);
this.Controls.Add(this.temp_button);
this.Controls.Add(this.temp_textbox);
this.Controls.Add(this.rpm_sp_textbox);
this.Controls.Add(this.setpoint_button);
this.Controls.Add(this.rpm_textbox);
this.Name = "VFD";
this.Text = "VARIABLE FREQUENCY DRIVE";
this.FormClosing += new
System.Windows.Forms.FormClosingEventHandler(this.VFD_FormClosing);
this.Load += new System.EventHandler(this.VFD_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox rpm_textbox;
private System.Windows.Forms.Button setpoint_button;
private System.Windows.Forms.TextBox rpm_sp_textbox;
private System.Windows.Forms.TextBox temp_sp_textbox;
private System.Windows.Forms.Button temp_button;
private System.Windows.Forms.TextBox temp_textbox;
private System.IO.Ports.SerialPort serialPort1;
private System.Windows.Forms.Timer timer_start;
private System.Windows.Forms.Button START_STOP;
44

Variable Frequency Drive

private System.Windows.Forms.TextBox debug;


private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Variable_Frequency_Drive
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new VFD());
}
}
}

REFRENCES
45

Variable Frequency Drive

[1] Specification of Variable Frequency Drive Systems to Meet the New IEEE 519
Standard.
[2] Gopal K. Dubey, Fundamentals of Electrical Drives, Second Edition, Narosa
Publishing House, 2007
[3] Jan-Erik Rsnen and Eric W Schreiber, Using Variable Frequency Drives (VFD) to
save energy and reduce emissions in newbuilds and existing ships White Paper ABB
Marine and Cranes, 2012.
[4] Yasar Birbir, Design and implementation of PLC-based monitoring control system for
threephase induction motors fed by PWM supply International Journal of Systems
Applications, Engineering & Development, Issue 3, Volume 2, pages 128-135,
September 2008.
[5] Brian Shuman, Building A Reliable VFD System Belden Technical Support 1.800.
BELDEN.1 www.belden.com 2009.
[6] Thomas F Kaiser, Richard H Osman, Ralph O Dickau, Analysis Guide for Variable
Frequency Drive Operated Centrifugal Pumps Proceedings of The Twenty Fourth
International Pump Users Symposium, pages 81-106, 2008
[8] L. Xu, "Dynamical Model of and Integral-Cycle Controlled Single-Phase Induction
Machine," IEEE Transactions on Energy Conversion, Vol. 7, No. 4, Dec. 1002, pp. 761767.
[9] E.R. Collins and R.E. Ashley, "Operating Characteristics of Single-Phase Capacitor
Motors Driven from Variable Frequency Supplies," Proceedings of IEEE-IAS
Conference, 1991, pp. 52-57.
[10] M.F. Rahman and L. Zhong, "A Single/Two-Phase, Regenerative, Variable Speed,
Induction Motor Drive with Sinusoidal Input Current," Proceedings of IEEE Conference,
1995, pp. 584-590.\
[11] M.F. Rahman and L. Zhong, "A Variable Speed Single-Phase Induction Motor Drive
using a Smart Power Module,Proceedings of the 1996 IEE Power Electronics and
Variable Speed Drives Conference, 23-5 Sept. 1996, Conference Publication No. 429,
pp. 407-412.
[12] Randall L. Foulke, Principles and Applications of Variable Frequency Drives NC
AWNA. WEA Spring Conference New Bern, North Carolina April, 2009.
[13] Ned Mohan, Tore M. Undaland and William P. Robbins Power electronics
(converters, application and design) third edition, John Wiley and sons INC.
[14] P.C. Sen Power electronics McGraw- Hill Education Private Limited, Second edition
2009.
[15] Theraja A. Text book of electrical technology 1997, S. Chand and Company LTD.
[16] R.K. Rajput Electric Machines (DC machines, AC machines and polyphase circuits)
in S.I. units Laxmi publications LTD, third edition, 2002.
[17] Stephen J. Chapman. Electric machinery fundamentals, third edition, McGraw- Hill
Companies INC.
[18] Jimmie J. Cathey Electric machines, analysis and design applying matlab. McGrawHill Companies INC, 2001 edition.

46

Vous aimerez peut-être aussi