|
分享一下调试经验 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.前人栽树后人乘凉,由心的感谢程序作者无私的分享。
|
|
谢谢分享,有时间做一个玩 |
| 哈哈,刚在官网上看到,然后在家里又看到,更想做一台来玩了 |
putiz 发表于 2021-12-26 18:05 你好,已加未见回复,因为不清楚你那边啥情况,就这边回复一下我大概的调试过程吧 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版本 |
CHNO 发表于 2021-6-5 17:11 大佬,可以加下好友交流一下吗 2410025784 |
CHNO 发表于 2021-6-11 11:29 大佬,可以加下联系方式吗? 自己遇到了一些问题,想向您请教一下 |
|
大家好,我看了几天的代码了,也尝试打印了一些数据来分析。 现状是刚开始启动后,电机不会启动,不会低速旋转。即使偶尔有几个会旋转,也不会受遥控器的控制。 经过打印一些信息发现:
这样的代码,这些值不会发生变化和更新
在这样的初始化后打印出来的数据却是0 4000 8000 12337(PWM0T1 PWM1T1 PWM2T1 PWM3T1) 和初始化结果也是不一样的。 为什么我找这样的信息呢,因为我感觉首先遥控器不能控制波形的输出,刚开始输出的波形也不能让电动机启动。 因此我想试着找找这个原因,但是这个值不知道为什么不会发生变化 请问大佬可以回复下吗?真的不知道怎么办 |
lzl12399 发表于 2021-6-10 11:45 我是自己画的 |
CHNO 发表于 2021-6-5 17:11 板子打样,自己画得还是有现成得,小弟也想玩玩 |
| 从宏晶官网下载,然后打过板子,四轴可以平稳飞行,就是油门开大后不能稳定的停在原地,会偏,正在查找原因中, |
| 学习无人机,谢谢你的分享 |
| 感谢楼主分享,小白一名前来膜拜学习 |
| 这个厉害啊,想学但是没怎么看懂哈哈 |
| 关键还是软件算法 |
| 谢谢分享 |
| 请问您有飞行的视频么 |
| 感谢分享,想问下,如果机身水平不变四个螺旋桨前后左右偏转改变飞行方向是否可行?机身姿态与控制方向非耦合状态,同时机身可在空中改变角度悬停。 |
| 正在学习无人机,谢谢你的分享 |
| 下载下来好好学习一下代码 |
| 下载下来学习学习 |
| 谢谢分享,学着做一个四轴飞控 |
|
感谢楼主分享 |
| 谢谢楼主分享! |
| 感谢~~~ |
| 楼主,可否加个QQ,跟你学习下,我的QQ 75750462 |
| 谢谢你的分享 |
| 感谢分享,对于学习很有帮助 |
| 关于玩四轴,我认为深入的玩法就是研究软硬件,特别是软件,如果只是组装比人的成品,没啥成就感;本着此想法所以下载学习此算法! |
| 为什么怎么也下不完呢,是有问题? |
| 感谢分享,支持原创, |
| 感谢分享,有空学习下 |
| 谢谢分享,有时间做一个玩下 |
| 下來試試... |