Archive for the ‘小制作’ Category

电动滑板手机端遥控程序

各位朋友新年好!祝大家2016新年快乐!好久没有更新了,新的一年希望尽快把攻略补全 :)

很多朋友都比较关注手机端的遥控代码,这部分代码我确实很久没有碰了。因为自从做了鸡腿遥控器,发现这玩意儿比手机好用太多了。但是话说回来,毕竟做一个遥控器还是要花不少时间和精力的,如果手头正好有Android手机,确实会方便不少。

先把链接贴出来吧:
只想下载安装包使用的朋友点这里下载: http://7xic5x.com2.z0.glb.qiniucdn.com/NXTRemoteControl.apk

有兴趣查看源代码自己改进的朋友,请下载全部代码:http://7xic5x.com2.z0.glb.qiniucdn.com/skywalker.zip
说到这里,还必须多说两句。曾经有人加我的QQ,要了安卓代码以后,问了一些这样的问题:安卓开发环境怎么搭?这个怎么打开?Java代码怎么写?
这样的同学以后就别来问我了,入门的东西需要自己去学。毕竟大家都很忙,谁也没精力当义务教师啊,而且还是一对一的……
这个代码是我从一个控制乐高NXT的代码里面改过来的,所以名字还是NXTRemoteControl,请无视。主要的代码文件有这几个:
1. NXTTalker.java 这个类主要用于蓝牙通讯,包括连接、断开、发送和接收。
其中发送命令的部分代码为:
    public void sendCmd(byte cmd) {
        byte[] data = {cmd};
        write(data);
    }

    private void write(byte[] out) {
        ConnectedThread r;
        synchronized (this) {
            if (mState != STATE_CONNECTED) {
                return;
            }
            r = mConnectedThread;
        }
        r.write(out);
    }
实际上write函数可以一次发送多个字节,在这个程序里,控制转速需要的命令太简单了,所以我把sendCmd改成只发送一个字节。
2. NXTRemoteControl.java
这个类主要是处理各种逻辑,例如:获取手指在屏幕上的坐标,换算成速度或者刹车力度;显示各种配置界面等;如果是调试的话还可以记录一些log。
其中大家比较关注的触屏事件代码如下:
    public boolean onTouchEvent (MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN: // 手指按下
        case MotionEvent.ACTION_MOVE:  // 手指移动
            int x  = (int)event.getRawX();
            int y = (int)event.getRawY();
            int viewWidth = getWindowManager().getDefaultDisplay().getWidth();
            int viewHeight = getWindowManager().getDefaultDisplay().getHeight();
            if ( 1.0 * x / viewWidth > 0.9) {
                if (!hornOpen) {
                    mNXTTalker.setCtrlValue(204, 1);
                    hornOpen = true;
                }
            } else {
                if (hornOpen) {
                    mNXTTalker.setCtrlValue(205, 1);
                    hornOpen = false;
                }
            }
            int offset = viewHeight / 6; // Use 20% as empty zone
            int power = 100 - (y - offset) * 100 / (viewHeight - 2 * offset);
            power = Math.min(100, Math.max(0, power));
            mNXTTalker.setCtrlValue(power, 1);
            if ((inLowPowerArea && power > 53) || (!inLowPowerArea && power < 47)) {
                Vibrator mVibrator = (Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);
                mVibrator.vibrate(200);
                inLowPowerArea = (power < 50);
            }
            break;
        case MotionEvent.ACTION_UP:// 手指抬起
            mNXTTalker.setCtrlValue(255, 1);
            //手指抬起后轻带刹车
            //mNXTTalker.setCtrlValue(50, 1);
            break;
        default:
            break;
        }
        return false;
    }

3. ChooseDeviceActivity.java \ LightActivity.java \ SettingActivity.java
这三个文件分别对应连接蓝牙设备,设置灯光,设置最高转速 三个界面。

