地心一号-超迷你自平衡小车(五)-完结篇

本贴由MCU起航原创,首发于博客-MCU起航,版权归本人所有,如有转载,请注明出处链接!

接着上一篇文章,咱们继续!

问题解决了,那几天脑子异常兴奋,开始准备后续的事情了。

我准备做一批,既可以做玩具,又可以当做最小系统板,还能以项目的形式学到东西。

接下来依然是三步走:

1、确定方案,画原理图、PCB,找工厂安排制板、焊接、组装;

2、编写教程;

3、给小车起个名字。

先说起名字的事,叫什么?

我和我媳妇想了好几天:

煎饼一号?蹭煎饼侠热度~~~

青蛙一号?板子绿的的就叫青蛙?下次制板变成红的,是不是还要叫蜻蜓?

舅舅一号?给外甥做的就叫舅舅一号?万一升级到舅舅二号,别人会以为他有两个舅舅。

后来想了想,解决小车技术的一个关键点是重心环的出现,所以我觉得应该和重心相关比较好,想起了之前的一部电影《地心引力》,就叫:地心一号吧!

硬件方案方面:

STM8S103F3P6+MPU6050+TB6612+蓝牙串口模块+红外遥控

蓝牙串口模块在这里有两个功能:一个是调整PID参数的时候,可以终端界面无线测试;另一个就是在键盘界面控制小车的行驶方向。

1bf5272afa18444a0d7a53e72ae4d4c a26b3173f92d006b5f1441fedc859d7

电池最开始我选的8.4V,也就是两片4.2V的串联。但是后面发现有4V左右1分钟300多转的电机,那自然就换回了4.2V的电池。目的很明确,节约成本。但同时引发两个问题:

1、STM8S工作电压3.3V,电源芯片怎么选?1117-3.3? 那是肯定不行的,这个问题我不直接给出答案,想知道的,搜一下“LDO”的意思,再看看1117-3.3的数据手册就行了

2、电池电压降低,小车的马力自然也降下来了,最直观的表现就是:它只能在室内光滑的瓷砖上走,路面坎坷的情况下,是走不了的。所以,如果有朋友想要大马力的,需要更换电池和电机。

但是不管怎么说,老夫很欣慰!

这个时候又出了一件事,绊了我一下~~~小车真的是命途多舛啊~~~~

什么事?

STM8S103F3P6涨价了!之前一片2元左右,你知道2018年涨到了多少吗?

当时嘉立创的价格从二点多一路涨到了15元!!!这个破玩意卖15!!!

可惜当时我没有截图,当时嘉立创宝贝详情页面上还标了是厂家管控的原因。当时有个说法,说是因为2018年意法半导体在推STM8S001,一个SO-8封装的8脚单片机,为了给它让路,所以搞了这么一堆破事。

2019年,总算价格下来了。陆陆续续,事情开始进行。生产方面,事情安排下去就行了,比较省心。

最后是教程,看过我51教程的人都知道,我做教程,喜欢把复杂问题简单化。每一节,尽量控制时间不超过20分钟,尽量讲几个知识点。有用、不多,但是很关键!学到知识的同时,更能学到方法!

所以又花了一段时间优化教程。关于STM32,很多人都是用库函数开发的。那么STM8,教程里用库还是寄存器?我当时想了一段时间!因为库已经是一种趋势了,我有预感,库普及的范围会越来越广!所以决定,STM8S的教程用库函数来开发。当然,如果大家感兴趣,后面我会再补一套寄存器的例程。

因为网上有人分享了一个自动生成STM8S库函数代码的工具,所以例程的编写一直进行的都比较顺利。直到2019年8月份左右,出了一个问题!一个很有意思的问题!这个问题我现在已经找到原因,并解决了!

