利用8位单片机实现电机控制
8bit单片机FOC矢量控制PMSM电机无传感器
说明:下面程序取自IFX 8位机无传感器PMSM电机矢量控制程序。
整个程序是连续的矢量控制计算函数,其中有图片说明打断,便于更好的理解。
其中包括坐标系变换,磁链角估算,PI速度环电流环调节。
(单片机XC886,Keil编译器Cavin整理)坐标系变换说明:双电阻采样得到两相电流(ia, ib),由abc120°静止坐标系Clarke变换到直角坐标系(iα, iβ),由(iα, iβ)静止直角坐标系Park变换到直角旋转坐标系(iq, id)。
直流id不变,通过PI速度环电流环得到期望直流iq,进行限幅控制。
由旋转坐标系(vq, vd)经过Park逆变换到静止坐标系(vα, vβ),然后再经过矢量调制成PWM控制电机。
无传感器角度估算:由Clarke变换得到(iα, iβ)和由Park逆变换得到的(vα, vβ),经过低通滤波器PT1,再由直角坐标系变极坐标系得到磁链估算角无传感器开环启动策略:在定子中加入幅值及频率都受控的电流,若PLL收敛,切换到FOC闭环控制。
软件流程图:void FOC_Calculation (void) using 1{#pragma asm;**************************************;* FOC_Calculation;**************************************;*;* this function contains all calculations;* necessary for the field oriented control.;*;* register bank 1 is used;*;**************************************;* push registers;**************************************push ACCpush bpush dphpush dplpush PSWpush SYSCON0; use register bank 0x01mov PSW,#0x08;;anl SYSCON0,#0xFE ; use standard SFRsmov CCU6_PAGE,#0xA0 ; select CCU6-page 0 SST2;**************************************;* ResultRegister3 Control;**************************************;* Multiplex RESR3 for ADC channel;* ch0, ch1 and ch6 in sequential queue;* Add ADC channel ch3 in triggered mode;*;* input ADC_RESR3;* guc_adc_ch;* gui_adc_ch_val;*;* output ADC_QINR0 = {ch0 -> ch1 -> ch6};* gui_adc_ch_val[guc_adc_ch++] = ADC_RESR3;*mov ADC_PAGE,#0x86 ; switch to ADC_page 6 save ST0mov ADC_QINR0,#0x83 ; channel 3, no refill, external trigger//mov ADC_QINR0,#0x07 ; add channel7 to queue (I_pfc) mov ADC_QINR0,#0x00mov r0,#gui_adc_ch_valmov ADC_PAGE,#0x03 ; switch to ADC_page 3 save no ST0mov @r0,ADC_RESRA3H ; gui_adc_ch_val[guc_adc_ch] = RESRA3 (H)inc r0mov a,ADC_RESRA3Lanl a,#0xe0 ; mask ADC status informationmov @r0,a ; gui_adc_ch_val[guc_adc_ch] = RESRA3 (L)//mov gi_I_pfc,ADC_RESRA2H//mov a,ADC_RESRA2L//anl a,#0xe0 ; mask ADC status information//mov gi_I_pfc+1,a;************************************** ;* current_calculation;************************************** ;* Take ADC values from ADC result;* registers and multiply by 8;*;* input ADC_RESR0, ADC_RESR1;*;* output R2 = [ -I2_shunt * 8 ]H;* R3 = [ -I2_shunt * 8 ]L;* A = [ (I2_shunt - I1_shunt) * 8 ]H;* R5 = [ (I2_shunt - I1_shunt) * 8 ]L;* R6 = [ I1_shunt * 8 ]H;* R7 = [ I1_shunt * 8 ]L;*mov r5,ADC_RESRA1Hmov a,ADC_RESRA1Lanl a,#0xE0 ; mask ADC status informationmov r4,amov r7,ADC_RESRA0Hmov a,ADC_RESRA0Lanl a,#0xE0 ; mask ADC status informationmov r6,amov ADC_PAGE,#0xC2 ; switch to old page restore ST0orl SYSCON0,#1 ; switch to mapped SFRsmov MDU_MD0,r6 ; MD3 = ADCR2_H [ RES9 | RES8 | RES7 | RES6 | RES5 | RES4 | RES3 | RES2 ] mov MDU_MD1,r7 ; MD2 = ADCR2_L [ RES1 | RES0 | 0 | VF | DRC | CHNR2 | CHNR1 | CHNR0 ] mov MDU_MD2,r4 ; MD1 = ADCR3_H [ RES9 | RES8 | RES7 | RES6 | RES5 | RES4 | RES3 | RES2 ] mov MDU_MD3,r5 ; MD0 = ADCR3_L [ RES1 | RES0 | 0 | VF | DRC | CHNR2 | CHNR1 | CHNR0 ] mov MDU_MD4,#0x22 ; shift right ADCR2/ADCR3 by 2 bitsmov MDU_MDUCON,#0x13; ; start bit-shiftnop ; 4 MDU readyclr cmov a, MDU_MR0subb a, offsetLmov a, MDU_MR1subb a, offsetHmov r6, ajnc okclr amov R7, amov R6, aok:clr cmov a, MDU_MR2subb a, offsetLmov r5, amov a, MDU_MR3subb a, offsetHmov r4, ajnc ok1clr amov R5, amov R4, aok1://mov r7,MDU_MR0//mov r6,MDU_MR1//mov r5,MDU_MR2//mov r4,MDU_MR3 ;-----------clr csubb a,r5mov r3,aclr asubb a,r4mov r2,a ; R2/R3 = -I2_shuntclr cmov a,r5 ; A = I2_shunt_Lsubb a,r7mov r5,a ; R5 = I2_shunt_L - I1_shunt_L mov a,r4 ; A = I2_shunt_Hsubb a,r6 ; A/R5 = I2_shunt - I1_shunt;**************************************;* phase current;**************************************;* Calculate currents I_phaseA and I_phaseB;* according the sector of space vector;*;* input R2 = [ -I2_shunt * 8 ]H;* R3 = [ -I2_shunt * 8 ]L;* A = [ (I2_shunt - I1_shunt) * 8 ]H;* R5 = [ (I2_shunt - I1_shunt) * 8 ]L;* R6 = [ I1_shunt * 8 ]H;* R7 = [ I1_shunt * 8 ]L;*;* output R4 = [ gi_I_phaseB ]H;* R5 = [ gi_I_phaseB ]L;* R6 = [ gi_I_phaseA ]H;* R7 = [ gi_I_phaseA ]L;*djnz guc_sector_s,SV_sectorB ; Sector A I1_shunt = Iu , I2_shunt = -Iwmov gi_I_phaseA+1,r7mov gi_I_phaseA,r6 ; I_phaseA = I1_shuntmov gi_I_phaseB+1,r5mov gi_I_phaseB,a ; I_phaseB = -(Iw + Iu) = I2_shunt - I1_shunt sjmp phase_current_endSV_sectorB:djnz guc_sector_s,SV_sectorC ; Sector B I1_shunt = Iv , I2_shunt = -Iwmov gi_I_phaseB+1,r7mov gi_I_phaseB,r6 ; I_phaseB = I1_shuntmov gi_I_phaseA+1,r5mov gi_I_phaseA,a ; I_phaseA = -(Iv + Iw) = I2_shunt - I1_shunt sjmp phase_current_endSV_sectorC:djnz guc_sector_s,SV_sectorD ; Sector C I1_shunt = Iv , I2_shunt = -Iumov gi_I_phaseB+1,r7mov gi_I_phaseB,r6 ; I_phaseB = I1_shuntmov gi_I_phaseA+1,r3mov gi_I_phaseA,r2 ; I_phaseA = -I2_shuntsjmp phase_current_endSV_sectorD:djnz guc_sector_s,SV_sectorE ; Sector D I1_shunt = Iw , I2_shunt = -Iu mov gi_I_phaseA+1,r3mov gi_I_phaseA,r2 ; I_phaseA = -I2_shuntmov gi_I_phaseB+1,r5mov gi_I_phaseB,a ; I_phaseB = -(Iu + Iw) = I2_shunt - I1_shunt sjmp phase_current_endSV_sectorE:djnz guc_sector_s,SV_sectorF ; Sector E I1_shunt = Iw , I2_shunt = -Iv mov gi_I_phaseB+1,r3mov gi_I_phaseB,r2 ; I_phaseB = -I2_shuntmov gi_I_phaseA+1,r5mov gi_I_phaseA,a ; I_phaseA = -(Iv + Iw) = I2_shunt - I1_shunt sjmp phase_current_endSV_sectorF:mov gi_I_phaseA+1,r7 ; Sector F I1_shunt = Iu , I2_shunt = -Iv mov gi_I_phaseA,r6 ; I_phaseA = I1_shuntmov gi_I_phaseB+1,r3mov gi_I_phaseB,r2 ; I_phaseB = -I2_shuntphase_current_end:;**************************************;* clark transform;**************************************;* transform from three phase system;* to two phase system;* I_beta = [(I_phaseB*2 + I_phaseA)/(sqr(3)*2)]*2;*;* input gi_I_phaseB;* gi_I_phaseA;*;* output gi_I_alpha;* gi_I_beta;*;I_phaseB*2 + I_phaseAmov a,gi_I_phaseB+1add a,ACCxch a,gi_I_phaseBaddc a,ACCxch a,gi_I_phaseB ; I_phaseB = I_phaseB*2add a,gi_I_phaseA+1mov MDU_MD0,a ; MD0 = [I_phaseB*2 + I_phaseA]_L mov a,gi_I_phaseBaddc a,gi_I_phaseAmov MDU_MD1,a ; MD1 = [I_phaseB*2 + I_phaseA]_H;(I_phaseB*2 + I_phaseA)/(sqrt(3)*2)mov MDU_MD4,#0xE6 ; MD4 = [0.57735 * 2^15]_Lmov MDU_MD5,#0x49 ; MD5 = [0.57735 * 2^15]_Hmov MDU_MDUCON,#0x14; ;->MDU start;I_phaseA*2mov a, gi_I_phaseA+1add a, ACCxch a, gi_I_phaseAaddc a, ACCmov b, axch a, gi_I_phaseA+1mov gi_I_alpha+1, a ;oscilloscopemov gi_I_alpha, b;(I_phaseB*2 + I_phaseA)/(sqrt(3)*2) * 2mov MDU_MD2,MDU_MR2mov MDU_MD3,MDU_MR3mov MDU_MD4,#0x02 ; shift right ADCR2/ADCR3 by 2 bitsmov MDU_MDUCON,#0x13; ; start bit-shiftnopnopmov gi_I_beta+1,MDU_MR2 ; I_beta = (I_phaseB*2 + I_phaseA)/sqr(3) , I_alpha = I_phaseA*2 mov gi_I_beta,MDU_MR3;**************************************;* flux estimation;**************************************;*;* Calculate the flux and angle;* PSI_alpha = integral( V_alpha + I_alpha * STATOR_R ) dt + I_alpha * STATOR_L;* PSI_beta = integral( V_beta + I_beta * STATOR_R ) dt + I_beta * STATOR_L ;* phi = atan( PSI_alpha / PSI_beta );*;* input gi_V_alpha;* gi_I_alpha;* gi_V_beta;* gi_I_beta;* gi_angle;* gi2_Integrator_alpha[0,1,2,3] ; stored values from integration via PT1 ;* gi2_Integrator_beta[0,1,2,3] ; stored values from integration via PT1 ;*;* output gi2_Integrator_alpha[0,1,2,3];* gi2_Integrator_beta[0,1,2,3];* gi_Flux_alpha;* gi_Angle_mem;* gi_angle;*;**************************************;*clr amov CD_STATC,a ; clear keep bits - interrupt disabledmov CD_CON,#0x48 ; Linear rotation mode - auto start MPS = 1 mov CD_CORDYH,gi_V_alpha ; Y = Imov CD_CORDYL,gi_V_alpha+1 ;mov CD_CORDZH,gi_I_alpha ; Z = R I_max = +4096/-4096mov CD_CORDZL,gi_I_alpha+1 ;mov CD_CORDXH,#STATOR_R_H ; X = Vmov CD_CORDXL,#STATOR_R_L ; CORDIC starts automatically; Y = Y + X*Z*16;**************************************;* Calculation ( (I_alpha * 2^STATOR_L_SCALE)* STATOR_L );*mov MDU_MD0,gi_I_alpha+1 ;4mov MDU_MD1,gi_I_alpha ;8#if STATOR_L_SCALE > 0mov MDU_MD4,#STATOR_L_SCALE ;12 leftshiftmov MDU_MDUCON,#0x13; ;16 bitshift#endifmov MDU_MD4,#STATOR_L_L ;12/4mov MDU_MD5,#STATOR_L_H ;16/8 MDU ready (bitshift)#if STATOR_L_SCALE > 0mov MDU_MD0,MDU_MR0 ;20mov MDU_MD1,MDU_MR1 ;24#endifmov MDU_MDUCON,#0x14; ;28 MR = I * Lmov r0,#gi2_Integrator_alpha ;32/2mov MDU_MD4,#FLUX_PT1_Z1_L ;34/6mov MDU_MD5,#FLUX_PT1_Z1_H ;36/10clr F0 ;40/12 F0 = 0 for PT1 scalermov CD_CORDYL,gi_V_beta+1 ;42/16 MDU readymov r5,MDU_MR3 ;40 R5 = [I_alpha * STATOR_L]_Hmov r4,MDU_MR2 ;44 R4 = [I_alpha * STATOR_L]_L CORDIC readymov r7,CD_CORDYH ; R7 = [V_alpha + I_alpha * STATOR_R]_Hmov r6,CD_CORDYL ; R6 = [V_alpha + I_alpha * STATOR_R]_L;**************************************;* Calculation (V_beta + I_beta * STATOR_R);*mov CD_STATC,a ; clear keep bits - interrupt disabledmov CD_CORDYH,gi_V_beta ;mov CD_CORDZH,gi_I_beta ; Z = Imov CD_CORDZL,gi_I_beta+1 ; X = Rmov CD_CON,#0x59 ; Linear rotation mode , start / MPS = 1;**************************************;* integration by PT1 integral(r6,r7)dt;*mov r3,#FLUX_PT1_Z2_Hmov r2,#FLUX_PT1_Z2_Llcall PT1_MDU ; PT1-return value L = *R1 , H = *R0;**************************************;* Calculation (I_beta * STATOR_L);*mov MDU_MD0,gi_I_beta+1mov MDU_MD1,gi_I_beta#if STATOR_L_SCALE > 0mov MDU_MDUCON,#0x13; ; bitshift#endifmov MDU_MD4,#STATOR_L_L ;4mov MDU_MD5,#STATOR_L_H ;8 MDU ready (bitshift)#if STATOR_L_SCALE > 0mov MDU_MD0,MDU_MR0mov MDU_MD1,MDU_MR1#endifmov MDU_MDUCON,#0x14; ; MR = I * L;**************************************;* _gi3_Flux_alpha[4,5] = [R5 + *R0, R4 + *R1];*mov a,r4 ;2 R4 = [ I_alpha * STATOR_L ]_Ladd a,@r0 ;4 *R1 = [ integral(V_alpha + I_alpha * STATOR_R)dt ]_L mov gi_Flux_alpha+1,a ;6mov a,r5 ;8 R5 = [ I_alpha * STATOR_L]_Hdec r0addc a,@r0 ;10 *R0 = [ integral(V_alpha + I_alpha * STATOR_R)dt ]_H mov gi_Flux_alpha,a ;12mov r0,#gi2_Integrator_beta ;14mov MDU_MD4,#FLUX_PT1_Z1_L ;18 MDU readymov MDU_MD5,#FLUX_PT1_Z1_H ;mov r7,CD_CORDYH ; R7 = [V_beta + I_beta * STATOR_R]_Hmov r6,CD_CORDYL ; R6 = [V_beta + I_beta * STATOR_R]_Lmov r5,MDU_MR3 ; R5 = [I_beta * STATOR_L]_Hmov r4,MDU_MR2 ; R4 = [I_beta * STATOR_L]_L;**************************************;* integration by PT1 integral(r6,r7)dt;*clr F0 ; F0 = 0 for PT1 scalermov r3,#FLUX_PT1_Z2_Hmov r2,#FLUX_PT1_Z2_Llcall PT1_MDU ; PT1-return value L = *R1 , H = *R0;**************************************;* CD_CORDY = [R5 + *R0, R4 + *R1];*mov a,r4 ; R4 = [ I_beta * STATOR_L ]_Ladd a,@r0 ; *R1 = [ integral(V_beta + I_beta * STATOR_R)dt ]_L mov CD_CORDYL,a ;mov a,r5 ; R5 = [ I_beta * STATOR_L]_Hdec r0addc a,@r0 ; *R0 = [ integral(V_beta + I_beta * STATOR_R)dt ]_H mov CD_CORDYH,a;**************************************;* calculation angle = atan( Flux_beta / Flux_alpha );*clr amov CD_STATC,a ; clear keep bits - interrupt disabledmov CD_CON,#0x02 ; Circular vectoring mode - auto start MPS = 1 mov CD_CORDZH,a ; Z = 0mov CD_CORDZL,a ;mov CD_CORDXH,gi_Flux_alpha ; X = Flux_alphamov CD_CORDXL,gi_Flux_alpha+1 ; CORDIC starts automaticallymov r7,guc_SpeedControlCounter ;4cjne r7,#0,_fb_CD0 ;6mov gi_Angle_mem,gi_angle ;10 store previous angle in angle_memmov gi_Angle_mem+1,gi_angle+1 ;14;**************************************;* inverse vector rotation;**************************************_fb_CD0:mov CD_CORDYL,gi_I_alpha+1 ;18 Y = Alphamov CD_CORDYH,gi_I_alpha ;22mov CD_CORDXH,gi_I_beta ;26 X = Beta;**************************************;* flux estimation continued;**************************************_fb_CD1:jb CD_BSY,_fb_CD1 ; wait for CORDIC result of angle calculationjnb gb_closed_loop,_fb_CD2a ; if( gb_closed_loop == 1 )mov gi_angle+1,CD_CORDZL ; {mov gi_angle,CD_CORDZH ; angle = atan( Flux_alpha / Flux_beta )sjmp _fb_CD2 ; }_fb_CD2a: ; during startup turn motor in open loop mov gi_Flux_angle+1,CD_CORDZL ; elsemov gi_Flux_angle,CD_CORDZH ; angle1 = atan( Flux_alpha / Flux_beta )mov MDU_MD0,gi_delta_angle+1 ; gi_delta_angle * gi_V_q_vf_slewmov MDU_MD1,gi_delta_anglemov MDU_MD4,gi_V_q_vf_slew+1mov MDU_MD5,gi_V_q_vf_slewmov MDU_MDUCON,#0x14; ; start Multiplikationmov R0,#gi_delta_angle+1 ; gi_angle += gi_delta_anglemov a,gi_angle+1 ; add delta angle at start-upadd a,@R0mov gi_angle+1,amov a,gi_angledec R0addc a,@R0mov gi_angle,amov r1,#gt_Iq_control+2clr amov @r1,adec r1mov R0,#gi_V_q_vf_offset+1 ; gi_V_q = gi_V_q_vf_offset + gi_delta_angle * gi_V_q_vf_slew * 256 mov a,MDU_MD1add a,@R0mov gi_V_q+1,amov @r1,amov a,MDU_MD2dec R0dec R1addc a,@R0mov gi_V_q,amov @r1,a;**************************************;* inverse vector rotation continued;**************************************;*;* rotate I_alpha and I_beta by angle;*;* input gi_I_alpha;* gi_I_beta;* gi_angle;*;* output gi_Id;* gi_Iq;*_fb_CD2:mov CD_STATC,a ; clear keep bits - interrupt disabledmov CD_CON,#0x4A ; Circular rotation mode - auto start MPS = 2 mov CD_CORDZH,gi_angle ; Z = gi_anglemov CD_CORDZL,gi_angle+1mov CD_CORDXL,gi_I_beta+1 ; CORDIC starts autmatically_vdm_CD0:jb CD_BSY,_vdm_CD0 ; wait for CORDIC result of inverse vector rotationmov gi_I_q+1,CD_CORDXL ; _gi_Iqmov gi_I_q,CD_CORDXH ;mov gi_I_d+1,CD_CORDYL ; _gi_Idmov gi_I_d,CD_CORDYH ;// uncomment this if scaling of gi_I_q to fullscale (8000 ... 7fff) is required// mov MDU_MD0,gi_I_q+1 ; MD0 = gi_I_q_L// mov MDU_MD1,gi_I_q ; MD1 = gi_I_q_H// mov MDU_MD4,#0xB8 ; MD4 = 16/K / 256 *2 _L // mov MDU_MD5,#0x09 ; MD5 = 16/K / 256 *2 _H // mov MDU_MDUCON,#13H; ; Start multiplication// nop// nop// nop// nop// nop// mov gi_I_q+1,MDU_MR1// mov gi_I_q,MDU_MR2 ; gi_I_q = gi_I_q * 16/K;**************************************;* Speed Calculation;**************************************;*;* calculation of speed = (angle_mem - angle) / T12PERIODE_HALF;*;* speed calculation is executed every;* (SPEED_CONTROL_RATE/CURRENT_CONTROL_RATE) of control loop;*;* input gi_angle;* gi_Angle_mem;* gi_Speed;*;* output *R0 = gi_Speed_H;* *R1 = gi_Speed_L;inc guc_SpeedControlCountermov a,guc_SpeedControlCounter ; if( ++_guc_SpeedControlCounter != (SPEED_CONTROL_RATE/CURRENT_CONTROL_RATE) ) jmp _node3_int1 cjne a,#(SPEED_CONTROL_RATE/CURRENT_CONTROL_RATE),_node3_int1mov guc_SpeedControlCounter,#0x00 ; else _guc_SpeedControlCounter = 0;clr c ; C = 0mov a,gi_angle+1 ; A = angle_Lsubb a,gi_Angle_mem+1 ; A = angle_L - angle_mem_Lmov r6,a ; R6 = (angle - angle_mem)_L = angle_L - angle_mem_Lmov a,gi_angle ; A = angle_Hsubb a,gi_Angle_mem ; A = angle_H - angle_mem_Hmov r7,a ; R7 = angle_H - angle_mem_Hmov r0,#gi_Speed+2mov a,#SPEED_PT1_Z;**************************************;* PT1 with 24bit memory;**************************************;*;* calculation of Y_(k) = Y_(k-1) + 2^(-Z) * { X_(k) - Y_(k-1) };*;* input Y [HLh] *R0 = Y_h;* X R6 = L, R7 = H;* Z a [1..15];*;* output *R0 = Y_H;*;* remark no limitation of subtract and add;* => X must be smaller than 0x3fff;*setb acc.5 ; select right shiftmov MDU_MD4,a ; MD4 = number of bits to shiftclr cclr asubb a,@r0 ; A = e_h = 0 - Y_hmov MDU_MD1,a ; MD1 = e_hdec r0mov a,r6 ; A = X_Lsubb a,@r0 ; A = e_L = X_L - Y_Lmov MDU_MD2,a ; MD2 = e_Ldec r0mov a,r7 ; A = X_Hsubb a,@r0 ; A = e_H = X_H - Y_Hmov MDU_MD3,a ; MD3 = e_Hmov MDU_MDUCON,#0x17; ; Start right-shift (X - Y)_HLh >> Z //wait for XC88x - no ws no double clknopnopnopnop//...inc r0 ;4inc r0 ;8nop ;12mov a,@r0 ;16 a = Y_hadd a,MDU_MR1 ; A = Y_h(k-1) + MR1mov @r0,a ; Y_h(k) = Y_h(k-1) + MR1dec r0mov a,@r0 ; a = Y_Laddc a,MDU_MR2 ; A = Y_L(k-1) + MR2mov @r0,a ; Y_L(k) = Y_L(k-1) + MR2mov r4,adec r0mov a,@r0addc a,MDU_MR3 ; A = Y_H(k-1) + MR3 + Cmov @r0,a ; Y_H(k) = Y_H(k-1) + MR3 + Cmov r5,a;* end of PT1 with 24bit memory;**************************************;**************************************;* Speed and Current Control;**************************************jb gb_closed_loop,_node3_int0 ; if( _gb_closed_loop == 1 ) jmp _node3_int0 ajmp _node3_int2 ; else jmp _node3_int2_node3_int0: ;;**************************************;* Speed Control;**************************************;*;* Load parameters for speed control;* call PI_controller;* use output as Iq_reference;*mov r7,gi_Speed_referencemov r6,gi_Speed_reference+1mov r0,#gt_Speed_control+1+5#ifdef SPEED_PI_KP_GAIN_128setb F0 ;Kp gain = 128#elseclr F0 ;Kp gain = 8#endiflcall PI_controller;* Limitation of IQ to positive (do not active brake) ; mov a,r6; jnb acc.7,_limit_end; mov r6, #0h; mov r7, #0h_limit_end:#ifdef LIMIT_IQ;* Limitation of speed control outputmov a,r6jnb acc.7,_limit_positivemov a, #LIMIT_IQ_Ladd a,r7mov a, #LIMIT_IQ_Haddc a,r6jc _limit_endmov r6, #~LIMIT_IQ_Hmov r7, #~LIMIT_IQ_Lsjmp _limit_end_limit_positive:mov a, #LIMIT_IQ_Lclr csubb a,r7mov a, #LIMIT_IQ_Hsubb a,r6jnc _limit_endmov r6, #LIMIT_IQ_Hmov r7, #LIMIT_IQ_L_limit_end:#endifmov gi_Iq_reference,r6mov gi_Iq_reference+1,r7_node3_int1:;************************************** ;* Current Control Id;************************************** ;*;* Load parameters for Id control;* call PI_controller and;* store result in Vd;*;* input;* gi_Id_reference;* gi_Id;*;* output;* gi_V_d;*mov r7,gi_Id_referencemov r6,gi_Id_reference+1mov r5,gi_I_dmov r4,gi_I_d+1mov r0,#gt_Id_control+1+5clr F0 ;Kp gain = 8lcall PI_controllermov gi_V_d,r6mov gi_V_d+1,r7;************************************** ;* Current Control Iq;************************************** ;*;* Load parameters for Iq control;* call PI_controller;* store result in Vq;*;* input;* gi_Iq_reference;* gi_Iq;*;* output;* gi_V_q;*mov r7,gi_Iq_referencemov r6,gi_Iq_reference+1mov r5,gi_I_qmov r4,gi_I_q+1mov r0,#gt_Iq_control+1+5clr F0 ;Kp gain = 8lcall PI_controllermov gi_V_q,r6mov gi_V_q+1,r7_node3_int2:;**************************************;* vector rotation;**************************************;*;* rotate gi_V_q and gi_V_d by angle;*;* input gi_V_q;* gi_V_d;* gi_angle;*;* output gi_V_alpha;* gi_V_beta;*clr amov CD_STATC,a ; clear keep bits - interrupt disabledmov CD_CON,#0x8A ; Circular rotation mode - auto start MPS = 4 mov CD_CORDZH,gi_angle ; Z = gi_anglemov CD_CORDZL,gi_angle+1mov CD_CORDYL,gi_V_q+1 ; Y = Q_kompmov CD_CORDYH,gi_V_q ;mov CD_CORDXH,gi_V_d ; X = D_kompmov CD_CORDXL,gi_V_d+1 ; CORDIC starts autmaticallymov CD_CORDZH,a ; Z = 0mov CD_CORDZL,a_MD_0:jb CD_BSY,_MD_0 ; wait for CORDIC with vector rotationmov r7,CD_CORDXL ; R7 <- V_alpha_Lmov r6,CD_CORDXH ; R6 <- V_alpha_Hmov r5,CD_CORDYL ; R5 <- V_beta_Lmov r4,CD_CORDYH ; R4 <- V_beta;**************************************;* catresian to polar transform;**************************************;*;* calculate space vector amplitude (norm);*;* input gi_V_alpha;* gi_V_beta;* R7 <- V_alpha_L;* R6 <- V_alpha_H;* R5 <- V_beta_L;* R4 <- V_beta;*;* output gi_V_alpha_L;* gi_V_alpha_H;* gi_V_beta_L;* gi_V_beta;* R7 = gi_Amplitude_L;* R6 = gi_Amplitude_H;* CORDZ = Anglemov CD_STATC,a ; clear keep bits - interrupt disabledmov CD_CON,#0x82 ; Circular vectoring mode - auto start MPS = 4mov CD_CORDYL,r5 ; Y = gi_V_betamov CD_CORDYH,r4 ;mov CD_CORDXH,r6 ; X = gi_V_alphamov CD_CORDXL,r7 ; CORDIC starts autmaticallymov MDU_MD0,#0x06 ; MD0 = 6mov MDU_MD1,a ; MD1 = 0mov gi_V_alpha+1,r7 ; gi_V_alpha_L = R7mov gi_V_alpha,r6 ; gi_V_alpha_H = R6mov gi_V_beta+1,r5 ; gi_V_beta_L = R5mov gi_V_beta,r4 ; gi_V_beta = R4_MD_02:jb CD_BSY,_MD_02 ; wait for CORDIC result of amplitude and angle calculationmov r7,CD_CORDXLmov r6,CD_CORDXH;* limitation of Amplitudeclr c ; if ( MAX_AMPLITUDE - gi_Amplitude ) < 0mov a,#MAX_AMPLITUDE_L ;subb a,r7 ;mov a,#MAX_AMPLITUDE_H ;subb a,r6 ;jnc _MD_002 ;mov r7,#MAX_AMPLITUDE_L ; gi_Amplitude = MAX_AMPLITUDEmov r6,#MAX_AMPLITUDE_H_MD_002: ; elsemov gi_Amplitude+1,r7 ; R7 = gi_Amplitude_L mov gi_Amplitude,r6 ; R6 = gi_Amplitude_H;**************************************;* sv modulation;**************************************;*;* space vector modulation;*;* input guc_sector;* R7 = gi_Amplitude_L;* R6 = gi_Amplitude_H;* CORDZ = Angle;*;* output;* R0 = V_TA_H;* R1 = V_TA_L;* R2 = V_TB_H;* R3 = V_TB_L;* R4 = V_TC_H;* a = V_TC_L;* R5 = T1/2_L;* B = T1/2_H;* R6 = T2_H/2;* R7 = T2_L/2;*mov MDU_MD4,CD_CORDZL ; MD4 = Z = Anglemov MDU_MD5,CD_CORDZH ; MD5 = Z = Anglemov MDU_MDUCON,#0x10; ; start Multiplikation (gi_angle * 6) -> Sektor,gammamov MDU_MD4,r7 ;4 MD4 = amp_Lmov MDU_MD5,r6 ;8 MD5 = amp_H_MD_01:clr a ;10mov CD_STATC,a ;12 clear keep bits - interrupt disabledmov CD_CORDZL,a ;14 Z = 0mov dptr,#Sinus60_tab ; MDU ready / get pointer at Sinustablemov r2,MDU_MR1 ; R2 = gamma 8bitmov guc_sector,MDU_MR2 ; R3 = guc_sector 0 (5)mov a,r2 ; A = gamma 8bitadd a,ACC ; A = gamma 9bit 256 16Bits valuesmov r0,a ; R0 = gamma 9bit 256 16Bits valuesjnc _MD_1inc dph_MD_1:;*;* Calculate T2;*movc a,@a+dptr ; A = sinus_Hmov MDU_MD1,a ; MD1 = sinus_Hmov a,r0 ; A = gammainc amovc a,@a+dptr ; A = sinus_Lmov MDU_MD0,a ; MD0 = sinus_Lmov MDU_MDUCON,#0x14; ; start Multiplikation amp * sinus(gamma);*;* Calculate T1;*mov dptr,#Sinus60_tabmov a,r2cpl aadd a,ACCmov r2,ajnc _MD_2inc dph_MD_2:movc a,@a+dptr ; A = sinus_H , MDU fertigmov MDU_MD1,a ; MD1 = sinus_Hmov r5,MDU_MR2 ; R5 = T2_Lmov r4,MDU_MR3 ; R4 = T2_Hmov a,r2 ; A = gamma 8bitinc amovc a,@a+dptr ; A = sinus_Lmov MDU_MD0,a ; MD0 = sinus_Lmov MDU_MDUCON,#0x14; ; start Multiplikation amp * sinus(60 - gamma)mov CD_CON,#0x48 ;4 Linear rotation mode - auto start MPS = 2 mov CD_CORDZH,#0x08 ;8 Z = 1mov CD_CORDYH,r4 ;12 Y = T2jnb gb_closed_loop,_MD_3 ; ignore TMIN during start-upcjne r4,#0,_MD_3 ;16 , MDU readymov a,#T_MINsubb a,r5jc _MD_3mov r5,#T_MIN_MD_3:mov r2,MDU_MR3 ; R2 = T1_Hmov r1,MDU_MR2 ; R1 = T1_Ljnb gb_closed_loop,_MD_4 ; ignore TMIN during start-upcjne r2,#0,_MD_4mov a,#T_MINsubb a,r1jc _MD_4mov r1,#T_MIN_MD_4:mov CD_CORDYL,r5 ; Y = T2mov CD_CORDXH,r2 ; X = T1mov CD_CORDXL,r1 ; CORDIC starts autmaticallyclr c ;2 Berechnung T2 /2mov a,r4 ;4 A = T2_Hrrc a ;6 A = T2_H/2mov r6,a ;8 R6 = T2_H/2mov a,r5 ;10 A = T2_Lrrc a ;12 A = T2_L/2mov r7,a ;14 R7 = T2_L/2mov a,guc_sector ;16jb ACC.0,_MD_5 ;20mov a,r1mov r5,a ; R5 = T1_L/T2_Lmov a,r2mov r4,a ; R4 = T1_L/T2_L_MD_5:mov r2,#T12PERIODE_HALF_H ;22mov r1,#T12PERIODE_HALF_H ;24mov a,#T12PERIODE_HALF_L ;26mov r0,a ;28inc guc_sector ;30 preparation for djnz instruction mov guc_sector_s,guc_sector ;34_MD_6:jb CD_BSY,_MD_6 ;CORDIC readyadd a,CD_CORDYLxch a,r1 ; R1 = TT3_L A = 1addc a,CD_CORDYHxch a,r0 ; R0 = TT3_H A = 144;*;* Calculate TT1;*clr csubb a,CD_CORDYLmov r3,a ; R3 = TT1_Lxch a,r2 ; R2 = TT1_L A = 1subb a,CD_CORDYH ; A = TT1_Hxch a,r2 ; R2 = TT1_H / A = T1_Ladd a,r5 ; A = TT1_L + T1,2_Lxch a,r4 ; R4 = TT1_L + T1,2_Laddc a,r2 ; A = TT1_H + T1,2_Hxch a,r4 ; R4 = TT1_H + T1,2_Hmov r5,CD_CORDXL ; R5 = T1/2_Lmov b,CD_CORDXH ; B = T1/2_H;**************************************;* update compare values;**************************************;*;* Calculation and setup of compare;* values of PWM Unit CCU6;*;* input guc_sector;* R0 = V_TA_H;* R1 = V_TA_L;* R2 = V_TB_H;* R3 = V_TB_L;* R4 = V_TC_H;* a = V_TC_L;* R5 = T1/2_L;* B = T1/2_H;* R6 = T2_H/2;* R7 = T2_L/2;*;* output;* setup of CCU6 registers;*;*;* clr RMAP for normal operation;*anl SYSCON0,#0xFE ; switch to standard SFRsmov CCU6_PAGE,#0x00CV_SectorA:djnz guc_sector,CV_SectorBmov CCU6_CC60RH,r2mov CCU6_CC60RL,r3 ; CC60CR = V_TBmov CCU6_CC61RL,amov CCU6_CC61RH,r4 ; CC61CR = V_TCmov CCU6_CC62RH,r0mov CCU6_CC62RL,r1 ; CC60CR = V_TAmov CCU6_PAGE,#0x00mov a,#AD_TRIGGER_CM_L ; A = AD_TRIGGER_CM_Ladd a,r7 ; A = AD_TRIGGER_CM_L + T2/2_L mov CCU6_CC63RL,amov a,#AD_TRIGGER_CM_H ; A = AD_TRIGGER_CM_Haddc a,r6 ; A = AD_TRIGGER_CM_H + T2/2_Hmov CCU6_PAGE,#0x01mov a,#AD_TRIGGER_PM_L ; A = AD_TRIGGER_PM_Ladd a,r5 ; A = AD_TRIGGER_PM_L + T1/2_L mov CCU6_T13PRL,amov a,#AD_TRIGGER_PM_H ; A = AD_TRIGGER_PM_Haddc a,b ; A = AD_TRIGGER_PM_H + T1/2_H mov CCU6_T13PRH,aljmp compare_values_endCV_SectorB:djnz guc_sector,CV_SectorCmov CCU6_CC60RL,amov CCU6_CC60RH,r4 ; CC60CR = V_TCmov CCU6_CC61RH,r2mov CCU6_CC61RL,r3 ; CC61CR = V_TBmov CCU6_CC62RH,r0mov CCU6_CC62RL,r1 ; CC60CR = V_TAmov CCU6_PAGE,#0x00mov a,#AD_TRIGGER_CM_L ; A = AD_TRIGGER_CM_Ladd a,r5 ; A = AD_TRIGGER_CM_L + T1/2_L mov CCU6_CC63RL,amov a,#AD_TRIGGER_CM_H ; A = AD_TRIGGER_CM_Haddc a,b ; A = AD_TRIGGER_CM_H + T1/2_H mov CCU6_CC63RH,amov CCU6_PAGE,#0x01mov a,#AD_TRIGGER_PM_L ; A = AD_TRIGGER_PM_Ladd a,r7 ; A = AD_TRIGGER_PM_L + T2/2_Lmov a,#AD_TRIGGER_PM_H ; A = AD_TRIGGER_PM_Haddc a,r6 ; A = AD_TRIGGER_PM_H + T2/2_H mov CCU6_T13PRH,aljmp compare_values_endCV_SectorC:djnz guc_sector,CV_SectorDmov CCU6_CC60RH,r0mov CCU6_CC60RL,r1 ; CC60CR = V_TAmov CCU6_CC61RH,r2mov CCU6_CC61RL,r3 ; CC60CR = V_TBmov CCU6_CC62RL,amov CCU6_CC62RH,r4 ; CC61CR = V_TCmov CCU6_PAGE,#0x00mov a,#AD_TRIGGER_CM_L ; A = AD_TRIGGER_CM_Ladd a,r7 ; A = AD_TRIGGER_CM_L + T2/2_L mov CCU6_CC63RL,amov a,#AD_TRIGGER_CM_H ; A = AD_TRIGGER_CM_Haddc a,r6 ; A = AD_TRIGGER_CM_H + T2/2_H mov CCU6_CC63RH,amov CCU6_PAGE,#0x01mov a,#AD_TRIGGER_PM_L ; A = AD_TRIGGER_PM_Ladd a,r5 ; A = AD_TRIGGER_PM_L + T1/2_L mov CCU6_T13PRL,amov a,#AD_TRIGGER_PM_H ; A = AD_TRIGGER_PM_Haddc a,b ; A = AD_TRIGGER_PM_H + T1/2_H mov CCU6_T13PRH,a。
直流伺服电机控制系统设计
电子信息与电气工程系课程设计报告设计题目:直流伺服电机控制系统设计系别:电子信息与电气工程系年级专业:学号:学生姓名:2006级自动化专业《计算机控制技术》课程设计任务书摘要随着集成电路技术的飞速发展,微控制器在伺服控制系统普遍应用,这种数字伺服系统的性能可以大大超过模拟伺服系统。
数字伺服系统可以实现高精度的位置控制、速度跟踪,可以随意地改变控制方式。
单片机和DSP在伺服电机控制中得到了广泛地应用,用单片机作为控制器的数字伺服控制系统,有体积小、可靠性高、经济性好等明显优点。
本设计研究的直流伺服电机控制系统即以单片机作为核心部件,主要是单片机为控制核心通过软硬件结合的方式对直流伺服电机转速实现开环控制。
对于伺服电机的闭环控制,采用PID控制,利用MATLAB软件对单位阶跃输入响应的PID 校正动态模拟仿真,研究PID控制作用以及PID各参数值对控制系统的影响,通过试凑法得到最佳PID参数。
同时能更深度地掌握在自动控制领域应用极为广泛的MATLAB软件。
关键词:单片机直流伺服电机 PID MATLAB目录1.引言 ...................................................... 错误!未定义书签。
2.单片机控制系统硬件组成.................................... 错误!未定义书签。
微控制器................................................ 错误!未定义书签。
DAC0808转换器.......................................... 错误!未定义书签。
运算放大器............................................... 错误!未定义书签。
按键输入和显示模块....................................... 错误!未定义书签。
浅析利用单片机控制步进电机
苎 ! 黪
。 l与 应 用
数 控 技 术
} v o i d t i me 0 ()i n t e r r u 【 p t 1 { TL 0 = ( 6 5 5 3 6 - 5 0 0 ) %2 5 6 ; TH0 =( 6 5 5 3 6 — 5 0 0 ) / 2 5 6 ;
c o unt ++ ;
s b i t s t o p =P2 1 : s bi t z z =P 2 2;
s bi t f z =P2 3;
s bi t up=P2 4;
s b i t d o wn=P2 5: s bi t s e t =P2 6 ; u c ha r c o un t l , k;
…
…
上接第5 页
最 短时 间为2 5 秒, 最长时 间为4 5 秒, 黄灯时 间为 5 秒。 1 . 2系统 的体 系结构及 其 功 能 该系统由单片机、 车流量检测模块 、 违规检测模块 、 按键设置模 块、 信号灯状态模 块、 L E D倒计 时模 块组成最小控制系统 , 如 图2 所 示嘲 。 采用单片机作为控制核心 , 直接控制信号灯的状态变化 , 可以 实现基 本的交通指挥功能 。 L E D 数码管显示倒计 时间 , 以提醒行使 者, 更具人性化 。 违规检 测传感器和 车流量检 测传感器 为单片机采 集数据 , 在 此基础上单片机及 时调整控 制指挥 。 该 系统不仅能实现基本 的交通指挥功 能 , 还 能进行倒计 时显 示、 车 流量检测及调整 、 按键设 置 、 交通违规处理 和紧急处理等 功
u i n t j ;
i R c o u n t == s p e d) e {
b i t z f ; / / 定义一个正反转标 志位 c o unt =O; / } 步 进 电机 1 - 2 相 励 磁 方 式A — AB —B —B C —C —C D — 一 D — i f ( k! =0 ){ j ++; i f ( j = : 4 0 9 6 ) { j = 0 ; c o u n t 1 ++; } ; } ; / / 如果 DA数 据 } / 设 置 了 圈数 则 进 行 统 计 u c h a r t a b 口 ={ 0 x 0 1 , O x 0 3 , 0 x 0 2 , 0 x 0 6 , 0 x 0 4 , 0 x 0 C, 0 x 0 8 , i f ( ( k = : o ) I I ( k I _ c 0 u n t 1 ) ) / / 女 H 未设置 或未 到设置值 , 根据正 0 x 0 9 } ; 反转标志位送 励磁数据 v o i d ma i n () { { i f ( Z f ) { i ++; i f ( i >7 ) i = 0 ; P 0 = t a b [ i 】 ; } P O =O XO 0 1 s p e e d = 3 ; z f =l ;/ / 初始速度 、 方 向设 置 e l s e { i 一 一; i f i == O x f ) i = 7 ; P O = t a b [ i 】 ; } T MOD = 0 X0 1 ; / / 定时器0 工作 在方式 1 , l ms 中断一 次 } T L 0 = ( 6 5 5 3 6 —1 0 0 0 ) % 2 5 6 ; e l e s i f ( ( k! = 0 ) &&( k == c o u n t 1 ) )/ / 如 到设置值 , T H0 =( 6 5 5 3 6 一l 0 0 0 ) / 2 5 6 z 关定时器 , 恢复初始值 EA=1 ; ETO =1 ; { T R0 = 0 ; k = 0 ; j = o ; c o u n t l = O ; P O =O XO 0 l s p e e d =3 ; } ; / 扫描7 个 功能按键 / } wh i l e ( 1 ) } { 参 考 文 献 f ( aa r t = = O )TR0 =1 ; / / 按下启动按钮 , 启 动 定 时器 [ 1 ] 何立民。 张俊谟. 单片机 中级教程: 第2 版[ H ] . 北京: 北京航 空航天 i f ( s t o p == 0 ) { TR0 =0 ; P 0 = 0 X0 0 ; k = 0 ; j =o ; c o u n t 1 =0 ; 大 学 出版 社 , 2 0 0 2 . s p e d= e 3 ; } ;/ / 停 止时关定时器 i f ( z z = =0 )z f = l ;/ / 按下 [ 2 ] 王琼. 单片机原理及 应用 试验教程[ M ] . 合肥 :合肥工 业大学出 正 转 按 钮 时 将 标 志 位 置 位 版社, 2 0 0 2 . i f ( f z = = O )z f = O ;/ / 按 下 反 转 按 钮 时将 标 志 位 复 位 [ 3 ] 吴金戊。 沈庆 阳, 郭庭吉. 8 0 5 1单片机实践与应用[ H ] . 北京: 人 民邮 i f ( u p ==0 ) { i f ( s p e e d! =1 ) { s p e e d --; } ; wh i l e 电 出版 社 。 2 0 0 3 . ( u p = =O ) ; } ; / / 加速 [ 4 ] 周 明安, 朱光 忠, 宋晓华, 肖俊 建. 步进 电机驱动技术发展及 现状 i f ( d o wn==0 ) { i f ( s p e e d! =5 ) { s p e e d++; } ; whi l e [ J ] . 机 电工程技术, 2 0 0 5 , O 2 ( 5 ) : 1 9 — 2 1 . ( d o wn = = O ) ; } ; / / 减速 [ 5 ] 王 晓 明. 电 动机 的 单 片机 控 制[ H ] . 北京: 北 京 航 空航 天 大 学 出版 i f ( s e t = = 0 ) { k ++; wh i l e ( s e t = = 0 ) ; } ; / /圈数设置 社。 2 0 0 2 . }
基于单片机的电机转速测量系统设计_(附图及源程序)
摘要在工程实践中,经常会遇到各种需要测量转速的场合,测量转速的方法分为模拟式和数字式两种。
模拟式采用测速发电机为检测元件,得到的信号是模拟量。
数字式通常采用光电编码器,霍尔元件等为检测元件,得到的信号是脉冲信号。
随着微型计算机的广泛应用,特别是高性能价格比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法。
本文便是运用AT89C51单片机控制的智能化转速测量仪。
电机在运行过程中,需要对其进行监控,转速是一个必不可少的一个参数。
本系统就是对电机转速进行测量,并可以和PC机进行通信,显示电机的转速,并观察电机运行的基本状况。
本设计主要用AT89C51作为控制核心,由霍尔传感器、LED数码显像管、HIN232CPE电平转换、及RS232构成。
详细介绍了单片机的测量转速系统及PC机与单片机之间的串行通讯。
充分发挥了单片机的性能。
本文重点是测量速度并显示在5位LED数码管上。
其优点硬件是电路简单,软件功能完善,测量速度快、精度高、控制系统可靠,性价比较高等特点。
关键字:MSC-51(单片机);转速;传感器目录摘要 (1)Abstract .................................... 错误!未定义书签。
1 序言 (1)2 系统功能分析 (2)2.1 系统功能概述 (2)2.2 系统要求及主要内容 (3)3 系统总体设计 (4)3.1 硬件电路设计思路 (4)3.2 软件设计思路 (4)4 硬件电路设计 (6)4.1 单片机模块 (6)4.1.1 处理执行元件 (6)4.1.2 时钟电路 (10)4.1.3 复位电路 (11)4.1.4 显示电路 (12)4.2 霍尔传感器简介 (15)4.2.1 霍尔器件概述 (15)4.2.2 霍尔传感器的应用 (16)4.2.3 AH41霍尔开关 (17)4.3 发送模块 (18)5 软件设计 (22)5.1 单片机转速程序设计思路及过程 (22)5.1.1 单片机程序设计思路 (22)5.1.2 单片机转速计算程序 (23)5.1.3 二-十进制转换程序 (24)5.2 程序设计 (27)6 系统调试 (29)6.1 硬件调试 (29)6.2 软件调试 (30)6.3 综合调试 (32)6.4 故障分析与解决方案 (33)6.5 结论与经验 (34)参考文献 (36)致谢 (37)附录 (38)附录1 电路原理图 (38)附录2 元器件清单 (39)1 序言智能化转速测量可以对电机的转速进行测量,电机在运行的过程中,需要对其平稳性进行监测,适时对转速的测量有效地可以反映电机的状况。
STM8单片机入门
STM8 单片机入门
目录
1 STM8 微控制器简介 ............................................................................................................... 3 1.1 STM8S 系列 ................................................................................................................. 3 1.2 STM8L 系列 ................................................................................................................. 5 1.3 STM8A 系列 ................................................................................................................ 7 1.4 STM8 微控制器网站 ................................................................................................... 9
STM8S主要特点:
n 速度达20 MIPS的高性能内核 n 抗干扰能力强,品质安全可靠 n 领先的130纳米制造工艺,优异的性价比 n 程序空间从4K到128K, 芯片选择从20脚到80脚,宽范围产品系列 n 系统成本低,内嵌EEPROM和高精度RC振荡器 n 开发容易,拥有本地化工具支持
PWM型变频器的基本控制方式
PWM型变频器的基本控制方式通用的PWM型变频器是一种交—直—交变频,通过整流器将工频交流电整流成直流电,经过中间环节再由逆变器将直流电逆变成频率可调的交流电,供给交流负载。
异步电动机调速时,供电电源不但频率可变,而且电压大小也必须能随频率变化,即保持压频比基本恒定。
PWM型变频器一般采用电压型逆变器。
根据供给逆变器的直流电压是可变的还是恒定的,变频器可分成两种基本控制方式。
(1)变幅PWM型变频器这是一种对变频器输出电压和频率分别进行调节的控制方式,其基本电路如图3-3所示。
中间环节是滤波电容器。
图2-3 变幅PWM型变频器晶闸管整流器用来调压,与一般晶闸管调压系统一样,采用相位控制,通过改变触发脉冲的延迟角α来获得与逆变器输出频率相对应的不同大小的直流电压。
逆变器只作输出频率控制,它一般是由6个开关器件组成,按脉冲调制方式进行控制。
图3-4所示是另一种直流电压可调的PWM变频电路。
它采用二极管不可控整流桥,把三相交流电变换为恒定的直流电。
分立斩波器电路,来改变输出直流电压的大小,通过逆变器输出三相交流电。
图2-4 利用斩波器的变频电路图以上两种调压式变频电路,都需要两极可控功率级,相比较,采用晶闸管整流桥可以获得更大功率的直流电,由于可控整流桥采用相位控制,输入功率因数将随输出直流电压的减小而降低;而斩波式调压,输入功率变流级采用的是二级管整流桥,所以输入端有很高的功率因数,代价是多了一个斩波器。
另外,就动态响应的快速性来说后者比前者好。
(2)恒幅PWM型变频器恒幅脉宽调制PWM式变频电路如图3.3所示,它由二极管整流桥,滤波电容和逆变器组成。
逆变器的输入为恒定不变的直流电压,通过调节逆变器的脉冲宽度和输出交流电压的频率,既实现调压又实现调频,变频变压都是由逆变器承担。
此系统是目前使用较普遍的一种变频系统,其主电路简单,只要配上简单的控制电路即可。
它具有下列主要优点:1)简化了主电路和控制电路的结构。
电动机的单片机控制
电动机的单片机控制电动机调速系统可分成三大部分;即控制、驱动、反馈;一、单片机在电动机控制中主要作用1、PWM口广泛地应用在直流电动机控制中,它一经初始化设定后自动发出PWM控制信号,CPU只是在需要调整参数时才介入;2、新型单片机的捕捉功能在电动机控制中用于测频;它相当于老式单片机中用计数器与外中断联合测频功能;3、电动机是一个电磁干扰源,除了采用必要的隔离、屏蔽和电路板合理布线等措施外,看门狗的功能就会显得格外重要;看门狗在工作时不断地监视程序运行的情况;一旦程序“跑飞”,会立刻使单片机复位;4、功率集成电路是电力电子技术与微电子技术相结合的产物;它将半导体功率器件与驱动电路、逻辑控制电路、检测与诊断电路、保护电路集成在一块芯片上,使功率器件含有某种智能功能;二、机电传动系统的动力学基础1、反抗转矩的特点是:转矩的方向总是与转速的方问相反;当运功方向改变时.转矩的方向也改变.它总是阻碍运动进行;因摩擦和非弹性体的压缩、拉伸、扭转等作用所产生的负载转矩都属于反抗转矩;例如.机床加工过程中所产个的负载转矩就是反抗转矩;2、位能转矩则不同.位能转矩的作用方向恒定不变;与运动方向无关;它是由物体的重力和弹性体的压缩、拉伸、扭转等作用所产生的负载转矩;位能转矩在某方向阻碍运动,在相反方向却促进运动;起重机起吊重物时,由于重力的作用方向总是指向地心的.所以它产生的负载转矩永远作用在使重物下降的方向;3、电力拖动系统的稳定运行有两种含义:第一是应能以一定的速度匀速运转;第二是系统受到某种外部干扰如电压波动、负载转矩波动等使转速稍有变化时,应保证干扰消除后仍能以原来的转速运行;要做到第一点;就必须使电动机的电磁转矩与负载转矩大小相等,方向相反,相互平衡;这就意味着电动机的机械特性曲线与工作机械的特性曲线有—个交点;但是,有交点只是保证系统稳定的必要条件,它的充分条件是这个交点必须是稳定的平衡点;电力拖动系统稳定运行的必要充分条件是:①、电动机与工作机械的机械特性曲线要有一个交点;②、在这个交点对应的转速之上,必须要保证T<T Z;而在这个交点对应的转速之下要保证T>T;Z三、常用的电力电子器件1、典型驱动电路⑴、EXB840它主要由输入隔离电路、驱功放大电路、过流检测及保护电路以及电源组成;EXB840的引脚定义如下:引脚1用于连接反偏置电源的滤波电容;引脚2和引脚9分别是电源和地;引脚3为驱动输出;引脚4用于连接外部电容器,以防止过流保护误动作一般场合不需要这个电容;引脚5为过流保护输出;引脚6为IGBT集电极电压监视端;引脚14和引脚15为驱动信号输入端;其余引脚不用;EXB840集成电路驱功IGBT的典型应用电路:2、M57962L集成电路四、单片机对电动机控制的支持1、C8051用于控制电动机时的输入输出端口设置在I/o口Po、P1、P2与内部资源之间是使用交叉开关进行连接的;当需要将某些内部资源与I/o引脚相连接时.必须通过交叉开关控制寄存器xBRo、xBRl、xBR2进行设置;设置交叉开关控制寄存器XBRo、xBRl、xDR2的作用是:确定被选择的资源;这些被选择的资源分配到哪些I/o引脚上去,则由交叉开关优先表根据排列的优先顺序来确定;2、电动机控制中的模/数转换在C805l中的实现ADC可编程窗口检测器在电动机控制应用中非常有用;它不停地、自动地将AD c输出与用户编程的极限值进行比较;并在检测到越限条件时通知系统控制器;3、电动机控制中的PWM和测频在C8051中的实现在有刷和无则直流电动机的控制中.需要使用脉宽调制PwM技术,通过调节PwM信号的占空比来实现调速;因此,PwM波发生器在直流电动机的控制中是不可缺少的;此外,电动机控制中还经常需要对输出的频率信号进行测频例如,光电编码盘的输出,交流电动机控制中sPwM频率的测试等.实现测频的最简苹的方法是使用捕捉功能;c805l单片机有PwM功能和捕捉功能;这些功能都包含在一个称为可编程计数器列阵PcA当中;PcA除了有PwM功能和捕捉功能外,还有比较功能和高速输出功能;五、电动机控制中常用的位移、角度、转速检测传感器1、光栅位移检测传感器2、光电编码盘角度检测传感器编码盘方向的辨别经过放大整形后的A、B两相脉冲分别输入到D触发器的D端和cP端.如图5—15a所示;因此,D触发器的cP端在A脉冲的上升沿触发;由于A、B脉冲相位相差90O;当正转时,B脉冲超前A脉冲90O;触发器总是在B脉冲处于高电平时触发,如图5—15b所示,这时Q=1.表示正转;当反转时.A脉冲超前B脉冲90O.触发器总是在B处于低电平时触发,这时Q=0,表示反转;A、B脉冲的另一路经与门后.输出计数脉冲;这样,用Q或Q非控制可逆计数器是加计数还是减计数.就可以使可逆计数器对计数脉冲进行计数;C相脉冲接到计数器的复位端.实现每转动一圈复位一次计数器;这样.无论是正转还是反转,计数值每次反映的都是相对与上次角度的增量,形成增量编码;3、测速发动机六、模拟PID控制原理在模拟PID控制器中,比例环节的作用是对偏差瞬间作出快速反应;偏差一旦产生,控制器立即产生控制作用,使控制量向减少偏差的方向变化;控制作用的强弱取决于比例系数Kp,K P越大,控制越强,但过大的K P会导致系统振荡,破坏系统的稳定性;由式4—2可见.只有当偏差存在时,第一项才有控制量输出;所以,对大部分被控制对象如直流电机的调压调速,要加上适当的与转速和机械负载有关的控制常量u o否则,比例环节将会产生静态误差;积分环节的作用是把偏差的积累作为输出;在控制过程中,只要有偏差存在,积分环节的输出就会不断增大;直到偏差et=o,输出的ut才可能维持在某一常量,使系统在给定值rt不变的条件下趋于稳态;因此,即使不加控制常量u o,也能消除系统输出的静态误差;积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量;积分常数T I越大,积分的积累作用越弱;增大积分常数T I会减慢静态误差的消除过程,但可以减少超调量,提高系统的稳定性;所以,必须根据实际控制的具体要求来确定T I;实际的控制系统除了希望消除静态误差外,还要求加快调节过程;在偏差出现的瞬间,或在偏差变化的瞬间,不但要对偏差量作出立即响应比例环节的作用,而且要根据偏差的变化趋势预先给出适当的纠正;为了实现这一作用.可在PI控制器的基础上加入微分环节,形成PID控制器;微分环节的作用是阻止偏差的变化;它是根据偏差的变化趋势变化速度进行控制;偏差变化得越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正;微分作用的引入,将有肋于减小超调量,克服振荡,使系统趋于稳定.特别对高阶系统非常有利,它加快了系统的跟踪速度;但微分的作用对输人信号的噪声很敏感,对那些噪声较大的系统一般不用微分,或在微分起作用之前先对输入信号进行滤波;适当地选择微分常数T D,可以使微分的作用达到最忧;七、直流电动机调速系统1、PwM调速原理占空比a表示了在一个周期T里,开关管导通的时间与周期的比值;a的变化范围为o≤a≤1;由式6—2可知,当电源电压Us不变的情况下,电枢的端电压的平均值Uo取决于占空比a的大小,改变a值就可以改变端电压的平均值,从而达到调速的目的,这就是PwM调速原理;在PwM调速时,占空比a是一个重要参数;以下3种方法都可以改变占空比的值;1定宽调频法这种方法是保持t1不变,只改变t2,这样使周期T或频率也随之改变;2调宽调频法这种方法是保持t2不变,而改变t1,这样使周期T或频率也随之改变;3定频调宽法这种方法是使周期T或频率保持不变,而同时改变t1和t2;前2种方法由于在调速时改变了控制脉冲的周期或频率;当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此这2种方法用得很少;目前,在直流电动机的控制中,主要使用定频调宽法;PwM控制信号的产生方法有4种;1分立电子元件组成的PwM信号发生器这种方法是用分立的逻辑电子元件组成PwM信号电路,现已被淘汰了;2软件模拟法利用单片机的一个I/O引脚,通过软件对该引脚不断地输出高低电平来实现PwM波输出;这种方法要占用cPu大量时间,使单片机无法进行其他工作,因此也逐渐被淘汰;3专用PWM集成电路从PwM控制技术出现之日起,就有芯片制造商生产专用的PwM集成电路芯片,现在市场上已有许多种;这些芯片除了有PWM信号发生功能外,还有“死区”调节功能、保护功能等;在用单片机控制直流电动机中,使用专用PwM集成电路可以减轻单片机负担、工作更可靠;4单片机的PwM口新一代的单片机增加了许多功能,其中包括PWM功能;单片机通过初始化设置,使其能自动地发出PwM脉冲波;只有在改变占空比时CPUu才进行干预;后2种方法是日前PwM信号获得的主流方法;2、直流电动机的不可逆PWM系统直流电动机PwM控制系统有可逆和不可逆系统之分;可逆系统是指电动机可以正反两个方向旋转;不可逆系统是指电动机只能单向放转;对于可逆系统,又可分为单极性驱动和双极性驱动两种方式;单极性驱动是指在一个PWM周期里,作用在电抠两端的脉冲电压是单一极性的;双极性驱动则是指在一个PwM周期里,作用在电枢两端的脉冲电压是正负交替的;1无制动的不可逆PwM系统电动机的电枢电流不能反向流动,因此它不能工作在制动状态;2有制动的不可逆PwM系统系统增加了一个开关管V2,只在制动时起作用;开关管v1、v2的PwM信号电平方向相反;3、直流电动机双极性驱动可逆PWM系统在每个PwM周期里,当控制信号Ui1高电平时.开关管vl、v4导通,此时Ui2为低电平.因此v2、v3截止,电枢绕组承受从A到B的正向电压;当控制信号Ui1低电平时,开关管vl、v4截止,此时ui2为高电平.因此v2、v3导通,电枢绕组承受从B到A的反向电压;这就是所谓的“双极”;由于在一个PwM周期里电枢电压经历了正反两次变化.因此其平均电压uO,可用下式决定:由式6—3可见,双极性可逆PwM驱动时,电枢绕组所受的平均电压取决于占空比a大小;当a=o时,uo=-Us,电功机反转.且转速最大;当a=1时.uo =Us,电动机正转,转速最大,当a=l/2时,uo=o,电动机不转;虽然此时电动机不转.但电抠绕组中仍然由交变电流流动,使电动机产生高频振荡,这种振荡有利于克服电动机负载的静摩擦,提高动态性能;当电动机在轻载下工作时,负载使电枢电流很小,电流波形基本上围绕横轴上下波动,电流的方向也在不断地变化,如图6—9c所示;在每个PwM周期的o—t1区间.V2、V3截止;开始时,由于自感电动势的作用,电枢中的电流维持原流向——从B到A,电流线路如图6—8中虚线4,经二极管D4、D1到电源,电动机处于再生制动状态;由于二极管的D4、D1钳位作用,此时v1、v4不能导通;当电流衰减到零后,在电源电压的作用下,v1、v4开始导通;电流经V1、V4形成回路,如图6—8中虚线1;这时电枢电流的方向从A到B.电动机处于电动状态;在每个PwM周期的tl__t2区间,vl、v4截止;电枢电流在自感电动势的作用下继续从A到B,其电流流向如图6—8中虚线2.电动机仍处于电动状态;当电流衰减为零后v2、vI开始导通,电流线路如图6—8中的虚线3,电动机处于反接制动状态;所以,在轻载下工作时,电动机的工作状态呈电动和制动交替变化;4、直流电动机单极性驱动可逆PWM系统图6—14是受限单极可逆PwM驱动系统;它与双极可逆系统的驱动电路相同,只是控制方式不同;在要求电动机正转时,开关管vl受PwM控制信号控制,开关管v4施加高电平使其常开;开关管v2、v3施加低电平,使它们全都截止;如图6—14所示的状态;在要求电动机反转时.开关管v3受PwM控制信号控制,开关管v2施加高电平使其常开;开关管v1、v4施加低电平,使它们全都截止;八、交流异步电动机变频调速系统SPWM波发生器SA4828芯片九、步进电动机的单片机控制由步进电动机与驱动电路组成的开环数控系统,既非常简单、廉价,又非常可靠;同时.它也可以与角度反馈环节组成高性能的闭环数控系统;步进电动机的角位移与输入脉冲数严格成正比,因此;当它转一转后.没有累计误差,具有良好的跟随型;步进电动机只能通过脉冲电源供电才能运行;它不能直接使用交流电源和直流电源;1、按A—B—C —A顺序轮流给各相绕组通电,磁场按A—B—C方向转过了3600;转子则沿相同方向转过—个齿距角;绕组通电一次的操作称为一拍,转子每拍走一步,转子走一步所转过的角度称为步距角:2、细分驱动细分步法是将步进电动机绕组中的稳定电流分成若干阶级,每进一步时,电流升一级;同时.也相对地提高步进频率,使步进过程平稳进行;步进电动机各相绕组的电流是按照工作方式的节拍轮流通电的;绕组通电的过程非常简单,即通电——断电反复进行;现在我们设想将这一过程复杂化一些,例如,每次通电时电流的幅值并不是一次升到位;而是分成阶级,逐个阶级地上升;同样海次断电时电流也不是一次降到0,而是逐个阶级地下降;如果这样做会发生什么现象我们都知道,电磁力的大小与绕组通电电流的大小有关;当通电相的电流并不马上升到位,而断电相的电流并不立即降为0时,它们所产生的磁场合力;会使转子有一个新的平衡位置,这个新的平衡位置是在原来的步距角范围内;也就是说,如果绕组中电流的波形不再是一个近似方波,而是一个分成N个阶级的近似阶梯波,则电流每升或降一个阶级时.转于转动一小步;当转子按照这样的规律转过N 小步时,实际上相当于它转过一个步距角;这种将一个步距角细分成若干小步的驱动方法,就称为细分驱动;细分驱动使实际步距角更小了,可以大大地提高对执行机构的控制精度;同时.也可以减小或消除振荡、噪声和转短矩动;目前,采用细分技术已经可以将原步距角分成数百份;恒频脉宽调制细分驱动电路:恒频脉宽调制细分驱动电路如图8—20a所示;单片机是控制主体;它通过定时器To输出20 kHz的方波,送D触发器,作为恒频信号;同时,输出阶梯电压的数字信号到D/A转换器.作为控制信号.它的阶梯电压的每一次变化,都使转子走一细分步;恒频脉宽调制细分电路工作原理如下:当D/A转换器输出的ua不变时,恒频信号cLK的上升沿使D触发器输出ub高电平.使开关管Tl、T2导通,绕组中的电流上升,取样电阻Rz上压降增加;当这个压降大于ua时,比较器输出低电平,使D触发器输出ub低电平.Tl、T2截止,绕组的电流下降;这使得Rz上的压降小于ua,比较器输出高电平,使D触发器输出高电平,T1、T2导通,绕组中的电流重新上升;这样的过程反复进行,使绕组电流的波顶锯齿形;因为cLK的频率较高,锯齿形波纹会很小;当ua上升突变时,取样电阻上的压降小于ua,电流有较长的上升时间,电流幅值大幅增长.上升了一个阶级,如图8—20b所示;同样,当ua下降突变时,取样电阻上的压降有较长时间大于ua,比较器输出低电乎,CLK的上升沿即使使D触发器输出1也马上被清0;电源始终被切断.使电流幅值大幅下降,降到新的阶级为止;以上过程重复进行;ua的每一次突变,就会使转子转过一个细分步;ucN5804B集成电路芯片适用于四相步进电动机的单极性驱动:图8—21是这种芯片的一个典型应用;结合图8—21可以看出芯片的各引脚功能为:4、5、12、13脚为接地引脚,1、3、6、8脚为输出引脚,电动机各相的接线如图;14脚控制电动机的转向,其中低电乎为正转,高电平为反转;11脚是步进脉冲的输入端;9、10脚决定工作方式;3、步进电动机的单片机控制1控制换相顺序2控制步进电动机的转向3控制步进电动机的速度脉冲的频率决定了步进电动机的转速;步进电动机的速度控制通过控制单片机发出的步进脉冲频率来实现;对于图8—22所示的软脉冲分配方式,可以采用调整两个控制字之间的时间间隔来实现调速;对于图8—23所示的硬脉冲分配方式,可以控制步进脉冲的频率来实现调速;第一种是通过软件延时的方法;改变延时的时间长度就可以改变输出脉冲的频率;但这种方法使cPu长时间等待,占用大量机时,因此没有实用价值;第二种是通过定时器中断的方法;在中断服务子程序中进行脉冲输出操作.调整定时器的定时常数就可以实现调速;这种方法占用cPu时间较少,在各种单片机中部能实现,是一种比较实用的调速方法;4、脉冲分配1通过软件实现脉冲分配2通过硬件实现脉冲分配8713脉冲分配器与单片机的接口例子如图8—23所示,本例选用单时钟输入方式,8713的3脚为步进脉冲输入端,4脚为转向控制端,这两个引脚的输入均由单片机提供和控制;选用对四相步进电动机进行八拍方式控制,所以5、6、7脚均接高电乎;5、步进电动机的运行控制1步进电动机的位置控制需要两个参数;第一个参数是步进电动机控制的执行机构当前的位置参数,我们称为绝对位置;绝对位置是有极限的,其极限是执行机构运动的范围,超越了这个极限就应报警;第二个参数是从当前位置移动到目标位置的距离,我们可以用折算的方式将这个距离折算成步进电动机的步数;这个参数是外界通过键盘或可调电位器旋钮输入的,所以折算的工作应该在键盘程序或A/D转换程序中完成;2步进电动机的加、减速控制十、无刷直流电动机1、工作原理无刷直流电动机是由电动机本体、转子位置传感器和电子开关线路3部分组成.无刷直流电动机为了去掉电刷.将电枢放到定子上去.而转子做成永磁体,这样的结构正好与普通直流电动机相反;然而,即使这样改变还不够,因为定子上的电枢通入直流电以后,只能产生不变的磁场,电动机依然转不起来;为了使电动机的转子转起来.必须使定子电枢各相绕组不断地换相通电;这样才能使定子磁场随着转子的位置在不断地变化,使定子磁场与转子永磁磁场始终保持900左右的空间角,产生转矩推动转子旋转;图9—9是三相无刷直流电动机的工作原理因;采用光电式位置传感器,电动机的定子绕组分别为A相、B相、c相,因此,光电式位置传感器上也有3个光敏接收元件vl、vz、v3与之对应;3个光敏接收元件在空间上间隔1200,分别控制3个开关管vA、vB、vC本例为半桥式驱动,只用3个开关管;这3个开关管则控制对应相绕组的通电与断电;遮光板安装在转子上,安装的位置与图中转子的位置相对应;为了简化,转于只有一对磁极;当转子处于图9—l0a所示的位置时,遮光板遮住光敏接收元件v2、v3,只有v1可以透光;因此,V1输出高电平使开关管vA导通.A相绕组通电.而B、c两相处于断电状态;A相绕组通电使定子产生的磁场与转子的永磁磁场相互作用.产生的转矩推动转子逆时针转动;当转子转到图9—10b的位置时,遮光板遮住vl,并使v2透光;因此,v1输出低电乎使开关管V A截止,A相断电;同时,V2输出高电平使开关管vB导通,B相通电,c相状态不变;这样由于通电相发生了变化,使定子磁场方向也发生了变化,与转子永磁磁场相互作用,仍然会产生与前面过程同样大的转矩.推动转子继续逆时针转动;当转子转到图9—l0c的位置时,遮光板遮住V2,同时使v3透光;因此,B相断电、c相通电,定子磁场方向又发生变化,继续推动转子转到图9—10d的位置,使转子转过一周又回到原来位置;如此循环下去,电动机就转动起来了;2、无刷直流电动机的单片机控制c805l的P1口作为输出口,通过驱功器7407控制全桥驱动电路上桥臂的P沟道MOSFETV1、V3、V5.通过与门7409控制下桥臂的N沟道MoSFETV4、V6、V2;C8051的Po.o作为PWM输出门.控制电动机的转速;Po.1一P0.6作为输入口.连接位置传感器输出的控制信号;c8051的所有输出口都接上拉电阻.与5v负载电平相匹配;1.换相控制本例中采用三相全桥星形联结也可以采用三相全桥角形联结;不管使用二二导通方式还是三三导通方式.都有6种导通状态,转了每转600换—种状态;导通状态的转换通过软件来完成;软件控制导通状态转换飞常简单.即根据位置传感器的输出信号H1、H2、H3,不断地取相应的控制字送P1口来实现;因此;如果采用霍尔式位置传感器,根据P1口与MosFET管的连接关系;2.转速控制无刷直流电动机的转速控制原理与普通直流电动机一样.可以通过PwM方法来控制电枢的通电电流.实现转速的控制;本例中,通过c8051的PwM口,控制3个与门7409的B输入端;当PWM口输出低电平时.使与门7409输出低电平,开关电路的MOSFET管v4、v6、v2被封锁;当PwM口输出高电平时,与门7409的输出状态取决于单片机的控制字,MOsFET管v4、v6、v2的导通与截止按正常换相状态进行;由于采用了PwM口.单片机可以自动地输出PwM波.减轻了单片机的负担;3.转向控制只要改变开关管通电顺序就可以实现电动机的反转; 转向的控制可通过软件来完成的,通过送反转控制字到P1即可;4.启动限流控制图9—25的限流电路是由采样电阻R和比较器LM324硬件组成;当电动机启动时,启动电流增大,在采样电阻R上的压降增大,当压降等于给定电压u0时,比较器LM324输出低电平,使MosFET开关管v4、v6、v2被关断,R上的电流迅速减小;R上的压阵也减小,当压降降到小于给定电压u0时,比较器输出高电乎,使M0sFET刀:关管v4、v6、v2恢复正常的通断顺序;如此下去,电流被限制在u0/R上下,达到限流的目的;。
单片机控制电动机调速测速器(修改) (2)
红外对管器件测转速
• 在本项目中,我们对转速的采集所采用的传感器 是红外对管。我们所采用红外对管的原因有如下 几点: • 1、红外对管的价格便宜。 • 2、红外对管的灵敏度虽然不是很高但完全能 够满足低压直流电机的速度采集。 • 3、红外对管的驱动和信号转换电路比较简单。
红外对管
• • 红外对管是红外线发射管与光敏接收管,或者红外线接收管,或者红外线接收头配合在一起使用时 候的总称。红外线 在光谱中波长自0.76至400微米的一段称为红外线,红外线是不可见光线。 所有高于绝对零度(-273.15℃)的物质都可以产生红外线。现代物理学称之为热射线。医用红外 线可分为两类:近红外线与远红外线。 红外线发射管红外线发射管在LED封装行业中主要有三个常用的波段,如下850NM、875NM、 940NM。根据波长的特性运用的产品也有很大的差异,850NM波长的主要用于红外线监控设备, 875NM主要用于医疗设备,940NM波段的主要用于红外线控制设备。EG:红外线遥控器、光电开 关、光电计数设备等。 光敏接收管它是一个具有光敏特征的PN结,属于光敏二极管,具有单向导电性,因此工作时需加 上反向电压。无光照时,有很小的饱和反向漏电流(暗电流)。此时光敏管不导通。当光照时,饱和 反向漏电流马上增加,形成光电流,在一定的范围内它随入射光强度的变化而增大。红外线接收管 红外线接收管功能与光敏接收管相似只是不受可见光的干扰,感光面积大,灵敏度高,属于光敏二 极管,一般只对红外线有反应。 红外线接收头就是在红外线接收管的基础上增加了 对微弱信号进行放大的处理的电路,类似与三极 管的放大效果。
目录 目录
第一章 任务与要求 第二章 硬件电路设计 第三章 软件设计
第一章 项目描述
单片机控制直流电动机调速,单片机属于前端的控 制级,只需要能够产生可调的PWM波形就可以,PWM 脉宽调制,调节电机的输入占空比就可以控制电机的平 均电压,控制转速。驱动级,在控制级后。因为单片机 弱电不能直接驱动电机这样的强电,所以需要用功率开 关器件(如MOSFET等)来驱动电机。基本思路就是通 过弱电控制强电(本任务控制的为小型直流电动机)。 通过测速元件及LCD显示,在屏幕上能看到电机的转 速 ,这就是最简单的单片机调速测速器。 本设计以单片机为核心,应用红外传感器,电机驱 动电路和LCD显示来实现的。
单片机课程设计步进电机
单片机课程设计-步进电机江南大学物联网工程学院课程设计报告课程名称:单片机原理及应用设计题目:基于单片机的步进电机控制器设计班级:姓名:学号:指导教师:评分:年月日基于单片机的步进电机控制器设计摘要:本设计是用80C52单片机作为核心部件进行逻辑控制及信号产生,用单片机技术和C 语言编程设计来进行步进电机的控制。
通过人手动按开关实现步进电机的启动与停止、步进电机的正转反转,加速及减速等功能,此外还有LCD 数码管进行实时显示功能。
同时本文也通过了proteus软件的仿真,在仿真结果中能看出近似真实的效果。
经过proteus仿真,结果表明,系统实现了要求。
该系统电路简单,可靠性强,运行稳定。
关键词:步进电机单片机LCD proteus 仿真1课题主要研究内容和要求本设计采用单片机80C52来作为整个步进电机控制系统的运动控制核心部件。
所选的步进电机是四相五线的,由于步进电机需要高功率驱动,单片机不能与步进电机直接相连,因此我们需要采用了电机驱动芯片ULN2003连接步进电机和单片机。
为了显示步进电机转速,我用数码管来显示速率。
再加上一些独立按键来实现步进电机调速、改变转向的功能。
这样就构成了一个基本的步进电机控制系统。
系统的具体功能和要求如下:1、电机转速可以平稳控制;2、通过键盘和显示器可以设置电机的转速;3、能显示电机的运动趋势;2所需仪器设备所需器件备注所需器件备注STC89C52一片12M晶振一个单片机ULN2003驱一片按键五个动芯片八位共阳数一片异步电机一个码管芯片不同阻值电若干+5V电源一个阻30pF电容两个3系统总体设计本设计的硬件电路包括独立按键控制模块、步进电机驱动模块、数码管显示模块和单片机最小系统四部分。
单片机最小系统由时钟电路和复位电路组成,保证单片机正常运行;独立按键控制模块由开关和按键组成,当按下按键时,该系统就按照该按键控制的功能运作;显示模块主要是为了显示电机的工作状态和转速;驱动电路主要是对单片机输出的脉冲进行功率放大,从而驱动电机转动。
单片机课程设计PWM直流电动机调速控制系统方案
单片机原理及应用—— P W M直流电机调速控制系统概括直流电动机具有良好的启动性能和调速特性。
具有起动转矩大、调速平稳、经济大范围、调速容易、调速后效率高等特点。
本文设计的直流电机调速系统主要由51单片机、电源、H桥驱动电路、LED 液晶显示器、霍尔测速电路和独立按键组成的电子产品组成。
电源采用78系列芯片,采用PWM波方式实现电机+5V、+15V调速,PWM为脉宽调制,通过51单片机改变占空比实现。
通过独立的按键实现电机的启停、调速和转向的手动控制,LED实现测量数据(速度)的显示。
电机转速采用霍尔传感器检测输出方波,通过51单片机统计1秒内方波脉冲个数,计算电机转速,实现直流电机的反馈控制。
关键词:直流电机调速; H桥驱动电路; LED显示屏; 51单片机目录摘要2摘要错误!未定义书签。
目录3第 1 章引言41.1 概述41.2 国外发展现状41.3 要求51.4 设计目的及6第 2 章项目论证与选择72.1 电机调速模块72.2 PWM调速工作模式72.3 PWM脉宽调制方式错误!未定义书签。
2.4 PWM 软件实现错误!未定义书签。
第三章系统硬件电路设计83.1 信号输入电路83.2 电机PWM驱动模块电路9第 4 章系统的软件设计104.1 单片机选型104.2 系统软件设计分析10第 5 章 MCU 系统集成调试135.1 PROTEUS 设计与仿真平台错误!未定义书签。
18传统开发流程对比错误!未定义书签。
第一章简介1.1 概述现代工业的电驱动一般要求部分或全部自动化,因此必须与各种控制元件组成的自动控制系统相联动,而电驱动可视为自动电驱动系统的简称。
在这个系统中,生产机械可以自动控制。
随着现代电力电子技术和计算机技术的发展以及现代控制理论的应用,自动电驱动正朝着计算机控制的生产过程自动化方向发展。
以实现高速、高质量、高效率的生产。
在大多数集成自动化系统中,自动化电力牵引系统仍然是不可或缺的组成部分。
基于PWM控制直流电机自动调速系统设计
1 绪论1.1 课题的研究背景和意义直流电动机是最早出现的电动机,也是最早能实现调速的电动机。
长期以来,直流电动机一直占据着调速控制的统治地位。
由于它具有良好的线性调速特性,简单的控制性能,高的效率,优异的动态特性;尽管近年来不断受到其他电动机(如交流变频电机、步进电机等)的挑战,但到目前为止,它仍然是大多数调速控制电动机的优先选择。
近年来,直流电动机的结构和控制方式都发生了很大变化。
随着计算机进入控制领域以及新型的电力电子功率元件的不断出现,使采用全控型的开关功率元件进行脉宽调制 (PulseWidthModulation,简称PWM)控制方式已成为绝对主流。
这种控制方式很容易在单片机控制中实现,从而为直流电动机控制数字化提供了契机。
五十多年来,直流电气传动经历了重大的变革。
首先,实现了整流器件的更新换代,从50年代的使用己久的直流发电机一电动机组(简称G-M系统)及水银整流装置,到60年代的晶闸管电动机调速系统(简称V-M系统),使得变流技术产生了根本的变革。
再到脉宽调制 (PulsewidthModulation)变换器的产生,不仅在经济性和可靠性上有所提高,而且在技术性能上也显示了很大的优越性,使电气传动完成了一次大的飞跃。
另外,集成运算放大器和众多的电子模块的出现,不断促进了控制系统结构的变化。
随着计算机技术和通信技术的发展,数字信号处理器单片机应用于控制系统,控制电路己实现高集成化,小型化,高可靠性及低成本。
以上技术的应用,使系统的性能指标大幅度提高,应用范围不断扩大。
由于系统的调速精度高,调速范围广,所以,在对调速性能要求较高的场合,一般都采用直流电气传动。
技术迅速发展,走向成熟化、完善化、系统化、标准化,在可逆、宽调速、高精度的电气传动领域中一直居于垄断地位[1]。
目前,国内各大专院校、科研单位和厂家也都在开发直流数字调速装置。
姚勇涛等人提出直流电动机及系统的参数辨识的方法。
该方法依据系统或环节的输入输出特性,应用最小二乘法,即可获得系统或环节的内部参数,所获的参数具有较高的精度,方法简便易行。
单片机控制伺服电机设计(带单片机程序及电路)
程设计说明书题目:基于单片机的步进电机控制系统设计课程:机电一体化系统设计姓名:马福德学号:0804705030指导教师:段广云、俞学兰专业年级:机械设计制造及其自动化(机械电子工程方向)2008级所在院系:机械工程学院完成日期: 2011年7月 10 日答辩日期: 2011年7月 11 日摘要随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。
研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。
采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。
软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。
本设计是采用AT89C51单片机对步进电机的控制,通过IO口输出的时序方波作为步进电机的控制信号,信号经过芯片AT6560AHQ驱动步进电机;同时,用 4个按键来对电机的状态进行控制,并用数码管动态显示电机的转速。
系统由硬件设计和软件设计两部分组成。
其中,硬件设计包括AT89C51单片机的最小系统、电源模块、键盘控制模块、步进电机驱动模块、数码显示模块、测速模块(含霍尔片UGN3020)6个功能模块的设计,以及各模块在电路板上的有机结合而实现。
软件设计包括键盘控制、步进电机脉冲、数码管动态显示以及转速信号采集模块的控制程序,最终实现对步进电机转动方向及转动速度的控制,并将步进电机的转动速度动态显示在LED数码管上,对速度进行实时监控显示。
软件采用在Keil软件环境下编辑的C语言。
本系统具有智能性、实用性及可靠性的特点。
关键词:步进电机 ,单片机 ,电脉冲信号, 角位移, 转速控制,方向控制ABSTRACTWith the development of microelectronics and computer technology, increasing demand for stepper motor, which is widely used in printers, electronic toys and consumer products such as CNC machine tools, industrial robots, medical equipment and electrical products, and its various national fields are applied. Of stepper motor control system to improve the control accuracy and response speed, energy conservation and so important.Stepper motor is an electric pulse signals can convert the angular displacementor linear displacement of the mechanical and electrical components, stepper motor control system consists of stepper controller, stepper motor power amplifier and so on. Use MCU control, the stepper controller instead of using software to make simple circuit, low cost, reliability greatly increased. Software programming flexibility to produce different types of stepping motor excitation sequence to control the operation of the various stepper motor modeThis design is used AT89C51 of Stepping motor control, through the IO port as a square wave output of the timing of step motor control signal, the signal through the ULN2003 driver chip stepper motor; the same time, with four buttons to the status of the motor control, and dynamic display with digital control motor speed.System consists of hardware and software design of two parts. Among them, the hardware design, including minimum system AT89C51 microcontroller, power supply module, keyboard control module, stepper motor drive (integrated Darlington ULN2003) module, digital display (SM420361K digital control) module, speed modules (including the Hall probe UGN3020) six function modules, and each module in the circuit board to achieve the organic combination. Software design, including keyboard control, stepping motor pulse, the digital dynamic display and speed signal acquisition module, control procedures, and ultimately to the stepper motor rotation direction and rotation speed control of stepper motor rotation speed and dynamic display in the LED digital tube, real-time monitoring of the speed display. Software used in the software environment to edit Keil C language. This system has the intelligence, practicality and reliability features.Key Words: Stepping motor , MCU Pulse Signal , Angular displacement ,Speed control ,Direction control目录1 绪论 (1)1.1背景 (1)1.2设计任务及要求 (1)2 总体方案设计 (2)2.1方案设计 (2)2.2芯片选择 (2)2.2.1 CPU的芯片选择 (2)2.2.2 驱动电路的芯片选择 (3)2.2.3 测试电路的芯片选择 (6)3 系统硬件设计 (7)3.1电机驱动电路 (7)3.2测试及显示电路 (8)3.2.1 CS3020霍尔传感器测试电路 (8)3.2.2 LED数码显示管 (8)3.3电源 (9)3.4两相步进电机 (9)3.5键盘控制系统 (10)4 控制系统软件分析与设计 (11)4.1主程序流程图 (11)4.2读键盘子程序流程图 (11)4.3键盘处理子程序流程图 (12)4.4电机控制中断程序流程图 (12)4.5程序设计平台 (13)4.6源程序清单 (14)5 PCB板设计 (19)5.1设计原则 (19)5.1.1布局操作的基本原则 (19)5.1.2布线原则 (19)5.2PCB板设计方案: (20)5.3PCB板各电器元件的布局 (21)6 设计体会 (22)致谢 (23)参考文献 (24)附录 (25)A元件清单 (25)B电路PCB图 (26)C电路原理图 (26)1 绪论1.1 背景当今社会,电动机在工农业生产、人们日常生活中起着十分重要的作用。
stc8h1k08编程案例
stc8h1k08编程案例使用STC8H1K08单片机进行编程时,可以实现多种应用。
以下是10个使用STC8H1K08单片机的编程案例:1. LED灯控制:使用STC8H1K08单片机控制LED灯的亮灭,可以通过按键、光敏电阻或红外遥控器来触发LED灯的状态改变。
2. 温度监测与控制:通过连接温度传感器到STC8H1K08单片机,可以实时监测环境温度,并根据设定的阈值来控制电风扇或加热器的启停,实现温度控制。
3. 数码管显示:使用STC8H1K08单片机控制数码管的显示,可以实现时钟、计时器、计数器等功能。
通过按键可以调整显示的数值。
4. 蜂鸣器控制:通过STC8H1K08单片机控制蜂鸣器的开关,可以实现报警、提示或音乐播放等功能。
5. 电机控制:通过连接电机到STC8H1K08单片机,可以实现电机的正转、反转、加速、减速等控制功能。
可以应用于电动车、机器人等项目中。
6. 红外遥控器:使用STC8H1K08单片机接收和解码红外遥控器信号,可以实现对电视、空调、音响等家电设备的控制。
7. 蓝牙通信:通过STC8H1K08单片机和蓝牙模块的串口通信,可以实现与手机或电脑的数据传输和远程控制。
8. 触摸开关:使用STC8H1K08单片机和触摸传感器,可以实现触摸开关的功能。
通过触摸传感器检测触摸信号,控制灯光、电器等的开关。
9. 智能家居控制:通过STC8H1K08单片机和各种传感器的连接,可以实现智能家居控制系统,如智能灯光控制、智能窗帘控制、智能门锁控制等。
10. 数据采集与存储:使用STC8H1K08单片机连接各种传感器,可以实现数据采集并存储到SD卡或EEPROM中,用于后续数据分析和处理。
以上是使用STC8H1K08单片机的编程案例,通过学习和实践这些案例,可以加深对单片机编程的理解和应用能力。
8位单片机控制直流电动机
用单片机控制直流电动机摘要本设计为单片机控制直流电动机,采用单极性可逆PWM驱动。
操作者由键盘控制电动机执行15种功能,并可由LED与电动机转速显示出控制效果。
在实现上,PWM调速采用定频调宽法,系统稳定性较好;电动机输入脉冲的电平转换采用双定时器中断实现,可节省CPU资源;键盘输入采用阵列式输入,用4*4的键盘形式,这样可以有效的减少对单片机I/O口的占用.关键词:PWM 定频调宽双定时器中断正文1.系统分析与论证●系统总体框图通过按动15个按键来实现对电动机的正反转,逐步加、减速与分档加减速控制。
●PWM调速方法的方案论证PWM调速原理如图1.1所示图1.1根据改变占空比方法的不同,PWM调速可分为以下三种:(1)定宽调频这种方法是保持T1不变,只改变T2,使周期也随之改变。
(2)调频调宽这种方法是保持T2不变,而改变T1,使周期也随之改变。
(3)定频调宽这种方法是保持周期T不变,而同时改变T1和T2。
前两种方案由于在调速时改变了脉冲频率,故当控制脉冲频率与系统固有频率接近时,将会引起振荡,因此采用定频调宽。
●PWM控制信号的产生方案论证PWM控制信号的产生方法有四种,分述如下:(1)分立电子元件组成的PWM信号发生器这种方法是用分立的逻辑电子元件组成PWM信号电路。
此方法优点是不用软件设计,但硬件较为庞大。
(2)软件模拟法这种方法是利用单片机的I/O引脚,通过软件对该引脚不断输出高低电平来实现PWM信号输入。
此种方法虽然要占用CPU,但硬件大为减少。
(3)专用PWM集成电路此种芯片的使用可减轻单片机负担,硬件电路也不大。
(4)单片机的PWM口新一代的单片机可通过初始化设置,使其自动发出PWM脉冲波,只有在改变占空比时CPU才进行干预。
后两种是目前PWM信号获得的主流方案,但考虑到本系统较小,单片机的CPU资源亦未得到充分利用,故采用第二种方案●软件中改变PWM占空比的方案论证(1)软件延时高电平与低电平的持续时间由软件延时,延时时间由寄存在两个寄存器中的数据来控制。
基于AT89S52单片机及PID算法实现循迹避障功能的智能小车【毕业论文,绝对精品】
Abstract
This paper introduced an kind ofintelligent car that use AT89S52 SCM as control core , combine with multiple sensors and PIDcontrolalgorithmto achieve the function that find track and avoid obstacles.the electrical car uses reflective photoelectric sensor to detect black line to achieve track-finding,uses ultrasonic sensors to detect obstacles on the road to avoid obstacles automatically.The entire system has the function that trace route automatically,find light and test speed.Among them, AT89S52 which has 8-bit single-chip is used as the control part.Because of useing easily and having multi-function ,it suffers large users. The motor driver uses the common way--PWM for the motor controlling speed. the speed of car is displayed by the LCD screen .The circuit structure of the whole system is relatively simple, high reliability, and it can meet the requirements of the various design.With the continuous improvement of high technology and the stead process in industrial automation in our country,the Intelligence-car which gradually access to people's attention has been widely applied to design a variety of toys and other products,which greatly enriched people's lives.
基于AVR单片机的智能跑步机控制器设计
基于AVR单片机的智能跑步机控制器设计————————————————————————————————作者:————————————————————————————————日期:基于AVR单片机的智能跑步机控制器设计1 引言电动跑步机是目前健身器材中的主流产品,它是通过电机带动跑步带使人以不同的速度被动地跑或走,在人体用力方面,比在地面上跑、走省去了一个蹬伸动作,可使人比在地面运动消耗更多能量。
但由于其功能比较单一,缺乏娱乐性和交互性,长时间锻炼会使人感到枯燥乏味。
在全社会崇尚健身就是生活质量的今天,传统电动跑步机这种单调重复运动已难以满足人们对健身品质的要求,而具有虚拟现实功能的智能跑步机,以计算机虚拟的模拟环境代替现实世界的真实环境,给人身临其境的沉浸感,增加了健身的乐趣,已成为目前的研究热点.本文将传统电动跑步机与虚拟现实技术相结合,研究并设计了具备传统电动跑步机各种健身模式且具有虚拟场景漫游功能的智能电动跑步机控制系统.系统通过上下位机的串行通信进行各种参数的实时传递,TFT液晶显示器显示友好的操作界面以及实时变化的运动和体能参数,采用触摸屏与薄膜按键结合的操作方式增加操作的灵活性,是虚拟现实、人机交互在健身器材方面应用的一个典型例子。
采用ATMEL公司的ATmega128作为跑步机的主控芯片,它具有先进的RISC架构,内部集成较大容量存储器,有丰富的管脚资源,驱动能力强,具有在系统编程功能,给控制系统的设计及程序的升级和维护提供了极大方便。
2 跑步机控制系统的结构及功能2。
1 系统结构控制系统由上位机和下位机两大部分组成。
上位机采用普通计算机,主要负责触摸屏控制、操作界面显示、多媒体播放和虚拟场景漫游.下位机以ATmega128为核心控制器,配合相应的外围电路,通过采集键盘输入、电机反馈、接收上位机信息等对跑步机进行直接控制。
上下位机通过串行通信总线RS232进行通信。
跑步机控制系统总体设计框图如图1所示,虚线框内是下位机控制器设计。
基于8位单片机的小型机器人系统的设计与实现
基于8位单片机的小型机器人系统的设计与实现摘要:设计并制作了以avr单片机atmega16l为控制器的小型机器人、以at89s52为mcu的51单片机实验板和uart串行通信接口等部分构成的硬件系统。
根据具体硬件系统的特性,用c和c++语言开发了机器人串口调试软件与综合控制软件。
实现了无线遥控或远程网络控制机器人完成前后行走、翻跟斗、跳舞,并由机器人变形成小车,以及小车的前后左右行驶,再由小车变形成机器人等功能。
关键词:机器人;串口通信;无线通信;网络通信中图分类号:tp368.12 文献标识码:a 文章编号:1007-9599 (2013) 03-0000-021 概述机器人技术是当今科学研究的热点之一,本课题设计并实现了一个以8位单片机为核心控制器的集口串口控制、网络控制、无线通信控制于一体的机器人系统。
完成了基本电路板的设计、机器人实体机构所涉及及制作、相应控制程序的开发设计及调试等工作。
本设计的小型机器人系统包含以atmega16l为控制器的小型机器人、以at89s52为mcu的51单片机实验板、nrf2401半双工无线通信模块、以pt2262/pt2272编码解码芯片的发送模块(遥控)接受模块、uart串行通信接口等部分构成的硬件系统。
软件系统包括:机器人串口调试上、下位机软件和机器人独立运行软件,51单片机下位机软件,本地服务器串口控制上位机软件与远程客户端控制软件。
根据本系统要具备的功能进行系统的总体设计,可以将本系统分成三大部分来实现,包括:机械实体部分、硬件电路部分、软件程序部分。
其中硬件电路又可分为机器人电路和51单片机电路。
2 硬件电路设计本机器人系统各部分的电路原理图设计是在proteldxp中完成的。
需要设计完成的电路有机器人控制电路、串行通信接口、直流电机驱动电路、51单片机实验板电路。
机器人控制电路板主要由单片机最小系统、电源、jtag接口等部分构成。
51单片机实验板电路包括微控制器最小系统、串口模块、显示模块、数字温度传感器ds18b20、时钟芯片ds1302等模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C15L10 LMC
幻灯片
3
交流电机课程安排
普通交流电机
电源电压过零点检测 离线式电源 可控硅触发
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
4
交流电机控制部分课程目标
学习完本课程后,您将能够…… 说明如何用三相逆变器驱动单相交 流电机 介绍ZCD外设以及如何使用它进行 交流电源过零检测
直流电机
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10机课程安排
固定分相电容式(PSC)单相电机
三相驱动
电路 转矩、功率和效率 优缺点
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC 利用8位单片机实现电机控制
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
1
课程安排
两门课程合二为一
交流电机
交流感应电机(ACIM) 普通交流电机 直流无刷(BLDC)电机和永磁同步电 机(PMSM)
PIC16F1708 ZCD_OUT CLC1 PPS RB6
TMR1G
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
27
开关可控硅触发
用电位器设置可控硅触发延时(td) Timer4提供计时基准节拍 过零中断启动Timer4 当Timer4的值等于设定点时触发可 控硅
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
5
交流感应电机——单相
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
6
单相ACIM与逆变器
典型PSC设置
24位定时器 可在一次测量中测量占空比和周期
角度定时器(AT)
在预先定义的角度触发事件 硬件安全定时器
带硬件限制定时器(HLT)的Timer2
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
30
参考资料
AN1660——采用PIC16驱动单相ACIM AN954——无变压器电源:阻性和容性 ANXX——采用PIC16进行普通交流电机控制 设计
此应用笔记处于Review阶段
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
31
交流电机控制综述
ACIM
使用三相驱动方法在转矩和功率方面 的优势 效率限制 采用ZCD模块进行开环控制设计
普通交流电机
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC 幻灯片 8
VU = VDC VV = VDC VW = VDC
© 2014 Microchip Technology Incorporated. 版权所有。
相位图
电压损耗
90度相位间隔
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
23
典型使用
当电流为0A时,触发中断和/或翻转引脚电平。 要在临近0点触发翻转:
Vdd
Izpin
Vref
+
R +
Vo
使用峰值Vo求解R Vo = 230V ∗ Izpin_max = 300 μA R V V Izpin_max
2
Vzpin
** Izpin_max < 300 μA
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
28
开环可控硅触发
ZCD事件
Td
ZCD事件
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
29
新外设
在18011 CIP课程中介绍的其他相关电机控制 模块: 信号测量定时器(SMT)
电机电流 输入电压 ZCD输出 可控硅门极脉冲
C15L10 LMC 幻灯片 25
测量时间间隔
使用Timer1门控测量输入频率
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
26
测量时间间隔
配合使用Timer1、CLC和PPS计数过零 点之间的时间
功率:
同样运行在60 Hz时 ,通过PSC方法运行电机, 其输出功率(为230W)是逆变器输出功率(为 100W)的两倍多 同样运行在60 Hz时 ,采用PSC方法时效率比采 用逆变器方法大约高10% 逆变器拓扑会造成一些损耗
效率:
© 2014 Microchip Technology Incorporated. 版权所有。
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
12
转矩与速度
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
13
输出转矩
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
20
电源
容性
跳线 阻性
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
21
过零检测—— 常规I/O法
在出现高输入电压时,保护二极管会将电压钳 位 由此产生的电流会造成模拟电路工作异常
Vdd
推挽电路
无传感器换相需要从电机端子获得 反馈信号 反馈信号中包含噪声
调制 无功振铃
无源滤波增加了延时 有没有更好的方法?
C15L10 LMC 幻灯片 41
© 2014 Microchip Technology Incorporated. 版权所有。
CLC:可配置逻辑单元
CLC是可编程逻辑和门 信号源:内部和外部 输出:内部和外部 可用于选择性地采样比较器输出
C15L10 LMC 幻灯片 38
© 2014 Microchip Technology Incorporated. 版权所有。
具有所需资源的器件
器件 PIC16(L)F1509 PIC16(L)F1508 PIC16(L)F1503 PIC16(L)F1936 PIC16(L)F1946 PIC16(L)F1708 PIC16(L)F1713 PIC16(L)F1716 PIC16(L)F1618 PIC16(L)F1619 PWM 4 4 4 ECCP ECCP 2/2 2/2 2/2 2/2 2/2 16位定时器 1 1 1 1 1 1 1 1 1 3 3 BEMF 2个比较器 2个比较器 2个比较器 2个比较器 3个比较器 3个比较器 2个比较器 2个比较器 2个比较器 2个比较器 2个比较器 CLC 4 4 2 0 0 0 3 4 4 2 4 速度 串行/ADC 串行/ADC ADC 串行/ADC 串行/ADC 串行/ADC 串行/ADC 串行/ADC 串行/ADC 串行/ADC 串行/ADC
C15L10 LMC
幻灯片
35
利用低成本的最低资源 获得高性能
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
36
成本与性能
许多BLDC解决方案采用高性能器件 高性能意味着高成本 采用低成本器件是否可以获得同样 高的性能呢?
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
37
最低资源需求
可转向PWM 换相定时器 快速BEMF测量 速度控制输入 12个I/O引脚(6个用于驱动,4个用 于BEMF,1-2个用于速度) *BEMF滤波
C15L10 LMC
幻灯片
14
输出功率
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
15
效率
© 2014 Microchip Technology Incorporated. 版权所有。
C15L10 LMC
幻灯片
16
结果综述
典型三相逆变器
© 2014 Microchip Technology Incorporated. 版权所有。