指令规则:
这里说的指令规则,就是遥控端和接收端的通讯协议。一个比较好的协议,应该有较好的容错和扩展的能力。但是对于遥控电滑板来说,目前需要控制的参数还很少,所以用了非常简易的规则:a. 每次发送一个字节,也就是说数据永远是0~255之间的一个数;
b. 没有任何操作的时候,发送50,对应的遥控器放在中点位置,既没有动力,也没有刹车;
c. 51~99 表示加油门,数字越大代表动力越大,对应手在屏幕上向上推;
d. 0~49表示带刹车,数字越小表示刹车越重,对应手在屏幕上向下拉;
e. 100~200 设置最大油门比例,例如滑板收到一个指令150,会把 150-100=50 作为油门推到顶的动力值;
f. 201 ~ 203 灯光设置,分别对应:永远亮、永远灭、根据环境光线调节;
g. 204 开喇叭,205 关喇叭

规则很简单,但是扩展性不是很好,也没有校验,有兴趣的同学请自己修改吧 :)

电动滑板攻略 – 传动和连接

对于技术宅来说,最麻烦的事情莫过于加工零件了,因为大部分人家里不会有车床铣床这样的加工工具。

而电动滑板的改装,机械传动几乎必不可少,目前大部分的方案是用一对儿同步轮来减速,另外需要一个支架把它们固定住。如果你跟我一样喜欢干体力活,可以尝试自己动手加工一点儿东西,如果没有条件的话,也可以去某宝买定制的器件。
首先说同步轮,同步轮需要固定在原来的轮子上。我选用的是8352的聚氨酯耐磨轮,其中8352的意思是直径83mm,厚度52mm,一般来说菜鸟喜欢大轮 :)
8352滑板大轮

8352滑板大轮

一般来说,卖轮子的地方都会卖轴承,因为不同价格的轴承质量差别很大,所以卖家一般都会把两个分开卖。默认的滑板大轮轴承尺寸是 8mm*22mm*7mm(内径*外径*厚度),这样的轴承是刚好装进轴承座的。
需要注意的是,我们需要固定同步轮,所以可以额外买一个厚一点儿的轴承,例如8*22*9或8*22*10的。用于固定同步轮。
定制的大同步轮

定制的大同步轮

我选用的同步轮大轮是66齿的,这个齿数的轮子,正好比滑板轮小一点儿,而且大吉大利 :)
标准的同步轮,是没有前面这个凸起的,也没有螺丝孔,所以这个就需要找卖家定制,可以用下面的图纸,其中只有下面的一侧有齿轮挡边,未来安装的时候才比较方便:
同步轮图纸_新

同步轮图纸_新

这个凸台正好可以卡到之前伸出来的那个轴承上
固定好的同步轮

固定好的同步轮

另一端需要用螺丝固定,同样需要加工一个圆片,因为这个件受力不大,主要用于固定位置,所以可以直接用3D打印来做一个。
3D打印的垫片

3D打印的垫片

组装之后,大同步轮就被牢牢的固定在滑板轮上了。
固定齿轮

固定齿轮

接下来需要把大轮、小轮还有电机都固定到滑板的支架上。这个我前前后后做过好多个版本,最初是用钢导轨一点点打磨成支架的样子,后来也画过图纸请卖家加工:
电机支架

电机支架

总的来说,做支架是非常考验耐心的活,你可能磨了两个小时,手一抖磨多了,这个件就成了废品。肯定有同学会问,这么一个片,该怎么固定在支架上呢?
一种方式是把支架做厚一点儿,然后从侧边拧上螺丝;另外一种方式是用环氧树脂的胶粘住它,或者直接用电焊焊死。
卖家还会对应的给你配一个后桥支架,下单的时候要告诉卖家车多少轴距,如果用8352大轮的话,建议车43mm。
改造的后桥

改造的后桥

