PWM频率计算公式

合集下载

PWM稳压计算

PWM稳压计算

PWM是一种周期固定,而高低电平占空比可调的方波信号。

PWM通过简单的RC滤波网络可以得到与信号占空比成线性关系的直接电压,从而实现D/A转换。

如下图所示:滤波电路中的R,C参数与PWM的周期以及直流电压的精度要求直接相关,必须从理论上详细分析。

假设P WM波的频率为f,高电平电压为V,占空比为a。

如果RC网络的时间常数远大于PWM波的周期T,Vin和Vou t波形如下图所示:处于瞬态时,Vin在高电平持续时间内向电容充电,电容积累电荷,在低电平持续电间内电容向Vin放电,电容释放电荷。

电容积累的电荷数多于释放的电荷数。

因此电容电容两端的直波电压不断爬升,最终达到稳态。

处于稳态时,电容积累的电荷与释放的电荷数量相等,因此电压会在一个稳定的电压值附近做小幅度的波动,忽略这样的纹波,则电容两端的电压与PWM占空比呈线性关系。

如下图:当t<Th时,电容充电,电容两端电压表示为:由于T=(Th+Tl)<<R1C1,所以t/(R1C1)<<1,利用级数展开,得到:当t=Th时,当t>Th且t<Th+Tl时,当t=Th+Tl时,在这样的稳态下,电容在一个周期内的充放电会相等,所以有V1=V3,即忽略二阶小量,得到:由于PWM的占空比定义为:所以:由于V1=V3≈V2,所以当电路处理稳态时,电容两端的电压近似为直流电压,表示为:可见,电容两端的电压与PWM高低电平之差以及占空比成比例关系。

直流电压精度定义为:总之,设计PWM波RC滤波电路时,应根据响应时间要求,确定时间常数,并且使RC时间常数远大于PWM 周期。

RC充放电时间常数应尽量相等。

此外还应根据电压精度要求确定RC参数。

電容充電公式:設,V0 為電容上的初始電壓值;V1 為電容最終可充到或放到的電壓值;Vt 為t時刻電容上的電壓值。

則,Vt="V0"+(V1-V0)* [1-exp(-t/RC)]或,t = RC*Ln[(V1-V0)/(V1-Vt)]例如,電壓為E的電池通過R向初值為0的電容C充電V0=0,V1=E,故充到t時刻電容上的電壓為:Vt="E"*[1-exp(-t/RC)]再如,初始電壓為E的電容C通過R放電V0=E,V1=0,故放到t時刻電容上的電壓為:Vt="E"*exp(-t/RC)又如,初值為1/3Vcc的電容C通過R充電,充電終值為Vcc,問充到2/3Vcc 需要的時間是多少?V0=Vcc/3,V1=Vcc,Vt=2*Vcc/3,故t="RC"*Ln[(1-1/3)/(1-2/3)]=RC*Ln2=0.693RC注:以上exp()表示以e為底的指數函數;Ln()是e為底的對數函數濾波電容計算:問:求教輸入濾波電容計算公式比如一個反激電源,輸出12V 1A 輸入AC 90~264V那如題所說.該如何計算啊.有個公式好象是C*(V1-V2)(v1-v2)=P*TV1 V2 如何取值,其物理意思是什麼?答:輸出功率=1a×12v=12w輸入功率=12/0.75=16w(假定效率為0.75)電流=16w/(1.414*90v)=0.125ac=i*t/u=0.125a*0.010s/30v=0.000042f=42uf問:整流之後的脈動直流電要經電容濾波才能變成平滑,那麼這個電容的最佳容量是多少?它的大小跟輸出的直流電壓或電流有什麼關係?答:這個是電路中整流濾波的經典分析濾波電容與負載電阻的乘積RC大小決定濾的平滑程度(也就是紋波大小)一般負載大小一定(R一定),C越大,平均值越大,紋波越小極限C=0,RC=0, 輸出正弦半波,平均值約為0.9*Vrms空載RC=無窮輸出為1.414*Vrms所以基本上加了電容輸出平均值介於上述兩種情況之間;至於這個電容大小的取值多少合適有幾種思路,1 一般使得輸出直流電壓為1.2Vrms,此時對應多大就多大2 經驗公式一般根據功率來粗略估算一般1W取1~2u3 精確計算,根據你輸出電壓的紋波大小要求利用C*U=Q公式計算;當然這個經常用於計算高頻D2D模組,工頻整流不常用問:濾波電容,限流電阻,放電電阻他們的值究竟如何計算?答:濾波電容計算方法:半波整流方式計算應該是每uF電容量提供約30mA電流,這是在中國的50Hz220V線路上的參考。

STM32F103系列单片机中的定时器工作原理解析

