单片机测量频率,占空比,相位差

合集下载

使用STM32测量频率和占空比的几种方法

使用STM32测量频率和占空比的几种方法

(纯干货)使用STM32测量频率和占空比的几种方法
使用平台:官方STM32F429DISCOVERY开发板,180MHz的主频,定时器频率90MHz。

相关题目:
(1)测量脉冲信号频率f_O,频率范围为10Hz~2MHz,测量误差的绝对值不大于0.1%。

(15分)
(2)测量脉冲信号占空比D,测量范围为10%~90%,测量误差的绝对值不大于2%。

(15分)
思路一:外部中断
思路:这种方法是很容易想到的,而且对几乎所有MCU都适用(连51都可以)。

方法也很简单,声明一个计数变量TIM_cnt,每次一个上升沿/下降沿就进入一次中断,对TIM_cnt++,然后定时统计即可。

如果需要占空比,那么就另外用一个定时器统计上升沿、下降沿之间的时间即可。

缺点:缺陷显而易见,当频率提高,将会频繁进入中断,占用大量时间。

而当频率超过100kHz时,中断程序时间甚至将超过脉冲周期,产生巨大误差。

同时更重要的是,想要测量的占空比由于受到中断程序影响,误差将越来越大。

总结:我们当时第一时间就把这个方案PASS了,没有相关代码(这个代码也很简单)。

不过,该方法在频率较低(10K以下)时,可以拿来测量频率。

在频率更低的情况下,可以拿来测占空比。

思路二:PWM输入模式
思路:翻遍ST的参考手册,在定时器当中有这样一种模式:
简而言之,理论上,通过这种模式,可以用硬件直接测量出频率和占空比。

当时我们发现这一模式时欢欣鼓舞,以为可以一步解决这一问题。

最新AVR单片机占空比及频率测量学习笔记资料

最新AVR单片机占空比及频率测量学习笔记资料

信号占空比测量及频率计算测量信号频率只要得到信号的两个上升沿或者下降沿之间所用的时间即可。

占空比指一个信号高电平和这个信号周期时间的比值,测量信号占空比只需测量信号一下降沿和上升沿之间的距离即可。

测量边沿可以采用AVR单片机外部中断,中断可以设置成边沿触发,设置为上升沿触发或者下降沿触发。

同时启用一个定时器,用定时器的计数值取得相应的时间。

定时器初始化:只需将定时器打开,单片机晶振为16M时,AVR单周期及可计算定时器每曾一所用的时间。

例如用8分频时,每加1用时0.5us。

