基于arm_cortex_m4的磁导航自主路径识别系统毕业设计(编辑修改稿)内容摘要:

DIS 图 电机驱动原理图 北京联合大学 毕业设计 6 图 电机驱动实物图 传感器模块 磁感应传感器 小车需要通过检测道路中心的通有 100mA 导线的磁场来实现路径识别,使用的交变电流频率为 20kHz,那么磁场检测就显得尤为重要了。 现在测量磁场的方法很多,可以通过电感、磁 阻、霍尔元件等交变磁场传感器来测量磁场。 我使用的是 10mH 工字型电感 ,如 图 所示。 图 10mH 工字型电感 选频电路设计 电感切割磁场会产生感应电动势,但是这个感应电动势信号太弱,只有几十毫伏,而且噪声很多,会受到周围不同 频率的磁场的干扰。 因此,电感切割磁场产生的电动势需要进行选频 , 减少其他干扰信号的影响。 利用 电感电容 即可 组成简单的并联谐振电路来实现选频电路,谐振频率要求为 20kHz,则可以通过公式 11计算出 C的值。 ( 式 11) 将 L=10mH, f=20xx0Hz 代入公式,可以得到 C= nF 左右,在市场上能够买到北京联合大学 毕业设计 7 的最为接近 电容的标称电容为。 电路图如图 所示。 图 并联谐振电路 放大电路设计 选频后的信号还是很弱,因此为了能够更加准确地获得赛道信息,还需要对感应电压进行进一步的放大,这也是信号检测最主要的部分。 可以选用运算放大器进行电压放大,运放在选型上应该选择低噪音、动态范围大、高速、单电源、增益带宽积较高的运放。 运放的选择有很多,我们试过由 TI 公司生产的 LMV358,虽然 LMV358 价格便宜,容易购买,但是其增益带宽积仅有 1MHz,在 20kHz 的信号频率下,开环增益仅有 50 倍,而一般放大倍数要大于 100 倍,所以性能一般。 在运放芯片的不断尝试中,我们最终选择了性能卓越的 OPA2350,也是 TI 公司生产的高速、单电源、至轨运放,其增益带宽积达到了 38MHz,在 20KHz 频率下开环增益达到了 1900 倍,这足以看出来 OPA2350 性能非常的出色。 检波电路设计 经过选频和放大后的电压信号仍然是交流信号,如果直接将交流信号接入单片机的 AD 端口,使用单片机直接采样交变电压信号的话,采集数据的处理方面比较麻烦。 所以,一般将交流信号整流为 直流信号再送入 AD 中进行处理。 可以使用肖特基二极管, 对信号进行检波处理, 以便可以获得更大的动态范围。 磁感应 传感器整体设计 从电感切割磁场产生感应电动势要经过选频、放大、检波,最后再送入 AD 中。 过程如图 所示。 磁 场 感 应 选 频 放 大 检 波A D 北京联合大学 毕业设计 8 图 放大电路过程 磁感应 传感器的实际电路设计 放大电路使用的运放芯片是 OPA2350,电感切割磁场产生的电动势经过选频、放大、检波等步骤。 设计的电路图如 图 所示 ,实物图如图 所示。 56784U1B200RR1100KR2C1Cap SemiC2capD1ss1210KR3D2ss12112GNDVCCGNDGND 图 放大电路原理图 图 放大电路实物图 速度传感器 小车在自主循迹过程中,速度的控制很重要。 小车在直道上加速行驶,进入弯道后减速行驶,否则很容易冲出赛道。 而在控制小车速度的环节上,首先得获得小车的当前速度,然后才能决定是加速还是减速。 用于测速的传感器通常有霍尔传感器、光电传感器、测速电机、编码器四种,我们选用了测量精度较高,稳定性较好的编码器来进行测速。 根据精度要求,我们购买了 360 线的欧 姆龙编码器,为数字量输出,可供单片机直接采集以获得速度值。 起跑线检测传感器 智能小车除了能够实现自主循迹外,还要有跑完一圈后自动停车功能。 电磁组的赛道在起跑线处有永磁铁,用来检测起跑线。 选择干簧管来检测永磁铁无疑是最简单北京联合大学 毕业设计 9 的方法,干簧管我也试了很多种,有的好用有的不好用,好不好用是以可以检测的最高高度衡量的,而且有的干簧管外表是玻璃的,很容易打碎,经过选择,发现了外面有塑料包装的干簧管,不容易损坏,我最终使用的是这个,检测高度大约有 ,这个高度已经足够了。 当然磁铁的大小不同,稍微有些差异。 北京联合大学 毕业设计 10 2 机械调校 舵机的安装 小车转向是 通过舵机来驱动的,所以舵机的安装会影 响到小车转向的角度和灵敏度。 由于小车上面的空间有限,为了合理利用,将舵机安装位置挪到了两前轮之间。 舵机的固定需要支架,使用了铝合金材料的支架,不仅结实而且特别轻,不会使小车的重心向前移。 舵机的安装如图 所示。 图 舵机的安装 前瞻的固定 电感的排布 智能小车的前瞻应该尽量长点 ,正所谓“站得高看得远”,足够的前瞻量能提前获得赛道的信息以便更好的控制小车。 当使用多个传感器的时候,传感器之间的距离越大,便越能获得更多的赛道信息。 我使用的是两个电感的方案,两个电感之间的距离为 25cm 左右,如 图 所示。 北京联合大学 毕业设计 11 图 电感的排布 前瞻的 长度 由于 车模不限制长度,所以为了能够提前获取赛道信息以便更快的响应,我增加了前瞻的长度。 当然,并不是说前瞻越长越好,而是需要一个合适的长度,与控制算法有关系,要结合实际情况。 但是,短前瞻效果肯定不好。 前瞻的材料使用的是碳纤维杆,为了减轻前瞻的重量,使小车的中心不往前移,我试了不同直径的碳纤维杆,以小车行驶时前瞻不颤动为标准,选用了直径为 4*2mm 的规格。 前瞻的固定如图 所示。 图 前瞻的固定 编码器的安装 编码器的安装需要注意的事项就是齿轮的咬合,包含编码器与差速、差速齿轮与电机。 调节齿轮之间的距离,然后打开电机听声音可以判断齿轮咬合的松紧。 如果转动声音尖锐,则表示齿轮咬合的太紧。 如果声音零碎,则表示齿轮咬合的太松。 齿轮咬合的太松,容易损坏齿轮,齿轮咬合的太紧,影响电机。 所以,调整齿轮咬合,以松紧合适为准,既不松动,也不卡滞。 编码器的安装如图 所示。 图 编码器的安装 北京联合大学 毕业设计 12 降低重心 为了让小车 运行稳定,转向灵活,过弯时不侧翻,通常会降低小车的重心。 小车上最重的就是电池了,所以为了降低小车的重心,我将电池的高度往下降了,并且位置往后移动一点。 还去掉了小车上一些无关紧要的零件,最大限度的减轻小车的重量,使小车运行起来轻便,转向灵敏,加速减速更快。 电池的安装如图 所示。 图 电池的安装 北京联合大学 毕业设计 13 3 软件编写 开发环境 Kiis 是基于 ARM Cortex M4 核心的,可以使用飞思卡尔公司推出的面向嵌入式应用开发的软件工具 CodeWarrior(简称 CW),还可以选用第三方的开发环境,我使用的是嵌入式系统开发工具 IAR。 软件界面如图。 图 IAR 界面 程序下载 程序写好之后,还需要下载到单片机中,我们使用的是 USB 接口的 JLINK 下载器,将电脑与单片机通过 JLINK 连接后,在 IAR 界面的右上角有个下载按钮,点击下载即可。 IAR 程序下载界面如图 所示。 图 IAR 程序下载界面 底层驱动编写 Kiis 芯片是首款基于 ARM Cortex M4 内核的微控制器,基于飞思卡尔创新的90nm 薄膜存储器( TFS)闪存技术,具有独特的 Flex 存储器(可配置的内嵌 EEPROM)。 北京联合大学 毕业设计 14 Kiis 芯片融合了最新的低功耗革新技术,具有高性能、高精度的混合信号能力,宽广的互连性,人机接口和安全外设。 Kiis 系列微控制器第一阶段产品 有五个系列,如 图 所示。 图 Kiis 微控制器产品组合 GPIO 模块 GPIO 即输入输出端口 ,常用于输入或输出逻辑信号。 打开时钟 使用 GPIO 需要先启用该端口的时钟,否则无法使用,而时钟需要通过 SIM 模块的 SIM_SCGC5 寄存器设置, SIM_SCGC5 寄存器图 所示。 图 SIM_SCGC5 寄存器 将 SIM_SCGC5 寄存器的第 1 1 13 位设置为 1, IO口模块获得系统时钟,然后才能正常工作。 可以使用宏定义来实现,不容易出错。 宏定义的代码如下: define SIM_SCGC5_PORTA_MASK 0x200u define SIM_SCGC5_PORTB_MASK 0x400u define SIM_SCGC5_PORTC_MASK 0x800u define SIM_SCGC5_PORTD_MASK 0x1000u 北京联合大学 毕业设计 15 define SIM_SCGC5_PORTE_MASK 0x20xxu SIM_SCGC5 寄存器的设置代码如下: SIM_SCGC5|=SIM_SCGC5_PORTA_MASK|SIM_SCGC5_PORTB_MASK|SIM_SCGC5_PORTC_MASK|SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK。 设置引脚功能 Kiis 系列的单片机的 IO 口一般都有复用功能,所以我们只有通过设置启用GPIO 功能, IO 口才能使用,所以打开时钟之后就需要将使用的引脚设为 GPIO 模块,通过设置引脚控制寄存器( PORTx_PCRn)来实现。 该寄存器如 图 所示。 图 PORTx_PCRn 寄存器 引脚复用功能通过设置 MUX 即可,将 MUX 设为 1则该引脚 GPIO 功能即启用。 代码如下: PORTE_PCR0= 0x00000100。 //E0 引脚设置为 GPIO 模式 还可以通过宏定义的方式,宏定义如下: define PORT_PCR_MUX(1) 0x00000100 GPIO 口方向设置 大多数单片机的 IO 口都是双向的,当然功能强大的 Kiis 系列的单片机也不例外。 在使用 IO 口前,需要设置 IO 口为输入或者输出,可通过设置 IO 口方向寄存器,即 GPIOx_PDDR 寄存器来确定 IO 口为输入还是输出。 GPIOx_PDDR 寄存器如 图 所示。 图 IO 口方向寄存器 GPIOx_PDDR 其中, PDD 为引脚方向设置位, PDDx=1 是将引脚 x 设置为输出, PDDx=0 是将引脚 x设置为输入。 具体代码如下: GPIOE_PDDR|=0X00000001。 //E0 设置为输出 北京联合大学 毕业设计 16 PIT 模块 中断程序的作用是,中断发生后 , 当前程序会被立即暂停,然后 进入中断程序,等中断服务程序执行完毕,再恢复现场,并回到断点处继续执行刚才的程序。 不同的中断源,触发中断的事件也不同。 在单片机的应用中,经常会用到的一种中断就是定时中断,当定时时间到时则触发中断。 定时中断在智能车中最主要的应用就是测速,而 Kiis 中的 PIT 模块用来做简单的定时是最简单的一种。 PIT 模块即周期定时模块,主要功能是用来产生定时中断。 定时中断的原理是通过对总线时钟进行计数,当计数递减到 0 时即产生中断,我们可以通过给每个计数器赋予不同的初值来获得想要的中断周期,每次中断后,计数器便会自动加载我 们自己设定的初值,如此反复即实现了定时中断的功能。 时钟 设置 如果要使用定时中断的话,就需要先打开时钟。 通过寄存器 SIM_SCG6 的设置可以打开 PIT 模块的时钟,将寄存器 SIM_SCG6 的第 12~15 位设置为 1 即可打开 PIT 时钟,具体代码如下: SIM_SCGC6|=SIM_SCGC6_PIT_MASK。 //打开 pit 时钟 其中 SIM_SCGC6_PIT_MASK 为宏定义: define SIM_SCGC6_PIT_MASK 0x800000u 使能 PIT 模块 开启 PIT 模块的时钟之后,需要使能 PIT 模块,通过设置 PIT 模块控制器即PIT_MCR 来实现, PIT_MCR 寄存器如 图 所示。 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Read MDIS FR。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。