An Introduction To AC Induction Motor Control Using dsPIC30F PDF
An Introduction To AC Induction Motor Control Using dsPIC30F PDF
SCR X6
3-Phase
ACIM
+
AC
MAINS
SINGLE-PHASE ACIM vs. In general, there are three types of split-phase motors.
The first type has two windings, a centrifugal switch
THREE-PHASE
and a single pair of input terminals. These motors are
Most motors intended for industrial applications will typically used for fans and blowers. At start-up, both
have three-phase windings. Three-phase power is windings are connected in parallel. After the motor is
widely available in an industrial environment. Residen- near full speed, the centrifugal switch disconnects the
tial environments usually only have single-phase power start winding. Once the motor is spinning with sufficient
available, which presents a problem for ACIMs. speed, the motor can run without the start winding. This
type of motor is not very efficient during starting, but a
A three-phase motor is the best type to use for variable
fan or blower will not present a large load at low speed.
speed control. The three-phase motor gives good
torque performance at all operating speeds. Single- The second kind of split-phase motor has two windings.
phase motors can also be used, but they have limited A centrifugal switch and a capacitor are placed in
performance in the low-speed range. Depending on the series with the start winding. The capacitor provides
motor, there can be significant torque pulsations when phase shift, which improves the starting torque and
a single-phase induction motor is run at low speeds. reduces the starting current. The centrifugal switch dis-
connects the start winding (and capacitor) after the
A three-phase motor can generate a true rotating
motor is near full speed. This type of motor is often
magnetic field in the stator windings when fed from a
called a ‘capacitor-start’ motor.
source of three-phase power. However, without some
modification, an ACIM with a single stator winding The third type of split-phase motor eliminates the
cannot produce a rotating magnetic field that is capable centrifugal switch, but still has a capacitor in series with
of producing torque. This rotating field problem can be the secondary winding. The secondary winding is,
handled in different ways. therefore, never disconnected. This type of split-phase
motor is often called a ‘capacitor-run’ motor and has
Shaded-pole motors have a pole structure that is
the best performance of all split-phase motor types.
formed from laminated iron pieces. A single coil is
The capacitor-run motor will have the best torque
placed on the structure. A ‘rotating’ field is produced by
performance over the operating speed range. Of all the
placing shorting rings around the laminated pole pieces
different types of single phase ACIMs, a capacitor-run
in two strategic locations. The shorting rings place off-
motor makes the best choice for variable speed control.
sets in the magnetic flux so that a rotating field can be
created.
Another way to solve the rotating field problem is to use
two electrical windings that are physically offset in the
stator. This type of motor is called a split-phase ACIM.
In most cases, one of the two windings has lower
electrical impedance and is designated as the primary
or ‘run’ winding. The second winding has higher imped-
ance and is designated as the secondary, or ‘start’
winding.
IGBT X6
3-Phase
ACIM
+
AC
MAINS
Dead-Time
Driver
Delay
Dead-Time
Driver
Delay
Secondary
Primary
+
AC
MAINS
Common
Run Capacitor
Primary
+
AC
MAINS
Common
+
Secondary
Primary
AC
MAINS
+
Common
SINGLE-PHASE OUTPUTS
If you want to drive a single motor winding using an
H-bridge inverter configuration, then you can modulate
one side of the bridge with a 0-degree phase offset and
the other side with a 180-degree offset. An offset value
of 0x8000 gives the 180-degree offset using a 16-bit
sine table pointer. An offset of 90 degrees may be
required to drive the auxiliary winding of a split-phase
motor. In this case, just use a sine pointer offset value
of 0x4000.
T
Stall Torque
Starting Torque
Braking
Region Operating Point
SLIP
1.5 1.0 0.5 0 -0.5 -1.0
z
H
z
60
H
H
0
0
/3
15
/6
Constant V/F
/4
0V
V/
0V
0V
40
50
10
Region
20
15
20
Low-Frequency Cutoff
Torque
20 40 60
Frequency (Hz)
Speed
Experiment 2
In this experiment, you will observe how the motor
torque changes when the frequency is held constant,
but the amplitude is changed.
1. Start by setting VR2 to a very low value, less
than 25%. This will set the modulation frequency
to a relatively low value, which will run the motor
at a low speed.
2. Initially set VR1 to zero and then slowly increase
the setting while stopping the motor shaft with
your hand. You should be able to feel the torque
of the motor increase as VR1 is increased.
In this scenario, the motor is used in a variable torque
mode. The frequency is held constant while the
amplitude is changed.
;******************************************************************************
; *
; Filename : acim_vhz.s *
; *
;******************************************************************************
; Notes: *
; ====== *
; The A/D is enabled to sample two pots on the dsPICDEM-MC1 demo board *
; connected to AN7 and AN12. VR1 is used to vary the V/Hz ratio of the *
; modulation. VR2 is used to vary the modulation frequency. By *
; experimenting with the two pot settings, you can find an optimal V/Hz *
; ratio to drive the motor. *
;******************************************************************************
.equ __30F6010, 1
.include "C:\pic30_tools\support\inc\p30f6010.inc"
.global__reset
;..............................................................................
;Configuration bits:
;..............................................................................
config __FOSC, CSW_FSCM_OFF & XT_PLL4 ;Turn off clock switching and
;fail-safe clock monitoring and
;use the XT osc and 4x PLL as
;system clock
;..............................................................................
;Uninitialized variables in Near data memory (Lower 8Kb of RAM)
;..............................................................................
; This variable is added to the 16-bit sine wave table pointer at each
; PWM period. A value of 246 will provide 60 Hz modulation frequency
; with 16 KHz PWM
Frequency:.space 2
; This variable is used to set the modulation amplitude and scales the
; value retrieved from the sine wave table. Valid values range from 0
; to 32767
;..............................................................................
;Constants stored in Program space
;..............................................................................
SineTable:
.hword 0,3212,6393,9512,12539,15446,18204,20787,23170,25329
.hword 27245,28898,30273,31356,32137,32609,32767,32609,32137,31356,30273,28898
.hword 27245,25329,23170,20787,18204,15446,12539,9512,6393,3212,0,-3212,-6393
.hword -9512,-12539,-15446,-18204,-20787,-23170,-25329,-27245,-28898,-30273
.hword -31356,-32137,-32609,-32767,-32609,-32137,-31356,-30273,-28898,-27245
.hword -25329,-23170,-20787,-18204,-15446,-12539,-9512,-6393,-3212
;..............................................................................
; Constants for this application
;..............................................................................
; This constant is used to scale the sine lookup value to the valid range
; of PWM duty cycles. This is based on the value written to PTPER. We will
; PTPER = 230 for this application, which allows duty cycles between 0 and
; 460. The sine table data is signed, so we will multiply the table data
; by 230, then add a constant offset to scale the lookup data to positive
; values
; The pointer to the sign wave table is 16 bits. Adding 0x5555 to the
; pointer will provide a 120 degree offset and 0xAAAA will give a 240
; degree offset. These offsets are used to get the lookup values for
; phase 2 and phase 3 of the PWM outputs.
;..............................................................................
;Code Section in Program Memory
;..............................................................................
clr Frequency
clr Amplitude
CheckADC:
btss IFS0,#ADIF
bra Loop
call ReadADC
bra Loop
;------------------------------------------------------------------------------
; ADC processing subroutine
;------------------------------------------------------------------------------
ReadADC:
push.d W0
push.d W4
pop.d W4
pop.d W0
return
;------------------------------------------------------------------------------
; PWM sine wave modulation subroutine
;------------------------------------------------------------------------------
Modulation:
push.d W0 ; Save off working registers
push.d W2
push.d W4
push.d W6
push.d W8
push.d W10
; The next three instructions initialize the TBLPAG and pointer register
; for access to the sinewave data in program memory using table reads.
mov #tblpage(SineTable),W0
mov W0,TBLPAG
; The sine table has 64 entries, so the pointers are right shifted
; to get a 6-bit pointer value.
lsr W1,#10,W9 ; Shift the phase 1 pointer right to get the upper 6 bits
sl W9,#1,W9 ; Left shift by one to convert to byte address
lsr W2,#10,W10 ; Shift the phase 2 pointer right to get the upper 6 bits
sl W10,#1,W10 ; Left shift by one to convert to byte address
lsr W3,#10,W11 ; Shift the phase 3 pointer right to get the upper 6 bits
sl W11,#1,W11 ; Left shift by one to convert to byte address
; Now, the pointer for each phase is added to the base table pointer
; to get the absolute table address for the lookup value. The lookup
; value is then scaled for the correct amplitude and for the range
; of valid duty cycles. The next block of instructions calculates
; the duty cycle for phase 1. The phase 2 and phase 3 code is the same.
; The next block of code calculates the duty cycle for phase 2.
; The next block of code calculates the duty cycle for phase 3.
mov W1,Phase
;------------------------------------------------------------------------------
; PWM and ADC setup code
;------------------------------------------------------------------------------
Setup:
clr PORTD
clr PORTE
mov #0xF7FF,W0 ; Make RD11 an output to drive PWM buffer
mov W0,TRISD ; output enable.
mov #0xFDFF,W0;
mov W0,TRISE ; Make RE9 an output for power module reset
; Now, ensure the power module is reset by driving the reset line for
; a few usec.
bset PORTE,#9
repeat #39
nop
bclr PORTE,#9
;..............................................................................
;Subroutine: Initialization of W registers to 0x0000
;..............................................................................
_wreg_init:
CLR W0
MOV W0, W14
REPEAT #12
MOV W0, [++W14]
CLR W14
RETURN
• Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the
intended manner and under normal conditions.
• There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our
knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data
Sheets. Most likely, the person doing so is engaged in theft of intellectual property.
• Microchip is willing to work with the customer who is concerned about the integrity of their code.
• Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not
mean that we are guaranteeing the product as “unbreakable.”
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our
products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
03/01/05