急需基于51单片机串口调节pwm实现调节电机转速的程序 求解

急需基于51单片机串口调节pwm实现调节电机转速的程序 求解,第1张

这个不难的。前几天我刚做了个比你这个复杂前扰并的多的PWM电机调速的程序和protues仿真。串慧迹口按照书本或别人的范例配置好就行,单字节接收,收李模到就把值赋给PWM的占空比。PWM部分需要对一个时间基准进行计数,然后和PWM的设定值进行比较 来改变输出高低电平

PWM是英文“Pulse Width Modulation”的缩写,意思是脉冲宽度调制,它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的游散圆技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,而利用PWM控制电机转速则是其中一种非常简单应用神塌。Arduino168/328有6个PWM输出引脚分别为D3、D5、D6、D9、D10、D11,只要在程序void loop()中用“analogWrite(pwm,val)”语句就可以让“pwm”对应的PWM引脚输出val(val从0到255)值。当val为函数变量时,我们可以用读取电位计模拟值作为val,让电机转速随掘顷电位计取值大小而变化,这就是PWM控制电机转速。

1、有三个输入,分别是一个按钮、两个霍尔传感器(也就是接近开关),我用P0.0到P0.2来代替;输出2个或以上(这看接什么显示器,如果是PC的话,就不用数字量输出,直接串口就可以了)控制正反转的继电器管脚用P1.0、P1.1;需要与一个全局变量转动次数k连接起来,另外两个输入接近开关选用NPN传感器或用光电隔离,总之有效信号能把管脚电压拉低就可以。

2、例程:

#include <reg51.h>  //选用晶振11.0592MHz

unsigned char k=0  //k表示正反转次数

sbit X0=P3^2     //调节按钮

sbit X1=P1^1     //上限位接近开关信号

sbit X2=P1^2     //下限位接近开关信号

sbit Y1=P0^0  岁局樱   //电机上升(注意:我使用的是管脚输出为0时候,电机运动,这样可以避免启动时候,单片机自复位对电腊旁机点动的影响)

sbit Y2=P0^1    乎丛 //电机下降

void delay50ms(unsigned int i)

  unsigned int j

  for (ii>0i--)

    for(j=46078j>0j--)

}

main()

{

   IT0=1       //下降沿触发

   EX0=1       //开P3.2外部中断

   EA=1        //总中断开  

   while(1)

   while(k)

   {

      Y1=0        //正转

      while(X1==1)       //等待正转接近开关反应

      Y1=1          //正转停

      delay50ms(1)     //停止时间50ms

      Y2=0     //反转

      while(X2==1)     //等待反转接近开关反应

      Y2=1    //反转停

      k--     //圈数减一   

   }

}

void  counter0(void) interrupt 0

{

   k++     //外部中断控制圈数加一

   //这个位置可以加你显示程序

}


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

原文地址: https://www.outofmemory.cn/yw/12348145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存