因为每过一段时间要对脉冲计数进行保存、清零,所以我们可能需要用上定时器中断。定时器中断相关的函数位于文件zf_pit.c中,初始化定时器后设定好定时时间,程序就会每过一段时间自动进入到isr.c文件中的定时中断服务函数中去执行里面的语句了。 从编码器获取到负值 我们实际上手使用编码器后,把从编码器获取到的脉冲计...
电机的输出: 油门控制Throttle是电机输出的基准值,增加油门即可提高四轴高度。最后整合ROLL/PIT/YAW三轴输出量进行电机控制: Motor[2] = (int16_t)(Thr - Pitch - Roll - Yaw );//M3Motor[0] = (int16_t)(Thr + Pitch + Roll - Yaw );//M1Motor[3] = (int16_t)(Thr - Pitch + Roll + Ya...
(变送器) PSV: pressure set up value 压力 PISA: pressure instruction set up alarm 压力指示并设定报警值(上限/下限) PDIS: pressure difference instruction set up PD: pressure difference 压差 PDIAZ: pressure difference instruction alarm (压差指示报警,进入SIS系统) PI:pressure instruction 压力指示 PIT:...
{//根据遥控器传过来的前后方向值,改变ZHONGZHI_PIT的给定值//按40度计算,500/40 = 12.5(pwm/度) 2度是25ZHONGZHI_PIT = (myControl.remoteControl[1]-1500)/12.5;//根据遥控器传过来的左右方向值,改变ZHONGZHI_ROL的给定值ZHONGZHI_ROL = (myControl.remoteControl[0]-1500)/12.5; }/***实现函数*** ...
串级PID算法的实现在于角速度环、角度环和速度环控制的不同周期。初始化程序完成之后,启动周期为2 ms的定时中断。PIT 中断要为循环中的算法提供程序执行的时序标志位控制,根据标志位实现不同周期执行不同控制环节,这种程序结构有助于提高算法的执行效率以及实时性。中断服务函数中具体控制的算法流程[4]如图3所示。
工程整定法3-开环整定法开环整定法获得广义对象模型对象的近似模型:开环整定法(Ziegler-Nichols 法)控制器类型KcTiTdP0PI0PID注意:上述整定规则仅限于取值开环整定法(Lambda 法)控制器KcTiTdPPITPIDT/2注意:上述整定规则不受/T 取值的限制 9、广义对象特性参数:K = 1.75T = 6.5min,= 3.3 min若采用 ...
19、£PID>一白由度PH)110PIT控制(渕;3值徴分先厅电)一白由度PID010ITDIHM一白由度PIDa10PITD捋制(仅P-tittlfft)不宪全二P由圧P】D押制aIYPD-I-PD捽制仅PD-ft±«>不光全二h由度P1D押制afi0PlPIDtttM(仅Pl-tlftJdt)不克全一自由度P1D控制apY抡別IP【U充全-.白田皮)光宅一自SJ«H1U控...
你问我,为什么是2ms?因为我把电机的增量式PI控制算法放在了PIT周期定时器里,每2ms就周期性的执行一次我的速度控制算法。你也可以把PI算法放在你的主函数的while(1)里面循环执行,都无所谓。 举个图说明: 下图是P为0.1,I为0.01,设定值200,电机不转时,变量motor.speed_duty_output_R 的曲线图,就是输出PWM的图...
需要注意的是,电机PID控制作为闭环控制,最好将其放入PIT定时器中断,同时在中断中用左右两个编码器分别测出实时速度,这样可以使其控制的更精确。 voidPID_computer_newL(intleft_speed_in){ ec_left=set_speed-left_speed_in; pwm_L+=speedL_P*(ec_left)+speedL_I*(ec_left-eb_left)+speedL_D*(ec_le...
PID PID_ROL,PID_PIT,PID_YAW;extern S_INT16_XYZ MPU6050_ACC_LAST,MPU6050_GYRO_LAST;int Mot...