void Timer1_init(void){CLI(); //disable all interruptsTCNT1H = 0x00; //清零计数值TCNT1L = 0x00;TIMSK |=(1<<TOIE1); //开启溢出中断TIMSK |=(1<<TICIE1); //开启捕获中断TCCR1B = 0x82; //8分频,自增一用时0.5us,开启输入捕获噪声抑制SETBIT(TCCR1B,ICES1);//设置初始为上升沿捕获SEI(); //re-enable interrupts}在中断函数使用中需先将其初始化,设置为起始的上升沿触发中断,并且开启外部中断及总中断,此时如果外部有上升沿及可触发中断函数。

void INT0_Init(void){MCUCR=0x03;//上升沿触发中断GICR =0x40;//开启外部0中断SEI(); //开启总中断}在中断函数中,当有上升沿时,就可触发中断,在中断函数中有一标志位flag_Int,通过此标志位来判断是上升沿的中断还是下降沿产生的中断。

第一次进入中断后flag_int==0;读取定时器1高低位的数据,同时将中断的触发沿改为下降沿触发,然后将定时器值清零。

同时将flag_Int标志位置一,当信号变为下降沿时再次触发中断,此时进入flag_Int=1函数,此时读取定时器值,并将中断改为上升沿中断,此时即可计算(高电平时间=定时器数值*0.5us)将flag_Int=0,当边沿为上升沿时即可进入if(flag_Int==0),此时读取的定时器时间,及Int_End 的值及为脉冲周期。

单片机pwm占空比计算公式(一)

单片机pwm占空比计算公式(一)

单片机pwm占空比计算公式(一)
单片机PWM占空比计算公式
1. 什么是PWM占空比?
PWM(Pulse Width Modulation,脉宽调制)是一种常用的电子技术,在单片机领域用于控制数字信号的输出。

PWM占空比指的是PWM信号中高电平的时间占整个周期的比例,用百分数来表示。

2. PWM占空比计算公式
PWM占空比可以通过以下公式来计算:
DutyCycle = (Thigh / Tperiod) * 100%
其中,DutyCycle为PWM占空比,Thigh为高电平时间,Tperiod为周期时间。

3. PWM占空比举例解释
假设有一个PWM信号的周期为20ms,其中高电平时间为5ms。

那么可以通过上述公式计算出PWM的占空比:
DutyCycle = (5ms / 20ms) * 100% = 25%
这表示PWM信号的高电平时间占整个周期的25%。

4. 结论
通过以上的计算公式和实例,我们可以很方便地计算出单片机PWM信号的占空比。

这对于控制电机速度、LED亮度等应用非常有用。

掌握PWM占空比计算的方法,能够更好地实现单片机信号输出的精确控制。

f103 hal 多路 pwm 相位差 占空比

f103 hal 多路 pwm 相位差 占空比

主题:F103 HAL多路PWM相位差占空比内容:1. 介绍F103 HALF103 HAL是针对STM32F103系列的外设驱动库,通过HAL库可以方便地进行外设的初始化和配置,减少了底层驱动的编写工作,使开发者能够更快速地进行STM32F103系列的开发工作。

2. 多路PWMF103 HAL中提供了多路PWM输出功能,可以灵活地控制多路PWM 信号的输出,满足不同应用场景的需求。

3. 相位差相位差是指两路或多路PWM信号之间的相位角度差,通过调整相位差可以实现多路PWM信号的协调工作。

4. 占空比占空比是PWM信号高电平占据的时间比例,通过调节占空比可以实现PWM信号的输出电平控制。

5. F103 HAL多路PWM相位差占空比的配置在使用F103 HAL进行多路PWM相位差占空比配置时,首先需要初始化相关的PWM外设,并设置好对应的时序参数。

6. 实现多路PWM信号的相位差调节通过修改不同PWM通道的占空比和相位差,可以实现多路PWM信号之间的相位差调节,从而实现复杂的波形输出。

7. 示例代码以下为使用F103 HAL实现多路PWM相位差占空比配置的示例代码:```c#include "stm32f1xx_hal.h"TIM_HandleTypeDef htim1;TIM_HandleTypeDef htim2;void MX_TIM1_Init(void){TIM_OC_InitTypeDef sConfigOC;htim1.Instance = TIM1;htim1.Init.Prescaler = 0;htim1.Init.Period = 255;htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim1.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_TIM_Base_Init(htim1);HAL_TIM_PWM_Init(htim1);sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = 128;sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;HAL_TIM_PWM_ConfigChannel(htim1, sConfigOC, TIM_CHANNEL_1);HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_1);}void MX_TIM2_Init(void){TIM_OC_InitTypeDef sConfigOC;htim2.Instance = TIM2;htim2.Init.Prescaler = 0;htim2.Init.Period = 255;htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_TIM_Base_Init(htim2);HAL_TIM_PWM_Init(htim2);sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = 64;sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;HAL_TIM_PWM_ConfigChannel(htim2, sConfigOC,TIM_CHANNEL_1);HAL_TIM_PWM_Start(htim2, TIM_CHANNEL_1);}int m本人n(void){HAL_Init();SystemClock_Config();MX_TIM1_Init();MX_TIM2_Init();while (1){// 实现相位差和占空比的调节__HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_1, 128); __HAL_TIM_SET_COMPARE(htim2, TIM_CHANNEL_1, 64);}}```8. 总结通过F103 HAL的多路PWM功能,可以轻松实现多路PWM信号的相位差和占空比调节,为各种应用场景的PWM信号控制提供了便利和灵活性。

用单片机测量电网频率相位差及功率因数

用单片机测量电网频率相位差及功率因数

用单片机测量电网频率相位差及功率因数
马晓敏
【期刊名称】《电测与仪表》
【年(卷),期】1990(027)005
【总页数】2页(P32-33)
【作者】马晓敏
【作者单位】无
【正文语种】中文
【中图分类】TM727
【相关文献】
1.利用8098单片机测量电网的频率和功率因数 [J], 孟宪陆;陈祥初
2.基于准同步窗的相位差法实现电网频率的高精度测量 [J], 尹引
3.加窗相位差校正算法在电网频率测量中的应用 [J], 杨力森;范李平
4.用单片机测量电力系统的频率,功率因数 [J], 郭太峰
5.基于相位差校正的电网频率高精度测量 [J], 贺建闽;黄治清
因版权原因,仅展示原文概要,查看原文内容请购买。

[毕业设计]以STC12C5A3252单片机为控制核心的频率及相位测试仪

[毕业设计]以STC12C5A3252单片机为控制核心的频率及相位测试仪

1前言在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。

在传统的生产制造企业中,频率计被广泛的应用在产线的生产测试中。

频率计能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使用频率计能够迅速的发现有故障的晶振产品,确保产品质量。

在计量实验室中,频率计被用来对各种电子测量设备的本地振荡器进行校准。

在无线通讯测试中,频率计既可以被用来对无线通讯基站的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

相位是反映交流电任何时刻的状态的物理量。

常应用在科学领域,如数学、物理学、电学等。

交流电的大小和方向是随时间变化的。

两个频率相同的交流电相位的差叫做相位差,或者叫做相差。

这两个频率相同的交流电,可以是两个交流电流,可以是两个交流电压,可以是两个交流电动势,也可以是这三种量中的任何两个。

随着科学技术飞速发展,对频率、相位的可靠性、输出精度要求越来越高,利用单片机设计制作的数字频率相位测量仪就显示出其优越性。

功能切换由面板上的按键控制单片机实现,给电路实验带来极大的方便,提高了工作效率。

本次设计是以STC12C5A3252单片机为控制核心的频率及相位测试仪。

本次设计可完成对信号频率的频率测量和相位差测量。

要求测量频率的范围为20Hz到20KHz,相位的范围为0°到360°。

可通过按键实现测频或测相,用LED数码管直接显示读数,显示清晰直观。

误差小,稳定性高。

2总体方案设计2.1.1 方案一方案一的结构框图如下图2.1所示。

图2.1 方案一方框图方案二的结构框图如下图2.2所示。

图2.2 方案二方框图本设计要完成信号频率的测量和相位差的测量。

设计中有两路输入信号,也是被测量信号,它们是两个频率相同的正弦信号,频率范围为20Hz到20KHz,幅度为1到5V (可以扩展到(0.3到5V),但两者幅度不一定相等。

单片机课程设计-频率相位表

单片机课程设计-频率相位表

一、 设计原理 (一)测频原理分析频率测量的常用方式有直接测频法、测周法和等精度测量法。

1.1 直接测频法:在确定的闸门时间T 内,利用计数器对待测信号进行计数,根据所得计数值N ,由公式/x f N T =计算出被测脉冲的频率。

1.2 测周法:以待测信号为门限,已知频率M 的高频脉冲为标频,用计数器记录在此门限内标频的脉冲数N ,由公式/x f M N =得待测信号频率。

1.3 等精度测频法(相关计数测频法)此方法和测周法很相似,但其测量时间并不是被测信号的一个周期,而是人为设定的一段时间。

闸门的开启和闭合由被测信号的上升沿来控制,测量精度与被测信号频率无关,因此可以保证在整个测量频段内的测量精度保持不变。

在这里,同时使用两个计数器分别对待测信号x f 和频标信号m f 在设定的精确门内进行计数,x f 的上升沿触发精确门。

若两个计数器在精确门内对x f 和m f 的计数值分别为M 和N,则待测信号的频率为:x m Mf f N=。

方案比较与选择:(1) 直接测频法电路结构简单,软件易于实现,较适合于高频信号的测量,但对低频信号的测量的精度很低。

(2)测周法:当被测信号频率较低时,用此方案可获得较高的精度,而当被测频率过高时,由于测量时间不够,导致精度较低。

(3)等精度测量法要求提高较高的时钟频率作为频标信号,对微处理器的处理速度有较高的要求。

方案选择:由于在本课设中使用的是MCS-51单片机,八位处理器,所测信号频率多在低频可以获得较高的精度,所以,选择方案二:测周法。

具体实现方法是:定时器T0工作在定时模式,选择工作方式1,16位定时器,初值为0,则在单片机时钟频率f=12MHz的前提下,每执行一条机器周期的指令是1us,所以,利用门控位,gate=1时,定时器T0、T1的启动依靠TR0、TR1和外部中断的高电平。

当输入在外部中断0的被测脉冲由低电平到高电平时,触发定时器T0,T0开始计数,当被测方波由高电平转到低电平时,触发外部中断0,在外部中断0 服务程序中停止定时器0计数,此时T0的溢出次数为m,保存此时的TH0和TL0;则方波周期为:2(6553602560)=⨯⨯+⨯+,取其倒T m TH TL数即是被测方波的频率。

单片机一种测量相位差的新方法

单片机一种测量相位差的新方法

%#!& 孙涵芳 "56789 #2 位单片机 %: &"北京 ’ 北京航空航天大学出版社 ! #))1" %##&
汪建 ! 孙开放 ! 章 述 汉 ":;0<)2 系 列 单 片 机 原 理 及 应 用 技 术 %: &" 华中理工大学出版社 !.!!!"
*+,- ’+,"
贾振 "/0#1.! 及其高精度温度测量的实现 %( &"电子技术应用 " 景小宁 "智能热电测温技术及其实现 %( &"微型机与应用 !.!!#*#-" 刘少强 "新型精密铂电阻测温方法 %( &" 传感器技术 !#))) !#1 (. )"
直接测得的是时间 ! 相位差角要由这一中间结果与
!
引言
正弦交流电信号相位差的测量可以采用多种
信号的周期运算后才能得到 ! 所以周期的测量不可 缺少 ! 其测量精度也将影响相位差角的精度 $ 在此 比较直接的数字式测量方法是在已知信 号周期的前提下用定时的方法测得相位差角对应 的时间 ! 然后根据已知的周期将其换算成相位差角 度 $ 但是 ! 这种方法的测量精度依赖于定时器的精 度和分辨率 $ 在信号频率较高或频率虽不甚高但相 位差角较小时 ! 都可能出现较大的误差 $ 另外 ! 由于
!"!#$%
文章编号 !#!!#>))++*.!!+-!+>!!.’>!,
!"#$%&’()*+
刘 杰 !王旭光 ! 赵永林
! 山东交通学院 ! 山东 济南 "#$$"%&
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机测量频率,占空比,相位差
1、 频率及占空比的测量
如上图所示,当脉冲的上升沿来临时,将定时器打开;紧接着的下降沿来临时,读取定时器的值,假设定时时间为t1;下一个上升沿来临时关闭定时器,读取定时器的值,假设定时时间为t2。

t1即为1个周期内高电平的时间,t2即为脉冲的周期。

t1/t2即为占空比,1/t2即为频率。

C 语言程序如下:
TH0=0; //定时器高位,初值设为0
TL0=0; //定时器低位,初值设为0
T0_num=0; //定时器溢出次数,初值设为0
while(pulse); //pulse 为脉冲的输入引脚
while(!pulse); //等待上升沿来临
TR0=1; //打开定时器
while(pusl1); //等待下降沿来临
th1=TH0;tl1=TL0;num1=T0_num; //保存定时器值
while(!pusl1); //等待上升沿来临
TR0=0; //关闭定时器
th2=TH0;tl2=TL0;num2=T0_num; //保存定时器值
2、 相位差的测量
上升沿打开定时器 下降沿读取定时器值并保存 下一个上升沿关
闭定时器,读取
定时器值并保存
测量相位差的电路如上所示,待测量的两路脉冲分别作为两个D触发器的时钟输入,两个D触发器的输入端D及S端都接高电平,第一个D触发器的输出接第二个D触发器的R端,第二个D触发器的互补输出端接第一个D触发器的R端。

从下面的波形图可以看出,第一个D触发器输出的脉冲信号的占空比乘以2π即为相位差。

这样就将测量两路方波信号的相位差转化为测量一路方波
信号的占空比,就可以按照前面介绍的测量占空比的方法来测量了。

黄色的波形为脉冲1,蓝色的波形为脉冲2,红色的波形为相位差。

相关文档
最新文档