标题:
关于“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
PWM1T1
PWM2T1
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