STM32F103系列单片机中的定时器工作原理解析

STM32F103系列单片机中的定时器工作原理解析
STM32F103系列的单片机一共有11个定时器,其中:
2个高级定时器
4个普通定时器
2个基本定时器
2个看门狗定时器
1个系统嘀嗒定时器
出去看门狗定时器和系统滴答定时器的八个定时器列表;
8个定时器分成3个组;
TIM1和TIM8是高级定时器
TIM2-TIM5是通用定时器
TIM6和TIM7是基本的定时器
这8个定时器都是16位的,它们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/向下这3种计数模式
计数器三种计数模式
向上计数模式:从0开始,计到arr预设值,产生溢出事件,返回重新计时
向下计数模式:从arr预设值开始,计到0,产生溢出事件,返回重新计时
中央对齐模式:从0开始向上计数,计到arr产生溢出事件,然后向下计数,计数到1以后,又产生溢出,然后再从0开始向上计数。

(此种技术方法也可叫向上/向下计数)
基本定时器(TIM6,TIM7)的主要功能:
只有最基本的定时功能,。

基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动
通用定时器(TIM2~TIM5)的主要功能:
除了基本的定时器的功能外,还具有测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)。

PWM输入捕获频率

PWM输入捕获频率

PWM输入捕获频率学习笔记陈宏敏2013-5-251、PWM:脉冲宽度调制,英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

简单一点,就是对脉冲宽度的控制。

2、STM32的定时器除了TIM6和TIM7。

其他的定时器都可以用来产生PWM输出。

其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。

而通用定时器也能同时产生多达4路的PWM输出,这样STM32最多可以同时产生30路PWM输出!等下我用TIM2的CH2产生一路PWM输出和PWM输入。

3、要使STM32的通用定时器TIMx产生PWM输出,我们会用到3个寄存器,来控制PWM。

这三个寄存器分别是:捕获/比较模式寄存器(TIMx_CCMR1/2)、捕获/比较使能寄存器(TIMx_CCER)、捕获/比较寄存器(TIMx_CCR1~4)。

(注意,还有个TIMx的ARR寄存器是用来控制pwm的输出频率)。

首先是捕获/比较模式寄存器(TIMx_CCMR1/2),该寄存器总共有2个,TIMx _CCMR1和TIMx _CCMR2。

TIMx_CCMR1控制CH1和2,而TIMx_CCMR2控制CH3和CH4。

其次是捕获/比较使能寄存器(TIMx_CCER),该寄存器控制着各个输入输出通道的开关。

最后是捕获/比较寄存器(TIMx_CCR1~4),该寄存器总共有4个,对应4个输通道CH1~4。

4个寄存器都差不多,说的简单一点,这个寄存器就是用来设置pwm的占空比。

4、具体看STM芯片手册。

TIMx_ARR寄存器的值怎么样来确定PWM的频率?TIM_Period(即是TIMx_ARR寄存器的值)的大小实际上表示的是需要经过TIM_Period次计数后才会发生一次更新或中断。

接下来需要设置时钟预分频数TIM_Prescaler,这里有个公式,我们举例来说明:例如系统频率是72MHz,TIM_Prescaler=71,那么PWM的时钟频率是72MHz/(71+1)=1MHz。

PWM信号转换为模拟量信号

PWM信号转换为模拟量信号

PWM信号转换为模拟量信号
有一个测量位置变化的位置传感器,我用万用表电压档测量传感器的输出信号,结果显示的是模拟量信号,即位置和信号输出大小呈线性关系。

但是,我用示波器(Picoscope 4227)测量传感器的输出信号,显示的却是PWM信号(脉宽调制),即位置不同,输出PWM信号的占空比不同。

PWM信号的参数是:200 Hz, 低电平为0V,高电平为18V。

现在可以确定,我的传感器输出信号是PWM信号。

PWM信号需要输入到控制器I/O中,但是控制器I/O口不具备直接采集PWM信号的功能。

二、解决方案:
设计个电路,将PWM信号转化为模拟量信号,然后将转换后的模拟量信号输入到控制器模拟量I/O口。

三、转换电路
1. 二阶压控有源低通滤波电路。

设计一个深度滤波电路。

滤波电路图为:
低通滤波频率公式为:f=1/(2π*RC),我最后选择R=1K,C=10uf,算出的低通截止频率f=15.9HZ。

滤波电路后端是一个运算放大器,放大倍数公式:A=1+Rf/R1。

我不希望电压被放大,所以我选择A=1.1。

又因为R1//Rf=2R(R1,Rf两者并联的值等于R串联值),最终:Rf=220欧,R1=2.2k,R=1k。

2. 积分电路(无源滤波电路)
低通滤波电路前面是一个二级积分电路(将两个电容都接地),R=1K,C=10uf。

