​STC8A无人机设计实现

描述

下载时选择内部时钟24MHZ, 设置用户EEPROM大小为2K或以上.   MC6B六通道2.4G 100mW.

蜂鸣器
 

蜂鸣器
 

四轴上电待机:上电后,航灯不亮,接收机LED闪烁,此时打开遥控器,将左右油门下拉到最小,接收机收到信号LED常亮. 表示RF通讯已连接。此时蜂鸣器"哔"一声,航灯闪烁,表示待机模式。

四轴启动:将遥控器左右操纵杆掰成下内八,启动四轴,四轴"哔"一声,4个螺旋桨开始低速旋转,航灯常亮。 此后提升油门,就可以加速螺旋桨,直到起飞。

四轴飞行:起飞后,可以操纵右手的俯仰、横滚操纵杆,实现前后左右或任意方向的飞行。左手油门杆左掰是航向逆时针转,右掰是航向顺时钟转。

四轴下降停止:收油门,四轴逐渐下降到地面,然后两操纵杆掰成下外八,停止四轴,重新处于待机模式。

四轴水平校准:将四轴放置于水平地面,处于待机模式,然后两操纵杆掰成上内八,四轴"哔"一声进入校准,完成后"哔哔"两声完成校准。

四轴取消水平校准:将四轴放置于水平地面,处于待机模式,然后两操纵杆掰成上外八,四轴"哔"一声取消校准。取消水平校准或未进行水平校准过的四轴,起飞时即使无风也可能会有明显漂移。

电池低压报警:当电池低压时,蜂鸣器"哔哔"报警,同时航灯闪烁,此时请尽快回航降落。

无遥控信号异常:当四轴在空中突然收不到遥控信号时,四轴蜂鸣器发出"哔哔哔"报警,同时航灯闪烁,四轴保持水平,逐渐自动减小油门降落。

以上这些是要实现的功能:

蜂鸣器

定义串口的波特率,串口的数据包长度,下面昨天看的驱动,最后是IO的定义。

蜂鸣器


矫正参数就是置0,还有就是一些姿态角的初始定义,欧拉角,角度和加速度。

欧拉角是由三个角组成,这三个角分别是Yaw,Pitch,Roll。

Yaw 表示绕y轴旋转的角度,Pitch表示绕x轴旋转的角度,Roll表示绕z轴旋转的角度。

也就是说,任意的旋转角度都可以通过这三次按照先后顺序旋转得到。
 

蜂鸣器


欧拉角的定义
 

蜂鸣器


tmp是中间变量,下面是中位的遥控变量

蜂鸣器

IMU的缓存数组

蜂鸣器


一个定时器就可以生成 PPM简单的将多个通道的数值一个接一个合并进一个通道,用2个高电平之间的宽度来表示一个通道的值。
PPM协议最多传输10个通道,使用一个定时器就可以轻松解决了。因为每一帧信号的尾部必须加入一个足够长的空白(显著超过一个正常PWM信号的宽度)来分隔前后两个信号,每一帧能传输的信号通道最多只能到10个。

蜂鸣器

串口的一些配置

蜂鸣器

校准里面的一些变量

蜂鸣器

PPM定时器的一个计算

蜂鸣器

串口1的配置

蜂鸣器

这个是中断的配置

蜂鸣器

打印字符串

蜂鸣器

串口的信息写到缓存区

蜂鸣器

数字和字符的转换

蜂鸣器

返回的参数信息

蜂鸣器

设置Timer2作为波特率生成器

蜂鸣器

只有在规定的杆位下才可以进入校准序列

蜂鸣器

校准3个组件

蜂鸣器

这个是具体的细节,也没有什么好说的

蜂鸣器

可以复用的代码,最后输出的是角度信息

蜂鸣器

代码的端口先重置一下

蜂鸣器

后面设置PWM的引脚

蜂鸣器

初始化ADC功能

蜂鸣器

捕获中断

蜂鸣器

蜂鸣器

这个读取陀螺仪的静止误差是写到EEPROM里面的

蜂鸣器

四轴上电待机:上电后,航灯不亮,接收机LED闪烁,此时打开遥控器,将左右油门下拉到最小,接收机收到信号LED常亮。

在一个大循环里面跑俩个任务,一个是解码PPM的具体数字信号,二是在中断里面检测一些特殊的打杆指令进入一些功能,还会有电压,蜂鸣器这些功能。

蜂鸣器

这个PPM的解码,很简单

蜂鸣器

通过算里面的脉宽来决定杆量

蜂鸣器

这个就是具体拿到以后校验和装载的过程

蜂鸣器

算好的值加到这里,给PWM输出去

蜂鸣器

8ms???是个8ms的中断吗?

蜂鸣器

定义在这里

蜂鸣器

开始进入校准的步骤

蜂鸣器

这个是电压的测量和蜂鸣器的控制

蜂鸣器

另一段测量

蜂鸣器

最后是上次讲的一个定义

蜂鸣器

这个是串口的处理

蜂鸣器

这个就是串口的发送功能。

 



审核编辑:刘清

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分