找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STC51单片机四轴飞控开源项目原理图与源码资料分享

查看数: 28381 | 评论数: 33 | 收藏 32
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-11-26 11:19

正文摘要:

四轴飞控-STC8A8K64S4A12-LQFP44-PPM-V10,来源于STC发布,按需取用 控制信号排针要靠在一起布线成3排针3*9*2.54 P1~P4对应接收机的俯仰、横滚、油门、航向PPM信号。M1~M4输出到4个电调的信号。P5备用。 四个电机 ...

回复

ID:925561 发表于 2021-6-11 11:29
分享一下调试经验
1.起飞后会飞斜:在水平的地板上将四轴放平,开启遥控,油门打到最低,串口以文本输入a,开始串口打印X,Y的角度,大概是+-2左右,将这个数记下来,然后在程序这里加补偿(红字的部分),然后重新编译后下载程序,然后在开启串口打印,这时输出一般都在0-0.1这儿稳定了,起飞后,无风的情况下不会乱飞。
        AngleX = asin(2*(q0*q2 - q1*q3 )) * 57.2957795f+1.9; // 俯仰   换算成度
        AngleY = asin(2*(q0*q1 + q2*q3 )) * 57.2957795f+0.8; // 横滚

2.遥控器通道正反要按资料上的图片来拨,资料要求美国手,我买的日本手,实则都能用。用日本手要改接收机和单片机线的位置,用万用表对照程序注释一看便知。
3.这个程序配合MC6遥控器十分好用方便,可是把程序改成串口无线控制会发生一些问题,感觉是串口接受数据多,中断频率较高,而PWM中断等级较低,老是打断PWM中断,然后现象是某个固定的脚PWM输出会比其他高很多,串口改一下波特率或者发射加个延时,这个现象又转移到其他PWM引脚,目前还在优化中,,,,,,
4.前人栽树后人乘凉,由心的感谢程序作者无私的分享。


评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:1103557 发表于 2024-3-11 14:13

谢谢分享,有时间做一个玩
ID:704640 发表于 2022-5-25 08:23
哈哈,刚在官网上看到,然后在家里又看到,更想做一台来玩了
ID:925561 发表于 2022-1-1 10:49
putiz 发表于 2021-12-26 18:05
大佬,可以加下好友交流一下吗
2410025784

你好,已加未见回复,因为不清楚你那边啥情况,就这边回复一下我大概的调试过程吧
1.程序里面有个电池电压检测(ADC部分),要保证这边没问题,检测电压低是启动不了的,我这边是直接把该端口和VCC接一起的。(因为我用的隔离电源,不能和锂电池共地)
2.然后你的电路是否用的资料提供的电路?还是略有修改?PCA输入假如用光耦隔离的话,受光侧上拉电阻取值会影响波形的好坏,我这用的521光耦,原本用的103电阻,发现也是无法启动,换成102就可以了,实际上要更小才合适。
3.先看看程序有没有进入循环,还是卡在油门最小等待这一步,我在这儿加上串口打印配合调试
  PrintString1("注意准备等待油门最小了\r\n");
        while(cnt_start < 25)        //等待油门最小        20ms * 25 = 500ms
        {
                if(B_PPM3_OK)        //油门
                {
                        B_PPM3_OK = 0;
                        if(PPM3_Cap <= 1200)        cnt_start++;
                }
                delay_ms(1);
        }
        PrintString1("油门最小测试通过\r\n");
当油门通过后就是主要的工作啦,用串口不停地查看接收的数据是否与遥控一起在变化,
void        Return_Message(void)
{
        TX1_write2buff('V');
        TX1_write2buff('=');
        TX1_write2buff(Battery/1000 + '0');
        TX1_write2buff((Battery%1000)/100 + '0');
        TX1_write2buff('.');
        TX1_write2buff((Battery%100)/10 + '0');
        TX1_write2buff(Battery%10 + '0');
        TX1_write2buff(' ');
        TX1_write2buff(' ');
        //从这儿开始
        PrintString1("PPM1=");
        TX1_int_value((int)(PPM1 * 10));
        PrintString1("PPM2=");
        TX1_int_value((int)(PPM2 * 10));
        PrintString1("PPM3=");
        TX1_int_value((int)(PPM3 * 10));
        PrintString1("PPM4=");
        TX1_int_value((int)(PPM4 * 10));
/*     PrintString1("AngleX=");
        TX1_int_value((int)(AngleX * 10));
        PrintString1("AngleY=");
        TX1_int_value((int)(AngleY * 10));
        PrintString1("AngleZ=");
        TX1_int_value((int)(Angle_gz * 10));
*/
        PrintString1("a_x=");
        TX1_int_value(a_x * 10);
        PrintString1("a_y=");
        TX1_int_value(a_y * 10);
        PrintString1("g_z=");
        TX1_int_value(g_z * 10);
        TX1_cnt = 0;
        TX1_write2buff(0x0d);
        TX1_write2buff(0x0a);
}
这样就可以很直观的看出来遥控的接收情况了,即使线接反了,也可以看出实时的数据变化,找出对应的摇杆,因为这样很方便,我把买的日本手该成了中国手。。。。。
4.然后晶振频率和EEPROM大小不能错,遥控器通道正反要按资料图片来拨,其他没什么了,串口这儿就可以看出很多情况了,最后LQFP44我用的G版本
ID:975881 发表于 2021-12-26 18:05
CHNO 发表于 2021-6-5 17:11
从宏晶官网下载,然后打过板子,四轴可以平稳飞行,就是油门开大后不能稳定的停在原地,会偏,正在查找原因 ...

