这次项目的讲解分为4各部分,分别是简介(1/4)、基础知识(2/4)、程序开发(3/4)和联合调试(4/4),这一次内容属于简介(1/4),可以对应文章标题(↑)快速定位目前处于哪一讲解环节。
首先是一堆废话:
什么?我打开你的博客是打算学些技术,你就给我看这?嗯???
哈哈哈,这只是在吐槽我以前在学习交流群里问问题时遇到的情况(估计大多数人都遇到过)(虽然宝宝心里苦,但还是默默地打开了搜索引擎去寻找答案)。很多人以前在遇到比较棘手的问题时,第一反应多是找身边经验丰富的大佬请教(比如说:我)(别误解了,不是说我是大佬,而是说我去请教大佬),毕竟他们走过很多路、试过大量错、踩过无数坑,那肚子里肯定还是有点东(mo)西(shui)的。但很多时候大佬会忙得只是寥寥地点拨几句,如果能从他们的话中听懂叙述、理清逻辑、抓住关键并悟出问题,那问题基本就能得到解决,说实话,其实很多时候还是会有点半迷糊不迷糊的,这时候只有从实践中慢慢去理解了。没有必要为了吃苦而去吃苦,但学到老活到老,不懂的东西太多,想学的东西更多,因此该吃的苦还是必须要吃的,不然怎么会真正学到有价值的知识呢?(每日鸡汤 1/1)
所以我用博客记录我的开(chi)发(ku)历(guo)程(cheng)的目很简单:
1. 给遇到问题就自力更生默默打开搜索引擎去解决问题的人提供一些思路。
2. 给打算开始类似项目或者想学习相关技术的的人提供一些有价值的参考。
3. 总结归纳自己做过的东西,方便以后做类似开发时快速上手。
这个项目我会从相对基础的地方开始讲,尽量做到让刚入门的小白都能听懂,但我不会也不能事无巨细,因此更基础的东西还是要(靠大家自己去自力更生默默打开搜索引擎)(bushi)自己去找更基础的教程学习(比如开发用到的C和C++语言等)。
废话不多说,我们就开始吧!
此次开发用到的设备:带USB的电脑一台(这不是废话吗)、STM32F407ZGT6单片机(国产替代或者其他符合要求(*1)的型号都可)、1~8套 闭环步进电机+配套驱动器(脉冲驱动型)(总线驱动型驱动器请忽略此文)(有钱真好)
*1 : 如果需要控制6+2通道的电机,那么片上资源需带有全速(USB1.X)或高速(USB2.0)的USB控制器(有UART+串口通信芯片也可以)、DMA控制器*2(可控制定时器)、定时器*8(可输出PWM脉冲信号)、定时器*4(可配置为主从模式),可用GPIO数量建议不低于80pin。
这次项目的需求:通过电脑(各类系统都可,只要能装上Qt)的软件界面,将电机控制信息通过某种方式发送给STM32F407单片机;单片机对电脑传递的信息进行理解后驱动自身的硬件去产生脉冲,脉冲信号通过连线被发送到驱动器上,驱动器解析脉冲信号后控制电机运动;并且单片机通过获取一些外设传感器去了解电机的极限运动状态,并将相关的信息实时更新到电脑上。(如图1)
图1
思考结论:(细节后面说,直接说结果,看不懂不着急,后面会解释)
1. 电脑软件通信:Qt中QSerialPort类
2. 上下位机通信协议:USB-CDC模拟串口通信(全速USB 12Mbps,稍微快于UART)
3. 脉冲生成硬件配置:2路双缓冲DMA+TIM、2路主 32bit从 TIM、2路主 16bit从 TIM、2路中断型 TIM(除了双循环DMA+TIM模式,其他方式由于都需要在两次脉冲间产生中断来更新计步,因此只适合于对精准度要求不特别苛刻的情况,理论上前6个通道的脉冲可以产生无限数量、频率可变的脉冲,一般是驱动丝杠这类脉冲需求可能接近无限多的情景,最后2个通道的脉冲可以产生有限数量、频率不太快的脉冲,一般是驱动有限角度的转轴。
4. 限位获取:npn或pnp型光电开关 或 带绝对定位的光、磁栅尺。
下一节基础知识(2/4)我会详细讲解这一节所提到的大部分重要关键词。
相关连接:
去简介(1/4)、去基础知识(2/4)、去程序开发(3/4)、去联合调试(4/4)
好用的工具网站推荐