导航:首页 > 操作系统 > 单片机pwm频率怎么计算

单片机pwm频率怎么计算

发布时间:2022-05-19 06:53:41

单片机怎么用记数器测量PWM波的频率

结合T1也就是单片机的P3.5口作为中断计数器输入口计数,然后利用内部定时器T0计时,比如计时1秒时,看T1计数器内部有多少个脉冲数通过了,那么就可以计算出这个频率了。

㈡ 单片机产生pwm脉冲波频率范围如何计算

不同的单片机是不同的,拿stc15系列单片机来说:pwm的频率=pca时钟输入频率/256
pca的时钟源有以下几种:sysclk,sysclk/2,sysclk/4,sysclk/6,sysclk/8,sysclk/12,定时器0的溢出,eci/p1.2输入,stc15系列单片机的工作频率0-35mhz,你可以计算出pwm的频率范围了吧?

㈢ 单片机发出的pwm脉冲信号的频率是怎么计算的

是系统时钟分频得到的,分频系数程序中设定并,只有几个值可选,个然后8位捕获定时器的计数值是256,因此pwm脉冲信号的频率=系统时钟/分频系数/256

㈣ STC单片机PWM脉冲输出可以变频计数吗

首先看CMOD这个寄存器,这里我们主要关注 CPS0,CPS1,CPS2,这三个位控制选择PCA的计数脉冲源。 对应PWM功能,则是选择频率。 首先可以选择 6个固定分频,可以看图片看出,分别是1,2,4,6,8,12的系统分频。我们需要做可变频率的PWM,所以我们需要选择模式2,选择定时器0的溢出作为系统分频基数。
然后,我么看怎么具体的去计算,去实现分频。 这里就需要上面这个图片的计算规则。 这里我举一个例子来说明,比如我们单片机的晶振使用的是12MHZ,而我们需要实现300HZ的频率。 如果得到呢?
首先,如果我们采用CMOD的固定分频,可以发现,无论是1,2,4,8,12,分频下来的频率都不是300HZ。 所以这里也体现我们使用定时器0做分频基数的好处了。
我们继续计算,12MHZ需要转化为300HZ,那么根据上图,首先我们需要确定PCA时钟输入频率,根据公式 300*256=76800HZ,这个值就是我们需要的PCA时钟输入频率。现在问题就是 ,我们怎么把12MHZ,转化为76.8KHZ, 12000KHZ/76.8KHZ=156.25 ,这个156.25就是分频基数,而这个分频基数由我们的定时器溢出参数来设定,意思就是当我们定时器如果计数156.25溢出就可以做到分频基数为156.25, 所以我们在设置定时器0的计数起始值就是65536-156=65380,对应TH0=0XFF,TL0=0X64。
好了,怎么计算PWM在定时器0下实现我们自己需要的任意频率的计算方式这里就介绍完了。 如果要动态实现频率可变,我们就可以通过通讯去动态调整定时器0的计数基数,(实际就是调整了分频基数),就可以实现频率的改变了。 另外,说明:这里的定时器0,不需要中断,并且该定时器也不是作为产生PWM用的,是作为一个分频基数用!

㈤ 51单片机pwm波的频率是怎么算的

主要通过一个定时器和一个IO口来实现PWM的输出。
在一个周期里面,首先让IO口输出高电平,并定时一定的时间
然后再将IO口输出低电平,定时一定的时间。
然后在while里面循环输出即可。
需要改变占空比的话就改变高电平的时间与低电平的时间比。

㈥ 单片机的PWM模块的PWM波的周期如何计算

编程时的计算方法:
载波周期乘以载波脉冲数,就是PWM波的周期。
测量方法:
采用低通滤波器滤除载波,剩下调制波,对调制波进行整形,整形为方波,测量方波频率即可得到调制波(PWM基波)的频率。

㈦ 用的是51单片机,晶振11.0592,请问怎么算出占空比,和pwm波频率,求具体公式,谢谢

你这是软件结合定时器产生PWM波,没有程序,算不出占空比和频率
程序原理大致是设一个变量a,每次定时器中断这个变量加1,并且和另一变量b比较,如果a<b,则输出高电平,反之则输出低电平
一个周期后(假设中断20次)a清0,再次输出高电平
那么占空比=(20-b)/20
改变b的值即可改变占空比
周期=20*定时器定时长
由于中断程序要占用一定时间,因此定时器中断间隔时间不能太短,造成PWM的频率不能太高,或者占空比的调节精度较低
所以有的单片机具有硬件PWM功能

㈧ 怎样用51单片机测量某一pwm信号 请教方法或程序 谢谢!

我觉得可以把PWM信号读入I/O口,定义两个变量,一个high表示高电平,一个low表示低电平,遇到第一个上升沿开始给high+1,遇到第一个下降沿给low+1,遇到第二个上升沿,则停止计数。统计high与low,就可以知道一个周期内,占空比。

㈨ 单片机PWM输出的频率怎么计算

你是怎么感觉出周期不是20ms的??

㈩ AVR单片机的PWM是怎么实现的