大佬,可以加下好友交流一下吗
2410025784
ID:975881 发表于 2021-12-26 17:41
CHNO 发表于 2021-6-11 11:29
分享一下调试经验
1.起飞后会飞斜:在水平的地板上将四轴放平,开启遥控,油门打到最低,串口以文本输入a ...

大佬,可以加下联系方式吗?
自己遇到了一些问题,想向您请教一下
ID:975881 发表于 2021-12-26 17:38
大家好,我看了几天的代码了,也尝试打印了一些数据来分析。
现状是刚开始启动后,电机不会启动,不会低速旋转。即使偶尔有几个会旋转,也不会受遥控器的控制。
经过打印一些信息发现:
  1.         SW2_tmp = P_SW2;        //保存SW2设置
  2.         EAXSFR();        //访问XFR
  3.         PWM0T2 = (u16)(PWM0 * 2);
  4.         PWM1T2 = (u16)(PWM1 * 2);
  5.         PWM2T2 = (u16)(PWM2 * 2);       
  6.         PWM3T2 = (u16)(PWM3 * 2);        //进行输出脉冲信号更新
  7.         P_SW2  = SW2_tmp;        //恢复SW2设置
复制代码

这样的代码,这些值不会发生变化和更新
  1.         PWM0T1 = 4000;//第一个翻转点 4000
  2.         PWM1T1 = 4000;
  3.         PWM2T1 = 4000;
  4.         PWM3T1 = 4000;
  5. //        PWM4T1 = 4000;
  6. //        PWM5T1 = 4000;
  7. //        PWM6T1 = 4000;
  8. //        PWM7T1 = 4000;

  9.         PWM0T2 = 2000;  //第二个翻转点 2000
  10.         PWM1T2 = 2000;
  11.         PWM2T2 = 2000;
  12.         PWM3T2 = 2000;
  13. //        PWM4T2 = 2000;
  14. //        PWM5T2 = 2000;
  15. //        PWM6T2 = 2000;
  16. //        PWM7T2 = 2000;
复制代码

在这样的初始化后打印出来的数据却是0 4000 8000 12337(PWM0T1 PWM1T1 PWM2T1 PWM3T1)
和初始化结果也是不一样的。
为什么我找这样的信息呢,因为我感觉首先遥控器不能控制波形的输出,刚开始输出的波形也不能让电动机启动。
因此我想试着找找这个原因,但是这个值不知道为什么不会发生变化
请问大佬可以回复下吗?真的不知道怎么办
ID:925561 发表于 2021-6-11 10:32
lzl12399 发表于 2021-6-10 11:45
板子打样,自己画得还是有现成得,小弟也想玩玩

我是自己画的
ID:97350 发表于 2021-6-10 11:45
CHNO 发表于 2021-6-5 17:11
从宏晶官网下载,然后打过板子,四轴可以平稳飞行,就是油门开大后不能稳定的停在原地,会偏,正在查找原因 ...

板子打样,自己画得还是有现成得,小弟也想玩玩
ID:925561 发表于 2021-6-5 17:11
从宏晶官网下载,然后打过板子,四轴可以平稳飞行,就是油门开大后不能稳定的停在原地,会偏,正在查找原因中,
ID:63317 发表于 2021-5-23 19:48
学习无人机,谢谢你的分享
ID:915207 发表于 2021-5-14 22:27
感谢楼主分享,小白一名前来膜拜学习
ID:906597 发表于 2021-4-30 22:28
这个厉害啊,想学但是没怎么看懂哈哈
ID:385637 发表于 2021-4-22 08:05
关键还是软件算法
ID:628703 发表于 2020-3-18 15:11
谢谢分享
ID:517004 发表于 2020-2-10 17:26
请问您有飞行的视频么
ID:11546 发表于 2020-2-5 11:30
感谢分享,想问下,如果机身水平不变四个螺旋桨前后左右偏转改变飞行方向是否可行?机身姿态与控制方向非耦合状态,同时机身可在空中改变角度悬停。
ID:266164 发表于 2020-1-16 16:55
正在学习无人机,谢谢你的分享
ID:490427 发表于 2019-11-2 18:18
下载下来好好学习一下代码
ID:186764 发表于 2019-9-29 23:08
下载下来学习学习
ID:282431 发表于 2019-7-28 17:02
谢谢分享,学着做一个四轴飞控
ID:591598 发表于 2019-7-28 14:28
感谢楼主分享
ID:272906 发表于 2019-6-9 10:08
谢谢楼主分享!
ID:119159 发表于 2019-5-7 11:22
感谢~~~
ID:508475 发表于 2019-4-16 09:24
楼主,可否加个QQ,跟你学习下,我的QQ 75750462
ID:403129 发表于 2018-9-27 16:05
谢谢你的分享
ID:291952 发表于 2018-9-25 09:12
感谢分享,对于学习很有帮助
ID:394146 发表于 2018-9-5 16:57
关于玩四轴,我认为深入的玩法就是研究软硬件,特别是软件,如果只是组装比人的成品,没啥成就感;本着此想法所以下载学习此算法!
ID:380499 发表于 2018-7-29 16:26
为什么怎么也下不完呢,是有问题?
ID:149866 发表于 2018-5-6 22:02
感谢分享,支持原创,
ID:155817 发表于 2018-1-5 14:40
感谢分享,有空学习下
ID:243748 发表于 2017-12-4 14:52
谢谢分享,有时间做一个玩下
ID:61218 发表于 2017-11-28 11:24
下來試試...

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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