克纳姆轮驱动系统AGV蓝牙循迹小车设计_第1页
克纳姆轮驱动系统AGV蓝牙循迹小车设计_第2页
克纳姆轮驱动系统AGV蓝牙循迹小车设计_第3页
克纳姆轮驱动系统AGV蓝牙循迹小车设计_第4页
克纳姆轮驱动系统AGV蓝牙循迹小车设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要GV小车是指装备有电磁或光学等自动导引装置,能够沿规定的导引路径行驶,具有安全保护以及各种移载功能的运输车,自动导引运输车(AGV)系统已经发展成为生产物流系统中最大的专业分支之一,并出现产业化发展的趋势,成为现代化企业自动化装备不可缺少的重要组成部分。我们设计了一种黑白线循迹传感器进行引导,使用麦克纳姆轮驱动系统AGV蓝牙小车,并在课程设计中进行制作和调试。本文主要目的是介绍我组的这阶段的工作内容以及取得的阶段性成果,并且对项目过程中所遇到的问题进行总结分析。项目期间,我们学习各个模块相关资料,学习STM-32芯片的编程,并着手编写程序。我们的主要工作内容包括:小车机械本体设计、硬件设计、电气连接和电气原理图绘制、小车的手机蓝牙控制试验、循迹控制实验。通过小组各成员的共同努力,我们完成了主要的工作,包括三维建模,二维图绘制以及STM32芯片的控制程序,经过不断的调试,可以实现蓝牙控制的全方位移动功能,循迹功能基本调试完成。关键词:AGV 蓝牙遥控 STM32 循迹目录第一章 设计综述31.1 AGV小车国内外发展现状31.2 智能机器人系统设计任务概述31.3 课程设计主要内容3第二章 方案设计42.1 机械结构方案设计42.2 驱动方案选择42.3 传感器的选择62.4 结构的合理性及参数的合理性6第三章 机械系统设计73.1 机械系统总体方案73.2 关键尺寸设计73.3 关键零部件结构设计8第四章 控制系统设计84.1 控制系统总体方案84.2 选型84.3 驱动电机控制电路设计94.4 传感检测外围电路设计94.5 电源供电电路设计104.6 总体电路设计10第五章 软件系统设计115.1 软件系统总体方案115.2 位姿控制方案与流程115.3 速度控制方案与流程12第六章 装配与调试136.1 机器人系统整体装配136.2 系统调试流程与状况136.3 设计创新点136.4 系统缺陷与改进13第七章 市场应用前景分析14第八章 项目心得14参考文献15附录一 成本分析15附录二 程序源代码16第一章 设计综述1.1 AGV小车国内外发展现状AGV小车是集机械、电子、控制、计算机、传感器、人工智能等多学科先进技术于一体的现代制造业重要的自动化装备。自上世纪60年代世界上出现第一台工业AGV以来,AGV小车技术及其产品发展并不是很快,近几年工业4.0概念如火如荼,2010年后AGV小车产品呈现出快速“伪增长”,虽然AGV产品可以成为柔性制造系统(FMS)、自动化工厂(FA)、计算机集成制造系统(CIMS)的自动化工具,但在现阶段并未出现爆发式增长,同时大量热钱涌入,国家和地方政策等因素多数企业仅仅出于带着“搭便车”的心态进入AGV产业,在AGV产品及应用技术上并没有太多核心技术积累和创新,仍停留在上世纪日本淘汰的技术体系。由于AGV小车产品应用范围很广,单机技术附加值并不高,但作为先进制造业的支撑技术和信息化设备之一,对未来生产和社会发展起着重要的作用。 目前,国产AGV小车的价格在几万元到几十万元不等,进口产品几个在几十万元到上百万元,沈阳新松、上海富洋、昆明船舶等企业在中国市场目前占有率较高。1.2 智能机器人系统设计任务概述a. 具备循迹功能,能够沿着黑线移动b. 小车可以在平面实现前进、后退、原地转动,横向移动,斜向移动,运动灵活c. 具备足够负载能力,可携带移动电源;d. 具备无线通讯功能,能够实现小车的无线远程控制(手机蓝牙控制)。1.3 课程设计主要内容(1)资料分析:查阅相关文献资料,对资料进行分析总结。(2)机器人总体设计:根据机器人的具体任务要求,初步拟定小车的技术参数、电路部分设计、机械结构设计、控制方案选择等。(3)机器人机械结构设计:将机器人分解为车身结构、运动机构等若干部分,绘制机器人总装图和关键零部件图。(4)各个芯片的选择与调试:根据任务要求,选择各个模块进行相关信息检测、处理,并完成信息的正确传输。(5)运动控制方案设计:基于传感信息,采用STM32单片机,进行小车控制系统硬件和软件程序的设计和系统调试。(6)编制课程设计说明书。第二章 方案设计2.1 机械结构方案设计 本课题要制作的是一辆蓝牙控制的全方位移动的循迹小车。小车采用四个直流电机带动麦克纳姆轮组进行驱动,由小车前端的黑白线传感器进行路径识别。整个小车由机械部分和控制系统两大部分组成。机械部分包括由上下底板和铜柱搭建成的车架,四个电机、电机架、联轴器、麦克纳姆轮做成的驱动轮组;控制部分包括STM32、蓝牙、电机驱动。电源和控制元件固定在下底板上。2.2 驱动方案选择 小车的驱动系统采用四个AB相减速电机带动麦克纳姆轮,全方位移动功能的核心是麦克纳姆轮。 麦克纳姆轮是瑞典麦克纳姆公司的专利,图 2-1为麦克纳姆轮。在它的轮缘上斜向分布着许多小滚子,故轮子可以横向滑移。小滚子的母线很特殊。当轮子绕着固定的轮心轴转动时,各个小滚子的包络线为圆柱面,所以该轮能够连续地向前滚动。麦克纳姆轮结构紧凑、运动灵活,是很成功的一种全方位轮。由四个这种轮加以组合,可以使机构实现全方位移动功能。 图2-1 麦克纳姆轮 四轮麦克纳姆轮全方位运动系统的轮组布局形式多种多样,并不是每一种布局形式都能实现全方位运动,判定系统实现全方位运动性能优劣的必要条件是:系统逆运动学雅克比矩阵是否列满秩。满足必要条件后还必须根据系统的驱动性能综合优选其结构布局形式。从运动性能和驱动性能两方面综合选择,六种常见的布局结构形式中最优的布局结构形式如图 2-2(b)所示。图 2-2(b)的结构形式实现全方位运动的原理如图2-3所示。系统能实现 x,y 方向的直线运动,也能实现绕中心 O 点的定点旋转。三个方向的运动中,系统所有轮都是驱动轮。系统不仅能实现全方位运动,且驱动性能较好,是最优结构布局形式。图 2-2麦克纳姆轮的布局方式 图3-3展示了小车的运动方向与电机驱动方向之间的关系。 图2-3 小车运动方向与轮子转向的关系2.3 传感器的选择(1)蓝牙模块 HC05 无线蓝牙串口透传模块引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机可通过该脚状态判断蓝牙是否已经连接,KEY引脚对从机无效。底板3.3V LDO,输入电压3.66V,未配对时电流约30mA,配对后约10mA,输入电压禁止超过7V。空旷地有效距离10米,超过10米也是可能的,但不对此距离的连接质量做保证。配对以后当全双工串口使用,无需了解任何蓝牙协议,但仅支持8位数据位、1位停止位、无奇偶校验的通信格式,这也是最常用的通信格式,不支持其他格式。(2)超声波模块的选择 DYP-ME007超声波测距模块可提供3cm-3.5m的非接触式距离感测功能,图2-4为DYP-ME007外观,包括超声波发射器、接收器与控制电路。其基本工作原理为给予此超声波测距模块一触发信号后发射超声波,当超声波投射到物体而反射回来时,模块输出一回响信号,以触发信号和回响信号间的时间差,来判定物体的距离。(3)选用黑白线循迹模块来实现循迹的功能 图2.4 超声波测距模块 图2.5 循迹模块传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态被检测物体出现在检测范围内时,红外线背反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为低电平,指示二极管被点亮。2.4 结构的合理性及参数的合理性小车构采用麦克纳姆轮组驱动,通过调节四个轮子的转向实现实现小车的横向移动和原地转动,相比普通轮系灵活度更高。同时,四个轮子均布于底盘,承载能力强,车身稳定性高。第3章 机械系统设计3.1 机械系统总体方案 小车机械系统主要分为车架和驱动系统。车架由上下底板和铜柱搭建而成,驱动系统由四个电机、电机架、联轴器、麦克纳姆轮组成的驱动轮组构成。其他电器元件包括电源、STM32、蓝牙、电机驱动、降压模块等放置在下底板上。两个黑白线模块由铜柱固定在下底板的前端。 图3.1 小车三维模型3.2 关键尺寸设计小车的总体尺寸和各个部件的尺寸与上下底板有很大关系,上下底板的尺寸为关键尺寸,根据任务要求和项目执行条件,初步把上下底板的外形尺寸设置为340x190x5mm,由此选定麦克纳姆轮的轮径为60mm。根据功能需要选择购买直流减速电机,由电机确定电机架和联轴器的尺寸,其中,电机架与选用的JGB-37电机配套,无需设计,联轴器与麦克纳姆轮配套,由电机轴径选择6mm联轴器。3.3 关键零部件结构设计 需要单独设计和制作的零部件主要是上下底板,其他部分可采购。上下底板都采用矩形板,根据四个轮子的布局原则确定下底板上4组共16个电机架安装孔的位置,固定电机架,在下底板前方和两侧设计3mm宽的矩形槽,以安装传感器,上下底板靠近圆角的部分,打四个3.2mm安装孔连接上下底板。此外上下底板上开了数个大的圆孔用于线路连接。 图3.2 下底板第4章 控制系统设计4.1 控制系统总体方案 小车由多个功能模块共同组成,这几个模块共同工作、相互协调、相互作用,保证了机器人能够顺利的进行清扫。控制系统的核心是STM32,它对其它各个功能模块进行控制。信息采集模块负责采集周围环境以及机器人本身的各种信息。蓝牙遥控接收模块可以接收手机发送的的控制信息,然后把信息传给STM32进行处理。4.2 选型1) 电机选择JGB-37直流减速电机(12v)2) HC-05蓝牙模块3) LM2596数显可调降压模块4) 超声波传感器5) TB6612FNG电机驱动6) 集成TCRT5000红外反射式光电传感器的黑白线循迹模块4.3 驱动电机控制电路设计 图4.1 TB6612FNG引脚 STBY口接单片机的IO口清零电机全部停止,置1则通过AIN1 AIN2,BIN1,BIN2 来控制正反转,VM接12V以内电源,VCC接5V电源,GND接地,PWMA和PWMB分别接接单片机的PWM口,A01和AO2接电机1的两个脚。BO1和BO2接电机2的两个脚。图 4.2 电机驱动电路4.4 传感检测外围电路设计 图 4.3 蓝牙模块 图 4.4 左循迹模块 图 4.5 中循迹模块 图 4.6 右循迹模块4.5 电源供电电路设计 图 4.7 电源电路 4.6 总体电路设计 图4.2 系统总体电路图第5章 软件系统设计5.1 软件系统总体方案1、通过蓝牙模块实现手机端的蓝牙遥控,手动控制小车的全方位运动。2、通过接近开关实现小车的避障功能。3、通过黑白线循迹模块实现小车的智能循迹功能。5.2 位姿控制方案与流程 小车可通过手机蓝牙发送指令控制小车的运动,原理如下: 同时,小车通过前端的三路黑白线模块对白色纸带的检测结果的对比控制小车运动方向。 5.3 速度控制方案与流程 采用PWM调速,PWM主要就是控制频率和占空比的:这两个因素分别通过两个寄存器控制:TIMX_ARR和TIMX_CCRX。ARR寄存器就是自动重装寄存器,也就是计数器记到这个数以后清零再开始计,这样PWM的频率就是tim_frequency/(TIMX_ARR-1)。在计数时会不停的和CCRX寄存器中的数据进行比较,如果小于的话是高电平或者低电平,计数值大于CCRX值的话电平极性反相。所以这也就控制了占空比。调节驱动力例如:/向前void CarGo(void)front_left_speed_duty=SPEED_DUTY;front_right_speed_duty=SPEED_DUTY;behind_left_speed_duty=SPEED_DUTY;behind_right_speed_duty=SPEED_DUTY;调节每个轮的SPEED_DUTY便可进行调速。第6章 装配与调试6.1 机器人系统整体装配 参照装配图和三维模型进行装配,装配顺序为:1) 驱动组件的装配,把电机,电机架,联轴器和麦克纳姆轮用螺栓装配到一起。2) 把四组驱动组件与下底板进行装配3) 在下底板上安装循迹模块和红外接近开关,适当调节传感器位置4) 按电气原理图连接各电器元件5) 装配上底板和下底板组成车体,完成装配6.2 系统调试流程与状况(1)四个电机以同样的占空比(即同样的给定速度)前进时,不能走直线,分析问题是由于每个电机的差异性造成的,这样会使四个电机转速不同,最后用PWM调速一点点手动调节,使四个轮子转速趋于相同。(2)最初采用两路循迹方案是,会出现在小车在轨迹外遇到浅色地面时依然会前进的情况,后来在中间加了一个循迹模块作为在轨标志位。(3)黑白线循迹模块与地面的距离不宜过大与过小。(4)调试蓝牙模块时,最初蓝牙模块无法与手机连接,经实验发现蓝牙模块损坏,更换备件后可成功连接,连接之前要检查蓝牙初始化状态(蓝牙是否有灯在闪烁),成功连接的标志为蓝牙每隔5S左右闪烁一次(5)小车高速运行时,驱动模块碰到底板上的螺栓导致短路烧毁6.3 设计创新点 在传统的循迹小车基础上使用麦克纳姆轮,大大提高了小车的灵活性,可实现横向移动、斜向移动和原地转动。6.4 系统缺陷与改进(1)手机蓝牙控制终端虽然方便携带和使用,但同样面临无法控制平面任意角度平移的问题,下一阶段准备尝试使用METLAB编程实现电脑控制的任意角度蓝牙控制(2)小车循迹和壁障功能的结合目前实现的不好,暂时无法调试出直角弯横向循迹和障碍物自动规避,接下来我们会完善这一功能。第7章 市场应用前景分析现在中国是全球最大的AGV小车等工业机器人需求市场,这点毋庸置疑。IFR2015年2月发布的2014年世界机器人统计数据报告,预测2017年中国的机器人总量将由现有的16.2万增加到42.8万。2010年后AGV小车产品呈现出快速“伪增长”,虽然AGV产品可以成为柔性制造系统(FMS)、自动化工厂(FA)、计算机集成制造系统(CIMS)的自动化工具,但在现阶段并未出现爆发式增长,同时大量热钱涌入,国家和地方政策等因素多数企业仅仅出于带着“搭便车”的心态进入AGV产业,在AGV产品及应用技术上并没有太多核心技术积累和创新,仍停留在上世纪日本淘汰的技术体系。AGV小车未来的发展方向是实现标准化生产,优化场景识别和导航功能,实现高智能化的人机交互技术。技术创新是中国AGV制造商的必由之路。第8章 项目心得通过这次课程设计,我们学到了很多东西,也加强锻炼了动手能力 。我们体会到了学以致用是一个过程,这需要不断地探讨、实践、总结。在整个过程中,我们遇到了许多困难,有些问题很难查出原因,但是我们坚持了下来,很好的锻炼了我们的耐心和毅力。在设计中,考虑问题越全面、分析问题越细,所做出来的产品的层次才会越高。在项目的完成过程中,我们遇到了许多问题,经过老师的帮助、各组之间的探究以及同组成员的讨论,我们克服了这些困难,最终完成项目任务。项目充分运用了我们所学的各项知识,从机械原理,机械设计到本学期所学的各科知识,是对我们综合素质的一次考验,也是一次挑战。在本次项目过程中,我们大量查阅了各种资料,丰富了我们的知识,开阔了我们的视野,是我们能够进行一次真正的产品设计,了解到了在设计产品的过程中所遇到的各项问题,互相帮助,共同完成。 此次项目得益于学院的对我们机电系的大力支持,感谢所有老师对我们的帮助。参考文献:1 李广弟 朱月秀 冷祖祁 编著.单片机基础(第2版)北京:北京航空航天大学出版社,2007.6 2卓晴 黄开胜 邵贝贝 等编著.学做智能车-挑战飞思卡尔杯北京:北京航空航天大学出版社,2007.33邵时 编著微机接口技术(第2版)北京:清华大学出版社,2008.14 熊友伦 主编.机器人技术基础武汉:华中科技大学大学出版社,2010.75美Duane Hanselman, Bruce Littlefield 著.朱仁峰 译.精通Matlab 7北京:清华大学出版社,2008.7附录一 成本分析表1 材料清单材料数量成本说明60mm麦克纳姆轮4425自购12V直流减速电机4234自购6mm联轴器4172自购STM-32单片机149创新基地提供稳压电源模块230创新基地提供黑白线传感器66创新基地提供红外光电传感器232创新基地提供电机驱动224创新基地提供蓝牙模块117创新基地提供亚克力板230自制12V直流电源133创新基地提供电机架420创新基地提供其他5创新基地提供合计成本1122 附录二 程序源代码/主程序#include stm32f10x.h#include interface.h#include LCD1602.h#include IRCtrol.h#include motor.h#include uart.h#include gpio.h/全局变量定义unsigned int speed_count=0;/占空比计数器 50次一周期char front_left_speed_duty=SPEED_DUTY;char front_right_speed_duty=SPEED_DUTY;char behind_left_speed_duty=SPEED_DUTY;char behind_right_speed_duty=SPEED_DUTY;unsigned char tick_5ms = 0;/5ms计数器,作为主函数的基本周期unsigned char tick_1ms = 0;/1ms计数器,作为电机的基本计数器unsigned char tick_200ms = 0;/刷新显示char ctrl_comm = COMM_STOP;/控制指令char ctrl_comm_last = COMM_STOP;/上一次的指令unsigned char continue_time=0;unsigned char bt_rec_flag=0;/蓝牙控制标志位/循迹,通过判断三个光电对管的状态来控制小车运动void SearchRun(void)/三路都检测到if(SEARCH_M_IO = BLACK_AREA & SEARCH_L_IO = WHITE_AREA & SEARCH_R_IO = WHITE_AREA )ctrl_comm = COMM_UP; if(SEARCH_M_IO = BLACK_AREA & SEARCH_L_IO = WHITE_AREA & SEARCH_R_IO = BLACK_AREA)/右ctrl_comm = COMM_RIGHT; if(SEARCH_M_IO = BLACK_AREA & SEARCH_L_IO = BLACK_AREA & SEARCH_R_IO = WHITE_AREA)/左ctrl_comm = COMM_LEFT; if(SEARCH_M_IO = BLACK_AREA & SEARCH_L_IO = BLACK_AREA & SEARCH_R_IO = BLACK_AREA)/停车ctrl_comm = COMM_STOP; if(SEARCH_M_IO = WHITE_AREA & SEARCH_L_IO = WHITE_AREA & SEARCH_R_IO = WHITE_AREA)/停车ctrl_comm = COMM_STOP;int main(void)delay_init();GPIOCLKInit();UserLEDInit();LCD1602Init();/IRCtrolInit();TIM2_Init();MotorInit();ServoInit();RedRayInit();USART3Conf(9600); SystemInit();GPIOA_Init();/Timer2Init();/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);/TIM_Cmd(TIM2, ENABLE);GPIO_SetBits(GPIOA, GPIO_Pin_6);/设置指定的数据端口位/GPIO_SetBits(GPIOA, GPIO_Pin_2);/GPIO_ResetBits(GPIOA, GPIO_Pin_3);GPIO_SetBits(GPIOA, GPIO_Pin_7);GPIO_SetBits(GPIOA, GPIO_Pin_8);GPIO_SetBits(GPIOA, GPIO_Pin_13); / add your code here _。/* (C) COPYRIGHT 2012 WildFire Team *END OF FILE*/ while(1) if(tick_5ms = 5)tick_5ms = 0;tick_200ms+;if(tick_200ms = 40)tick_200ms = 0;LEDToggle(LED_PIN);/continue_time-;/200ms 无接收指令就停车/if(continue_time = 0)/continue_time = 1;/CarStop();/do somethingSearchRun();if(ctrl_comm_last != ctrl_comm)/指令发生变化ctrl_comm_last = ctrl_comm;switch(ctrl_comm)case COMM_UP: CarGo();break;case COMM_DOWN: CarBack();break;case COMM_LEFT: CarLeft();break;case COMM_RIGHT: CarRight();break;case COMM_STOP: CarStop();break;default : break;Delayms(10);/防抖LCD1602WriteCommand(ctrl_comm); /电机控制程序#include motor.h#include interface.h#include stm32f10x.h/GPIO配置函数void MotorGPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = FRONT_LEFT_F_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(FRONT_LEFT_F_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = FRONT_LEFT_B_PIN;GPIO_Init(FRONT_LEFT_B_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = FRONT_RIGHT_F_PIN;GPIO_Init(FRONT_RIGHT_F_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = FRONT_RIGHT_B_PIN;GPIO_Init(FRONT_RIGHT_B_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = BEHIND_LEFT_F_PIN;GPIO_Init(BEHIND_LEFT_F_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = BEHIND_LEFT_B_PIN;GPIO_Init(BEHIND_LEFT_B_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = BEHIND_RIGHT_F_PIN;GPIO_Init(BEHIND_RIGHT_F_GPIO, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = BEHIND_RIGHT_B_PIN;GPIO_Init(BEHIND_RIGHT_B_GPIO, &GPIO_InitStructure); /根据占空比驱动电机转动void CarMove(void) /左前轮if(front_left_speed_duty 0)/向前if(speed_count front_left_speed_duty)FRONT_LEFT_GO;elseFRONT_LEFT_STOP;else if(front_left_speed_duty 0)/向后if(speed_count 0)/向前if(speed_count front_right_speed_duty)FRONT_RIGHT_GO;else /停止FRONT_RIGHT_STOP;else if(front_right_speed_duty 0)/向后if(speed_count 0)/向前if(speed_count behind_left_speed_duty)BEHIND_LEFT_GO;else /停止BEHIND_LEFT_STOP;else if(behind_left_speed_duty 0)/向后if(speed_count 0)/向前if(speed_count behind_right_speed_duty)BEHIND_RIGHT_GO;else /停止BEHIND_RIGHT_STOP;else if(behind_right_speed_duty 0)/向后if(speed_count (-1)*behind_right_speed_duty)BEHIND_RIGHT_BACK;else /停止BEHIND_RIGHT_STOP;else /停止BEHIND_RIGHT_STOP;/向前void CarGo(void)front_left_speed_duty=22;front_right_speed_duty=22;behind_left_speed_duty=22;behind_right_speed_duty=22;/后退void CarBack(void)front_left_speed_duty=-12;front_right_speed_duty=-12;behind_left_speed_duty=-12;behind_right_speed_duty=-12;/向左void CarLeft(void)front_left_speed_duty=0;front_right_speed_duty=20;behind_left_speed_duty=0;behind_right_speed_duty=20;/增加后轮驱动力/向右void CarRight(void)front_left_speed_duty=20;front_right_speed_duty=0;behind_left_speed_duty=20;/增加后轮驱动力behind_right_speed_duty=0;/蓝牙向前void lanGo(void)front_left_speed_duty=SPEED_DUTY-10;front_right_speed_duty=SPEED_DUTY-10;behind_left_speed_duty=SPEED_DUTY-10;behind_right_speed_duty=SPEED_DUTY-10;/蓝牙向后void lanback(void)front_left_speed_duty=-SPEED_DUTY+10;front_right_speed_duty=-SPEED_DUTY+10;behind_left_speed_duty=-SPEED_DUTY+10;behind_right_speed_duty=-SPEED_DUTY+10;/横向左移void lanleft(void)front_left_speed_duty=-SPEED_DUTY+10;front_right_speed_duty=SPEED_DUTY-10;behind_left_speed_duty=SPEED_DUTY;behind_right_speed_duty=-SPEED_DUTY;/横向右移void lanright(void)front_left_speed_duty=SPEED_DUTY-9;front_right_speed_duty=-SPEED_DUTY+10;behind_left_speed_duty=-SPEED_DUTY;behind_right_speed_duty=SPEED_DUTY-3;/顺时针转动void lanshun(void)front_left_speed_duty=-SPEED_DUTY+20;front_right_speed_duty=SPEED_DUTY-20;behind_left_speed_duty=-SPEED_DUTY+20;behind_right_speed_duty=SPEED_DUTY-20;/逆时针转动void lanni(void)front_left_speed_duty=SPEED_DUTY-20;front_right_speed_duty=-SPEED_DUTY+20;behind_left_speed_duty=SPEED_DUTY-20;behind_right_speed_duty=-SPEED_DUTY+20;/斜向左转void lanxieleft(void)front_left_speed_duty=0;front_right_speed_duty=SPEED_DUTY+20;behind_left_speed_duty=SPEED_DUTY+20;behind_right_speed_duty=0;/斜向右转void lanxieright(void)front_left_speed_duty=SPEED_DUTY+20;front_right_speed_duty=0;behind_left_speed_duty=0;behind_right_speed_duty=SPEED_DUTY+20;/停止void CarStop(void)front_left_speed_duty=0;front_right_speed_duty=0;behind_left_speed_duty=0;behind_right_speed_duty=0;void MotorInit(void)MotorGPIO_Configuration();CarStop();/蓝牙控制程序#include uart.h#include interface.h#include motor.h/UART function/UART3 TxD GPIOB10 RxD GPIOB11void USART3Conf(u32 baudRate)NVIC_InitTypeDef NVIC_InitStruct;/定义一个设置中断的结构体USART_InitTypeDef USART_InitSturct;/定义串口1的初始化结构体GPIO_InitTypeDef GPIO_InitStruct;/定义串口对应管脚的结构体RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3 , ENABLE);/打开串口管脚时钟/USART3_Tx_Pin Configure GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;/输出引脚GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;/设置最高速度50MHzGPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;/推挽复用输出GPIO_Init(GPIOB , &GPIO_InitStruct);/将初始化好的结构体装入寄存器/USART3_Rx_Pin Configure GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;/GPIO模式悬浮输入 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11;/输入引脚 GPIO_Init(GPIOB, &GPIO_InitStruct);/将初始化好的结构体装入寄存器/USART3 ConfigureUSART_InitSturct.USART_BaudRate = baudRate;/波特率19200USART_InitSturct.USART_WordLength = USART_WordLength_8b;/数据宽度8位USART_InitSturct.USART_StopBits = USART_StopBits_1;/一个停止位USART_InitSturct.USART_Parity = USART_Parity_No;/无奇偶校验USART_InitSturct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitSturct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;/使能发送与接收USART_Init(USART3 , &USART_InitSturct);/将初始化好的结构体装入寄存器/USART1_INT ConfigureUSART_ITC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论