OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4207|回复: 1

四轴PID计算中,roll pitch yaw以及油门thr的期望值是怎么通过接收机输入捕获pwm计算出的脉宽值转换而来的

[复制链接]
yjt 该用户已被删除
发表于 2016-12-11 16:33:52 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
375
金钱
375
注册时间
2016-9-26
在线时间
59 小时
发表于 2016-12-12 14:17:40 | 显示全部楼层

这个是论坛里面分享出来的资料,大概能看懂怎么转换的吧。[mw_shl_code=c,true]/*
* 函数名:WFLY_PWM_Convert
* 描述  :遥控器信号转换
* 输入  :无
* 输出  :无
*/
void WFLY_PWM_Convert(void)
{
        static u16 cnt;
       
        cnt++;
       
        Exp_Angle.X = (float)(Rc_Channel_Val[2]- 1500) * 0.07f;
        if((Exp_Angle.X > -2) && (Exp_Angle.X < 2))        Exp_Angle.X = 0;
       
        Exp_Angle.Y = (float)(Rc_Channel_Val[3]- 1500) * 0.07f;
        if((Exp_Angle.Y > -2) && (Exp_Angle.Y < 2))        Exp_Angle.Y = 0;
       
        throttle        =        (vs16)(Rc_Channel_Val[1] - 1000) * 2;
        if(cnt == 20)
        {
                cnt = 0;       
                if((Rc_Channel_Val[0] > 1600) || (Rc_Channel_Val[0] < 1400))//防止死区累计误差
                {
                        if(throttle > LAUNCH_THROTTLE)        Exp_Angle.Z += -(float)(Rc_Channel_Val[0]- 1500) * 0.006f;
                }               
                if((Exp_Angle.Z > 180) && (Angle.Z > 0))
                {
                        angle_z = Angle.Z - 360;
                }
                else if((Exp_Angle.Z < -180) && (Angle.Z < 0))
                {
                        angle_z = Angle.Z + 360;
                }
                else angle_z = Angle.Z;
                               
                if(Exp_Angle.Z > 360)  Exp_Angle.Z = (float)((s32)Exp_Angle.Z % 360);
                if(Exp_Angle.Z < -360) Exp_Angle.Z = (float)((s32)Exp_Angle.Z % - 360);               
        }
}
[/mw_shl_code]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表