下图是一级积分电路,设计的积分电路是将两个下图电路串联构成二级积分积分:
为验证电路效果进行的测试,我使用的设备是PicoScope4227,由于该设备最大只能生成正。

PWM电机调速原理及51单片机PWM程序经典

PWM电机调速原理及51单片机PWM程序经典

PWM电机调速原理及51单片机PWM程序经典pwm电机调速原理对于电机的转速调整,我们是采用脉宽调制(pwm)办法,控制电机的时候,电源并非连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。

不同占空比的方波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有阻碍输入电流和电压突变的能力,因此脉冲输入信号被平均分配到作用时间上,这样,改变在始能端pe2和pd5上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速。

此电路中用微处理机去同时实现脉宽调制,通常的方法存有两种:(1)用软件方式来实现,即通过执行软件延时循环程序交替改变端口某个二进制位输出逻辑状态去产生脉宽调制信号,设置相同的延时时间获得相同的充电电流。

(2)硬件实验自动产生pwm信号,不挤占cpu处置的时间。

这就要用到atmega8515l的在pwm模式下的计数器1,具体内容可参考相关书籍。

51单片机pwm程序产生两个pwm,要求两个pwm波形占空都为80/256,两个波形之间要错开,不能同时为高电平!高电平之间相差48/256,pwm这个功能在pic单片机上就存有,但是如果你就要用51单片机的话,也就是可以的,但是比较的麻烦.可以用定时器t0去掌控频率,定时器t1去掌控充电电流:大致的的编程思路就是这样的:t0定时器中断就是使一个i0口输入高电平,在这个定时器t0的中断当中再生制动定时器t1,而这个t1就是使io口输入低电平,这样发生改变定时器t0的初值就可以发生改变频率,发生改变定时器t1的初值就可以发生改变充电电流。

*程序思路说明:****关于频率和占空比的确定,对于12m晶振,假定pwm输出频率为1khz,这样定时中断次数**预设为c=10,即0.01ms中断一次,则th0=ff,tl0=f6;由于预设中断时间为0.01ms,这样**可以设定占空比可从1-100变化。

即0.01ms*100=1ms******************************************************************************* /#include#defineucharunsignedchar/******************************************************************************th0和tl0是计数器0的高8位和低8位计数器,计算办法:tl0=(65536-c)%6;**th0=(65536-c)/256,其中c为所要计数的次数即为多长时间产生一次中断;tmod就是计数器**工作模式挑选,0x01则表示采用模式1,它存有16十一位计数器,最小计数脉冲为65536,最久时**间为1ms*65536=65.536ms******************************************************************************* /#definev_th00xff#definev_tl00xf6#definev_tmod0x01voidinit_sys(void);/*系统初始化函数*/voiddelay5ms(void);unsignedcharzkb1,zkb2;voidmain(void){init_sys();zkb1=40;/*占空比初始值设定*/zkb2=70;/*占空比初始值设定*/while(1){if(!p1_1)//如果按了+键,减少充电电流{delay5ms();if(!p1_1){zkb1++;zkb2=100-zkb1;}}if(!p1_2)//如果按了-键,增加充电电流{delay5ms();if(!p1_2){zkb1--;zkb2=100-zkb1;/*对占空比值限定范围*/if(zkb1>99)zkb1=1;if(zkb1<1)zkb1=99;}}/*******************************************************函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/voidinit_sys(void)/*系统初始化函数*/{/*定时器初始化*/tmod=\th0=v_th0;tl0=v_tl0;tr0=1;et0=1;ea=\}//延时voiddelay5ms(void){unsignedinttempcyc=1000;while(tempcyc--);}/*中断函数*/voidtimer0(void)interrupt1using2{staticucharclick=\/*中断次数计数器变量*/th0=v_th0;/*恢复定时器初始值*/tl0=v_tl0;++click;if(click>=100)click=\if(click<=zkb1)/*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/p1_3=0;elsep1_3=1;if(click<=zkb2)p1_4=0;elsep1_4=1;}<1.下面就是avr的程序,51产生pwm波麻烦,可以用avr。

SG6841

SG6841

SG68411. 概述绿色工作模式PWM控制器SG6840/SG6841具有许多特殊的功能和完善的保护特性。

在备用状态下,PWM 工作频率自动降低,功耗减小,但输出电压仍保持稳定不变,该器件采用Bi-CMOS工艺制造,起动电流和正常工作电流大大减小,因此电源转换效率较高。

起动电流典型值只有30μA,工作电流也只有3mA。

在正常工作状态下,SG6840/SG6841为固定频率PWM控制器。