小轮我用的是18齿的,如果你想跑的快点儿,就用更多的齿数,想跑的慢点儿,就用更少的齿数(小于16齿就没法做了,因为电机的轴是8mm,不能再小了)
组装以后的效果是这样滴:
安装好的结果

安装好的结果

———————————–
回到目录点这里

电动滑板器件清单

终于到了大家最关注的器件清单了,电滑板的方案非常非常多,作为DIYer,很多时候需要选择适合自己的器件。比如我改装活力板的时候,就使用了电动自行车的电调,还有越速400W的有刷电机,因为后轮很大;后来改装滑板的时候,因为轮径很小,就改用了无刷电机的方案。这里的器件清单是我测试过,比较好用的方案,其中有些器件并不一定是最优的,仅供大家参考。大部分器件在万能的淘宝都可以搜到,因为价格波动比较大,我就不推荐链接了。

1. 滑板

之前讲过了:长板、双翘板、小鱼板,根据喜好自己选择。

2. 海鸥架

海鸥架也有不同尺寸的,改装电滑板最好用长板的海鸥架。下面这个图里的海鸥架,其中右边的那个带法兰盘(就是那个凸台),是专门用来安装电滑板的。可惜现在这种支架已经买不到了,只能用左边那种标准支架来改装了。

海鸥架

海鸥架

3. 电机 (推荐型号:N5065)

我选用的电机是N5065无刷电机,其中5065表示电机的直径是50mm,长度是65mm。N表示电机型号,具体代表什么我也不清楚,下面是N5065和C5065的对比:

无刷电机

无刷电机

可以看到,N5065的屁股是平的,C5065的屁股是尖的,相对来说 N5065的功率会大一些,当然价格也要贵一些。
需要注意的是,这些电机几乎都是为航模设计的,所以特性跟滑板的需求并不一致。航模应用里是带动螺旋桨,转速越高的时候负载越大。而电滑板在启动的阶段阻力非常大,一旦跑起来的之后阻力会突然变小,之后才又随着速度增加而增大。所以电动滑板在启动之后经常会有一个突然加速(美国那边一万多块钱的boosted board也这样),请大家务必要小心。要解决顿挫感,可能唯一的办法是换大轮子和大直径的电机。

有些同学可能会觉得N5065比较贵,实际上我试过很多电机,以我的体重70公斤为参考,C5065、C5055、N5055这些电机都可以带动。启动的时候会有一些区别,功率小的电机,启动的时候会比较费劲。如果你体重比较轻,可以试试小号的电机。

电机还有一个重要参数叫KV值,所谓的KV值就是电压增加1伏的时候,转速增加的数量。简单的说:KV值越大转速越快。那么问题来了,KV值是越大越好呢,还是越小越好?对于咱们的电滑板来说,基本上是越小越好,因为电机的转速对滑板来说太快了,遥控器基本上没有机会推到头。我一般选用的是KV270左右的电机,假如最高时速是25公里,那么选用KV400的电机,最高时速就可能达到37公里,这个速度摔倒的话基本就得去医院住一阵子了……

4. 电调(推荐型号:150A)

电调

电调

电调的全称是“电子调速器”,它的作用是调节电机转速。遥控器或手机发出的控制信号,是通过蓝牙传给单片机。单片机的功率非常小,带一个玩具小马达还凑合,带动滑板这么大的家伙,就需要电调了。电调最主要的参数就是电流,比如80A,150A。这个值显然越大越好,当然也是越大越贵。

我刚做滑板的时候还是冬天,那会儿先买了个80A的电调回来测试,发现还挺好用的。接着春天到了,万物复苏,阳光明媚,电调爆了……
在公园里跑着跑着,滑板下面直接开始冒绿色的明火,呼呼的开始烧。换一块烧一块,几天功夫烧掉了3块。这才知道是因为气温升高,散热不如冬天好了。
随后我换了一个150A的电调,具体型号是 QuicRun WP-8BL150,之后就再也没有烧过了。

