基于STM32的可遥控智能跟随小车的控制软件-源代码
- 格式:doc
- 大小:119.00 KB
- 文档页数:48


基于STM32的智能循迹小车的设计智能循迹小车是一种具有自主导航能力的智能移动机器人,能够根据预设的轨迹路径进行自主轨迹行驶。
该设计基于STM32单片机,采用感光电阻传感器进行循迹控制,结合电机驱动模块实现小车的前进、后退、转向等功能。
一、硬件设计1.MCU选型:选择STM32系列单片机作为主控芯片,具有高性能、低功耗、丰富接口等特点。
2.传感器配置:使用感光电阻传感器进行循迹检测,通过读取传感器的电阻值判断小车当前位置,根据不同电阻值控制小车行驶方向。
3.电机驱动模块:采用直流电机驱动模块控制小车的前进、后退、转向等动作。
4.电源管理:使用锂电池供电,通过电源管理模块对电源进行管理,保证系统正常工作。
二、软件设计1.系统初始化:对STM32单片机进行初始化,配置时钟、引脚等相关参数。
2.传感器读取:通过ADC模块读取感光电阻传感器的电阻值,判断小车当前位置。
3.循迹控制:根据传感器读取的电阻值判断小车相对于轨迹的位置,根据不同的位置控制小车的行驶方向,使其始终保持在轨迹上行驶。
4.电机控制:根据循迹控制的结果,通过电机驱动模块控制小车的前进、后退和转向动作。
5.通信功能:可通过串口通信模块与上位机进行通信,实现与外部设备的数据传输和控制。
三、工作流程1.初始化系统:对STM32单片机进行初始化配置。
2.读取传感器:通过ADC模块读取感光电阻传感器的电阻值。
3.循迹控制:根据读取的电阻值判断小车相对于轨迹的位置,控制小车行驶方向。
4.电机控制:根据循迹控制的结果,通过电机驱动模块控制小车的前进、后退和转向动作。
5.通信功能:可通过串口通信模块与上位机进行通信。
6.循环运行:不断重复上述步骤,实现小车的自主循迹行驶。
四、应用领域智能循迹小车的设计可以广泛应用于各个领域。
例如,在物流行业中,智能循迹小车可以实现自动化的物品搬运和运输;在工业领域,智能循迹小车可以替代人工,进行自动化生产和组装;在家庭生活中,智能循迹小车可以作为智能家居的一部分,实现家庭清洁和智能控制等功能。
基于STM32单片机的智能巡线小车本文旨在基于STM32单片机设计一款处理速度快、精准循迹、行驶稳定的智能小车。
对于路面状况信息的采集,我们采用光电对管的技术来实现;同时利用光电开关设置来采集障碍物信息;对于单片机不能识别的信息,我们用单片机内部自带的模数转换来识别。
单片机处理这些信息,然后对各个模块进行控制,实现小车的智能巡线。
标签:STM32;智能巡线小车;PWM控制1 引言近年来,随着科技的快速发展,关于智能车的研究越来越受人关注,该设计可以应用于运输,机器人,医疗器械等许多方面,现实意义很强。
智能巡线小车,它集成机械、电子、计算机控制于一体,在仓库智能管理、高压线路除冰等领域有着广阔的应用前景。
小车通过红外收发对管采集预先已铺好的路径信息,通过后轮电机驱动前进和前轮舵机控制前进方向驱动小车行驶,从而实现小车的巡线功能。
2 基于STM32的智能巡线小车的总体设计方案STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。
小车系统以STM32为主控芯片,利用红外收发对管采集道路信息,充分利用STM32串口资源和高速的运算、处理能力来实现巡线功能;通过调节PWM占空比实现调节电机的转速,根据传感器采集到的路径位置计算偏差,通过PD算法调整舵机转动的角度,从而实现精确巡线。
系统采用2种供电方式。
由于STM32需要3.3V恒压供电,而现有的充电电池随着用电时间会有所变化,势必会影响芯片的正常工作,因此本设计采用7.2V 充电电池和低压差稳压芯片TPS7350和TPS7333,以达到3.3V恒压的目的;后轮采用飞思卡尔B车电机,供电电源采用7.2V充电电池和升压芯片B0512使电压达到12V。
3 硬件电路设计硬件电路是由电源模块、单片机最小系统模块、循迹模块和电机驱动模块组成的。
下面分别介绍下电源模块、循迹模块和单机驱动模块。
3.1 电源模块电路整个供电系统是通过一节飞思卡尔专用7.2V充电电池供电,STM32单片机需要3.3V电源,循迹模块需要5V电源,电机用电池直接供电,所以采用压降比较小的TPS7350和TPS7333穩压到5V和3.3V。
智能小车控制程序(Smart car control program)#包括<< reg52。
”#包括<<信息。
h> //_nop_();#定义unsigned char函数# unsigned int定义单元#定义full_speed_left 40 //,?????:(30,35,6,25,306800027000500);#定义full_speed_right 45 / /(40,45,6,25,306800027000500);#定义correct_speed 6 / /#定义turn_speed_left 25#定义turn_speed_right 30unsigned char duty1 = 0;unsigned char duty2 = 0;函数T1 = 0,T2 = 0;UCHAR num1 = 0,0 = 0 = num2,小键盘数字3;公司^ HW1 = P0 0;/ /公司^ HW2 = P0 1;公司hw3 = P0 ^ 2;公司hw4 = P0 ^ 3;公司^ HW5 = P0 4;P3 ^了ENA = 2;// PWM??公司^ eNB = P3 3;公司5 = P2 ^ 4;/ /??公司6 = P2 ^ 5;公司在^ = P2 6;公司8 = P2 ^ 7;/ / -------------------------------------- 延时(个x)/??1ms{单元I、J;对于(i = 0;i < x;+ +)对于(j=0;j<120;j + +);}无效straight() /{P2 = 0xA0;duty1 = full_speed_left;duty2 = full_speed_right;}无效turn_left2() /{/ * 5 = 0;6 = 1;在= 0;8 = 1;* /P2 = 0xA0;duty1 = correct_speed;duty2 = full_speed_right;}无效turn_right2() /{/ * 5 = 0;6 = 1;在= 0;8 = 1;* /P2 = 0xA0;duty1 = full_speed_left;duty2 = correct_speed;}无效right() /??{/ * 5 = 0;6 = 1;在= 0;8 = 1;* /P2 = 0xA0;duty1 = turn_speed_left;duty2 = turn_speed_right;}无效left() /??{/ * 5 = 0;6 = 1;在= 0;8 = 1;* /P2 = 0xA0;duty1 = turn_speed_left;duty2 = turn_speed_right;无效stop() /{duty1 = 0;duty2 = 0;}/ /-------------------------------------------------------------无效()/{TMOD = 0x01;TH0 =(65536-500)/ 256;TL0 =(65536-500)% 256;EA = 1;ET0 = 1;tr0 = 1;}/ /--------------------------------------------------------------无效timer0()中断使用1 / 10??{TH0 =(65536-500)/ 256;TL0 =(65536-500)% 256;t1+;T2 +;如果(T1<duty1)ENA = 1;其他的ENA = 0;如果(t1>100){ ENA = 1,T1 = 0;}如果(T2<duty2 eNB = 1);其他的eNB = 0;如果(= 100){ ENA = 1,T1 = 0;}}/ /-------------------------------------------------------------无效detect_infrared() /??,{如果(HW1 = = 1和HW2 = = 1和hw3 = = 1和hw4 = = = = 0 & HW5 0);{straight();}如果(HW1 = = 1和HW2 = = 1和hw3 = = 1和hw4 = = = = 0 & HW5 1);{turn_left2();延迟(50);turn_right2();延迟(50);}如果(HW1 = = 1和HW2 = = 1和hw3 = = 1和hw4 = = = = 1 & HW5 0);{turn_right2();延迟(50);turn_left2();延迟(50);}如果(HW1 = = 0和HW2 = = 1和hw3 = = 1和hw4 = = = = 0 & HW5 0);{turn_right2();延迟(50);turn_left2();延迟(50);}如果(HW1 = = 0和HW2 = = 0和hw3 = = 1和hw4 = = = = 0 & HW5 0);{turn_right2();延迟(50);turn_left2();延迟(50);}如果(HW1 = = 1和HW2 = = 1和hw3 = = 0和hw4 = = = = 0 & HW5 0);{turn_left2();延迟(50);turn_right2();延迟(50);}如果(HW1 = = 1和HW2 = = 0和hw3 = = 0和hw4 = = = = 0 & HW5 0);{turn_left2();延迟(50);turn_right2();延迟(50);}如果(HW1 = = 1和HW2 = = 1和hw3 = = 1);{left();延迟(50);}}/ / ------------------------------------------------------ 无效main() /{();虽然(1)/{ detect_infrared();}}。
基于STM32的模拟工业自动化智能搬运小车设计随着工业化程度的不断提高,工业自动化技术也在不断发展。
智能搬运小车作为工业自动化的重要组成部分,承担着物料搬运、生产线作业和仓储管理等重要任务。
本文将介绍一种基于STM32的模拟工业自动化智能搬运小车设计方案,以期为工业自动化领域提供更多技术支持和创新思路。
一、智能搬运小车的功能需求智能搬运小车主要用于在工业环境中搬运、运输物料,以及在生产线上进行自动化作业。
智能搬运小车需要具备以下功能需求:1. 智能导航:能够通过传感器或者摄像头实现地面识别和环境感知,实现自主导航和安全避障;2. 自动搬运:能够通过机械臂、传送带等设备实现物料搬运和装卸;3. 运动控制:能够实现精准的运动控制,包括行驶、转弯、停车等功能;4. 系统集成:能够与工业生产线、智能仓储系统等其他设备进行无缝连接和协同工作。
二、基于STM32的智能搬运小车硬件设计STM32是一款性能稳定、功耗低、易于集成的微控制器,适合用于智能搬运小车的控制系统。
下面是一种基于STM32的智能搬运小车硬件设计方案:1. 控制器选型:选择一款性能稳定、功能丰富的STM32系列微控制器作为智能搬运小车的主控制器,如STM32F4系列或者STM32H7系列;2. 传感器系统:搬运小车需要搭载多种传感器,用于实现环境感知和自主导航,包括激光雷达、超声波传感器、红外传感器等;3. 电机驱动:选择高性能的电机驱动芯片,结合轮式驱动或者履带驱动系统,实现精准的运动控制;4. 通信模块:集成WiFi、蓝牙、ZigBee等通信模块,实现智能搬运小车与其他设备的无线通信和远程控制;5. 电源管理:采用高效的电源管理模块,保证智能搬运小车的稳定运行并提高能源利用率。
三、智能搬运小车的控制系统设计智能搬运小车的控制系统是其核心部分,主要包括导航控制、运动控制和自主决策三个模块:1. 导航控制:通过传感器获取环境信息,包括地面、障碍物等,并实时反馈给控制系统,由控制系统进行决策和路径规划,实现自主导航和避障;2. 运动控制:根据导航控制模块提供的路径规划信息,控制电机驱动系统,实现搬运小车精准的行驶、转弯和停车;3. 自主决策:智能搬运小车需要根据实际情况做出自主决策,包括选择最优路径、调整行驶速度、处理紧急情况等。