工作过程中,开关电源的负载减轻时,PWM工作频率将随之降低,这种绿色工作模式可显著减小空载和轻载时开关电源的功率损失,有助于满足恒定输出功率的要求。

该器件中还采用了同步斜率补偿技术,它可以确保连续模式工作时电流回路的稳定性。

该器件内含电源电压补偿电路,因此输入电压在很宽范围内变化时,开关电源可维持恒定输出功率,该器件还具有过热保护功能。

为了检测环境温度,应用时应外接负温度系数热敏电阻NTC。

SG6840内部还具有限功率控制器,因此具有超功率保护功能,从而可实现限制电源功率的安全要求,这两种器件都采用8脚DIP和SO封装。

该PWM控制器可用于通用开关电源、反激式电源变换器、交流电源适配器、电池充电适配器和机内开关电源等方面。

2. 引脚排列及引脚功能SG6840和SG6841引脚排列如图1所示。

各引脚的功能如下:图1引脚排列1脚GND:接地脚。

2脚FB:反馈脚。

FB脚提供稳压器反馈信号,PWM占空比由FB脚反馈信号控制。

3脚VIN:起动电流输入脚。

在电源输入和该脚之间应接入一只起动电阻。

在离线式开关变换器中,起动电阻的阻值应为1.5MΩ。

调整起动电阻的阻值,可以改变恒定输出功率限制的电源电压补偿。

4脚Ri:基准设定。

该脚典型基准电压为1.3V。

该脚到接地脚之间接入一只电阻,可产生恒定电流(SG6841)增加该电阻的阻值,恒定电流值减小,开关频率降低。

外接电阻Ri 典型值为26KΩ。

5脚RT:过热保护。

该脚输出恒定电流。

PWM输入捕获-测频率

PWM输入捕获-测频率

stm32的PWM输入捕获模式一、概念理解PWM输入捕获模式是输入捕获模式的特例,自己理解如下1. 每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。

且IC1 IC2一组,IC3 IC4一组。

并且可是设置管脚和寄存器的对应关系。

2. 同一个TIx输入映射了两个ICx信号。

3. 这两个ICx信号分别在相反的极性边沿有效。

4. 两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。

5. 当触发信号来临时,被设置成触发输入信号的捕获寄存器,捕获“一个PWM周期(即连续的两个上升沿或下降沿)”,它等于包含TIM时钟周期的个数(即捕获寄存器中捕获的为TIM的计数个数n)。

6. 同样另一个捕获通道捕获触发信号和下一个相反极性的边沿信号的计数个数m,即(即高电平的周期或低电平的周期)7. 由此可以计算出PWM的时钟周期和占空比了frequency=f(TIM时钟频率)/n。

duty cycle=(高电平计数个数/n),若m为高电平计数个数,则duty cycle=m/n若m为低电平计数个数,则duty cycle=(n-m)/n注:因为计数器为16位,所以一个周期最多计数65535个,所以测得的最小频率= TIM时钟频率/65535。

二、程序设计与分析1. 程序概述:选择TIM3作为PWM输入捕获。

IC2设置为上升沿,并设置为有效的触发输入信号。

所以IC2的捕获寄存器捕获PWM周期,IC1的捕获寄存器捕获PWM的高电平周期。

2.程序代码如下:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//时钟配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//GPIO配置PIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;//NVIC配置NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;//通道选择TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;//上升沿触发TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//管脚与寄存器对应关系TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//输入预分频。

stm32的pwm输出及频率计算方法

stm32的pwm输出及频率计算方法

stm32的pwm输出及频率计算方法
一、stm32的pwm输出引脚是使用的IO口的复用功能。

二、T2~T5这4个通用定时器均可输出4路PWM——CH1~CH4。

三、我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并在最后给出tim3的ch1和ch2两路pwm输出的c代码(已在STM32F103RBT6上测试成功,大家放心使用!)。

四、给出了PWM频率和占空比的计算公式。

步骤如下:
1、使能TIM3时钟
RCC->APB1ENR |= 1 2、配置对应引脚(PA6)的复用输出功能
GPIOA->CRL //PA6清0GPIOA->CRL |= 0X0B000000;//复用功能输出(推挽50MHz输出)GPIOA->ODR |= 1
3、设定计数器自动重装值及是否分频
TIM3->ARR = arr;//设定计数器自动重装值(决定PWM的频率)TIM3->PSC = psc;//预分频器,0为不分频
4、设置PWM的模式(有1和2两种模式,区别在于输出电平极性相反),根据需求选一种即可
注:TIMX_CCMR1决定CH1~CH2路,TIMX_CCMR2决定CH3~CH4路。

//TIM3->CCMR1 |= 6 TIM3->CCMR1 |= 7 TIM3->CCMR1 |= 1
5、输出使能设置
TIM3->CCER |= 1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档