AVR单片机可以通过定时器/计数器实现,具体如下:
一、定时/计数器PWM设计要点
根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点:
1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率与控制的对象有关。如输出PWM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。
2.然后根据需要PWM的频率范围确定ATmega128定时/计数器的PWM工作方式。AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。
3.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率,而比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为:
PWM频率 = 系统时钟频率/(分频系数*(1+计数器上限值))
4.快速PWM模式适合要求输出PWM频率较高,但频率固定,占空比调节精度要求不高的应用。
5.频率(相位)调整PWM模式的占空比调节精度高,但输出频率比较低,因为此时计数器仅工作在双向计数方式。同样计数器的上限值决定了PWM的频率,比较匹配寄存器的值决定了占空比的大小。PWM频率的计算公式为:
PWM频率 = 系统时钟频率/(分频系数*2*计数器上限值))
6.相位调整PWM模式适合要求输出PWM频率较低,但频率固定,占空比调节精度要求高的应用。当调整占空比时,PWM的相位也相应的跟着变化(Phase Correct)。
7.频率和相位调整PWM模式适合要求输出PWM频率较低,输出频率需要变化,占空比调节精度要求高的应用。此时应注意:不仅调整占空比时,PWM的相位会相应的跟着变化;而一但改变计数器上限值,即改变PWM的输出频率时,会使PWM的占空比和相位都相应的跟着变化(Phase And Frequency Correct)。
8.在PWM方式中,计数器的上限值有固定的0xFF(8位T/C);0xFF、0x1FF、0x3FF(16位T/C)。或由用户设定的0x0000-0xFFFF,设定值在16位T/C的ICP或OCRA寄存器中。而比较匹配寄存器的值与计数器上限值之比即为占空比。

二、 PWM应用参考设计

下面给出一个设计示例,在示例中使用PWM方式来产生一个1KHz左右的正弦波,幅度为0-Vcc/2。

首先按照下面的公式建立一个正弦波样本表,样本表将一个正弦波周期分为128个点,每点按7位量化(127对应最高幅值Vcc/2):
F(X) = 64 + 63 * Sin(2πx/180) X∈[0…127]

如果在一个正弦波周期中采用128个样点,那么对应1KHz的正弦波PWM的频率为128KHz。实际上,按照采样频率至少为信号频率的2倍的取样定理来计算,PWM的频率的理论值为2KHz即可。考虑尽量提高PWM的输出精度,实际设计使用PWM的频率为16KHz,即一个正弦波周期(1KHz)中输出16个正弦波样本值。这意味着在128点的正弦波样本表中,每隔8点取出一点作为PWM的输出。

程序中使用ATmega128的8位T/C0,工作模式为相位调整PWM模式输出,系统时钟为8MHz,分频系数为1,其可以产生最高PWM频率为: 8000000Hz / 510 = 15686Hz。每16次输出构成一个周期正弦波,正弦波的频率为980.4Hz。PWM由OC0(PB4)引脚输出。参考程序如下(ICCAVR)。
//ICC-AVR Application Builder : 2004-08
// Target : M128
// Crystal: 8.0000Mhz
#Include
#Include
#Pragma Data:code
// 128点正弦波样本表
Const Unsigned Char Auc_SinParam[128] = {
64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,109,111,113,115,117,118,120,121,
123,124,125,126,126,127,127,127,127,127,127,127,126,126,125,124,123,121,120,118,
117,115,113,111,109,106,104,102,99,96,94,91,88,85,82,79,76,73,70,67,64,60,57,54,51,48,
45,42,39,36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,1,0,0,0,0,0,0,0,1,1,2,3,4,6,
7,9,10,12,14,16,18,21,23,25,28,31,33,36,39,42,45,48,51,54,57,60};
#Pragma Data:data
Unsigned Char X_SW = 8,X_LUT = 0;
#Pragma Interrupt_handler Timer0_ovf_isr:17
Void Timer0_ovf_isr(Void)
{
X_LUT += X_SW; // 新样点指针
If (X_LUT > 127) X_LUT -= 128; // 样点指针调整
OCR0 = Auc_SinParam[X_LUT]; // 取样点指针到比较匹配寄存器
}
Void Main(Void)
{
DDRB |= 0x10; // PB4(OC0)输出
TCCR0 = 0x71; // 相位调整PWM模式,分频系数=1,正向控制OC0
TIMSK = 0x01; // T/C0溢出中断允许
SEI(); // 使能全局中断
While(1)
{……};
}

每次计数器溢出中断的服务中取出一个正弦波的样点值到比较匹配寄存器中,用于调整下一个PWM的脉冲宽度,这样在PB4引脚上输出了按正弦波调制的PWM方波。当PB4的输出通过一个低通滤波器后,便得到一个980.4Hz的正弦波了。如要得到更精确的1KHz的正弦波,可使用定时/计数器T/C1,选择工作模式10,设置ICR1=250为计数器的上限值。

阅读全文

与单片机pwm频率怎么计算相关的资料

热点内容
小天才app怎么升级v242 浏览:544
简单手工解压玩具制作大全 浏览:927
免费编程电子书 浏览:869
想玩游戏什么app最合适 浏览:560
安卓手机如何用airportspro 浏览:449
怎么清理idea编译缓存 浏览:951
镜头app怎么推广 浏览:437
什么app随便看电视剧 浏览:307
2021程序员薪酬 浏览:708
糖豆广场怎么下载app 浏览:213
qtvs2019选哪个编译器 浏览:124
压缩空气管能焊吗 浏览:284
linux中yum命令 浏览:397
在职算法工程师 浏览:706
电码加密函数方法有几种 浏览:803
后缀是pdf 浏览:720
pr导出压缩 浏览:32
命令语气 浏览:245
脊柱解剖pdf 浏览:714
plc入门编程题目及答案 浏览:383