锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

PWM输出各种波

时间:2023-05-02 13:37:00 fz系列无源交流电流隔离变送器

在写这篇文章之前,首先声明这篇文章只是个人观点,如果有什么问题可以提出来,互相学习。

一、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数值。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章