源:直流电机驱动PWM频率

1、没有统一的标准,其实PWM的频率和你的电机感抗和你需要的速度响应时间有很大的关系。一般的电机用14K就足够了。当然自需要简单的调速可以随便选。 如果电机转速比较高,感抗比较小,可以使用比较高的频率。一般最好不要超过20K  因为一般IGBT最高20K的开关频率。 而MOS 的开关频率比较高,, 但是过高的F 需要专用的驱动电路,不然MOS工作在放大区的时间比较长。 如果电机转速比较低,感抗比较大, 而且又是在做伺服, 那开关频率就需要低一点。 
2、对于电机应用,功率越大,PWM频率越低,最低有500Hz或者1KHz的,在兆瓦级的应用中。普通中小功率的,5K到20K常见,功率越低,电压等级越低,你所能使用的PWM频率越高。因为低压的MOSFET开关频率可以做到很高,而高压的IGBT却很难快速开关。普通的马达,10K到20K,都没问题。我们做KW级主变频器,开关频率10K。
/* =======直流电机的PWM速度控制程序======== */  

/* 纬东工作室  robots51.51.net    2006年6月 */  

/* 晶振采用11.0592M,产生的PWM的频率约为91Hz */  

#include<reg51.h>   

#include<math.h>   

#define uchar unsigned char  

#define uint unsigned int  

sbit en1=P1^;      /* L298的Enable A */  

sbit en2=P1^;      /* L298的Enable B */  

sbit s1=P1^;       /* L298的Input 1  */  

sbit s2=P1^;       /* L298的Input 2  */  

sbit s3=P1^;       /* L298的Input 3  */  

sbit s4=P1^;       /* L298的Input 4  */  

uchar t=;          /* 中断计数器     */  

uchar m1=;         /* 电机1速度值    */  

uchar m2=;         /* 电机2速度值    */  

uchar tmp1,tmp2;    /* 电机当前速度值 */  

/* 电机控制函数 index-电机号(1,2); speed-电机速度(-100—100) */  

<span style="color: rgb(255, 0, 0);">void motor(uchar index, char speed)</span>   

{   

if(speed>=- && speed=)   

 {   

   if(index==)       /* 电机1的处理    */  

     {   

      m1=abs(speed);  /* 取速度的绝对值 */  

      if(speed<)     /* 速度值为负则反转 */  

         {   

          s1=;   

          s2=;   

         }   

        else          /* 不为负数则正转 */  

         {   

          s1=;   

          s2=;   

         }   

     }   

   if(index==)       /* 电机2的处理    */  

     {   

      m2=abs(speed);  /* 电机2的速度控制 */  

      if(speed<)     /* 电机2的方向控制 */  

         {   

          s3=;   

          s4=;   

         }   

        else  

         {   

          s3=;   

          s4=;   

         }   

     }   

 }   

}   

void delay(uint j)      /* 简易延时函数 */  

{   

for(j;j>;j--);   

}   

void main()   

{   

uchar i;   

TMOD=0x02;         /* 设定T0的工作模式为2 */  

TH0=0x9B;      /* 装入定时器的初值    */  

TL0=0x9B;   

EA=;              /* 开中断              */  

ET0=;         /* 定时器0允许中断     */  

TR0=;         /* 启动定时器0         */  

while()               /* 电机实际控制演示    */  

{   

 for(i=;i=;i++)   /* 正转加速 */  

   {   

    motor(,i);   

    motor(,i);   

    delay();   

   }   

 for(i=;i>;i--)    /* 正转减速 */  

   {   

    motor(,i);   

    motor(,i);   

    delay();   

   }   

 for(i=;i=;i++)   /* 反转加速 */  

   {   

    motor(,-i);   

    motor(,-i);   

    delay();   

   }   

for(i=;i>;i--)    /* 反转减速 */  

   {   

    motor(,-i);   

    motor(,-i);   

    delay();   

   }   

}   

}   

void timer0() interrupt           /* T0中断服务程序 */  

{   

if(t==)           /*<span style="color: rgb(255, 0, 0);"> 1个PWM周期完成后(100次中断)才会接受新数值</span> */  

 {   

   tmp1=m1;   

   tmp2=m2;   

 }   

if(t<tmp1) en1=; else en1=;   /* <span style="color: rgb(255, 0, 0);">产生电机1的PWM信号,[0,tmp1=m1]均是高电平</span> */  

if(t<tmp2) en2=; else en2=;   /* 产生电机2的PWM信号 ,同理*/  

t++;   

if(t>=) t=;          /*<span style="color: rgb(255, 0, 0);"> 1个PWM信号由100次中断产生</span> */  

} 

