在写这篇文章之前,首先声明一下,本文仅代表个人观点。如果有不对的地方,可以指出来,互相学习。
1. 脉宽调制
PWM调制技术---------包括调整占空比和频率。
PWM用途------广泛应用于电源输出和电机驱动。
功率输出:调节不同频率或相同频率的电压输出,控制电流输出等。
电机驱动——网上找了很多资料。大多采用驱动芯片,不需要太复杂的时序。然而,有些电机可以直接由微控制器驱动。根本不需要驱动芯片和驱动器,增加了成本。希望下面的介绍对想直接驱动电机的朋友有所帮助。
2. 使用PWM 输出任意相位差值的波形。
1. 可以使用普通定时器输出。我感觉这个方法有点不同,就不介绍了。
2. 使用PWM寄存器输出。设置PWM 输出比较模式。
PWM模式包括:输出比较、PWM模式、强制输出等。
PWM 频率由PSC 和ARR 决定。 CCR 决定占空比。
在PWM 输出比较模式下,CCR 实际上决定相位,而在PWM 模式下,CCR 决定占空比。
要输出这样几个波形,其实就是将PWM模式设置为比较输出并翻转模式,然后设置CCR值来输出。
无效TIM3_Init(u16 arr,u16 psc)
{
TIM3-》ARR=arr;
TIM3-》PSC=psc;
TIM3-》CCMR1|=1《》3;
TIM3-》CCMR1|=3》《4;
}
主功能:
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。这时又翻转,就形成了相位差。
3. PWM输出正弦波和余弦波
PWM 输出余弦波。老师设置了PWM余弦规律变化的数字,然后设置为对应的占空比。要生成正弦和余弦数,可以使用C语言在线编译工具生成它们,在其中编写函数,然后将其写入单片机程序的数组中。如果你的号码是固定的,函数如下:
void get_sin_tab1(无符号整型点,无符号整型最大数)
{
无符号整型i=0,j=0,k=0;
浮动高清=0.0; //弧度
浮动fz=0.0; //峰值
无符号整数tem=0;
j=点/2;
hd=PI/j;
k=最大数量/2; //最大值的一半
for( i=0; i <点; i++ )
{
fz=k * sin ( hd * (i) ) + k;
tem=(unsigned int) (fz * 1) //输出有效值大小可以通过系数调整
sinDatai=tem;
printf("%d,",tem);
}
printf("\r\n");
}
通过将数字写入微控制器的占空比,可以生成各种不同阶段的函数,并且可以调整函数中的fz值。