有一些朋友说120A的应该也可以用,不过我没有试过。不是因为有钱任性,而是之前烧怕了,如果有用过120A电调的朋友,欢迎分享一下自己的型号和经验。

5. 电池 (推荐6S 5200mAh锂电池)

锂电池

锂电池

锂电池的种类也有好多种,我选用的这种是航模用的锂电池,6S表示是6片锂电池串联而成,江湖上的黑话叫“六串”。每片电池充满电的时候是4.2V左右,整块电池是25.2V。随着电池的使用,电压会逐步下降。电压过低会严重影响锂电池的寿命,所以建议在3.5V时就要开始充电,如果低于3V的话基本就算是废了。后面的程序部分,我会介绍如何在板上采集电池电压,然后在低电量的时候让喇叭发出滴滴的警报。

6. 充电器  (推荐 B6)

B6充电器

B6充电器

这种锂电池需要使用专门的平衡充,最常见的充电器就是这种B6充电器。充电略有点儿麻烦,需要稍微设置一下。

7. 传动结构(需要定制)

电滑板传动结构

电滑板传动结构

目前常见的电滑板方案,都是一对减速齿轮,用皮带连接,通过一个支架安装在轮子上。
我选用的齿轮比是大轮66齿,小轮16齿,用15mm*232齿的皮带连接,传动比大约是4:1左右。

支架的安装是个麻烦的事情,对于有法兰盘的海鸥架,只需要用一个片来连接就行,在该打孔的地方打上孔。如果不定制的话,也可以自己动手磨。我收集的百宝箱里有一段钢制的导轨,最初两个版本的支架,就是用砂轮磨出来的。其中那些奇怪的曲线,是因为钢轨打孔非常困难,只好用砂轮从外面掏进去。

手工打造的电滑板固定架

手工打造的电滑板固定架

8. 轮子 (推荐83mm*52mm长板轮)


滑板的轮子尺寸种类都很多,对于电滑板来说,平稳非常重要,所以轮子需要大一点儿。需要注意的是,很多店家卖轮子的时候,是不包含轴承的,因为轴承这东西价格差别很大,专业的玩家可能使用的轴承比轮子还贵。这个就看你的不差钱程度啦。

另外还需要注意的是,7里面的传动结构,跟轮子和海鸥架都需要配合,所以最好等海鸥架和轮子都到手之后,量好尺寸,再开始定制同步轮和支架。

9. 控制板 (自己做)

控制板是在滑板上的,用来接收信号和控制电机的部分。它的核心是一块Arduino单片机,通信部分是一个蓝牙模块。

电滑板控制电路

电滑板控制电路

这是我的长板上的控制部分,这个板子可以接两个电机,上面还带了电池电量检测、环境亮度检测、灯带、警报喇叭等功能。这一部分需要的零七八碎的部件比较多,统一和遥控器的清单列在最后面。在后面的攻略里,会发出原理图,有兴趣的同学可以去照单采购。强大的HelloPlanet同学做出了PCB板(后面提到的遥控器板子也做了),患有电路恐惧症的同学,也许可以直接购买(暂时没有淘宝链接,先看看有没有同学需要吧)

10. 遥控器

如果你手头有一个android手机的话,其实完全可以不需要遥控器,很多人会担心手机操控不方便,玩滑板的时候怎么能看着手机呢?
其实不用担心,我的APP做成了全屏界面,你完全不需要看着手机,直接用手在屏幕上下移动就可以了。上半屏幕是加速,越往上速度越快;下半屏幕是刹车,越往下刹车越重。手指头越过中间的区域时,我会让手机震动一下,就知道是过了中点了。

电滑板遥控程序(Android)

电滑板遥控程序(Android)

