想向大神求一个用pwm控制电机转速的程序,程序最好简单点,O(∩_∩)O谢谢

想向大神求一个用pwm控制电机转速的程序,程序最好简单点,O(∩_∩)O谢谢,第1张

#include <reg52.h >

#define uchar unsigned char

#define uint unsigned int

sbit s2=P3^7

sbit s3=P3^6

sbit fm=P2^3

uchar pwm,num

void delay(uint ms)

{

uchar i

while(ms--)

{

for(i=0i<120i++)

}

}

void keyscan()

{

if(s2==0)

{

delay(80)

if(s2==0)

{

if(pwm<32)

{

pwm++

delay(150)

}

else //如果禅纳冲大于32 蜂鸣器想茄桐

{

bee( )

}

}

}

if(s3==0)

{

delay(80)

if(s3==0)

{

if(pwm>1)

{

pwm--

delay(50)

}

else //如贺歼果小于1 蜂鸣器想

{

bee( )

}

}

}

}

void init_t0( )

{

TMOD=0x01

TH0=(65536-500)/256 //500ms

TL0=(65536-500)%256

EA=1

ET0=1

TR0=1

}

void t0( ) interrupt 1

{

TR0=0//关计时器

TH0=(65536-500)/256

TL0=(65536-500)%256

num++

if(num>32)

{

num=0

}

if(num<=pwm )

{

P1=0xff

}

else

{

P1=0x00

}

TR0=1

}

void main( )

{

init_t0( )

num=0

pwm=0

while(1)

{

keyscan()

}

}

最好具体说到某种类型的PLC这样更好说。

PWM可以输出连续的、占空比可调的脉冲串,你可以控制脉冲的周期和脉宽,从而用于驱动如SSR这样的功率开关设备用于温控等。

就SIEMENS 200及300PLC而言,你不需要去考虑PID模拟橡缺输出值如何转换为PWM脉冲。因为200提供的PID指令向导在你选用数字量输出的时候,因为200CPU内有两个可编程的PWM发生器,指令向导会自弊如皮己生成0~1对应占空比0~100%的PWM程序段。对于300 系统PID模块中的FB42(非连续输租差出的PID控制),配合FB43(脉冲发生器)输出的就是PWM,如果是温控,就直接使用FB59(数字量输出的温控PID。)


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

原文地址:https://54852.com/yw/12333348.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存