pwm调速原理c语言,pwm调速C语言程序编写

pwm调速原理c语言,pwm调速C语言程序编写,第1张

  脉宽调制技术是通过对逆变电路开关的通断控制来实现对模拟电路的控制的。脉宽调制技术的输出波形是一系列大小相等的脉冲,用于替代所需要的波形,以正弦波为例,也就是使这一系列脉冲的等值电压为正弦波,并且输出脉冲尽量平滑且具有较少的低次谐波。

  根据不同的需求,可以对各脉冲的宽度进行相应的调整,以改变输出电压或输出频率等值,进而达到对模拟电路的控制。

  pwm调速C语言程序编写

  我们写C语言的目的是写PWM波形的一个周期。在这个周期内高低电平的比值是可以改变的。这也就符合了PWM的原意脉宽调制。即高电平的宽度的调制。当然了PWM他也可用于改变频率,我们这里只先说他改变脉宽。

  一旦我们的C语言程序写完那么他产生的PWM波形的频率就一定了。(也可写频率变化的PWM,难度有点大)一般我们控制使用1K到10K的PWM波进行控制。当然了你也可在要求不是很高的地方使用频率更低的PWM波。比如在飞思卡尔智能车比赛中我们学校使用的PWM波频率只有600HZ。

  我们要改变一个PWM波周期内的高电平的宽度显然需要将一个PWM波的周期分成单片机可以控制的N个小的周期,N的取值越大,你的调速等级越高,但产生的PWM频率就越低。我们下面以实现100级调速为例编写PWM程序。

  void pwm (uchar x,uint y) //X 为占空比 Y为函数使用时间

  { uint i,j,a,b;

  for(i=y;i》0;i--) //定时外函数

  {

  for(j=7;j》0;j--) //定时内函数

  {

  for(a=y;a》0;a--) //PWM波高电平宽度

  {

  PORTA=0X01;

  }

  for(b=100-y;b》0;b--) //PWM低电平宽度

  {

  PORTA=0X00;

  }

  }

  }

  }

  这个程序够简单吧 轻松的实现AVR单片机的PA.0口输出7KHZ左右的PWM脉冲,你可以将PORTA=0X01;改为P1.0=0X01;就可以移植到51单片机上了。为什么使用参数Y定时 是因为用普通I/O口控制它的开关没有使用定时器编写的灵活。

  如果这不符合你的需要,你可以不使用时间参数Y控制他的开关,只要去掉关于Y的部分,利用控制I/O口的方向来控制它的使用上面的程序参数在mega16单片机上使用8M晶振 一个PWM脉冲大约128μs循环7次是940ms 所以输出PWM脉冲频率是7KHZ左右。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2599235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-09
下一篇 2022-08-09

发表评论

登录后才能评论

评论列表(0条)

保存