- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本来应当着手轨迹检测和走轨迹控制的程序设计,但为了让学习者更易实施,此篇改为基于单MCU控制的程序设计,本篇主要完成电机驱动部分,即将前面所述的电机驱动合并到一个MCU中。
从前一篇文章中已看到,使用我原来设计的方案在这个小车上有些不合理,如果再加上一个控制板,则更显“臃肿”,而正巧我认识的一个大学生基于前面的设计自己做了修改,采用一片MCU完成小车寻迹的所有功能,从设计的PCB上看,这个方式更适合学习者采纳,所以我暂且放弃了前面的设计,用这块PCB继续完成后面的内容——寻迹控制。
7、单MCU控制的程序设计7.1、硬件简介
这个学生所作的修改主要是将原来设计的三个MCU功能合并到一个MCU中,简化了一些备用的功能,如转动方向采集、无线模块控制等,而主要功能实现的电路与原来相同,如:电机的驱动部分、码盘的采样部分、轨迹的采样部分。
主要修改的是MCU的资源分配,电路如下:图中:P2.0 — P2.3 —— 电机1 (左)驱动,使用PCA2 ;P2.4 — P2.7 —— 电机 2 (右)驱动,使用PCA3;P3.7 —— 电机1 (左)的码盘采样,使用PCA0;P3.5 —— 电机2 (右)的码盘采样,使用PCA1;P1.0 — P1.3 —— 4路轨迹采样,使用内部的AD转换;P3.3 —— 用于轨迹采样控制;P3.4 —— 用于工作指示灯,便于监测系统的工作状态;P1.4 — P1.7 —— 保留,作为扩充,可以作为4路AD输入,也可以连接SPI外设;INT0 —— 保留,能有一个中断输入,对于许多应用都是十分有益的。
他在设计PCB时还设计了一个扩展区,可以方便的焊接一些器件以扩充功能。焊好的控制硬件如下:(点击看大图)
组装后:(点击看大图)
底部:(点击看大图)
前视(注意光电采样器的安装,用的是网线,因是单股硬线,所以可以固定,而且便于调整)(点击看大图)
#160;
7.2 程序设计概述
由于此程序将要完成小车寻迹的所有功能,如果再集中在一个程序文件中处理,将给阅读、调试带来困难,也不便于维护,而且也不符合正规的程序开发方式。
因为正规的程序开发通常需要多人合作,各人负责一部分功能,所以必须将程序分成多个独立的模块,每个模块涉及一个相对独立的功能,相互间确定好接口,这样才能合作完成一个功能复杂的程序。学习者也应当尝试这种模式。
目前这个小车项目分为4个模块:
主控模块 —— 初始化系统,根据消息调度各模块的功能;电机驱动模块 —— 包含所有与电机驱动有关的函数,接受控制命令,并付诸实施;轨迹采样模块 —— 包含所有与轨迹采样有关的处理,结果为与处理后的轨迹状态;轨迹控制模块 —— 读取轨迹采样所获取的信息,根据需求和策略输出相应的电机控制命令;将调试的相关功能也纳入此模块。
学会多模块编程是能进行嵌入式应用软件编写的重要标志。
7.3 主控模块程序设计
主控模块只负责初始化系统的硬件和软件,而且为了使各模块的相关功能更加内聚,将属于各模块的硬件、变量初始化也交给各功能模块处理,主控程序只负责初始化自用的变量。
此外,主控模块只负责根据消息调用相应模块的处理函数,具体如何处理这些消息由各功能模块中的对应函数决定。
这样设计主要是为了日后便于向使用RTOS(Real - Time Operating System)过渡,因为一个略为复杂的应用如果需要程序可靠、可维护,最好使用RTOS。所以作为学习者有必要了解、掌握相关的知识。
7.4 电机驱动模块程序设计
因为驱动的H桥电路、码盘采样电路均未变,所以控制的逻辑也不用修改,只需完成:
a) 对应I/O口定义的修改,以适应新的MCU资源分配;b) 将两个电机的控制逻辑整合到一个MCU中。
主要工作是逻辑整合。
电机 1 的引脚控制逻辑关系:P2.0 - CTL 1, H 桥的左上臂,0 电平输出导通, 1 电平输出截止P2.1 - CTL 2, H 桥的左下臂,1 电平输出导通, 0 电平输出截止P2.2 - CTL 3, H 桥的右上臂,0 电平输出导通, 1 电平输出截止P2.3 - CTL 4, H 桥的右下臂,1 电平输出导通, 0 电平输出截止
电机1控制逻辑:
引脚 桥臂 单极性正转 单极性反转 双极性 惰行 刹车 前半周 后半周 前半周 后半周 前半周 后半周 P2.3 右下 1 1 0 0 1 0 0 1 P2.2 右上 1 1 0 1 1 0 1 1 P2.1 左下 0 0 1 1 0 1 #160; 1 P2.0 左下 0 1 1 1 0 1 1 1 电机2 与电机1完全相同,只是映射在P2口的高4位。
前面所做的单个电机的控制程序,可以很方便的移植过来。
首先
文档评论(0)