如果你是土豪型的iPhone用户,或者觉得手机的手感不太好,或者怕紧急情况下把手机摔坏,也可以做一个手持的遥控器。跟它对比的是常见的枪式车模遥控器,这个枪型的东西其实用户体验很糟糕。扣板机是加速,向前推扳机是刹车。问题是遇到紧急情况时,很多人下意识的反应是握拳,反而会出现危险。

手持滑板遥控器

手持滑板遥控器

手持的遥控器,主要部分也是由Arduino和蓝牙模块组成(遥控器的蓝牙需要使用主设备,滑板上的使用从设备)。具体的原理图和器件清单,我也会在后续的攻略中陆续发出。

~~~~~~~~~~~~~~~~~~这是一条分割线~~~~~~~~~~~~~~~~~~~~~~

控制板和遥控器中使用的器件清单,有些略有调整,不一定都更新在里面了。

我写攻略比较啰嗦,所以更新的比较慢,大家不要着急。这里是目录页,我每写一篇就会更新到这个里面。

自制小电棍

最近貌似世界很不太平,恐怖袭击咱就不说了,居然去吃个麦当劳都有风险。一直打算买个电棍防身,但是这玩艺儿属于管制物品,不太容易买到。

其实电棍的原理很简单,主要是靠特斯拉线圈(或者马克思发生器)来升压,而这种高压模块是很容易买到的,所以干脆DIY一个。

首先遭到迫害的是家里的擀面杖,锯下一节以后削成锥型,然后用电钻打孔,最后拧上螺丝:

电击头

电击头

万一不幸遇到歹徒,这两根尖尖的螺丝可以扎透衣服,保证电的他爽歪歪……
需要注意的是,两个电击头之间最好再接出一小段尖端。这是因为高压模块的内部电压很大,如果电流不释放出来的话可能会损坏内部原件。所以一般电棍的设计都会用一对小尖端来放电,真正用在歹徒身上的时候,因为人体电阻远小于空气电阻,所以电流会从人身上流过。

接下来把高压模块的输出端跟这两根螺丝焊上:

焊接高压模块

焊接高压模块

有经验的同学肯定知道,螺丝一点儿也不好焊,它的表面太光滑了。最好先用锉刀把尾部打毛一点儿,不然焊头一拽就掉。焊完之后要用热胶枪把焊头封上,不然这里也是一条放电路径。

换个角度看一下:

焊接高压模块2

焊接高压模块2

电池用的是从废弃笔记本电池里拆出来的18650锂电池电芯。因为高压模块放电时的电流可能有1~2A,一般的电池撑不住。需要表扬的是电池厂家,我这个笔记本已经闲置5,6年了,这次抱着试试看的心态拆开看了下,居然还可以用!

废弃笔记本电池中的18650电芯

废弃笔记本电池中的18650电芯

接下来用保鲜膜中间的那个卷轴来做“模拟”,主要是看粗细手感是否合适,另外看看多长比较合适。

用纸筒先做一版

用纸筒先做一版

纸筒测试大概可行之后,改用钢管。这次被迫害的是家里的废弃晾衣杆,被我切了一段下来。这也是先用纸筒的原因,不然切一截下来长度不够就悲剧了。

切下来的钢管

切下来的钢管

打孔位置也是参考纸筒的原型,钢管的长度略长了一点儿,感觉抡起来更有力一些 :)

电池盒是用纸卷起来的,过程中忘了拍照,后来固定在钢管里取不出来了。反正也不麻烦,就是用A4纸把两节18650电池卷起来,用胶水一层层的涂上,最后把一圈弹簧用绝缘胶布和热胶枪固定在纸筒的底部。

电池筒

电池筒

钢管的好处是它本身就是导电的,所以我把高压模块的负极输入直接焊在了钢管的内壁上,这样电棍的尾部只需要把电池和钢管连上就好。

但是做这个后盖花了我好多时间,因为咱们最常见的螺纹后盖,对家里DIY来说简直太困难了,这里只能想了一些歪招:把钢管的尾巴切出很多小片,弯成圆形,注意留出两个缺口;然后把一枚硬币从缺口塞进去,被弹簧压上之后就固定住了。

