我的DIY——智能小车制作全过程

1年前 (2024-04-21)
我的DIY——智能小车制作全过程ianchio 退休后,早几年体力尚好,热衷于做些精细木工,现今就喜欢安坐写字枱,做些电子玩意,特別是单片机的制作应用。
单片机集硬件制作,电子线路和逻辑编程于一体,做起来饶有趣味,很少体力活,很多动脑活,很适宜我这个接近老年痴呆的残脑。
现在就把我制作一架智能小车的全过程向大家介绍一下。
下面这架就是我在美国旧货店里几经挑选仅花0.3美元买来的遙控车。
我打算利用其外壳作为我的小车外壳 其实我一直想做的是一个机械人,但机械人的零件非常昂贵,对机械加工要求也十分高,所以转而想向做架智能小车来玩玩。
智能小车大部份同好做的都是循跡模式,地下画好迷宮白线,用数对红外线光电管发射接收管来获得小车是否偏离白线,进而微控小车左右轮不同的转速来纠正偏向,我觉得家中无端端贴上白线来玩,实在无趣,另一方面,红外线对黑色物体不能反射,使得除了循线行走外,没有其他的玩法,略嫌单调,所以我打算用超声波发射组件来测定离周围环境的距离,达到自由行走避障,我稍后会讲,用计算距离的算法可以玩很多花样,比较耐玩。
有了初步决定后,想起了美国的旧货店经常有很多遙控车称重量卖,先买二部来看看可否利用作为车身: 这是我化每架0.3美元从旧货店买来的二部车,紫色的有12吋,蓝色的有10吋,都很大。
想当年我儿子小时候,拥有一架无线遙控车曾是每个少年的梦想,可是那价钱却要五六百元甚过千,限于经济能力,却是我当时不捨得买给他的。
但這二架车都不我要求,取下了几个车轮备用,淘宝上要卖4元半一个,已值回了。
只得再去一次旧货店,买了一部圆嘟嘟的小车,觉得很心意,长度仅七吋,小巧可爱: 这架车也是三毛钱,上面二盞探灯还有发光二极管,但成色略旧。
打开一看,原来是伪四轮驱动的,每一侧的前后轮是由同一马达驱动,通过变向減速齿轮使前后轮转向一致,没有如同上二部那样的转向结构,而是通过二马达不同的转速比来转弯或原地旋转。
掀开上蓋,可以看到有一个三节5号电的电池盒,还有个白蓋蓋住。
我把电池盒锯走,放入二颗镍氢电池,串连后可有7.2伏,动力比较充足点。
相比镍镉电池,其记忆效应是很低的,镍氢电池每节10元左右,价格比较相宜。
玩小车一定要用蓄电池,因二个马达耗电犀利,用笔电玩几分钟就要报销,太昂贵了。
所以我先在顶蓋的尾部做了一块小的充电板。
这是我自己原创的脉冲式充电线路和线路板零件安排,它由一个双比较器和一个稳压管来得到额定的充电电压,约是电池电压的1.2倍,即8.6伏左右。
有二个LED,充电时红色LED会闪动,充好后红灯灭,绿色LED常亮。
设计好线路后,先在万用板上作些试验和调整。
线路很理想。
充电也很快和充得很足,看看线路图一大堆,但当密集地装在一起时所佔位並不太大。
调试无问题之后,我便按照机蓋后面空位的尺寸,做了一块正式的充电板。
图中下方有三条白线的一个插座是外接12V电源,该插座带有一个开关,充电器的插头插上后,它会切断小车的控制部份电源,只有拔掉充电插头才能动作。
上方的一个6芯扦件是用来连通电脑的,这样在调整修改程式时,不用拿出芯片,直接用USB编程器连结电脑就可以了,这样可省去很多麻烦。
此小车的上蓋部份就完成了,上蓋部份装有一个充电插座,二块蓄电池及其充电线路,还有个与电脑联系的6芯插座。
接下来要考虑底盘的制作。
底盘上要安装前后左右4个颇大的超声波探测器,还要有成部小车的单片机控制系统,其中的空间肯定不夠,所以需要托高机蓋,以期有适的空间安装。
我用线锯成這样形状的二块板,再用热风枪热弯而拚接 套上底盘,尺寸十分吻,才把这接圈喷上黑漆 这是未喷漆时在作吻检查时拍的照片。
原本的胶柱因升高了高度而不夠高度,被我旋上六角铜柱,改用机制螺丝旋。
检查滿意后,给我喷上了黑漆。
辛辛苦苦做好了底盘,试一试马达,发觉其噪声极大,屋里人听到一定嫌烦,与其被人禁止通行,还不如重起炉灶,換用低燥声的马达。
所以上述的功夫算是白做了。
這二个马达是在深水埠鸭寮街一家无线电行买的,50港幣一个,有点肉痛, 这是全金屬精密齿轮的減速马达,可直接以较慢速度驱动,物有所值。
在使用之前又作驱动线路的测试,用了一个集成块L2920,配单片机程式就可同时调节二个马达的转向和转速,右面的板下半部是充电线路用来直接作为马达的电源。
換用了马达,果然只听得悅耳的嗡嗡声,再也不会吵翻天了。
但接踵而的工程就是要自制底盘了。
我用一块4mm厚的胶板,加工成与顶蓋相配的底盘形状,并划线打好6个铜柱的安裝孔,裝上二个低噪声马达和一个万向轮,这个万向轮非常灵活,使二轮车得到平衡。
同时我还在前后左右各方向裝上了四个超声波测距模块。
我用一块4mm厚的胶板,加工成与顶蓋相配的底盘形状,并划线打好6个铜柱的安裝孔,裝上二个低噪声马达和一个万向轮,这个万向轮非常灵活,使二轮车得到平衡。
同时我还在前后左右各方向裝上了四个超声波测距模块。
留意图右中间红框內那个插座,这是个双通二面插座,4条马达引线插上插座后,另一面该插座又可接受另一插头插入,这种方式使多支电线穿越某隔层显得十分方便。
这是我从一日本仪器上拆下来的,正好派上用场。
是我从蓝色小车上拆下来的,经扩孔1mm后紧密地同马达轴相连。
这是面壳和底板的电线连结图。
图中左边的底盘螺丝孔位置,我用自制了一些尼龙材料的方柱,中间园孔正好可插入面壳上的铜柱,这样在试车时只要把铜柱插入尼龙柱內,就可固定好面壳了,而不用时时去拧螺丝那么麻烦。
打算用一块多孔板来按裝线路,之前要按实际应用定好各插座在线路板上的位置,然后再安裝其他零件。
所有的超声波测距模块我都自制了支架,并裝上四芯接插件与主板相连。
这个模块就在淘宝买现成的了,约7元一个接下来便要做主控板的设计和焊接了。
根据各接插件的位置,先在电脑上用AutoCAD等软体安排好具体的线路再进行焊接。
这是一个好的习惯,对调试和日后的维修很有帮助。
用电脑制作这类图,只要简单地用个镜射令,就可出反面的图来,有正反二张图对照,焊制元件就很方便了。
这是按照事前安排(行內叫Layout)的图焊好后的情形。
右正面图顶端二个白色的二线小插座是減速马达的输出端。
左上方一个大黑色十四针插座是用来联结四位数字管的。
其下方一个白色五线插座是用来联结四个按键用的,而右侧一个6线插座是联结车顶蓋上的美国Atmel公司的标準ISP(在线编程器)插座。
可以用USB编程器联结电脑作即时编程用。
這就是车顶部份与底盘部份的连结 上蓋后小车的左边图,可以看到能夠固定的电线都用尼龙扣扣好了,如红圈所示。
這是我拆了多部日本打印机和仪器学来的。
日本人会把导线弄得很整齐地、一扎一扎地用尼龙扣扣好,这是一个良好习惯。
当然这种形形式式的尼龙扣也是从机器上拆下来收藏起来的 这是小车的右边,有一个四位数字管按需要隨时轮流显示小车的前后左右与周围环境的距离或前進后退的瞬时速度,下方还有四个按键,以选择不同的工作模式,或在调试时下达不同的令。
如起动停止,原地打转,前進后退等。
而在正式运行时,只要按某键啟动即可按指定程序作各种运动了。
整个程式分成超声波探测数据收集部件、按键响应部件、四位数字管显示部件和马达驱动部件等四大基础部份,这些部件都要编写相关的程式码,并要逐步调试,是项颇费功夫和脑力的事,也消磨了不少时间,当然也获得了不少经验的累积。
而编写动作就更有挑战,其中涉及不少算法,例如要计算即时速度,要按什么频率取样很有考究,如何完成如汽车的平行泊车,或Y形调头,或大转弯、小转弯或原地旋转180度如何保证正好是180度,又如模仿扫地机器人自动行遍一个房间, 智慧地走一个迷宮等等,每一项都可写成很长的程式码,这也就是趣味所在。
当你所思所想变成成功的实例,心中自然充滿了喜悅。
下面的视频中我仅作了初步的尝试,写了一个简单的动作程式。
我仅用了一个前置测距组件,当小车接近前方有障碍物,它就会自动停下,稍退一步,再原地旋转180度逃离。
数字管则交替显示了前后左右的距离,有趣的是我用手一挥,它像个小兔子般连忙调头就逃,很是发噱。
请大家欣尝。