虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

逆<b>变电源</b>数字

  • 12345

    /****************temic*********t5557***********************************/    #include   <at892051.h>     #include   <string.h>    #include   <intrins.h>     #include   <stdio.h>     #define    uchar    unsigned char     #define    uint     unsigned int     #define    ulong    unsigned long     //STC12C2051AD的SFR定义     sfr  WDT_CONTR = 0xe1;//stc2051的看门狗??????     /**********全局常量************/    //写卡的命令     #define    write_command0       0//写密码     #define    write_command1       1//写配置字     #define    write_command2       2//密码写数据     #define    write_command3       3//唤醒     #define    write_command4       4//停止命令     #define    TRUE       1     #define    FALSE      0     #define    OK         0     #define    ERROR      255     //读卡的时间参数us     #define ts_min          250//270*11.0592/12=249//取近似的整数     #define ts_max          304//330*11.0592/12=304     #define t1_min          73//90*11.0592/12=83:-10调整     #define t1_max          156//180*11.0592/12=166     #define t2_min          184//210*11.0592/12=194     #define t2_max          267//300*11.0592/12=276     //***********不采用中断处理:采用查询的方法读卡时关所有中断****************/     sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13     sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE     PIN=6     sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut  PIN=2     sbit wtd_sck = P1^7;//SPI总线     sbit wtd_si = P1^3;    sbit wtd_so = P1^2;    sbit iic_data = P1^2;//lcd IIC     sbit iic_clk = P1^7;    sbit led_light = P1^6;//测试绿灯     sbit led_light1 = P1^5;//测试红灯     sbit led_light_ok  = P1^1;//读卡成功标志     sbit fengmingqi = P1^5;    /***********全局变量************************************/       uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密码             //uchar idata card_snr[4];   //配置字     uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7};     //存储卡上用户数据(1-7)7*4=28     uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收数组ram     uchar command; //第一个命令     uchar command1;//     //uint  temp;     uchar j,i;    uchar myaddr = 8;    //uchar ywqz_count,time_count;             //ywqz jishu:     uchar bdata DATA;    sbit BIT0 = DATA^0;    sbit BIT1 = DATA^1;    sbit BIT2 = DATA^2;    sbit BIT3 = DATA^3;    sbit BIT4 = DATA^4;    sbit BIT5 = DATA^5;    sbit BIT6 = DATA^6;    sbit BIT7 = DATA^7;    uchar bdata DATA1;    sbit BIT10 = DATA1^0;    sbit BIT11 = DATA1^1;    sbit BIT12 = DATA1^2;    sbit BIT13 = DATA1^3;    sbit BIT14 = DATA1^4;    sbit BIT15 = DATA1^5;    sbit BIT16 = DATA1^6;    sbit BIT17 = DATA1^7;    bit i_CurrentLevel;//i_CurrentLevel  BIT 00H(Saves current level of OutPut pin of U2270B)     bit timer1_end;    bit read_ok = 0;    //缓存定时值,因用同一个定时器     union HLint { uint W;    struct   {    uchar H;uchar L;   }   B; };//union HLint idata a     union HLint data a;    //缓存定时值,因用同一个定时器     union HLint0 { uint W;    struct {   uchar H;   uchar L; } B; };//union HLint idata a     union HLint0 data b;    /**********************函数原型*****************/    //读写操作     void f_readcard(void);//全部读出1~7 AOR唤醒     void f_writecard(uchar x);//根据命令写不同的内容和操作     void f_clearpassword(void);//清除密码     void f_changepassword(void);//修改密码     //功能子函数     void write_password(uchar data *data p);//写初始密码或数据     void write_block(uchar x,uchar data *data p);//不能用通用指针     void write_bit(bit x);//写位     /*子函数区*****************************************************/    void delay_2(uint x)    //延时,时间x*10us@12mhz,最小20us@12mhz     {    x--; x--;    while(x)    {      _nop_();      _nop_();      x--;    }    _nop_();//WDT_CONTR=0X3C;不能频繁的复位     _nop_();    }    /////////////////////////////////////////////////////////////////////     void initial(void)    {    SCON = 0x50; //串口方式1,允许接收     //SCON  =0x50;     //01010000B:10位异步收发,波特率可变,SM2=0不用接收到有效停止位才RI=1,     //REN=1允许接收     TMOD = 0x21; //定时器1 定时方式2(8位),定时器0 定时方式1(16位)     TCON = 0x40; //设定时器1 允许开始计时(IT1=1)     TH1 = 0xfD;  //FB 18.432MHz 9600 波特率     TL1 = 0xfD;  //fd 11.0592 9600     IE = 0X90;     //EA=ES=1     TR1 = 1;     //启动定时器     WDT_CONTR = 0x3c;//使能看门狗     p_U2270B_Standby = 0;//单电源     PCON = 0x00;    IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0     led_light1 = 1;    led_light = 0;    p_U2270B_OutPut = 1;    }    /************************************************/    void f_readcard()//读卡     {    EA = 0;//全关,防止影响跳变的定时器计时     WDT_CONTR = 0X3C;//喂狗     p_U2270B_CFE = 1;//      delay_2(232);  //>2.5ms            /*   //   aor    用唤醒功能来防碰撞   p_U2270B_CFE = 0; delay_2(18);//start gap>150us   write_bit(1);//10=操作码读0页   write_bit(0);       write_password(&bankdata[24]);//密码block7   p_U2270B_CFE =1 ;//    delay_2(516);//编程及确认时间5.6ms   */    WDT_CONTR = 0X3C;//喂狗     led_light = 0;    b.W = 0;    while(!(read_ok == 1))    {             //while(p_U2270B_OutPut);//等一个稳定的低电平?超时判断?              while(!p_U2270B_OutPut);//等待上升沿的到来同步信号检测1       TR0 = 1;      //deng xia jiang       while(p_U2270B_OutPut);//等待下降沿       TR0 = 0;   a.B.H = TH0;   a.B.L = TL0;   TH0 = TL0 = 0;   TR0 = 1;//定时器晚启动10个周期       //同步头       if((324 < a.W) && (a.W < 353)) ;//检测同步信号1                  else     {     TR0 = 0;     TH0 = TL0 = 0;     goto read_error;    }      //等待上升沿        while(!p_U2270B_OutPut);   TR0 = 0;   a.B.H = TH0;   a.B.L = TL0;   TH0 = TL0 = 0;   TR0 = 1;//b.N1<<=8;            if(a.B.L < 195);//0.5p       else     {     TR0 = 0;     TH0 = TL0 = 0;     goto read_error;    }      //读0~7块的数据       for(j = 0;j < 28;j++)      {       //uchar i;                  for(i = 0;i < 16;i++)//8个位        {        //等待下降沿的到来         while(p_U2270B_OutPut);                TR0 = 0;     a.B.H = TH0;     a.B.L = TL0;     TH0 = TL0 = 0;     TR0 = 1;              if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P          {         b.W >>= 2;//先左移再赋值          b.B.L += 0xc0;                             i++;        }        else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p         {         b.W >>= 1;         b.B.L += 0x80;                           }        else      {      TR0 = 0;      TH0 = TL0 = 0;      goto read_error;     }        i++;        while(!p_U2270B_OutPut);//上升                   TR0 = 0;     a.B.H = TH0;     a.B.L = TL0;     TH0 = TL0 = 0;     TR0 = 1;                      if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P          {         b.W >>= 2;         i++;        }        else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P         //else if(!(a.W==0))         {         b.W >>= 1;         //temp+=0x00;          //led_light1=0;led_light=1;delay_2(40000);         }        else      {      TR0 = 0;      TH0 = TL0 = 0;      goto read_error;     }        i++;       }       //取出奇位        DATA = b.B.L;       BIT13 = BIT7;    BIT12 = BIT5;    BIT11 = BIT3;    BIT10 = BIT1;       DATA = b.B.H;       BIT17 = BIT7;    BIT16 = BIT5;    BIT15 = BIT3;    BIT14 = BIT1;       bankdata[j] = DATA1;      }              read_ok = 1;//读卡完成了     read_error:    _nop_();    }       }    /***************************************************/    void f_writecard(uchar x)//写卡     {    p_U2270B_CFE = 1;    delay_2(232);  //>2.5ms            //psw=0 standard write     if (x == write_command0)//写密码:初始化密码     {      uchar i;      uchar data *data p;      p = cominceptbuff;      p_U2270B_CFE = 0;   delay_2(31);//start gap>330us       write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_bit(0);//写锁定位0       for(i = 0;i < 35;i++)      {       write_bit(1);//写数据位1       }      p_U2270B_CFE = 1;      led_light1 = 0;   led_light = 1;   delay_2(40000);//测试使用       //write_block(cominceptbuff[4],p);       p_U2270B_CFE = 1;      bankdata[20] = cominceptbuff[0];//密码存入       bankdata[21] = cominceptbuff[1];      bankdata[22] = cominceptbuff[2];      bankdata[23] = cominceptbuff[3];    }    else if (x == write_command1)//配置卡参数:初始化     {      uchar data *data p;      p = cominceptbuff;      write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_bit(0);//写锁定位0               write_block(cominceptbuff[4],p);      p_U2270B_CFE=  1;    }    //psw=1  pssword mode     else if(x == write_command2)  //密码写数据    {      uchar data*data p;      p = &bankdata[24];      write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_password(p);//发口令       write_bit(0);//写锁定位0       p = cominceptbuff;      write_block(cominceptbuff[4],p);//写数据            }    else if(x == write_command3)//aor    //唤醒 {      //cominceptbuff[1]操作码10 X xxxxxB       uchar data *data p;      p = cominceptbuff;      write_bit(1);//10       write_bit(0);             write_password(p);//密码       p_U2270B_CFE = 1;//此时数据不停的循环传出     }    else //停止操作码     {      write_bit(1);//11       write_bit(1);             p_U2270B_CFE = 1;         }    p_U2270B_CFE = 1;    delay_2(560);//5.6ms     }    /************************************/    void f_clearpassword()//清除密码     {    uchar data *data p;    uchar i,x;          p = &bankdata[24];//原密码     p_U2270B_CFE = 0; delay_2(18);//start gap>150us     //操作码10:10xxxxxxB     write_bit(1);    write_bit(0);              for(x = 0;x < 4;x++)//发原密码     {             DATA = *(p++);      for(i = 0;i < 8;i++)      {       write_bit(BIT0);       DATA >>= 1;      }    }    write_bit(0);//锁定位0:0     p = &cominceptbuff[0];    write_block(0x00,p);//写新配置参数:pwd=0             //密码无效:即清除密码     DATA = 0x00;//停止操作码00000000B     for(i = 0;i < 2;i++)    {    write_bit(BIT7);    DATA <<= 1;    }    p_U2270B_CFE = 1;       delay_2(560);//5.6ms     }    /*********************************/    void f_changepassword()//修改密码            {       uchar data *data p;    uchar i,x,addr;    addr = 0x07;//block7     p = &Nkey_a[0];//原密码     DATA = 0x80;//操作码10:10xxxxxxB     for(i = 0;i < 2;i++)    {      write_bit(BIT7);      DATA <<= 1;    }    for(x = 0;x < 4;x++)//发原密码     {             DATA = *(p++);      for(i = 0;i < 8;i++)      {       write_bit(BIT7);       DATA >>= 1;      }    }    write_bit(0);//锁定位0:0     p = &cominceptbuff[0];    write_block(0x07,p);//写新密码     p_U2270B_CFE = 1;    bankdata[24] = cominceptbuff[0];//密码存入     bankdata[25] = cominceptbuff[1];    bankdata[26] = cominceptbuff[2];    bankdata[27] = cominceptbuff[3];    DATA = 0x00;//停止操作码00000000B     for(i = 0;i < 2;i++)    {      write_bit(BIT7);      DATA <<= 1;    }    p_U2270B_CFE = 1;       delay_2(560);//5.6ms     }    /***************************子函数***********************************/    void write_bit(bit x)//写一位     {    if(x)    {      p_U2270B_CFE = 1;   delay_2(32);//448*11.0592/120=42延时448us       p_U2270B_CFE = 0;   delay_2(28);//280*11.0592/120=26写1     }    else    {      p_U2270B_CFE = 1;   delay_2(92);//192*11.0592/120=18       p_U2270B_CFE = 0;   delay_2(28);//280*11.0592/120=26写0     }    }    /*******************写一个block*******************/    void write_block(uchar addr,uchar data *data p)    {    uchar i,j;        for(i = 0;i < 4;i++)//block0数据     {             DATA = *(p++);      for(j = 0;j < 8;j++)      {       write_bit(BIT0);       DATA >>= 1;      }    }    DATA = addr <<= 5;//0地址     for(i = 0;i < 3;i++)    {      write_bit(BIT7);      DATA <<= 1;    }                   }    /*************************************************/    void write_password(uchar data *data p)    {    uchar i,j;        for(i = 0;i < 4;i++)//     {             DATA = *(p++);      for(j = 0;j < 8;j++)      {       write_bit(BIT0);       DATA >>= 1;      }    }        }   /*************************************************/   void main()    {    initial();    TI = RI = 0;    ES = 1;    EA = 1;  delay_2(28);   //f_readcard();     while(1) {   f_readcard();      //读卡   f_writecard(command1);  //写卡    f_clearpassword();   //清除密码     f_changepassword();    //修改密码 } }

    标签: 12345

    上传时间: 2017-10-20

    上传用户:my_lcs

  • 一种基于单片机的变频电源设计

    电源正朝着高效率,高稳定度,高功率密度,低污染,模块化发展。为了满足输出电压和频率可变的逆变电源的基本指标,调制方式上各种新颖的调制技术不断涌现,控制上各种适合于不同要求的逆变器的控制方案被提了出来。本设计是基于SPWM逆变技术,将由单片机产生的SPWM波输出作为绝缘栅双极晶闸管的驱动信号,最后通过低通滤波,从而在输出端得到一个无失真的正弦信号波形。本文设计了一种交流电力频率转换器(AFC),提高交直流转换器与无功功率控制,其超前相位补偿原理是导致减少当前控制回路的给定线频率带宽的要求。由于这些特性,可使用相对减缓转换功率等设备,因此它可以用于高电平交流线频率。

    标签: 单片机 电源

    上传时间: 2022-03-28

    上传用户:shjgzh

  • 一款DSC控制的数字电源实现

    【摘要】数字化技术随着低成本、高性能控制芯片的出现而快速发展,同时也推动着开关电源向数字控制发展。文章利用一款新型数字信号控制器(DSC)ADP32,完成了基于DSC的数字电源应用研究,本文提供了DC/DC変換器的完整数字控制解决方案,數字PID朴偿技米,精确时序的同步整流技术,以及PWM控制信号的产生等,最后用一台200w样机验证了数字控制的系统性能。【关键词】数字信号控制器;同步整流;PID控制;数字拉制1引言随着半导体行业的快速发展,低成本、高性能的DSC控制器不断出现,基于DSC控制的数字电源越来越备受关注,目前“绿色能源”、“能源之心”等概念的提出,数字控制的模块电源具有高效率、高功率密度等诸多优点,逐渐成为电源技术的研究热点.数字电源(digital powerspply)是一种以数字信号处理器(DSP)或微控制器(MCU)为核心,将数字电源驱动器、PWM控制器等作为控制对象,能实现控制、管理、监测功能的电源产品。具有可以在一个标准化的硬件平台上,通过更新软件满足不同的需求".ADP32是一款集实时处理(DSP)与控制(MCU)外设功能与一体的数字信号控制器,不但可以简化电路设计,还能快速有效实现各种复杂的控制算法。2数字电源系统设计2.1数字电源硬件框图主功率回路是双管正激DCDC变换器,其控制方式为脉冲宽度调制(PWM),主要由功率管Q1/Q2、续流二极管D1/D2、高频变压器、输出同步整流器、LC滤波器组成。

    标签: 数字电源

    上传时间: 2022-06-18

    上传用户:jiabin

  • 动态匹配换能器的超声波电源控制策略.

    超声波电源广泛应用于超声波加工、诊断、清洗等领域,其负载超声波换能器是一种将超音频的电能转变为机械振动的器件。由于超声换能器是一种容性负载,因此换能器与发生器之间需要进行阻抗匹配才能工作在最佳状态。串联匹配能够有效滤除开关型电源输出方波存在的高次谐波成分,因此应用较为广泛。但是环境温度或元件老化等原因会导致换能器的谐振频率发生漂移,使谐振系统失谐。传统的解决办法就是频率跟踪,但是频率跟踪只能保证系统整体电压电流同频同相,由于工作频率改变了而匹配电感不变,此时换能器内部动态支路工作在非谐振状态,导致换能器功率损耗和发热,致使输出能量大幅度下降甚至停振,在实际应用中受到限制。所以,在跟踪谐振点调节逆变器开关频率的同时应改变匹配电感才能使谐振系统工作在最高效能状态。针对按固定谐振点匹配超声波换能器电感参数存在的缺点,本文应用耦合振荡法对换能器的匹配电感和耦合频率之间的关系建立数学模型,证实了匹配电感随谐振频率变化的规律。给出利用这一模型与耦合工作频率之间的关系动态选择换能器匹配电感的方法。经过分析比较,选择了基于磁通控制原理的可控电抗器作为匹配电感,通过改变电抗控制度调节电抗值。并给出了实现这一方案的电路原理和控制方法。最后本文以DSPTMS320F2812为核心设计出实现这一原理的超声波逆变电源。实验结果表明基于磁通控制的可控电抗器可以实现电抗值随电抗控制度线性无级可调,由于该电抗器输出正弦波,理论上没有谐波污染。具体采用复合控制策略,稳态时,换能器工作在DPLL锁定频率上;动态时,逐步修改匹配电抗大小,搜索输出电流的最大值,再结合DPLL锁定该频率。配合PS-PWM可实现功率连续可调。该超声波换能系统能够有效的跟随最大电流输出频率,即使频率发生漂移系统仍能保持工作在最佳状态,具有实际应用价值。

    标签: 动态匹配换能器 超声波电源

    上传时间: 2022-06-18

    上传用户:

  • 大功率正弦超声波电源

    鉴于超磁致伸缩材料作换能器的大功率超声波发生器需正弦激励方可达到最高效率,高频大功率超声正弦电源已构成超声波应用瓶颈。就国内而言,大功率正弦波电源局限于400Hz以下低频,高频逆变电源也仅为方波,无法满足超声波发生器的正弦激励需求。本课题针对电源逆变开关管工作频率高、开关损耗大、输出功率大等特点,从基本拓扑结构和工作原理入手,基于SPWM逆变技术,对硬件构成、控制方案、参数选择及软件实现等问题进行了分析和论证;运用了HPWM控制方式与ZVS谐振软开关技术;采用了MOSFET并联运行方式,解决了工作频率高与输出功率大的矛盾;采用80C196MC作主控芯片以软体生成SPWM波;以性能优异的LM5111芯片作驱动。实验表明,本课题提出的高频大功率正弦波电源性能优良、应用前景看好。

    标签: 大功率 正弦超声波 电源

    上传时间: 2022-07-26

    上传用户:

  • 开关电源的原理与设计-张占松箸-557页-18.5M.pdf

    本书系统论述DC-DC高频开关电源的工作原理与工程设计方法。主要包括:PWM变换器和软开关PWM变换器的电路拓扑、原理、控制、动态分析及稳定校正;功率开关元件MOSFET、IGBT的特性及应用;智能功率开关变换器的原理与应用;磁性元件的特性与设计计算方法;开关电源中有源功率因数校正;同步整流与并联均流等技术;PWM开关电源的可靠稳定性与制作问题;开关电源的数字仿真方法、计算机辅助优化设计和最优控制方法等。

    标签: 18.5 557 开关电源

    上传时间: 2013-04-24

    上传用户:13215175592

  • 基于FPGA的电压波动与闪变测量的数字化实现研究.rar

    随着我国工业和国民经济的快速发展,电网负荷急剧增加,特别是冲击性、非线性负荷所占比重不断加大,使得供电电压发生波动和闪变,严重影响着电网的电能质量。根据国际电工委员会(IEC)电磁兼容(EMC)标准IEC61000-3-7以及国标GB12326-2000,电压波动和闪变己成为衡量电能质量的重要指标。 电压波动和闪变作为衡量电能质量的重要指标,能更直接、迅速地反映出电网的供电质量。然而,目前国内还没有很好的电压波动与闪变测量的数字信号处理方法。为此,论文在深入研究电压波动和闪变测量技术的基础上,提出一种基于Simulink/DSP Builder的数字信号处理的FPGA设计方法,利用DSP Builder工具将Simulink的模型文件(.mdl)转化成通用的硬件描述语言VHDL文件,避免了VHDL语言手动编写系统的烦琐过程,从而能够将更多精力集中于系统算法的优化上。该方法充分利用Matlab/Simulink系统建模的优势,同时也能够发挥FPGA并行执行速度快、测量精度高的优点。 论文首先介绍了电压波动和闪变的基木概念、特征量,阐述了电压波动与闪变的测量原理,分析比较了现有测量方法和装置的特点和优劣。然后依据电压波动与闪变测量的IEC标准以及国家标准,在对电压波动与闪变测量模拟仿真的基础上研究其数字化实现方法,即采用数字滤波的方式在Simulink/DSP Builder工具下设计电压波动与闪变测量系统的数字模型。同时在ModelSim SE6.1d软件下进行了系统功能仿真,并且在Altera公司的FPGA设计软件QuartusⅡ6.0下进行了系统时序仿真。 仿真结果表明,基于Simulink/DSP Builder窗口化的数字信号处理的FPGA设计方案,设计简单、快捷高效,能够满足电压波动和闪变测量最初的系统设计要求,为进一步从事电压波动和闪变测量研究提供了一种全新的设计理念,具有一定的理论与现实意义。

    标签: FPGA 电压波动 测量

    上传时间: 2013-07-10

    上传用户:笨小孩

  • 基于ARM的超声波电机速度位置控制系统研究

    超声波电机(Ultrasonic motors,简称USM)是一种全新原理的直接驱动电机,它利用压电陶瓷逆压电效应激发的超声振动作为驱动力,通过定转子间的摩擦力来驱动转子运动。与传统的电磁电机相比,它具有低速大转矩、无电磁干扰、动作响应快、运行无噪声、无输入自锁等卓越特性,在非连续运动领域、精密控制领域比传统的电磁电机性能优越得多。超声波电机在工业控制系统、汽车专用电器、精密仪器仪表、办公自动化设备、智能机器人等领域有广阔的应用前景,近年来倍受科技界和工业界的重视,成为当前机电控制领域的一个研究热点。 本文主要以行波型超声波电机的驱动控制技术为研究对象,引入嵌入式系统理念,设计并制作了超声波电机的驱动控制系统,并对超声波电机的速度与定位控制做了深入的研究。本文主要研究内容及成果如下: 介绍了超声波电机的工作原理、特点及其应用前景,总结了国内外超声波电机驱动控制技术的发展历史和研究现状,以及今后我国超声波电机驱动控制技术的发展方向,明确了本文的研究内容。 结合嵌入式系统特点及其开发方法,详细介绍了超声波电机嵌入式驱动控制系统的硬件和软件设计过程,并总结了硬件、软件的调试过程。最后,对所设计系统性能进行了实验测试和数据分析。 采用DDS技术解决超声波电机所需要的高频驱动电源和数字控制的问题。本文设计的以ARM控制器为核心,频率、相位、幅值均可调的双通道信号发生器,具有频率和相位差控制精度高的特点。 本文介绍了速度与位置的常用控制策略。设计并搭建了基于增量式PID的速度和基于模糊PID的位置控制系统。速度控制采用增量式PID调节,其控制策略简单、易行,通过实验选择合适的参数能适应一般的控制精度要求。定位控制则采用模糊PID控制策略,该策略将模糊控制不需要精确的数学模型、收敛速度快的特点与PID简单易行、能消除稳态误差的优点相结合,改善了模糊控制器稳态性能,使电机定位控制精度达到0.0880。

    标签: ARM 超声波 电机 位置控制

    上传时间: 2013-07-16

    上传用户:wdq1111

  • 一种智能化高精度数控直流电源的设计与实现

    本论文研究一种以单片机为核心的智能化高精度直流电源。该电源采用数字调节、闭环实时监控、输出精度高,且兼备双重过载保护及报警功能,特别适用于各种有较高精度要求的场合。利用单片机对直流稳压电源进行

    标签: 智能化 数控直流电源 高精度

    上传时间: 2013-05-29

    上传用户:杜莹12345

  • 基于FPGA的高频数字DCDC变换器研究

    在传统的电力电子电路中,DC/DC变换器通常采用模拟电路实现电压或电流的控制。数字控制与模拟控制相比,有着显著的优点,数字控制可以实现复杂的控制策略,同时大大提高系统的可靠性和灵活性,并易于实现系统的智能化。但目前数字控制基本上限于电力传动领域,DC/DC变换器由于其开关频率较高,一般其外围功能由DSP或微处理器完成,而控制的核心,如PWM发生等大多采用专用控制芯片实现。FPGA由于其快速性、灵活性及保密性等优点,近年来在数字控制领域受到越来越多的关注。基于FPGA的DC/DC变换器是电力电子领域重要的研究方向之一。本文研究了同步Buck变换器的建模、设计及仿真,采用Xinlix的VIRTEX-Ⅱ PRO FPGA开发板实现了Buck变换器的全数字控制。 论文首先从Buck变换器的理论分析入手,根据它的物理特性,研究了该变换器的状态空间平均模型和小信号分析。为了获得高性能的开关电源,提出并分析了混杂模型设计方案,然后进行了控制器设计。并采用MATLAB/SIMULINK建立了同步Buck电路的仿真模型,并进行仿真研究。浮点仿真的运算精度与溢出问题,影响了仿真的精度。为了克服这些不足,作者采用了定点仿真方法,得到了满意的仿真结果。论文还着重论述了开关电源的数字控制器部分,数字控制器一般由三个主要功能模块组成:模数转换器、数字脉宽调制器(Digital PulseWidth Modulation:DPWM)和数字补偿器。文中重点研究了DPWM和数字补偿器,阐述了目前高频数字控制变换器中存在的主要问题,特别是高频状态下DPWM分辨率较低,影响控制精度,甚至引起极限环(Limit Cycling)现象,对DPWM分辨率的提高与系统硬件工作频率之间的矛盾、DPWM分辨率与A/D分辨率之间的关系等问题作了全面深入的分析。论文提出了一种新的提高DPWM分辨率的方法,该方法在不提高系统硬件频率的前提下,采用软件使DPWM的分辨率大大提高。作者还设计了两种数字补偿器,并进行了分析比较,选择了合适的补偿算法,达到了改善系统性能的目的。 设计完成后,作者使用ISE 9.1i软件进行了FPGA实现的前、后仿真,验证了所提出理论及控制算法的正确性。作者完成了Buck电路的硬件制作及基于FPGA的软件设计,采用32MHz的硬件晶振实现了11-bit的DPWM分辨率,开关频率达到1MHz,得到了满意的系统性能,论文最后给出了仿真和实验结果。

    标签: FPGA DCDC 高频 数字

    上传时间: 2013-07-23

    上传用户:kristycreasy