寻迹小车 FollowMe―― 之七:单MCU控制的程序设计 写于: 星期二 17 十月 @ 23:08:06 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
本来应当着手轨迹检测和走轨迹控制的程序设计,但为了让学习者更易实施,此篇改为基于单MCU控制的程序设计,本篇主要完成电机驱动部分,即将前面所述的电机驱动合并到一个MCU中。 寻迹小车 FollowMe ―― 之七:单MCU控制的程序设计 作者:Hanker 前面的章节: 本来应当着手轨迹检测和走轨迹控制的程序设计,但为了让学习者更易实施,此篇改为基于单MCU控制的程序设计,本篇主要完成电机驱动部分,即将前面所述的电机驱动合并到一个MCU中。 从前一篇文章中已看到,使用我原来设计的方案在这个小车上有些不合理,如果再加上一个控制板,则更显“臃肿”,而正巧我认识的一个大学生基于前面的设计自己做了修改,采用一片MCU完成小车寻迹的所有功能,从设计的PCB上看,这个方式更适合学习者采纳,所以我暂且放弃了前面的设计,用这块PCB继续完成后面的内容――寻迹控制。 7、单MCU控制的程序设计 7.1、硬件简介这个学生所作的修改主要是将原来设计的三个MCU功能合并到一个MCU中,简化了一些备用的功能,如转动方向采集、无线模块控制等,而主要功能实现的电路与原来相同,如:电机的驱动部分、码盘的采样部分、轨迹的采样部分。 主要修改的是MCU的资源分配,电路如下: 他在设计PCB时还设计了一个扩展区,可以方便的焊接一些器件以扩充功能。
7.2 程序设计概述 由于此程序将要完成小车寻迹的所有功能,如果再集中在一个程序文件中处理,将给阅读、调试带来困难,也不便于维护,而且也不符合正规的程序开发方式。 因为正规的程序开发通常需要多人合作,各人负责一部分功能,所以必须将程序分成多个独立的模块,每个模块涉及一个相对独立的功能,相互间确定好接口,这样才能合作完成一个功能复杂的程序。学习者也应当尝试这种模式。 目前这个小车项目分为4个模块: 主控模块 ―― 初始化系统,根据消息调度各模块的功能; 学会多模块编程是能进行嵌入式应用软件编写的重要标志。 7.3 主控模块程序设计主控模块只负责初始化系统的硬件和软件,而且为了使各模块的相关功能更加内聚,将属于各模块的硬件、变量初始化也交给各功能模块处理,主控程序只负责初始化自用的变量。 此外,主控模块只负责根据消息调用相应模块的处理函数,具体如何处理这些消息由各功能模块中的对应函数决定。 这样设计主要是为了日后便于向使用RTOS(Real - Time Operating System)过渡,因为一个略为复杂的应用如果需要程序可靠、可维护,最好使用RTOS。所以作为学习者有必要了解、掌握相关的知识。 7.4 电机驱动模块程序设计因为驱动的H桥电路、码盘采样电路均未变,所以控制的逻辑也不用修改,只需完成: a) 对应I/O口定义的修改,以适应新的MCU资源分配; 主要工作是逻辑整合。 电机 1 的引脚控制逻辑关系: 电机1控制逻辑:
电机2 与电机1完全相同,只是映射在P2口的高4位。 前面所做的单个电机的控制程序,可以很方便的移植过来。 首先将所有与电机对应的变量改为2维数组,一维对应一个电机。 然后在程序中所有涉及电机变量的初始化和赋值的地方改为循环,有关的函数增加一个电机序号参数输入,函数中修改为根据序号处理相应的数组单元。 上述修改的关键在于变量的构建,合理的变量将大大减少程序的处理难度。 在电机输出及测速中断的处理中,没有使用下标变量方式来节省代码,因为需要速度,可以仔细比较使用下标变量时的目标代码与直接指定下标时的差别。 此部分功能暂未作任何改进和添加,只是将两个电机的驱动并入了一个MCU控制。 7.5 轨迹采样模块程序设计轨迹采样器为4个反射式光电采样器,经缓冲后作背景光减除处理,之后放大送单片机AD转换。 此模块完成: 本来期望能按照国外那个桌面寻迹小车的处理方式对采样信号预处理的,但是仔细分析后发现,按目前所用的采样器及轨迹的关系(轨迹通常为 2cm 宽,而采样器距地面5 |
共1条
1/1 1 跳转至页
寻迹小车 FollowMe―― 之七:单MCU控制的程序设计
只看楼主 1楼
关键词: 寻迹 小车 FollowMe 之七 控制 程序设计
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |