回复 20楼huo_hu 的帖子
那么版主,变速最好是改变细分的脉冲宽度,还是通过快走细分表改变单步时间呢?看网上别的大牛说pmw脉冲频率最好17.57KHZ。
回复 21楼骑马看驴跑 的帖子
不太清楚你的工作模式.1:你说的脉冲宽度就是pwm周期吧,细分值和pwm频率乘积就是时钟频率,细分值定了周期就定了如何快走呢?
2:pwm频率是有一个最佳范围这个和你的H桥的驱动参数有关系,不可一概而论.
回复 21楼骑马看驴跑 的帖子
3:细分的脉冲宽度又指的是什么?回复 23楼huo_hu 的帖子
细分的脉冲宽度就是指pwm的周期,我们细分不是把1分成很多份,版主图里分了16份。细分表定了,但是我们可以从第1个细分直接走到第1+x个细分,不过这样占空比得相应的乘个积数把。
另外细分值是通过积分得到的,还是直接去中间值去SIN呢(我想细分足够的话和积分算出来的应该区别不大把),电脑没装matlab,打不开版主附件查看:Sweat:
回复 24楼骑马看驴跑 的帖子
从第1个细分直接走到第1+x个细分,占空比得相应的乘个积数....这个算法是没有依据的,你乘不出来也加不出来.
积分得到?怎么积分啊?中间值?
我晕...
回复 25楼huo_hu 的帖子
可能是我思路错误,对细分表的数值怎么来的还是模糊的很啊。。。:Sweat: 想一天没想明白,占空比为什么要用平行的直线和sin曲线相交得到。我的想法:2相电机力矩是两个成直角的力合成,让力矩不变那必定一个sin,一个cos,把一个象限细分,那两个力的变化曲线也是sin和cos,电流和力正比关系,占空比和电流正比,那占空比也是sin曲线。。。取细分表相当于等间距取sin值:funk:
忘解惑。
回复 27楼骑马看驴跑 的帖子
我Q:476995086 好给力的资料 感谢版主分享, 真正懂了,才能说明白。支持! kankan 必须学习,可以去面试了 太贵了,没钱啊回复 33楼ison 的帖子
clearsyms s_M s_N s_Mov s_Num s_Saw_Ampl
s_M=32768/65536 %正弦波幅值比0~1
s_N=16 %半周期三角波个数
s_Mov=pi/s_N/2 %正弦波形后移
s_Num=34 %多计算n个周期总共的周期
s_Saw_Ampl %三角波幅值,此数值影响画图质量
global g_K %计算常量
global g_spwm
format long
g_spwm=1:(s_Num)*2 %
g_K=s_N/pi%斜率
s_Saw_Ampl=10000
for tmp=1:(s_Num)
g_spwm(2*tmp-1)=(tmp-1)*pi/s_N;
g_spwm(2*tmp)=Cal_Intersection(); %参数:M值,K,斜线与y交点,正弦平移
end
tmp=pi/s_N;
TimerSet=Width();
%求关点的t值,参数1:n (n=1,2,3,.....N)
%公式:M sin(t)=K*t-(2n-1)
%参数:M值,K,斜线与y交点,正弦平移
function [ output_args ] = Cal_Intersection( input_args )
cmp=0;
t=1;
while (abs(t-cmp)>0.0000000000001)
cmp=t;
t=(input_args(1)*abs(sin(cmp-input_args(4)))+input_args(3))/input_args(2);
end
output_args=t;
end
function [ output_args ] = Width( input_args )
global g_spwm;
output_args=1:input_args(3)
for i=1:input_args(3)
sub=g_spwm(2*i)-g_spwm(2*i-1);
output_args(i)=(sub*input_args(1)*input_args(2)/pi);
%output_args(i)=round(output_args(i)*10)/10;
output_args(i)=fix(output_args(i));
%output_args(i)=vpa(output_args(i),6);
end
end
图可以不画 y这是必须得顶的