一块钱的后盖

一块钱的后盖

为了美观,用一片强磁铁吸在后面:

强磁后盖

强磁后盖

最后的总体效果是这样:

最终效果

最终效果

我制作的小电棍放电的时候是这样,是不是有种吓尿的感觉 :)

放电啦

放电啦

据完全不可靠的小道消息说,这种电棍要尽量电四肢或肚皮,会导致瞬间瘫倒抽搐,几分钟之内失去行动能力。如果电到心脏附近或者头部,则可能有生命危险。

非常可惜的是没有志愿者愿意体验一下,所以还不知道实战效果如何。不过万一万一真的不幸遇到暴徒,估计哪里顺手就戳哪里吧 :)

至于电路原理图就不画了,跟手电筒没啥区别,就把高压模块的两个输入端当成灯泡的两头而已。

电动滑板车升级版

上次做完两轮的电滑板之后,总结了几个问题:

1. 比较难学,两个轮子的一般人需要练习半天才能学会;

2. 太重,铝合金的板子+直流大电机,总共有12公斤,提着真是累。

3. 轮子太大,重心太高

两轮滑板巨大的电机

两轮滑板巨大的电机

考虑到圈圈妈甚至圈圈小朋友将来也可能会玩这个电滑板,我决定继续改进它。所以就出现了四轮的轻便版,总重量不到5公斤,小圈也可以抱的动了。因为四个轮子,所以直接站上去就可以玩,不需要启动跳车。而且拐弯比想象中的还简单,原来滑板的海鸥架是可以转向的,把身体重心偏移到一边就可以转弯了。

主要有以下修改:

1. 电机改用了无刷电机

2. 链条齿轮传动改为皮带轮传动

3. 铝合金的滑板改为标准的木质滑板

4. 轮子尺寸缩小。

至于电池,还是保持了之前的航模专用liPo电池,这个电池真是很给力。体积小力气大,唯一的缺点就是充电要用平衡充,略麻烦。

四轮的蓝牙遥控电滑板

四轮的蓝牙遥控电滑板

上路试运行

上路试运行

最后感谢圈圈妈帮忙给剪辑了一段很有意思的视频。

【小制作】DIY电动滑板车

去年谷歌眼镜刚出的时候,我就心痒痒的:“呦,柯南的眼镜出现了,这个太高端搞不定,要不弄个电滑板玩玩?”

真正开始动手是一个月前的事情,一直想等四轴搞定了再玩这个,结果一拖就是大半年。最后想想,还是follow my heart,想玩一个东西的时候还是赶紧出手,省的心劲儿过了就没动力了。这种劳民伤财的事情,一般要跟圈圈妈合计一下,结果圈圈妈说“靠,这么好玩的东西,赶紧做一个去!”

于是就开始选各种轮子、电机、电池等材料,因为工作确实比较累,所以依然是每天半小时的方式进行蚂蚁搬家式的制作。贴几张照片和视频,公园里试运行:

公园里试运行

侧面图

侧面图

底部是改装的重点对象:

滑板车底部
最终做的还挺结实的,经验证160斤的同学站上去没有问题。具体实现是通过Android手机通过蓝牙,把信号发给Arduino板子,最后通过调速器控制电机转速。
虽然原理非常简单,但是制作起来可是没少花功夫。比如那些支架,用锉刀挫的胳膊都粗了……

视频:

微型四轴加电机的简单尝试

这段时间比较萎靡,工作忙,身体状态也不太好,基本上处于停滞状态。上次大家提了很多好建议,比如换模块、换电机或自制PCB等等。zxzxy1988同学还给我发了制板的软件和教程,另外还有焊接的技巧,真是非常感谢。

