标题: 关于“STC51单片机四轴飞控开源项目”的问题 [打印本页]

作者: putiz    时间: 2021-12-26 17:56
标题: 关于“STC51单片机四轴飞控开源项目”的问题
背景:老师让我们根据这个源码和相关内容实现和做出这个飞控,以下为出处。但是我遇到了问题,一直解决不了。
http://www.51hei.com/bbs/dpj-99585-1.html
现状:启动后,串口能够打印出启动的状态(自己设置 的串口信息),但是电机不会启动。偶尔有一到两个电机会启动,但是遥控器却不能进行控制
分析:我猜测是输出的信号波形无法使电机启动,同时,一些值不会随着遥控器的一些信号而发生变化。通过打印信息,发现
        EAXSFR();        //访问XFR
        PWM0T2 = (u16)(PWM0 * 2);
        PWM1T2 = (u16)(PWM1 * 2);
        PWM2T2 = (u16)(PWM2 * 2);        
        PWM3T2 = (u16)(PWM3 * 2);        //进行输出脉冲信号更新
        P_SW2  = SW2_tmp;        //恢复SW2设置

这样的代码没有进行更新,不知道什么
同时在初始化中一些赋值
        PWM0T1 = 4000;//第一个翻转点 4000
        PWM1T1 = 4000;
        PWM2T1 = 4000;
        PWM3T1 = 4000;
//        PWM4T1 = 4000;
//        PWM5T1 = 4000;
//        PWM6T1 = 4000;
//        PWM7T1 = 4000;

        PWM0T2 = 2000;  //第二个翻转点 2000
        PWM1T2 = 2000;
        PWM2T2 = 2000;
        PWM3T2 = 2000;
//        PWM4T2 = 2000;
//        PWM5T2 = 2000;
//        PWM6T2 = 2000;
//        PWM7T2 = 2000;


打印出来的信息确实差别很大,明明在别的地方没有进行赋值,就很奇怪为什么打印出来是这样的。
0 4000 8000 12337(PWM0T1 PWM1T1PWM2T1 PWM3T1
但是打印出来这样确实能够解释我的现象。
然而有的大佬能够实现最起码能够启动能够控制呢能够低速旋转。
非常奇怪,不理解。各位走过的大佬可以解答下吗?

作者: glinfei    时间: 2021-12-27 11:39
1.你程序要是抄的,要先配遥控器啊,确认所有遥控操作一致,这个很简单用万用表就行了。
2.电调上电要解锁,就是识别飞控的最大行程和最小行程,你要查一下你的电调解锁是不是跟程序一致,一般XXD的电调要50Hz时,分别给占空比10、5。都有BB声的。
3.你第一段程序就贴出了赋值语句,怎么说没赋值?
这个难度的估计也就是本科小作业论文,搞懂几个模块怎么配合就够了,玩真的就记得安全第一,千万别带桨运行。
作者: putiz    时间: 2021-12-27 14:53
额,这个是直接用和学习他们的代码,遥控是没有问题的,能够改变其中PWM0的值(这个值是程序里的自定义变量),但是在对PWM0T2赋值过程中,我经过在赋值语句下面加了向串口打印的语句,但是明明PWM0会变,PWM0T2却不会变
作者: putiz    时间: 2021-12-27 14:54
PWM0T2的值会不会被自动赋值呀?
作者: glinfei    时间: 2021-12-27 15:42
putiz 发表于 2021-12-27 14:53
额,这个是直接用和学习他们的代码,遥控是没有问题的,能够改变其中PWM0的值(这个值是程序里的自定义变量 ...

遥控要每个摇杆都对应准确才行,不是有反应就行,要拿示波器看波形对不对,占空比不对也要调;
另外,PWM中断级别很低的,串口中断会打断它赋值,所以,即使程序没问题,但你的串口中断就会导致PWM不对,你觉得有问题不如用示波器看看。我觉得没准把串口的输出全注释掉就能用了。
你现在主要问题是电调没开锁,它需要摇杆开锁。别管PWM0T2,没听说用它前不赋值的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1