死区特性函数以及MATLAB验算

为什么写该博文?

我在读一段代码时,对死区特性函数产生了好奇,因此写下该博文,仅代表个人理解。

死区代码

// 死区代码 c++

double Dead(double input, double deadzone)
{
	if (input>deadzone)
		return input - deadzone;
	else if (input<-deadzone)
		return input + deadzone;
	else
		return 0;
}

死区解释

百度百科
死区(deadband)有时也称为中性区(neutral zone)或不作用区,是指控制系统的传递函数中,对应输出为零的输入信号范围。像伺服驱动器中就会有死区来避免因为反复的致能-不致能循环而造成的振荡(在比例控制系统中称为hunting)。在机械系统中也有类似死区的概念,例如齿轮组中的背隙。

举个栗子:

稳压器
在一些变电站中有稳压器维持电压在一定的范围内,规格中就会有一个稳压器不会更动电压的电压范围,例如112V至118V(死区为6V)或是215至225V(死区为10V)。
背隙
齿轮中的背隙就是一种死区。当齿轮咬合恰好在背隙时,不论输入轴正转或是反转,输出轴都不会动作。等咬合不在背隙时,输出轴才会随着输入轴而动作。例如输入轴先顺时针旋转,再逆时针旋转,在顺时针旋转切换为逆时针时,输出轴会短暂一小段时间不动作,之后才会动作,这就是背隙的效果。像导螺杆都会有背隙,因此会有死区,在位置控制(特别是CNC系统)中需考虑其影响。若机构中没有背隙消除装置,控制器可以在更改方向时,在位置上自动加上背隙的量,以补偿背隙的影响。

PWM中的死区时间
死区时间是PWM输出时,为了使H桥或半H桥的上下管不会因为开关速度问题发生同时导通而设置的一个保护时段。通常也指pwm响应时间。

matlab验算

// 死区代码 ,matlab

		x = 0:0.01:20;
		y = sin(x);
		plot(x,y);
		hold on;

		for i = 1:2000
    
        if y(i)>0.5        
                y(i)= y(i)-0.2;                
        elseif y(i)<-0.5        
                y(i)=y(i)+0.2;            
        else        
                y(i) = 0;               
        end
end

		plot(x,y);

为了更方便的理解,使用matlab进行验算。
输入一个正弦信号,限幅值为0.2,则plot结果如下:

结论:可以看出,输入信号进行了两部分处理,一部分是限幅值,另一部分是死区特性,对应输出为零的输入信号范围(不会因为信号切换问题发生 同时导通 而设置的一个保护时段)

PS:若将限幅值0.2改为0,则仿真结果如图所示:
在这里插入图片描述
可以看出处理后的数据只有死区特性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章