因为时间有限,我暂时还没有尝试这些建议。当时答应darkorigin做一个简单的加电机的实验,就是把4个电机换成8个,今天算是有个回应。其实就是简单的并联,把另外4个电机直接用胶棒粘到原来的4个电机上,大头朝下,转向相反。

加上去的电机

加上去的电机

拖拖拉拉两个星期,今天终于下决心把这些电机们焊上了(主要是到了晚上就迷迷糊糊的:D ),看上去非常非常非常的山寨……

“8桨”飞行器

“8桨”飞行器

加上4个电机后,飞行器重量从46克变成了58克。刚才试飞了一把,这次居然真的离地了,但是需要把马力开到最大。
因为上下两个电机互相干扰可能有些损耗,所以估算每个空心杯电机的升力大概是10克左右。

目前我还没有加上读传感器和调节转速的代码,所以只是简单的试了试能否起飞。把马力调到最大后,小四轴摇摇晃晃的升起来。比较神奇的是,虽然没有平衡的程序,但是它基本是水平的,没有像大四轴那样翻滚直接坠毁。不过依然会侧飞,然后撞上了墙壁,最后掉进橱柜下面一阵乱撞。从照片里可以看到打坏了一个小叶片,不过说实话,小四轴比我想象的结实多了,这样乱撞居然只坏了一个小叶片。

总体来说,如果最大马力才能够勉强升空的话,基本上靠它调节平衡是不行的,因为转速没有调节的范围了。另外一个可能的结论是,小四轴的平衡性会比大四轴好一点,如果能顺利升空的话,也许调节起来会比大四轴容易些。

这次小四轴的尝试基本算是失败了,接下来可以考虑给它减肥。比如某位朋友说的,把arduino nano换成mini版;另外蓝牙可以不需要那个降压模块;3.7V到5V的升压模块应该用一块芯片就可以搞定;那个低电量报警的小喇叭改用一个闪烁的led;传感器导线可以改用漆包线;背后那个支架PCB如果是自制板的话,应该也可以减少部分重量。如果体重能够减到30克以内,估计升空应该就没问题了。
另外的想法是考虑再大一点的空心杯电机和螺旋桨,一个顶现在两个的。假设升力能到60克,然后把体重控制在40克左右,这样将来还能挂载点其他配件。接下来准备买几个其他型号的小电机测量下升力,另外学习下画PCB。哎呀,又将是一个大周期……

微型四轴又失败了