先说下我的开发环境,我使用的是IAR工具,然后从ST官网下载了STM8S系列的外设库。原理图在设计的时候,为了尽量多的给大家增加一些可以学习的东西,同时又因为STM8S103F3P6管脚比较少。我把一体式红外接收器的管脚放在了STM8S103F3P6的PD1上,用过这个系列的朋友会知道:PD1不只是一个普通的IO,它还是STM8S的SWIM管脚,也就是下载管脚。

问题是什么?

问题就是,当我使用库函数的方式,用PD1管脚做红外遥控器的解码的时候,PD1无法正常工作。解码方式就是51里常用的定时器+下降沿中断的方式。

有人肯定会说,数据手册里有说明:PD1要当普通管脚用的话,需要禁用SWIM功能。

呵呵,你觉得我没看嘛?

我可以负责任的告诉你,不管你有没有禁用SWIM功能,PD1都能当做普通IO使用?

为什么?

因为我最初调试小车时,就是使用寄存器的方式写的,这些功能全都验证了一遍!!!现在这些代码还在我电脑里放着。

所以,这就很有意思了,这是怎么回事?

可以给你们一些思考时间,再往下看。

我当时找了一个STM8用的比较好的朋友,请他帮我写了一个测试程序,使用PD1管脚,库函数方式。很快,他写完发给我了。

结果我打开一看,傻眼了,他用的是另一个开发工具:STVD。

是的,开发STM8S,有几种不同的工具,IAR、STVD都可以,都支持官方的库函数。

他发来的程序能不能用? 肯定是能用的,因为我这个朋友写代码比较严谨,要么仿真验证、要么实物验证,而且风格一向很好。

怎么办?当然是让他重写,用IAR。

果然,他也遇到问题了。PD1一旦遇到下降沿中断,定时器的时间就跑的乱七八糟,状态很不稳。他跟我说了一下,我基本已经断定问题在哪了。

福尔摩斯说过一句话:排除掉所有的不可能,剩下的,无论多么不可思议,它就是真相!

现在已经验证过的是:IAR+寄存器编程、STVP+库函数编程都没有问题,芯片、下载器、电路更没有问题。剩下的,就是IAR出了问题!是的,它对库函数的支持有问题!

而且这个结论出来以后,我瞬间想起了以前用库函数的时候,出现的一些奇怪的问题,都能解释清了。

现在的问题是,怎么办?教程已经录到结尾了,总不能又重新录吧。

想了想,也有办法!

混编!

是的,同时使用库函数和寄存器的方式进行编程。这种方式对新手来说可能有些奇葩,但其实早就存在了。更早的了解到这种方式,对新人来说,可能是一件好事。STM32里混编可能用的相对多一些,但这不影响。问题已经确定了,把和问题相关的部分代码都换成寄存器方式编写的,调一调~~~OK

所以,到最后,我拿出来的是这样的一个作品:

它精致、迷你、强大!

它不完美,甚至有缺陷!但是,它的出现让人期待,让人相信美好的事情总是会发生的。它的功能,我可能会持续优化下去,如果有感兴趣的朋友,也可以一起优化。资料稍后我会放到网盘,也可能会放到github上。

希望你们喜欢——地心一号!

本系列已完结,相关章节请点击:

地心一号-超迷你自平衡小车(一)

地心一号-超迷你自平衡小车(二)

地心一号-超迷你自平衡小车(三)

地心一号-超迷你自平衡小车(四)

地心一号-超迷你自平衡小车(五)-完结篇

如果要购买地心一号平衡小车,可在淘宝搜索:地心一号,或者在公众号:AI电堂(可开发票) 中获取购买方式。

《地心一号-超迷你自平衡小车(五)-完结篇》有4条留言

  1. 大学时,都关注了你,原先是每天早上都能看到你发的,早上6点起床第几天,哈哈一直到现在;挺佩服你的,年复一年日复一日的恒心,恒者更强哈哈!
    一鼓脑从开始看到结束,真爽;向大佬致敬

    回复

丁丁进行回复 取消回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据