抱歉哈各位,刚才没写完就不小心提交了,现在已写完,欢迎大家批评建议
一、概述
本多功能航电系统为CTX Industries团队开发的探空火箭配套设备之一。本款航电系统结合了高点开伞、SD卡记录飞行数据(高度、加速度、飞行时间)、LoRa无线回传飞行数据等多种功能,同时体积较小,PCB尺寸仅为20*33mm,除LoRa模块外,其他元件均集成在PCB上,可以方便地放入小尺寸箭体,具有较好通用性,特发帖介绍。
老规矩,先来团队Logo
二、硬件部分详细介绍
设计方案与元件选型
如上文所述,本航电系统计划具备记录并实时回传高度、加速度、飞行时间数据并进行自动开伞的功能。为了实现这些功能,计划采用ATmega328P-AU作为主控芯片,采用Arduino IDE编写程序;采用BMP180气压计芯片得到高度数据;采用ADXL345芯片得到加速度数据;采用SD卡记录飞行数据并使用LoRa模块(标称通讯距离3km)实时回传数据,使用MCR100-6晶闸管输出脉冲进行点火开伞操作。电源方面,采用两块AMS117芯片提供3.3V电压,为整个系统供电。通信方面,BMP180、ADXL345芯片与主控芯片之间采用I2C接口通信,LoRa模块与主控芯片之间采用UART串口通信。
硬件具体实现
由于需要能够放入小尺寸箭体,本航电除晶闸管外均采用贴片元件,并尽量使航电PCB小型化。同时为了使航电在箭体内部得到有效固定,在PCB两端设计了类似于榫卯结构的部分,可以插入带有缺口的固定座中。PCB Layout图及3D图、实物图如下。
PCB正面2脚排母为点火脉冲输出,背面2脚弯排针为供电排针,6脚排针为LoRa连接排针。
PCB Gerber文件在附件1中。
开发过程中遇到的问题
(1)第一次PCB打板后,发现SD卡无法正常工作,后来发现由于原理图中网络名称输错导致SD卡时钟引脚与主控时钟引脚实际未连接。第二次打板时该问题得到了修复。
(2)第一次打板后,发现LoRa模块一启动,主控芯片就会自动复位。分析得出原因为LoRa模块功率过大,启动后电源电压下降,同时主控芯片RESET引脚上的上拉电阻阻值过大。第二次打板时使用了更小阻值的上拉电阻,问题得到修复。
三、软件部分详细介绍
开发环境与外设操作
本航电使用Arduino IDE对ATmega328P-AU芯片进行开发,原因十分简单:楼主的STM32开发尚处于初级水平。以后会加强学习,争取能用功能强大的STM32开发电子设备。
扯远了,说回来。。。
在操作硬件外设时,使用SD卡库操作SD卡,使用SparkFun开发的ADXL345库与BMP180库操作相应芯片,使用UART库操作LoRa模块,实现相应功能。
代码详细介绍
第一部分(1-26行):加载库文件,定义全局变量;
第二部分(28-61行):对外设进行初始化;
第三部分(63-97行):调用CollectData函数记录并回传数据,根据函数返回值判断飞行状态(静止,上升,下降),并根据飞行状态操作指示灯、进行开伞等;
第四部分(99-152行):CollectData函数,以每秒约8次的速率写入飞行数据至SD卡,并以每秒约2次的速率回传数据。选择较低的书局回传速率是为了减小功耗,避免电池(3.7V锂电池,仅650mAh)在降落前耗尽;
第五部分(154-168行):从BMP180及ADXL345芯片读取数据;
第六部分(170-183行):根据飞行状态进行点火操作;
第七部分(185-241行):从BMP180芯片读取气压温度,并计算为相对高度。
Arduino源代码在附件2中。
四、备注
此项目为开源项目,可以转载,转载时必须注明原作者(CTX Industries团队)。
感谢团队同志们的宝贵意见与支持!@TonyStark @Marx
如有不足或错误之处,欢迎大家批评斧正!
附件:
[修改于 3年4个月前 - 2021/08/15 19:23:56]
补充一下,LoRa模块为泽耀A39,标称通讯距离3km,两个模块之间透传传输,速率9600bps,地面LoRa模块接受箭上LoRa模块发来的数据后通过串口转USB模块传至作为地面站的笔记本电脑上。
(左侧为箭上LoRa,右侧为地面天线与LoRa,箭上天线增益3dB,地面天线增益12dB)
晶闸管有点小,需要小电流的点火头。晶闸管不能关断。电路上没有联锁保护,要当心上电瞬间出现误发火。那个天线12dB是不可能的。做好以后一定要进行拉距离实验然后才能装箭使用。
晶闸管有点小,需要小电流的点火头。晶闸管不能关断。电路上没有联锁保护,要当心上电瞬间出现误发火。那个...
感谢虎哥指教,晶闸管确实是选小了,不过实测市售的红色点火头能点着,以后设计时会选大电流的。晶闸管可以关断啊IO口输出低电平就关了,开伞时是输出0.5s的脉冲电流。误发火确实会出现...很蠢的解决方法是上电后再插点火头,不过确实很不安全,以后会改进的。那个吸盘天线卖家标的是12dB,可能是虚标(?)苦于手头没有测试设备... 虎哥能否指教下这种情况如何判断?感谢!距离测试已做,实测市区道路下通讯距离可达2.1km左右,可以满足探空火箭的要求了。
再次感谢虎哥批评哈!
感谢虎哥指教,晶闸管确实是选小了,不过实测市售的红色点火头能点着,以后设计时会选大电流的。晶闸管可以...
晶闸管半控型器件,不能关断。应该是你的测试条件有问题。
选两颗mos吧,加个驱动好用不贵。
晶闸管半控型器件,不能关断。应该是你的测试条件有问题。选两颗mos吧,加个驱动好用不贵。
啊...我查了一下好像确实无法关断但是实测确实输出低电平就能关断...不晓得是咋回事儿
啊...我查了一下好像确实无法关断😅但是实测确实输出低电平就能关断...不晓得是咋回事儿
应该是你测试条件的问题。
DMN10H099SFG
随手筛了一下,这款mos看起来不错,不知道买不买的到
mos的话,栅极外接一个小一点的下拉电阻就能防止意外的开启了。?你可以试试
如果用驱动芯片的话,使能输入端接下拉就行了
应该是你测试条件的问题。DMN10H099SFG随手筛了一下,这款mos看起来不错,不知道买不买的到
那估计就是我测试条件不对劲...
这款管子真挺棒,电流也蛮大,谢谢大佬推荐!
那估计就是我测试条件不对劲...这款管子真挺棒,电流也蛮大,谢谢大佬推荐!
不一定买的着
选他主要图他小封装,比较小的栅极电容,挺高的耐压和电流
选个类似性能的都行,最好找找那些爆款的,好买、便宜
可控硅在电流小于维持电流的情况下是可以关断的。用万用表测量,阻抗通常达到1MΩ,电流很小,故可关断。在选用器件时,需要对器件的特性有深入的理解。
单用MOS管也不稳当,上电瞬间各部分的电压电流关系与稳定后不同,可能某一时刻就是要导通的,因此对上电时序有要求。稳妥起见还应该与第二套电路有联锁保护,例如没发射时,另有开关分断点火回路。甚至在长征的发射中,极个别情况下依然允许用拉绳剪线之类办法确保不出事。楼主上电后再接线,办法并不算Low。
点火电流较大,对电压有冲击,一般宜使用单独的电池,使点火电路隔离。
LZ的PCB绘制能力有待提高...看起来从头到尾都是一个线宽,还有各种直角走线.不知道LZ的这个电路有没有高频大电流,至少看起来是完全没考虑EMC.
不知道点火系统能不能用NMOS带法拉电容放电.上电时电容没电,然后通过RC充电,一段时间(可以调整时间常数)后达到额定电压允许发射.
鉴于atmega变得好贵,建议lz用国产stm32 - 配合arduino ide绕过各种编程器限制(前提是1:1完全兼容的国产化)
点火部分想了个烂主意——做一个类似半桥的玩意,低侧开关默认打开。若是高侧开关故障,电源短路,系统进入过流保护。至于判别故障还是开伞——就有些复杂了(感觉这个系统越简单越好)
楼上的办法好,可以考虑给mos的驱动芯片的使能引脚接rc延时,控制部分成功上电之后驱动芯片才能够动作。
可控硅在电流小于维持电流的情况下是可以关断的。用万用表测量,阻抗通常达到1MΩ,电流很小,故可关断。...
谢谢虎哥,以后设计会用保护电路+mos的方案。这次点火和设备是同一块电池,因为箭体内部空间不太够,以后大箭体空间够就会做成独立点火电池。
LZ的PCB绘制能力有待提高...看起来从头到尾都是一个线宽,还有各种直角走线.不知道LZ的这个电路...
pcb是用的自动布线...布线挺乱的,抱歉哈
点火系统这个方法确实好,谢谢大佬
引用GiroPetrenko发表于13楼的内容鉴于atmega变得好贵,建议lz用国产stm32 - 配合arduino ide绕过各种编程器限制...
啊...atmega328也就十块钱一片左右...国产gd32f103c8t6要二十来块
点火部分,楼下大佬的方法好像更好(?)
STM32配合HAL库+CubeIDE图形化界面配置,不会比Arduino复杂很多,而且性能和扩展性都是吊打
STM32配合HAL库+CubeIDE图形化界面配置,不会比Arduino复杂很多,而且性能和扩展性...
嗯嗯,最近正在学stm32,等水平够了就会用stm32开发设备的不过stm32的I2C好像有点玄学...有的设备能用,有的就不能用,大概率是我水平问题
嗯嗯,最近正在学stm32,等水平够了就会用stm32开发设备的😀不过stm32的I2C好像有点玄...
有些设备的硬件I2C确实有问题,ST官方专门发过一个库解决硬件I2C问题。
200字以内,仅用于支线交流,主线讨论请采用回复功能。