花了两周的时间,磨磨蹭蹭才做好了一个小四轴。这次连平衡的问题都不用考虑了,因为手工制作的原因,重量达到46克,4个空心杯小电机根本就带不起来 :(

体重超标的微型四轴飞行器

体重超标的微型四轴飞行器

制作前把各种芯片和电机电池散件称了一下,大概36克左右,还抱有一线希望。全部焊好后重量增加了10克,在代码中把4个电机都设置成100%的动力,试了一下。结果是在平地上晃晃悠悠,根本起不来。

这个小飞机里面,比较大的三个模块分别是arduino nano、蓝牙、9轴传感器(陀螺仪+加速度+气压计+指南针)其中每块小板子貌似都是几克重,不知道该从何减肥了。想来想去,只有一个3.7V到5V的增压电路,和一个用于低压报警的蜂鸣器,这两个也许是可以去掉的。但也只有5克左右,效果有限,带来的问题是各种芯片在低于5V的电压下工作,不知道能否稳定读数,另外电池可能用到完全没电,很容易损坏。如果一开始的时候做成一体的PCB板,也许能把体重控制到30克左右,这样才有希望飞起来。

焊接依然是我的弱项,不会画PCB很是伤不起啊,从背面看各种凌乱的飞线。

各种凌乱的飞线

各种凌乱的飞线

哎呀,真是折磨人啊,快坚持不下去了……

又一次悲剧的试飞

在闲置了一个多月之后,今天又进行了一次试飞。首先说说最近的修改:

1. 把电机控制的频率改到了400Hz,之前是50Hz;
2. 把螺丝固定的Arduino板子改成4个弹簧支撑,用来减少电机高频振动对传感器的影响;
3. 顺便把45度安装的X型改成了垂直安装的十型,作用不大,节省一点代码和减少可能出错的环节;
4. 尝试增加一个自动调节平衡位置的代码;(好几个参数需要调节,都调准了才能飞稳)
5. 加了一个安全的控制,如果飞行器倾角超过45度,则所有电机同时停止;

传感器改用弹簧连接

传感器改用弹簧连接

用手握的方式测试看来,目前四轴飞行器的姿态判断还算可以。基本上晃动它的时候,能感觉到电机速度的变化以及带来的反向阻力。
所以目前的调试主要在PID参数的调节和XY方向的偏移量调节。这个偏移量,是因为电机和飞行器不对称带来的误差。简单的说,假如飞行器已经处于平稳飞行的状态,这时候计算得到的左右两侧的螺旋桨转速应该相同,但是由于飞机本身的不对称,这时候反而会发生倾斜,所以需要给它设置一个平衡的偏移量。

这几天跟wnq同学请教了一下,据他介绍kk飞控仅用陀螺仪就可以上天,至于陀螺仪长期积分带来的漂移误差,可以由“飞行员”通过遥控器手动调节。我之前一直调试的目标是让飞行器实现平衡自稳,这样说来可能有点儿冒进了。wnq提醒我适当的斜飞是可以通过手动调节修正的,这样可以不用太纠结在完美的水平悬停上

另外最近的新朋友darkorigin也提醒了“近地效应”,因为贴近地面的时候,各种气流互相干扰,反而不如飞上天以后稳定。

下一阶段的一些想法和目标:
1. 暂时放弃手机控制,改用遥控器和接收器进行控制,主要优势在于控制距离、手感和便利性;
2. 增加运动的控制,就是在倾斜状态下手动调节平衡;
3. 进行电子指南针的一组小实验,因为我的遥控经验不足,争取先实现“无头模式”避免炸鸡;
4. 组装一台wnq同学的飞控练练手;
5. 自动寻常平衡点的算法需要再多测试和验证。

最后附上今天悲催的试飞视频。今天有点小风,犹豫了一下还是去阳台试飞了。前40秒使用的PID参数看上去还不算太离谱,之后试着调了下参数,结果振动失控了,摔碎若干小配件……

Bug无处不在……

上周做了个关于Servo库控制电机的小实验,经验证可以把PWM的频率提高到400Hz左右。于是一阵高兴,迅速改好代码,准备周末试飞。

本来计划先做分解实验,拴上绳子一步步测试之后再去试飞。结果星期六刮大风耽误一天,星期天头脑一热,没测试直接去飞了。结果飞机变成炮弹,眼皮还没眨完一下,就已经撞毁在墙壁上了。 :(

回家检查了下程序,果然发现巨大的bug一只。真是心急吃不了热豆腐啊,这个周末需要上班,然后是外地度假7天,再试飞只能是半个月后了。这几天干些乱七八糟的活,新买的4对儿电机电调都焊好了。下次试飞再不成功的话,就准备用wnq朋友的ACM飞控再做一个四轴啦。

另外,如果有电机轴摔弯的朋友,也可以参考wnq推荐的自己换轴的攻略。我试了下,确实比较方便,一根轴才几块钱,相当划算!

无刷电机换轴

无刷电机换轴

另外,还出手了一个JR XG8 2.4G的遥控器,准备下一步把手机遥控改成射频遥控。啧啧,这个东东真是不便宜啊,按照wnq同学的说法,恭喜我上贼船了,不过这个遥控器就我这种级别的玩家,恐怕一辈子都够用了 :)

JR_XG8

JR_XG8

接下来的计划是修改bug等待试飞,闲暇时间学习下ACM飞控和遥控器的使用。