❶ 如何用单片机捕捉PWM占空比
#define TEST_IN PA0 //要测试的信号
#define F_TEST_IN PA1 //要测试信号的反向,加一个反向门得到的
main()
{
unsigned long low_cnt,high_cnt;
while(1)
{
while(TEST_IN); //确保TEST_IN = 0;
low_cnt = 0;
high_cnt = 0;
while(!TEST_IN); //确保TEST_IN = 1;
while(TEST_IN) high_cnt++; //计算高电平数量
while(F_TEST_IN) low_cnt++; //计算低电平数量
//以下添加其他的处理代码。
}
}
这个应该能够保证到精度。十分浪费CPU时间就是。但是如果只有这一个任务还是OK的。
你说的用外部中断的方法也可以。
思路1 采用timer来进行计数。遇到相应的边沿后中断,停计数器。然后进行相应的处理。
思路2 直接用循环来检测,当然如果这个地方用循环检查的话,不如就不用中断了,直接用软件来实现上升沿下降沿的识别。也就是我写的程序一样了。
提示,思路1的话明显的会觉得有点问题。因为是硬件计数。至于精度问题,你看下程序就可以感觉出来。还有精度主要取决于检测的始终。与中断什么的没有任何关系。只是用中断给人感觉比较实时。
你的第二个想法有点看不懂。如果说你是想用AD转换来进行占空比的分析的话,那太笨了。根本就是自找麻烦。
❷ 单片机pwm信号
你测试到的信号和单片机接受到的信号不一致,那个10000如果不是用精度很高的示波器进行沿检测的话,比较难捕捉到。单片机管腿的反应速度快,所以他可以很容易检测出来。
❸ 利用单片机测PWM
“形成一个反馈控制系统”
AT128单片机产生的PWM信号本来就很精确的,还需要反馈吗?
如果你要做反馈的话,
1.你可以用AD采集PWM的电压。(频率不变的话)
2.还有就是用中断方式,一个上升沿触发,一个下降沿触发,这个比较准确的!
❹ 怎样用51单片机测量某一pwm信号 请教方法或程序 谢谢!
我觉得可以把PWM信号读入I/O口,定义两个变量,一个high表示高电平,一个low表示低电平,遇到第一个上升沿开始给high+1,遇到第一个下降沿给low+1,遇到第二个上升沿,则停止计数。统计high与low,就可以知道一个周期内,占空比。
❺ 单片机如何产生PWM信号
用普通I/O口采用软件定时器中断可以模拟PWM输出
/*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号*/
/*定时100ms,周期2.5s需25次中断,高电平0.5s需5次中断*/
#include <reg51.h>
typedef unsigned char uchar;
sbit P1_0=P1^0;
uchar time=0;
uchar period=25;
uchar high=5;
void timer0() interrupt 1 using 1
{
TH0=0x3c; /*定时器初值重装载*/
TL0=0xb0;
time++;
if(time==high) /*高电平持续时间结束,变低*/
{ P1_0=0;}
else if(time==period) /*周期时间到,变高*/
{ time=0;
P1_0=1;
}
}
void main()
{
TMOD=0x01; /*定时器0方式1*/
TH0=0x3c; /*定时器装载初值*/
TL0=0xb0;
EA=1; /*开CPU中断*/
ET0=1; /*开定时器0中断*/
TR0=1;/*启动定时器0*/
while(1) /*等待中断*/
{}
}
❻ 如何采集PWM的电压值如题 谢谢了
不嫌麻烦也可以转成直流电压信号,接AD采集
❼ 想用单片机实现10路PWM信号的测量,怎么实现
这么慢的速度,完全可以轮询读IO口,然后寻找上升和下降的边缘,记录时间点(用一个周期30毫秒左右的定时器)。上升沿之间的时间是PWM周期,上升沿到下降沿的时间是占空比。定时器周期很重要,要在PWM的两个周期之内,一个周期之外,当出现后一个边缘时间小于前一个的数值的情况时,只需给后一个值加一个定时器周期的值,就能够保证读取正确读数。
❽ 利用单片机测PWM
“形成一个
反馈控制系统
”
AT128单片机产生的
PWM信号
本来就很精确的,还需要反馈吗?
如果你要做反馈的话,
1.你可以用AD采集PWM的电压。(频率不变的话)
2.还有就是用中断方式,一个上升沿触发,一个下降沿触发,这个比较准确的!
❾ 单片机PWM捕捉模式是什么意思
PWM,是脉冲宽度调制的意思,主要参数有三个,整个脉冲的宽度,高电平的宽度,占空比。这里假设高电平有效。
占空比 = 高电平的宽度 / 整个脉冲的宽度。PWM捕捉,就是同时捕捉PWM的整个脉冲的宽度以及高电平的宽度,进而可以计算得出占空比。
典型的做法,在脉冲上升沿和下降沿都执行捕捉。上升沿复位并启动定时器,下降沿捕捉定时器内容作为高电平宽度,下一个上升沿捕捉定时器内容作为整个脉冲的宽度,同时复位并重启定时器以进行下一轮捕捉。
❿ 各位大侠,怎么通过单片机产生PWM信号,通过PWM波占空比来驱动电流控制器,从而控制电流的大小!!
你这不是单片机是dsp,2407本身就有pwm输出。位置传感器不知道你用的啥,如果是码盘,就用ssi通讯就行,用spi口接就可以。还有ti的芯片一定要用4层板,2407也已经停产了。