马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 Guc 于 2017-12-29 21:34 编辑
大家好,我是Guc。其实这个帖子前段时间发过了,不过出了点问题,今天从新发。这是[让Minimosd多一个功能]DIY的第三贴,添加的功能一个是辅助通道功能,一个是航行状态灯功能。辅助通道功能主要是有两个舵机输出,一个开关通道(用来控制开关);航行状态灯大家就都知道了,详细功能后面再说。
先来介绍辅助通道功能,这个功能是通过读取osd里的6,7,8通道数据,然后转输出连个PWM信号和一个开关信号。 来看下需要什么材料: 应该只有817光耦可能要买,我也是以前买过,这次试了试可以就用上了,其他型号的光耦应该也可以。光耦817是亿光光电耦合器的一种型号EL817,是一种把红外光发射器件和红外光接受器件以及信号处理电路等封装在同一管座内的器件。当输入电信号加到输入端发光器件LED上,LED发光,光接收器件接收光信号并转换成电信号,然后将电信号直接输出,或者将电信号放大处理成标准数字电平输出,这样就 光耦817实现了“电-光-电”的转换及传输,光是传输的媒介,因而输入端与输出端在电气上是绝缘的,也称为电隔离。这是个很好用的元件,原理图如下:
辅助通道功能视频演示: 视频不知道为什么发不出来,有兴趣的点连接: 我使用了一个LED灯加个按动开关做模拟,当6通道的值大于等于1450时,光耦导通,LED亮。
看下添加的代码: #include <Servo.h> Servo myservo; Servo yourservo; void setup() myservo.attach(9); yourservo.attach(5); pinMode(4, OUTPUT); void loop() myservo.writeMicroseconds(chan7_raw); yourservo.writeMicroseconds(chan8_raw); if(chan6_raw>1400){ digitalWrite(4, HIGH); } else{ digitalWrite(4, LOW); } 主要用的是serve这个库,使用很方便,从上面的代码大家应该知道怎么用了吧。
关于动手做这个部分很简单,看下接线图,图上的舵机输出也需要共地,大家不要忘了接这根地线。 如果有使用数传请把osd TX线去除,因为OSD也会向飞控请求数据,会导致延迟增加很多,现在这个版本舵机延迟比较大,不过用来做投掷器和自动脚架是够用的,不使用数传延迟会小一点。固件会在最后和航行状态灯的固件打包提供下载。
**************************************************************** 接下来介绍航行状态灯,先看下需要什么? 主要通过达林顿2003来驱动,接线和2803是一样的,可以借鉴下面这张图接线。 OSD接线图如下: 看看代码: unsigned long currentMillis = millis(); static long distancepwm = map(osd_home_distance, 0, 500, 50, 255); if(chan7_raw>1450){ if(osd_fix_type>2){ analogWrite(3,distancepwm); analogWrite(5,distancepwm); } else if(osd_fix_type==2){ if(currentMillis - previousMillis >interval) { previousMillis = currentMillis; if (ledState >30) ledState = 0; else ledState = distancepwm; analogWrite(3, ledState); } analogWrite(5, distancepwm); } else if(osd_fix_type<2){ if(currentMillis - previousMillis >interval) { previousMillis = currentMillis; if (ledState>30) ledState = 0; else ledState =distancepwm; analogWrite(3,ledState); analogWrite(5,ledState);} }} else {analogWrite(3,0); analogWrite(5,0);} } 主要使用了Blinkwithoutdelay。因为使用delay会使osd变的很慢。 目前航行灯只有显示GPS的状态的功能,通过读取gps定位信息,当未定位时两路LED灯会闪烁,当2D定位时一路闪烁一路长亮,3D定位两路长亮,并且灯的亮度随距离变化,当达到500米后最亮,最初只有五分之一的亮度。 这只是初步做的,最近没什么时间就先发了,以后还会加一些功能,大家有没什么建议? 固件下载:
辅助通道及航行灯固件.zip
(130.47 KB, 下载次数: 0, 售价: 2 牛币)
还有补充说明一下,我做的OSD DIY是用于多轴的哦。 还有我其他帖子的链接: 【GUC CIY】超声波辅助飞行模块
如果有什么写的不清楚的,其他帖子里有更多内容。 谢谢大家阅贴!
|