直流电机驱动PWM频率(转)的更多相关文章

  1. stm32直流电机驱动与测速代码配套视频资料

    说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了这些大家都懂要不然也不会学习s ...

  2. stm32直流电机驱动与测速学习总结

    通过实验发现,定时器的一个通道控制一个pwm信号. 在正式开始之前也可以参考这个视频学习资料 (stm32直流电机驱动) http://www.makeru.com.cn/live/1392_1218 ...

  3. 不可错过的stm32单片机直流电机驱动与测速详解

    stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了 ...

  4. 轻松掌握stm32直流电机驱动与测速

    说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了这些大家都懂要不然也不会学习s ...

  5. stm32直流电机驱动与测速

    stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了 ...

  6. Stm32 定时器 定时时间设置及PWM频率 占空比的设置总结

    一.定时器的时钟: 当SYSCLK等于72M,APB1等于36M APB2等于72M时,定时器的时钟为72M.注意图中这句话:如果APB1/APB2预分频器=1则频率不变,否则频率x2.如果此时,AP ...

  7. STM32定时器输出PWM频率和步进电机控制速度计算

    1.STM32F4系列定时器输出PWM频率计算 第一步,了解定时器的时钟多少: 我们知道AHP总线是168Mhz的频率,而APB1和APB2都是挂在AHP总线上的. (1)高级定时器timer1, t ...

  8. 直流电机驱动,TIMER口配置

    电机的电压输出能力和频率有关??? 修改前:------------------------------------------------------------------------------ ...

  9. STM32中的PWM的频率和占空比的设置

    转于http://blog.csdn.net/liming0931/article/details/8491468 下面的这个是stm32的定时器逻辑图,上来有助于理解:   TIM3的ARR寄存器和 ...

随机推荐

  1. html 7.28

    1.HTML标记在没有添加任何样式的时候,默认是有间距的,所以我们要先把把所有标记归置内(padding)外(margin)边距归置为0 2.HTML5 中不支持 <acronym> 标签 ...

  2. C++:new 和 delete

    在 C++ 中 , 使用 new 操作符动态申请内存的时候,如果申请失败,则会抛出  bad_alloc异常 当使用  delete 释放一块内存的时候 , 有些编译器上delete 不能判断一块内存 ...

  3. nginx slab内存管理

    本来这一篇作为nginx系列的开头是不合适的,不过由于nginx进程框架自己的梳理还没完成,这部分又刚好整理完了,就从这开始吧.这儿谈的是nginx的slab的内存管理方式,这种方式的内存管理在ngi ...

  4. xtraReprot 动态绑定数据 数据列动态

    这样做并不是我想出来的,是之前做一个报表模板时搜的,原地址忘了 我要做的报表模板要求是传入一个DataTble,不管datatable的列数多少,计算列宽后显示报表 这是我的报表: 灰色那个XRtab ...

  5. magento模板中XML与phtml关系 [四]

    layout\catalogserch.xml 中声明的 as="topSearch" 被templ\page\html\header.phtml调用输出 echo $this-& ...

  6. 优化之sitemap+RSS

    RSS也叫聚合, RSS是在线共享内容的一种简易方式,也叫聚合内容,Really Simple Syndication. 通常在时效性比较强的网站或网络平台上应用RSS订阅功能可以更快速获取信息,网站 ...

  7. 【转】调用getActionBar()报Call requires API level 11 (current min is 8): android.app.Activity#getActionBar

    解决办法: 第一种方法:修改AndroidManifest.xml中的minSdkVersion=11   第二种方法: 1.导入android-support-v7-appcompat项目,并将其作 ...

  8. css link import

    link和@import的区别   页面中使用CSS的方式主要有3种:行内添加定义style属性值,页面头部内嵌调用和外面链接调用,其中外面引用有两种:link和@import.外部引用CSS两种方式 ...

  9. 12C 连接方式和 Oracle Easy Connect Naming method

    1.12C 连接方式 PDB is not an instance, so using SID in the connection string will not work. When the dat ...

  10. Hibernate的generator属性

    本文讲述Hibernate的generator属性的意义.Generator属性有7种class,本文简略描述了这7种class的意义和用法. <class name="onlyfun ...