全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

如何利用单片机PWM实现各种波的输出呢?

时间:2023-07-06 14:55

人气:

作者:admin

标签: 单片机  PWM  如何  实现  利用 

导读:如何利用单片机PWM实现各种波的输出呢?-PWM调制技术---------包含调节占空比以及频率。...

一、PWM

PWM调制技术---------包含调节占空比以及频率。

PWM用途------在电源输出以及电机驱动方面用途广泛。

电源输出:调节不同频率或同一频率的电压输出,以及控制电流输出等等。

电机驱动----网上找了好多资料,大部分用的驱动芯片,这样的话就不需要太复杂的时序,但是有些电机可以直接用单片机进行驱动,根本用不着驱动芯片以及驱动器,提高成本,希望下面的介绍对希望直接驱动电机的有所帮助。

二、利用PWM输出相位差为任意值的波形

1、可以用普通定时器输出。这个方法我感觉有点,不做介绍。

2、用PWM寄存器输出。设PWM输出比较模式。

PWM模式包含:输出比较,PWM模式,强制输出等

PWM频率确定由PSC和ARR确定。CCR确定占空比。

PWM输出比较模式里CCR确定的其实是相位,PWM模式CCR确定的则是 占空比。

图片

输出这样几路波形,其实PWM模式设为比较输出,且为翻转模式,再设置CCR值其实就可以输出了。

void TIM3_Init(u16 arr,u16 psc)

{

TIM3- >ARR=arr;			

TIM3- >PSC=psc;			

  	 

TIM3- >CCMR1|=1< < 3;  

TIM3- >CCMR1|=3< < 4;

。。。。。。。。。。。。。。

}

main函数:

TIM3_Init(1000-1,72-1);

TIM3- >CCR1=250-1;

TIM3- >CCR2=500-1;

TIM3- >CCR3=750-1;

TIM3- >CCR4=1000-1;

输出结果相位差45,度,占空比则50。CNT从0计数,当CNT=CCR,波形翻转,CNT溢出重新从0计数,再计数到CCR,此时再次翻转,相位差就形成了。

三、PWM输出正余弦波

PWM输出余弦波,先生成PWM余弦规律变化的数字,然后设成对应的占空比。生成正余弦数字,可以利用c语言在线编译工具生成,在里面写入函数,然后写入你单片机程序的数组,如果你的数是固定的,函数如下:

void get_sin_tab1( unsigned int point, unsigned int maxnum )

{

unsigned int i = 0, j = 0, k = 0;

float hd = 0.0;        	//弧度

float fz = 0.0;       	//峰值

unsigned int tem = 0;

j = point / 2;		

hd = PI / j;        

k = maxnum / 2;      	//最大值一半

for( i = 0; i < point; i++ )

{

    

    fz = k * sin( hd * (i) ) + k;		

    tem = ( unsigned int )(fz * 1//通过系数可以调整输出有效值大小

    sinData[i] = tem;

    printf("%d,",tem);

}

	printf("\\r\\n");

}

将数字写入单片机占空比就可以生成各种不同相位的函数,可以调函数中fz数值。

图片

图片

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信