循迹避障智能小车设计
- 格式:ppt
- 大小:6.59 MB
- 文档页数:21
智能循迹小车课程设计报告一、课程设计目标:本次智能循迹小车课程设计的目标是让学生了解智能硬件的基础知识,掌握基本电子元器件的原理及使用方法,学习控制系统的组成和运行原理,并通过实践操作设计出一款功能齐全的智能循迹小车。
二、课程设计内容及步骤:1. 调研与分析——首先要对市面上现有的智能循迹小车进行调研与分析,了解各种类型的循迹小车的特点和优缺点,为后续的设计提供参考。
2. 硬件选型——根据课程设计目标和实际需要,选择合适的主控芯片、电子元器件和传感器等硬件。
3. 原理图设计——根据硬件选型,设计出对应的原理图,并在硬件上进行布局与焊接。
4. 程序设计——先在电路板上测试硬件是否正常,随后进行程序设计,根据传感器的反馈控制小车的运动,让小车能够沿着黑线自动循迹行驶,同时加入避障功能和自动寻迹功能。
5. 调试与优化——完成程序设计后,要对小车进行全面验收测试,发现问题及时解决并优化相关程序。
三、设计思路:本次课程设计基于树莓派电路板,利用循迹模块实现小车的自动循迹和自动寻迹。
同时将超声波模块结合避障算法实现小车的自动避障。
小车的外壳采用3D打印技术制作,操作简单实用。
四、课程设计效果:通过本课程设计,学生们从理论到实践,了解了智能硬件的基础知识,掌握了基本电子元器件的原理及使用方法,学习了控制系统的组成和运行原理。
同时,实践操作过程中,学生们培养了动手能力和实际操作的技能。
通过制作一台智能循迹小车,学生们对智能硬件的认识更加深入,并获得了较高的设计满足感。
五、课程设计展望:智能循迹小车是智能硬件应用领域的一项重要发明,具有广泛的应用前景。
未来,可以将循迹小车应用于快递、物流等行业,实现自动化送货、配送。
同时可以将遥控技术与循迹技术相结合,设计出更加高效、实用的智能循迹小车,推动智能化生产和工作环境。
项目名称:智能小车系别:信息工程系专业:11电气工程及其自动化姓名:刘亮、崔占闯、韩康指导老师:王蕾目录摘要: (3)关键词: (3)绪论: (3)一、系统设计 (4)1.1、任务及要求 (4)1.2车体方案认证与选择 (4)二、硬件设计及说明 (5)2.1循迹+避障模块 (5)2.2主控模块 (6)2.3电机驱动模块 (6)2.4机械模块 (7)2.5 电源模块 (7)三、自动循迹避障小车总体设计 (7)四、软件设计及说明 (8)4.1系统软件流程图 (9)4.2系统程序 (9)五、系统测试过程 (12)六、总结 (13)七、附录:系统元器件 (13)摘要本设计主要有三个模块包括信号检测模块、主控模块、电机驱动模块。
信号检测模块采用红外光对管,用以对有无障碍与黑线进行检测。
主控电路采用宏晶公司的8051核心的STC89C52单片机为控制芯片。
电机驱动模块采用意法半导体的L298N专用电机驱动芯片,单片控制与传统分立元件电路相比,使整个系统有很好的稳定性。
信号检测模块将采集到的路况信号传入STC89C52单片机,经单片机处理过后对L298N发出指令进行相应的调整。
通过有无光线接收来控制电动小车的转向,从而实现自动循迹避障的功能。
关键词:智能循迹避障小车,STC89C52单片机,L298N驱动芯片,信号检测模块,循迹避障绪论(一)智能小车的作用和意义自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。
近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。
人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。
随着科学技术的发展,机器人的感系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。
视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。
循迹避障模块设计方案包括电路原理图、实物图、器件表以及程序源代码循迹避障模块PCB图正面循迹避障模块PCB图背面循迹避障模块器件(BOM)表实物图封装直插直插直插直插直插直插封装封装直插封装封装表贴循迹避障模块实物图循迹避障模块电路板正面循迹避障模块电路板背面循迹避障程序源代码/*************51单片机智能小车红外循迹避障运动程序源代码***************开发软件:KEIL。
单片机型号:STC15W4K56S4。
单片机内部时钟,频率为22.1184M。
**********************************************************************/#include "stc15.h" //包含头文件stc15.h#include <intrins.h> //包含头文件intrins.h#define Busy 0x80 //LCD忙#define warning_voltage 7.0 //电池报警电压值#define ADC_POWER 0x80 //将0x80宏定义成ADC_POWER#define ADC_FLAG 0x10 //将0x10宏定义成ADC_FLAG#define ADC_START 0x08 //将0x08宏定义成ADC_START#define ADC_SPEEDLL 0x00 //将0x00宏定义成ADC_SPEEDLL#define ADC_SPEEDL 0x20 //将0x20宏定义成ADC_SPEEDL#define ADC_SPEEDH 0x40 //将0x40宏定义成ADC_SPEEDH#define ADC_SPEEDHH 0x60 //将0x60宏定义成ADC_SPEEDHHsbit Red_LED = P0^4; //红色LED对应P0.4sbit Green_LED = P0^5; //绿色LED对应P0.5sbit Blue_LED = P5^2; //蓝色LED对应P5.2sbit Yellow_LED = P5^3; //黄色LED对应P5.3sbit Beep = P4^4; //蜂鸣器对应P4.4sbit LCD_D4 = P4^3; //LCD_D4对应P4.3sbit LCD_D5 = P4^2; //LCD_D5对应P4.2sbit LCD_D6 = P2^7; //LCD_D6对应P2.7sbit LCD_D7 = P5^1; //LCD_D7对应P5.1sbit LCD_RS = P4^1; //LCD_RS对应P4.1sbit LCD_RW = P3^5; //LCD_RW对应P3.5sbit LCD_EN = P2^6; //LCD_EN对应P2.6sbit U6_L293D_En1_En2 = P1^7; //L293D(U6)的EN1和EN2对应P1.7 sbit U6_L293D_In1_In3 = P4^7; //L293D(U6)的IN1和IN3对应P4.7 sbit U6_L293D_In2_In4 = P1^6; //L293D(U6)的IN2和IN4对应P1.6 sbit U7_L293D_En1_En2 = P0^6; //L293D(U7)的EN1和EN2对应P0.6 sbit U7_L293D_In1_In3 = P0^7; //L293D(U7)的IN1和IN3对应P0.7 sbit U7_L293D_In2_In4 = P1^2; //L293D(U7)的IN2和IN4对应P1.2 sbit HW_LEFT_WAI = P2^0; //HW_LEFT_WAI对应IO口P2.0sbit HW_LEFT_NEI = P2^2; //HW_LEFT_NEI对应IO口P2.2sbit HW_RIGHT_NEI = P2^3; //HW_RIGHT_NEI对应IO口P2.3sbit HW_RIGHT_WAI = P2^4; //HW_RIGHT_WAI对应IO口P2.4sbit HW_LEFT = P2^1; //红外避障模块左外对应IO口P2.1 sbit HW_RIGHT = P2^5; //红外避障模块左内对应IO口P2.5 sbit Key_1 = P5^2; //Key1对应IO口P5.2sbit Key_2 = P0^4; //Key2对应IO口P0.4sbit Key_3 = P0^5; //Key3对应IO口P0.5sbit Key_4 = P5^3; //Key4对应IO口P5.3unsigned char code Start[]={"CAR START"}; //LCD显示内容CAR START unsigned char code Work[]={"CAR WORK"}; //LCD显示内容CAR WORK unsigned char code Voltage[]={"V: . V"}; //LCD显示内容V:unsigned char code VlotageLow[]={"LOW"}; //LCD显示内容LOWunsigned char code Space1[]={" "}; //LCD显示内容空白unsigned char code Space3[]={" "}; //LCD显示内容空白unsigned char code Forward[]={"FORWARD"}; //LCD显示内容FORWARD unsigned char code Back[]={"BACK"}; //LCD显示内容BACK unsigned char code Ting[]={"TING"}; //LCD显示内容TING unsigned char code Left[]={"LEFT"}; //LCD显示内容LEFT unsigned char code Right[]={"RIGHT"}; //LCD显示内容RIGHT unsigned char code ClockWise[]={"CLOCKWISE"}; //LCD显示内容CLOCKWISE unsigned char code AntiClockWise[]={"ANTICLOCKWISE"};//LCD显示内容ANTICLOCKWISE unsigned char code PressKey1[]={"P: K1"}; //LCD显示内容P: K1 unsigned char code PressKey2[]={"P: K2"}; //LCD显示内容P: K2 unsigned char code PressKey3[]={"P: K3"}; //LCD显示内容P: K3 unsigned char code PressKey4[]={"P: K4"}; //LCD显示内容P: K4 unsigned char code Hwxjbz[]={"HWXJBZ"}; //LCD显示内容HWXJBZvoid delay(unsigned int t); //delay延时函数void delay_us(unsigned int t); //delay_us延时函数void delay_ms(unsigned int t); //delay_ms延时函数void Delay5Ms(void); //延时函数void LED_INIT(void); //LED对应的IO口初始化void Red_Led_On(void); //红色LED亮void Red_Led_Off(void); //红色LED灭void Blue_Led_On(void); //蓝牙LED亮void Blue_Led_Off(void); //蓝色LED灭void Green_Led_On(void); //绿色LED亮void Green_Led_Off(void); //绿色LED灭void Yellow_Led_On(void); //黄色LED亮void Yellow_Led_Off(void); //黄色LED灭void BEEP_INIT(void); //蜂鸣器对应的IO口初始化void BEEP_ON(void); //蜂鸣器响void BEEP_OFF(void); //蜂鸣器不响void GPIO_1602_Configuration(void); //LCD1602液晶IO口初始化void WriteDataLCD(unsigned char WDLCD); //LCD写数据函数void WriteCommandLCD(unsigned char WCLCD,BuysC); //LCD写命令函数unsigned char ReadDataLCD(void); //LCD读数据函数unsigned char ReadStatusLCD(void); //LCD读状态函数void LCDInit(void); //LCD初始化void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);//LCD显示一个字符void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); //LCD显示一个字符串void GPIO_MOTOR_Configuration(void); //电机控制IO口初始化void CAR_FORWARD(void); //智能小车前进void CAR_LEFT(void); //智能小车左转void CAR_RIGHT(void); //智能小车右转void CAR_STOP(void); //智能小车停止void ZUO_MOTOR_ZZ(void); //智能小车左侧电机正转void ZUO_MOTOR_TZ(void); //智能小车左侧电机停转void YOU_MOTOR_ZZ(void); //智能小车右侧电机正转void YOU_MOTOR_TZ(void); //智能小车右侧电机停转void HWXJ_INIT(void); //红外循迹模块对应的IO口初始化void Voltage_Warning(void); //测量电池电压void Timer0_Init(void); //定时器初始化void LEFT_MOTO(void); //左电机PWM调速函数void RIGHT_MOTO(void); //右电机PWM调速函数void CAR_HWXJ(void); //小车红外循迹函数void CAR_HWBZ(void); //小车红外循迹避障void HWBZ_INIT(void); //红外避障模块对应的IO口初始化void KEY_INIT(void); //KEY对应的IO口初始化void Key1_SCAN(void); //按键扫描void ADC_INIT(void); //AD初始化unsigned char GetADCResult(unsigned char ch);//获取AD值unsigned char pwmval_left = 0; //变量定义unsigned char pwmval_right = 0; //变量定义unsigned char pwmval_left_init = 5; //左电机占空比调节unsigned char pwmval_right_init = 5; //右电机占空比调节bit right_pwm = 1; //右电机PWM开关,为1时打开bit left_pwm = 1; //左电机PWM开关,为1时打开/************************延时函数***************************/void delay(unsigned int t) //delay延时函数{while(t--);}void delay_us(unsigned int t) //delay_us延时函数{unsigned char i;while(t--){i=3;while(i--)delay(1);}}void delay_ms(unsigned int t) //delay_ms延时函数{while(t--) {delay_us(t);}}void Delay5Ms(void) //5ms延时函数{unsigned int TempCyc = 3552;while(TempCyc--);}/**********************LED相关函数*************************/void LED_INIT(void) //LED对应的IO口初始化{P0M1=P0M1&0xcf;P0M0=P0M0&0xcf; //P0.5,P0.4设置为双向IO口 P5M1=P5M1&0xf3;P5M0=P5M0&0xf3; //P5.3,P5.2设置为双向IO口}void Red_Led_On(void) //红色LED亮{Red_LED = 0;}void Red_Led_Off(void) //红色LED灭{Red_LED = 1;}void Blue_Led_On(void) //蓝牙LED亮{Blue_LED = 0;}void Blue_Led_Off(void) //蓝色LED灭{Blue_LED = 1;}void Green_Led_On(void) //绿色LED亮{Green_LED = 0;}void Green_Led_Off(void) //绿色LED灭{Green_LED = 1;}void Yellow_Led_On(void) //黄色LED亮{Yellow_LED = 0;}void Yellow_Led_Off(void) //黄色LED灭{Yellow_LED = 1;}/*********************蜂鸣器相关函数***********************/void BEEP_INIT(void) //蜂鸣器对应的IO口初始化{P4M1=P4M1&0xef;P4M0=P4M0&0xef;}void BEEP_ON(void) //蜂鸣器响{Beep=0;}void BEEP_OFF(void) //蜂鸣器不响{Beep=1;}/*******************液晶LCD1602相关函数********************/void GPIO_1602_Configuration(void) //LCD1602液晶IO口初始化{P2M1=P3M1&0x3f;P2M0=P3M0&0x3f;P3M1=P3M1&0xdf;P3M0=P3M0&0xdf;P4M1=P4M1&0xf1;P4M0=P4M0&0xf1;P5M1=P5M1&0xfd;P5M0=P5M0&0xfd;}unsigned char ReadStatusLCD(void) //测试LCD忙碌状态{LCD_D7 = 1; //LCD的D7置1LCD_RS = 0; //LCD管脚RS设置成低电平 LCD_RW = 1; //LCD管脚RW设置成高电平LCD_EN = 0; //LCD管脚E设置成低电平 LCD_EN = 0; //LCD管脚E设置成低电平 LCD_EN = 1; //LCD管脚E设置成高电平 while(LCD_D7); //检测忙信号return(Busy); //表示当前忙}void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测{if(BuysC) ReadStatusLCD(); //根据需要检测忙LCD_EN = 0; //LCD管脚E设置成低电平 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //延时LCD_RS = 0; //LCD管脚RS设置成低电平 LCD_RW = 0; //LCD管脚RW设置成低电平 if((WCLCD&0x80)==0x80){LCD_D7=1;}else{LCD_D7=0;}if((WCLCD&0x40)==0x40){LCD_D6=1;}else{LCD_D6=0;}if((WCLCD&0x20)==0x20){LCD_D5=1;}else{LCD_D5=0;}if((WCLCD&0x10)==0x10){LCD_D4=1;}else{LCD_D4=0;}LCD_EN = 1; //LCD管脚E设置成高电平 LCD_EN = 0; //LCD管脚E设置成低电平 if((WCLCD&0x08)==0x08){LCD_D7=1;}else{LCD_D7=0;}if((WCLCD&0x04)==0x04){LCD_D6=1;}else{LCD_D6=0;}if((WCLCD&0x02)==0x02){LCD_D5=1;}else{LCD_D5=0;}if((WCLCD&0x01)==0x01){LCD_D4=1;}else{LCD_D4=0;}LCD_EN = 1; //LCD管脚E设置成高电平 LCD_EN = 0; //LCD管脚E设置成低电平}void WriteDataLCD(unsigned char WDLCD) //LCD写数据函数{ReadStatusLCD(); //读取LCD状态LCD_EN = 0; //LCD管脚E设置成低电平 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //延时LCD_RS = 1; //LCD管脚RS设置成高电平 LCD_RW = 0; //LCD管脚RW设置成低电平 if((WDLCD&0x80)==0x80){LCD_D7=1;}else{LCD_D7=0;}if((WDLCD&0x40)==0x40){LCD_D6=1;}else{LCD_D6=0;}if((WDLCD&0x20)==0x20){LCD_D5=1;}else{LCD_D5=0;}if((WDLCD&0x10)==0x10){LCD_D4=1;}else{LCD_D4=0;}LCD_EN = 1; //LCD管脚E设置成高电平 LCD_EN = 0; //LCD管脚E设置成低电平 if((WDLCD&0x08)==0x08){LCD_D7=1;}else{LCD_D7=0;}if((WDLCD&0x04)==0x04){LCD_D6=1;}else{LCD_D6=0;}if((WDLCD&0x02)==0x02){LCD_D5=1;}else{LCD_D5=0;}if((WDLCD&0x01)==0x01){LCD_D4=1;}else{LCD_D4=0;}LCD_EN = 1; //LCD管脚E设置成高电平LCD_EN = 0; //LCD管脚E设置成低电平}void LCDInit(void) //LCD初始化{LCD_D7=0;LCD_D6=0;LCD_D5=0;LCD_D4=0;WriteCommandLCD(0x28,0);Delay5Ms(); //三次显示模式设置WriteCommandLCD(0x28,0);Delay5Ms();WriteCommandLCD(0x28,0);Delay5Ms();WriteCommandLCD(0x28,1); //显示模式设置WriteCommandLCD(0x08,1); //关闭显示WriteCommandLCD(0x01,1); //显示清屏WriteCommandLCD(0x06,1); //显示光标移动设置WriteCommandLCD(0x0C,1); //显示开及光标设置}void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData){Y&=0x1;X&=0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码WriteCommandLCD(X,0); //这里不检测忙信号,发送地址码WriteDataLCD(DData); //发送数据}void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) {unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while(DData[ListLength]>=0x20) //若到达字串尾则退出{if (X <= 0xF) //X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength]);//显示单个字符ListLength++;X++;}}}/********************电机控制相关函数**********************/void GPIO_MOTOR_Configuration(void) //电机控制IO口初始化{P0M1=P0M1&0x3f;P0M0=P0M0&0x3f;P1M1=P1M1&0x3b;P1M0=P1M0&0x3b;P4M1=P4M1&0x7f;P4M0=P4M0&0x7f;}void CAR_FORWARD(void) //智能小车前进{ZUO_MOTOR_ZZ();YOU_MOTOR_ZZ();} //智能小车左侧电机正转,右侧电机正转void CAR_LEFT(void) //智能小车左转{ZUO_MOTOR_TZ();YOU_MOTOR_ZZ();} //智能小车左侧电机停转,右侧电机正转void CAR_RIGHT(void) //智能小车右转{ZUO_MOTOR_ZZ();YOU_MOTOR_TZ();} //智能小车左侧电机正转,右侧电机停转void CAR_STOP(void) //智能小车停止{ZUO_MOTOR_TZ();YOU_MOTOR_TZ();} //智能小车左侧电机停转,右侧电机停转void ZUO_MOTOR_ZZ(void) //智能小车左侧电机正转{U6_L293D_In1_In3=1;U6_L293D_In2_In4=0;}void ZUO_MOTOR_TZ(void) //智能小车左侧电机停转{U6_L293D_In1_In3=0;U6_L293D_In2_In4=0;}void YOU_MOTOR_ZZ(void) //智能小车右侧电机正转{U7_L293D_In1_In3=0;U7_L293D_In2_In4=1;}void YOU_MOTOR_TZ(void) //智能小车右侧电机停转{U7_L293D_In1_In3=0;U7_L293D_In2_In4=0;} void LEFT_MOTO(void){if(left_pwm){if(pwmval_left<=pwmval_left_init){U6_L293D_En1_En2=1;}else if(pwmval_left>pwmval_left_init){U6_L293D_En1_En2=0;}if(pwmval_left>=20){pwmval_left=0;}}else{U6_L293D_En1_En2=0;}}void RIGHT_MOTO(void){if(right_pwm){if(pwmval_right<=pwmval_right_init){U7_L293D_En1_En2=1;}else if(pwmval_right>pwmval_right_init){U7_L293D_En1_En2=0;}if(pwmval_right>=20){pwmval_right = 0;}}else{U7_L293D_En1_En2=0;}}/********************红外循迹相关函数**********************/void HWXJ_INIT(void) //红外循迹模块对应的IO口初始化{P2M1=P2M1&0xe2;P2M0=P2M0&0xe2;} //P2.0,P2.2,P2.3,P2.4设置为双向IO口void CAR_HWXJ(void) //小车红外循迹函数{//探测到黑线为1,没有探测到黑线为0if((HW_LEFT_WAI==0)&&(HW_LEFT_NEI==0)&&(HW_RIGHT_NEI==0)&&(HW_RIGHT_WAI==0))//如果左外,左内,右内,右外循迹传感器都没有感应到黑线{pwmval_left_init=5;pwmval_right_init=5; //左右电机占空比调节CAR_FORWARD(); //小车前进}else if((HW_LEFT_WAI==1)&&(HW_LEFT_NEI==1)&&(HW_RIGHT_NEI==0)&&(HW_RIGHT_WAI==0))//如果左外,左内循迹传感器都感应到黑线;右内,右外循迹传感器没有感应到黑线 {pwmval_left_init=6;pwmval_right_init=6; //左右电机占空比调节CAR_LEFT(); //小车左转}else if((HW_LEFT_WAI==1)&&(HW_LEFT_NEI==0)&&(HW_RIGHT_NEI==0)&&(HW_RIGHT_WAI==0))//如果左外循迹传感器都感应到黑线;左内,右内,右外循迹传感器没有感应到黑线 {pwmval_left_init=6;pwmval_right_init=6; //左右电机占空比调节CAR_LEFT(); //小车左转}else if((HW_LEFT_WAI==0)&&(HW_LEFT_NEI==1)&&(HW_RIGHT_NEI==0)&&(HW_RIGHT_WAI==0))//如果左内循迹传感器都感应到黑线;左外,右内,右外循迹传感器没有感应到黑线 {pwmval_left_init=6;pwmval_right_init=6; //左右电机占空比调节CAR_LEFT(); //小车左转}else if((HW_LEFT_WAI==0)&&(HW_LEFT_NEI==0)&&(HW_RIGHT_NEI==1)&&(HW_RIGHT_WAI==1))//如果右外,右内循迹传感器都感应到黑线;左内,左外循迹传感器没有感应到黑线 {pwmval_left_init=6;pwmval_right_init=6; //左右电机占空比调节CAR_RIGHT(); //小车右转}else if((HW_LEFT_WAI==0)&&(HW_LEFT_NEI==0)&&(HW_RIGHT_NEI==1)&&(HW_RIGHT_WAI==0))//如果右内循迹传感器都感应到黑线;左外,左内,右外循迹传感器没有感应到黑线 {pwmval_left_init=6;pwmval_right_init=6; //左右电机占空比调节CAR_RIGHT(); //小车右转}else if((HW_LEFT_WAI==0)&&(HW_LEFT_NEI==0)&&(HW_RIGHT_NEI==0)&&(HW_RIGHT_WAI==1))//如果右外循迹传感器都感应到黑线;左外,左内,右内循迹传感器没有感应到黑线 {pwmval_left_init=6;pwmval_right_init=6; //左右电机占空比调节CAR_RIGHT(); //小车右转}}/********************红外避障相关函数**********************/void HWBZ_INIT(void) //红外避障模块对应的IO口初始化{P2M1=P2M1&0xdd;P2M0=P2M0&0xdd;}void CAR_HWBZ(void) //小车红外循迹避障{if((HW_LEFT==0)||(HW_RIGHT==0)){CAR_STOP();}}//感应到障碍物,小车停止/********************按键扫描相关函数**********************/void KEY_INIT(void) //KEY对应的IO口初始化{P0M1=P0M1&0xcf;P0M0=P0M0&0xcf; //P0.5,P0.4设置为双向IO口P5M1=P5M1&0xf3;P5M0=P5M0&0xf3; //P5.3,P5.2设置为双向IO口}void Key1_SCAN(void) //按键扫描{LOOP:if(Key_1 == 0) //判断按键是否被按下 {delay_us(20);if(Key_1 == 0) //第二次判断按键是否被按下{BEEP_ON(); //蜂鸣器响while(Key_1 == 0); //判断按键是否被松开BEEP_OFF(); //蜂鸣器停止}else{goto LOOP;} //跳转到loop处重新扫描}else{goto LOOP;} //跳转到loop处重新扫描}/******************电池电量监测相关函数********************/void ADC_INIT(void) //AD初始化{P1ASF = 0x08;ADC_RES = 0;ADC_CONTR = ADC_POWER|ADC_SPEEDLL;}unsigned char GetADCResult(unsigned char ch) //获取AD值{ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ch|ADC_START;delay(4);while(!(ADC_CONTR&ADC_FLAG));ADC_CONTR&=~ADC_FLAG;return ADC_RES;}void Voltage_Warning(void) //电压报警函数{u8 AD_RESULT;float temp;unsigned int tempA;unsigned char disbuff[4]={0,0,0,0};AD_RESULT = GetADCResult(0x03); //读取电压值temp =((float)AD_RESULT/256)*5*2; //数值转换tempA = temp*1000;disbuff[3]=tempA/10000;disbuff[2]=tempA/1000%10;disbuff[1]=tempA/100%10;disbuff[0]=tempA/10%10;DisplayOneChar(2,1,(0x30+disbuff[3]));Delay5Ms();//显示电压值DisplayOneChar(3,1,(0x30+disbuff[2]));Delay5Ms();//显示电压值DisplayOneChar(5,1,(0x30+disbuff[1]));Delay5Ms();//显示电压值DisplayOneChar(6,1,(0x30+disbuff[0]));Delay5Ms();//显示电压值if(temp<=warning_voltage)//如果读取到的电压值小于等于设定的报警电压值warning_voltage{while(1){BEEP_ON(); //蜂鸣器响Red_Led_On();Blue_Led_On(); //红色LED亮,蓝牙LED亮 Green_Led_On();Yellow_Led_On(); //绿色LED亮,黄色LED亮 DisplayListChar(13,1,VlotageLow);delay_ms(200);//在LCD中显示LOWBEEP_OFF(); //蜂鸣器不响Red_Led_Off();Blue_Led_Off(); //红色LED灭,蓝色LED灭 Green_Led_Off();Yellow_Led_Off(); //绿色LED灭,黄色LED灭 DisplayListChar(13,1,Space3);delay_ms(200);}}}/********************定时器0初始化函数*********************/void Timer0_Init(void) //定时器初始化{TMOD= 0x01;TH0=0xf1;TL0=0x9a; //2ms定时TR0 = 1;ET0 = 1;EA = 1; //开总中断}/*************************主函数**************************/void main(void){GPIO_MOTOR_Configuration(); //电机控制IO口初始化CAR_STOP(); //智能小车停止GPIO_1602_Configuration();delay_ms(10); //LCD1602液晶IO口初始化LCDInit();delay_ms(10); //LCD1602初始化LED_INIT(); //LED对应的IO口初始化BEEP_INIT(); //蜂鸣器对应的IO口初始化ADC_INIT(); //处理器AD转换初始化KEY_INIT(); //KEY对应的IO口初始化HWXJ_INIT(); //红外循迹模块对应的IO口初始化 HWBZ_INIT(); //红外避障模块对应的IO口初始化 delay_ms(10); //延时BEEP_ON(); //蜂鸣器响Red_Led_On();Blue_Led_On(); //红色LED亮,蓝牙LED亮Green_Led_On();Yellow_Led_On(); //绿色LED亮,黄色LED亮delay_ms(500); //延时BEEP_OFF(); //蜂鸣器不响Red_Led_Off();Blue_Led_Off(); //红色LED灭,蓝色LED灭Green_Led_Off();Yellow_Led_Off(); //绿色LED灭,黄色LED灭delay_ms(500); //延时DisplayListChar(3,0,Start);delay_ms(10); //LCD1602显示CAR START DisplayListChar(0,1,Voltage);delay_ms(10);Voltage_Warning(); //电压报警函数DisplayListChar(11,1,PressKey1);delay_ms(10);//LCD1602显示P: K1Key1_SCAN(); //按键扫描Timer0_Init(); //定时器初始化delay_ms(10); //延时DisplayListChar(0,0,Space1);delay_ms(10); //LCD1602显示DisplayListChar(0,1,Space1);delay_ms(10); //LCD1602显示DisplayListChar(5,0,Hwxjbz);delay_ms(10); //LCD1602显示HWXJBZwhile(1){if((HW_LEFT == 0)||(HW_RIGHT == 0)){CAR_HWBZ();}//小车左右2个红外避障传感器任何一个感应到障碍物,小车红外循迹避障else{CAR_HWXJ();}//小车左右2个红外避障传感器都没有感应到障碍物,小车红外循迹函数}}/******************定时器0中断处理函数*******************/void timer0()interrupt 1 using 2 //定时器0中断处理{TH0=0xf1;TL0=0x9a; //2ms定时pwmval_left=pwmval_left + 1;pwmval_right=pwmval_right + 1;LEFT_MOTO();RIGHT_MOTO();}。
基于STM32的智能循迹避障小车智能循迹避障小车是一种基于STM32微控制器的智能车辆,它可以根据预设的路径自动行驶并能够避开障碍物。
这种小车具有很高的自主性和智能性,非常适合用于教学、科研和娱乐等领域。
本文将介绍基于STM32的智能循迹避障小车的设计原理、硬件结构、软件开发以及应用场景。
一、设计原理智能循迹避障小车的设计原理主要包括传感器感知、决策控制和执行动作三个部分。
通过传感器感知车辆周围环境的变化,小车可以及时做出决策并执行相应的动作,从而实现自动行驶和避障功能。
在基于STM32的智能小车中,常用的传感器包括红外避障传感器、光电传感器和编码器等。
红外避障传感器可以检测到障碍物的距离和方向,从而帮助小车避开障碍物。
光电传感器可以用于循迹,帮助小车按照预定的路径行驶。
编码器可以用于测量小车的速度和位置,实现精确的定位和控制。
通过这些传感器的数据采集和处理,小车可以实现智能化的行驶和避障功能。
二、硬件结构基于STM32的智能循迹避障小车的硬件结构包括主控制板、传感器模块、执行器模块和电源模块。
主控制板采用STM32微控制器,负责控制整个车辆的运行和决策。
传感器模块包括红外避障传感器、光电传感器和编码器等,用于感知周围环境的变化。
执行器模块包括电机和舵机,用于控制车辆的速度和方向。
电源模块提供电能,为整个车辆的运行提供动力支持。
三、软件开发基于STM32的智能循迹避障小车的软件开发主要包括嵌入式系统的编程和算法的设计。
嵌入式系统的编程主要使用C语言进行开发,通过STM32的开发环境进行编译和调试。
算法的设计主要包括避障算法和循迹算法。
避障算法通过传感器的数据处理,判断障碍物的位置和距离,并做出相应的避开动作。
循迹算法通过光电传感器的数据处理,使小车能够按照预设的路径行驶。
四、应用场景基于STM32的智能循迹避障小车可以广泛应用于教学、科研和娱乐等领域。
在教学领域,可以用于智能机器人课程的教学实验,帮助学生掌握嵌入式系统的开发和智能控制的原理。
智能循迹小车设计方案一、设计目标:1.实现智能循迹功能,能够沿着预定轨迹自动行驶。
2.具备避障功能,能够识别前方的障碍物并及时避开。
3.具备远程遥控功能,方便用户进行操作和控制。
4.具备数据上报功能,能够实时反馈运行状态和数据。
二、硬件设计:1.主控模块:使用单片机或者开发板作为主控模块,负责控制整个小车的运行和数据处理。
2.传感器模块:-光电循迹传感器:用于检测小车当前位置,根据光线的反射情况确定移动方向。
-超声波传感器:用于检测前方是否有障碍物,通过测量障碍物距离来判断是否需要避开。
3.驱动模块:-电机和轮子:用于实现小车的运动,可选用直流电机或者步进电机,轮子要具备良好的抓地力和摩擦力。
-舵机:用于实现小车的转向,根据循迹传感器的信号来控制舵机的角度。
4.通信模块:-Wi-Fi模块:用于实现远程遥控功能,将小车与遥控设备连接在同一个无线网络中,通过网络通信进行控制。
-数据传输模块:用于实现数据上报功能,将小车的运行状态和数据通过无线通信传输到指定的接收端。
三、软件设计:1.循迹算法:根据光电循迹传感器的反馈信号,确定小车的行进方向。
为了提高循迹的精度和稳定性,可以采用PID控制算法进行修正。
2.避障算法:通过超声波传感器检测前方障碍物的距离,当距离过近时,触发避障算法,通过调整小车的行进方向来避开障碍物。
3.遥控功能:通过Wi-Fi模块与遥控设备建立连接,接收遥控指令并解析,根据指令调整小车的运动状态。
4.数据上报功能:定时采集小车的各项运行数据,并通过数据传输模块将数据发送到指定的接收端,供用户进行实时监测和分析。
四、系统实现:1.硬件组装:根据设计要求进行硬件的组装和连接,确保各个模块之间的正常通信。
2.软件编程:根据功能要求,进行主控模块的编程,实现循迹、避障、遥控和数据上报等功能。
3.调试测试:对整个系统进行调试和测试,确保各项功能正常运行,并进行性能和稳定性的优化。
4.用户界面设计:设计一个用户友好的界面,实现对小车的远程控制和数据监测,提供良好的用户体验。
论文开题:智能循迹避障小车设计论文开题:智能循迹避障小车设计论文开题:智能循迹避障小车设计:2013-9-17 19:33:01大学本科毕业论文(设计)开题报告学院:华侨大学机电学院专业班级:08测控2班课题名称智能循迹避障小车设计1、本课题的的研究目的和意义:随着汽车工业的迅速发展,其与电子信息产业的融合速度也显著提高,汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。
关于汽车的研究也就越来越受人关注。
全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究,可见其研究意义很大。
本设计就是在这样的背景下提出的,为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想。
目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法,设计的智能电动小车能够具有循迹避障等功能。
通过本次毕设,了解智能系统,学会查阅科技文车辆导航的方法,促进日本智能车辆的整体进步。
进入80年代中期,设计和制造智能车辆的浪潮席卷了全世界,一大批世界著名的公司开始研制智能车辆平台。
第三阶段:从90年代开始,智能车辆进入到了深入系统、大规模的研究阶段。
最为突出的是,美国卡内基-梅陇大学机器人研究所一共完成了Navlab系列的自主车的研究,取得了显著的成就。
目前,智能车辆的发展正处于第三阶段,这一阶段的研究成果代表了当前国外智能车辆的主要发展方向。
2.2 国内智能车辆的现状研究相比于国外,我国开展智能车辆技术方面的研究起步较晚,开始于20世纪80年代,而且大多数研究尚处于针对某个单项技术研究的阶段。
虽然我国在智能车辆技术方面的研究总体上落后于发达国家,并且存在一定的技术差距,但是我国也取得了一系列的成果,主要有:中国第一汽车集团公司和国防科技大学机电工程与自动化学院于2003年研制成功了我国第一辆自主驾驶轿车。
轮式移动机器人的设计报告单片机系统课程设计智能小车(避障及循迹)的设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
智能循迹、避障遥控小车设计摘要:本文设计了一款以STM32单片机为控制核心的智能小车,智能小车主要采用高灵敏度的光电管,对路面黑色轨迹进行检测,并利用单片机产生PWM波,控制小车速度。
能够平稳跟踪给定的路径实现循迹的目的。
整个系统基于普通玩具小车的机械结构,并利用了小车的底盘、前后轮电机及其自动复原装置,能够平稳跟踪路面黑色轨迹运行。
若遇到障碍物,通过检测障碍物离自己的距离来判断自己是前进、后退还是左转、右转,最终达到避障的目的。
1、背景及意义近年来人工智能技术的快速发展,智能小车技术也已经发展到可以模仿人类行为程度,主要是因为自动化生产设备越来越精密,它不仅给传统产业带来了翻天覆地的变化,而且提高了我们生活生产的质量。
智能小车具有自动循迹、避障和可控行驶等诸多功能,可以在不同环境完成工作,智能小车在各个行业都有不错的应用价值。
例如,在日常生活中,智能小车可以像导盲犬那样给盲人指引正确的道路。
在军事方面,智能小车可以代替我们在危险区域的排雷和侦察等任务。
在科学研究中,智能小车可以在外星球上完成探索或返回照片。
另外,它可以帮助人们在复杂的环境中执行设备检查和货物处理等任务。
2、智能小车硬件设计小车通过红外探测法实现循迹功能,红外接收装置和发射装置实现避障功能,红外传感器实现测速功能,超声波系统实现测距。
车轮应用了PWM调速系统和L298N芯片来控制调速和车轮旋转,还有用液晶显示模块LCD1602来显示小车基本情况。
通过c语言完成对小车行动指令的编程,实现小车按照设定路线行驶、避障。
智能小车硬件设计主要是电源模块设计、单片机最小系统的设计、循迹模块设计、避障模块电路设计以及遥控电路设计等。
电源模块设计主要为单片机最小系统以及需要的外围电路中用到的芯片进行供电,供电电压为+5V,因此需要一个恒定+5V的稳压电源,本文中主要是通过直流稳压电源7805输出恒定电源的方式来进行设计,输入电源电压为36V一下,交直流方式均可,直流电源模块电路图如图1所示图1 电源模块部分电路图单片机最小系统采用了传统的STM32最小系统的设计,包含电源滤波部分、晶振部分电路、复位电路等,为最常用的电路,在此不再进行赘述。
基于单片机的智能小车避障循迹系统设计一、本文概述随着科技的不断进步和智能化趋势的深入发展,单片机技术在现代电子系统中扮演着日益重要的角色。
特别是在智能机器人、自动化设备等领域,基于单片机的智能系统设计成为研究的热点。
其中,智能小车作为一种典型的移动机器人平台,具有广泛的应用前景。
智能小车能够在复杂环境中自主导航、避障和完成任务,这对于提高生产效率、降低人力成本以及实现智能化管理具有重要意义。
本文旨在设计一种基于单片机的智能小车避障循迹系统。
该系统利用单片机作为核心控制器,结合传感器技术、电机驱动技术和控制算法,实现小车的自主循迹和避障功能。
通过对小车硬件和软件的设计与优化,使其在复杂环境中能够稳定、高效地运行,并具备一定的智能化水平。
本文首先介绍了智能小车的研究背景和意义,阐述了基于单片机的智能小车避障循迹系统的研究现状和发展趋势。
然后,详细描述了系统的总体设计方案,包括硬件平台的搭建和软件程序的设计。
在硬件设计方面,重点介绍了单片机的选型、传感器的选择与配置、电机驱动电路的设计等关键部分。
在软件设计方面,详细阐述了避障算法和循迹算法的实现过程,以及程序的编写和调试方法。
本文还通过实验验证了所设计系统的可行性和有效性。
通过实验数据的分析和对比,证明了该系统在避障和循迹方面具有较高的准确性和稳定性。
本文也探讨了系统存在的不足之处和未来的改进方向,为相关领域的研究提供了一定的参考和借鉴。
本文设计的基于单片机的智能小车避障循迹系统具有较高的实用价值和广泛的应用前景。
通过不断优化和完善系统的设计,有望为智能机器人和自动化设备的发展做出积极的贡献。
二、系统硬件设计在智能小车避障循迹系统设计中,硬件设计是整个系统的基石。
我们选用了性价比较高、易于编程控制的单片机作为核心控制器,围绕它设计了整个硬件系统。
核心控制器:选用了一款高性能、低功耗的单片机作为核心控制器,负责处理传感器数据、执行避障和循迹算法,以及控制小车的运动。
基于STM32的循迹避障智能小车的设计循迹避障智能小车是一种集成了循迹和避障功能的智能机器人。
它可以根据预先设计的循迹路径进行行驶,并且在障碍物出现时能够自动避开障碍物。
该设计基于STM32单片机,下面将详细介绍该设计。
1.系统硬件设计:循迹避障智能小车的硬件主要包括STM32单片机、直流电机、编码器、循迹模块、超声波传感器等。
其中,STM32单片机作为控制核心,用于控制小车的运动和循迹避障逻辑。
直流电机和编码器用于小车的驱动和运动控制。
循迹模块用于检测循迹路径,超声波传感器用于检测障碍物。
2.系统软件设计:系统软件设计包括两个主要部分:循迹算法和避障算法。
循迹算法:循迹算法主要利用循迹模块检测循迹路径上的黑线信号,通过对信号的处理和判断,确定小车需要向左转、向右转还是直行。
可以采用PID控制算法对小车进行自动调节,使之始终保持在循迹路径上。
避障算法:避障算法主要利用超声波传感器检测前方是否有障碍物。
当检测到障碍物时,小车需要进行避障操作。
可以采用避障算法,如躲避式或规避式避障算法,来使小车绕过障碍物,并找到新的循迹路径。
3.系统控制设计:系统控制设计主要包括小车运动控制和模式切换控制。
小车运动控制:通过控制直流电机,可以实现小车的前进、后退、左转和右转等运动。
模式切换控制:可以采用按键或者遥控器等方式对系统进行控制。
例如,可以通过按键切换循迹模式和避障模式,或者通过遥控器对小车进行控制。
4.功能扩展设计:循迹避障智能小车的功能还可以扩展,如增加音乐播放功能、语音识别功能以及可视化界面等。
可以通过增加相应的硬件和软件模块来实现这些功能,并通过与STM32单片机的通信进行控制。
总结:循迹避障智能小车的设计基于STM32单片机,通过循迹算法和避障算法实现对小车的控制,可以实现小车沿着预定的循迹路径行驶并在遇到障碍物时进行自主避障操作。
该设计还可以通过功能扩展实现更多的智能功能,如音乐播放和语音识别等。
基于STM32的智能循迹避障小车智能循迹避障小车是一种基于STM32微控制器的智能机器人车,它具有智能避障、循迹导航等功能。
它通过使用红外传感器、超声波传感器等传感器来感知周围环境,并通过STM32微控制器来实现对传感器数据的处理和控制小车的运动。
本文将介绍基于STM32的智能循迹避障小车的原理、设计和制作过程。
一、智能循迹避障小车的原理1.1 系统架构智能循迹避障小车主要由STM32微控制器、电机驱动模块、传感器模块和电源模块组成。
STM32微控制器用于控制小车的运动和感知周围环境;电机驱动模块用于控制小车的电机运动;传感器模块用于感知周围环境,包括红外传感器、超声波传感器等;电源模块用于为整个系统提供电源供应。
1.2 工作原理智能循迹避障小车主要工作原理是通过传感器模块感知周围环境的障碍物和地面情况,然后通过STM32微控制器对传感器数据进行处理,再控制电机驱动模块完成小车的运动。
在循迹导航时,小车可以通过红外传感器感知地面情况,然后根据传感器数据进行反馈控制,使小车能够按照预定路径行驶;在避障时,小车可以通过超声波传感器感知前方障碍物的距离,然后通过控制电机的速度和方向来避开障碍物。
2.1 硬件设计智能循迹避障小车的硬件设计主要包括电路设计和机械结构设计。
电路设计中,需要设计STM32微控制器和传感器、电机驱动模块的连接电路,以及电源模块的电源供应电路;机械结构设计中,需要设计小车的外观和结构,以及安装电机、传感器等模块的位置和方式。
2.2 软件设计智能循迹避障小车的软件设计主要包括STM32程序设计和智能控制算法设计。
STM32程序设计中,需要编写STM32微控制器的程序,包括对传感器数据的采集和处理,以及对电机的控制;智能控制算法设计中,需要设计循迹导航算法和避障算法,以使小车能够智能地进行循迹导航和避障。
2.3 制作过程制作智能循迹避障小车的过程主要包括电路焊接、机械结构装配、程序编写和调试等步骤。
摘要本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用红外线传感器进行寻线,控制电动小汽车的自动循迹,并再通过光电开关探测障碍,从而控制电机转向,实现进行壁障功能。
整个系统的电路结构简单,可靠性能高,实验测试结果满足要求。
本文着重叙述了该系统的硬件设计方法、软件设计方法及测试结果分析。
小车运行方案,在现有玩具电动车的基础上,加装红外线光电开关模块和红外寻线模块,实现对电动车位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。
关键词:80C51单片机、红外线传感器、光电开关、电动小车AbstractThe system requirements of the design project for the purpose of the 80C51 microcontroller for the control of the core,the use of the hunt and infrared sensors,automatic obstacle acoidance control of electric cars,and the photoelectric switch to the barrier function.The electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyse. Car is running the program, under the existing toy electric car, based on the installation of super sonic sensor and infrared sensors, to achieve the location of electric vehicles,operational status of the real-time measurement, and measurement data sent to the microcontroller for processing, then SCM detected according to a variety of data to achieve intelligent control of electric vehicles.Key words: 80C51 single chip computer, infrared sensors, photoelectric switch, the electric car目录第1章前言 (1)1.1研究目的及意义 (1)1.2国内外发展情况 (2)第2章整体设计框架 (3)2.1方案选择及论证 (3)2.1.1控制模块选择 (4)2.1.2路面探测黑线轨迹模块 (4)2.1.3探测路面障碍模块 (5)2.1.4电机模块 (6)2.1.5电机驱动模块 (6)2.1.6车架选择 (7)2.1.7最终方案选择 (7)2.2方案可行性分析 (8)第3章硬件设计 (8)3.1系统总体设计框图 (9)3.2 红外线光电开关模块 (9)3.2.1光电开关的工作原理 (10)3.2.2光电开关的类型 (10)3.2.3光电开关电路的设计 (13)3.3电机驱动模块 (13)3.4红外循线模块 (15)3.4.1 红外放射式光电传感器特性与工作原理 (15)3.4.2 红外循线具体设计与实现 (16)3.5 最小系统模块 (17)3.5.1 晶振电路的设计 (17)3.5.2 复位电路的设计 (17)3.6电源模块 (18)第4章软件设计 (19)4.1 主程序流程图 (19)4.2 避障子程序流程图 (20)4.3 循线子程序流程图 (21)第5章系统调试和测试 (21)5.1安装步骤 (21)5.2电路调试 (23)5.2.1 光电开关模块调试过程 (23)5.2.2电机模块调试过程 (23)5.2.3红外循线模块调试过程 (24)5.2.4测试结果与分析 (25)结论 (26)致谢 (27)参考文献 (28)附录系统设计原理图 (28)附录设计系统部分源代码 (29)第1章前言随着生产自动化的发展,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。
《自循迹智能小车控制系统的设计与实现》篇一一、引言随着科技的飞速发展,智能小车作为智能交通系统的重要组成部分,已经广泛应用于军事、工业、民用等多个领域。
自循迹智能小车控制系统的设计与实现,成为了智能化进程中一个关键环节。
本文旨在阐述自循迹智能小车控制系统的设计原理和实现过程,分析系统结构与功能,为相关研究与应用提供参考。
二、系统设计1. 硬件设计自循迹智能小车控制系统硬件主要包括:电机驱动模块、传感器模块、主控制器模块等。
其中,电机驱动模块负责驱动小车前进、后退、转向等动作;传感器模块包括红外传感器、超声波传感器等,用于检测小车周围环境及路径信息;主控制器模块采用高性能微控制器,负责协调各模块工作,实现小车的自主循迹。
2. 软件设计软件设计包括控制系统算法设计和程序编写。
控制系统算法主要包括路径识别算法、速度控制算法、避障算法等。
程序编写采用模块化设计思想,将系统功能划分为多个模块,如电机控制模块、传感器数据采集模块、路径识别与决策模块等。
各模块之间通过通信接口进行数据交换,实现小车的自主循迹。
三、实现过程1. 传感器数据采集与处理传感器模块负责采集小车周围环境及路径信息,包括红外传感器、超声波传感器等。
这些传感器将采集到的数据传输至主控制器模块,经过数据处理与分析,提取出有用的信息,如障碍物位置、路径边界等。
2. 路径识别与决策路径识别与决策模块根据传感器数据,判断小车当前位置及目标路径,并制定相应的行驶策略。
当小车偏离目标路径时,系统会自动调整行驶方向,使小车重新回到目标路径上。
此外,避障算法也在此模块中实现,当检测到障碍物时,系统会及时调整小车的行驶方向,避免与障碍物发生碰撞。
3. 电机控制与驱动电机控制与驱动模块根据主控制器的指令,控制电机的运转,实现小车的前进、后退、转向等动作。
通过调整电机的转速和转向,可以实现对小车速度和行驶方向的精确控制。
四、实验结果与分析通过实验测试,自循迹智能小车控制系统能够在不同环境下实现自主循迹和避障功能。
智能循迹避障小车设计本文是基于单片机控制的一款智能循迹避障小车,由传感模块、电源模块、驱动模块、调试模块和单片块组成。
利用单片机控制、电源驱动电路、红外对管和超声波检测黑线与障碍物,当右侧传感器检测到黑线时,小车往右侧偏转,左侧的传感器检测到黑线时,小车往左侧偏转,并能控制电动小车的速度及转向,从而实现自动循迹避障的功能。
标签:避障;循迹;智能小车11.1 总体设计思路本系统采用集成设计方案。
通过高发射功率红外光电二极管和高灵敏度光电晶体管组成的传感器循迹模块判断黑线路经,然后由STC单片机通过IO口控制L298N驱动模块改变两个直流电机的工作状态,最后实现小车循迹。
1.2小车循迹避障部分设计思路小车循迹避障部分是能够采集周围环境障碍物的信息,并返回至单片机进行处理,其组成部分包括:环境信息采集电路、放大电路、单片机控制电路。
路线采集电路一般有脉冲调制的反射式红外发射接收器和信号放大器组成,脉冲调制的反射式红外发射接收器根据不同颜色对光的反射程度不同,将路线信息送至放大器,放大器可作为比较器可作简单的滤波,放大器将从脉冲调制的反射式红外发射接收器返回的信号转化为单片机可识别的电平信号后送入单片机。
STC单片机可根据接收的信息判断路线的信息,实现对左右两侧直流电机工作状态的控制,以实现左右转向,最终实现循迹功能。
2 小车的硬件电路设计2.1 单片机的选型选择一款8051系列速度快、功耗低、抗干扰性好的单片机。
它的高效寻址方式、大容量Flash、EEPROM、A/D转换、硬件乘法器、硬件脉宽调制器(PWM)等功能特点,较好的实现了强大的功能与超低功耗的结合。
而且在功能同样的情况下,管脚较少封装体积小,价格比其他型号便宜,因此具有很好的性价。
2.2 微处理器模块电路微处理器用STC单片机构成的最小系统组成,其包括晶振、一个复位电路和一个小车运行模式选择按键。
其中晶振大小为16MHz,复位开关为微动开关,模式选择开关则为带锁开关,可实现模式选择的锁定,以便主程序查询。
智能循迹小车设计方案智能循迹小车设计方案智能循迹小车是一种能够根据预设路径自主行驶的无人驾驶车辆。
本设计方案旨在实现一辆智能循迹小车的设计与制作。
一、方案需求:1. 路径规划与控制:根据预设的路径,小车能够准确、迅速地在指定道路上行驶,并能随时调整方向和速度。
2. 传感器控制与反馈:小车具备多种传感器,能够实时感知周围环境和道路状况,如通过红外线传感器检测道路上的障碍物。
3. 自主导航与避障能力:小车能够自主判断并决策前进、转弯或避让,确保安全行驶。
当感知到障碍物时,能及时做出反应避开障碍。
二、方案设计:1. 硬件设计:a. 小车平台:选择合适的小车底盘,具备稳定性和承重能力,大小和外观可以根据实际需求进行设计。
b. 传感器系统:包括红外线传感器、超声波传感器和摄像头等,用于感应周围环境和道路状况。
c. 控制系统:采用单片机或嵌入式控制器,以实现传感器数据的处理、决策和控制小车运动。
2. 软件设计:a. 路径规划与控制算法:通过编程实现路径规划算法,将预设路径转换为小车可以理解的指令,控制小车的运动和转向。
b. 感知与决策算法:根据传感器获取的数据,实时判断周围环境和道路状况,做出相应的决策,例如避开障碍物或调整行驶速度。
c. 系统界面设计:为方便操作和监测,设计一个人机交互界面,显示小车的状态信息和传感器数据。
三、方案实施:1. 硬件实施:根据设计要求选择合适的硬件部件,并将它们组装在一起,搭建小车平台和安装传感器。
确保传感器按照预期工作稳定。
2. 软件实施:使用合适的编程语言开发控制程序。
编写路径规划、感知与决策算法,并将其与硬件系统绑定在一起。
通过测试和调试确保程序的正常运行。
3. 功能测试:对小车进行现场测试,包括路径规划、感知与决策的功能、反应时间和精度等方面的测试。
根据测试结果进行优化和调整。
四、方案展望:1. 增加智能化功能:进一步发展智能循迹小车的功能,添加更多的传感器和算法,实现更高级的自主导航和避障能力。
智能循迹小车设计首先,智能循迹小车的核心是循迹传感器。
循迹传感器能够感知地面上的轨迹,并将这些信息传递给控制器。
循迹传感器通常采用光电传感器或红外传感器,可以检测地面上的白色或黑色轨迹。
当循迹传感器检测到黑色轨迹时,它们会产生一个电信号,控制器会根据这个信号来调整小车的行进方向。
其次,智能循迹小车需要搭载驱动器和控制器。
驱动器负责控制小车的电机,使其前进、后退或转向。
控制器则负责接收循迹传感器的信号,并根据信号来控制驱动器的行为。
控制器通常采用微控制器或单片机,它能够接收和处理传感器信息,并根据预设的算法做出决策。
例如,当传感器检测到左边的循迹轨迹时,控制器会向右转,使小车沿着轨迹行驶。
另外,智能循迹小车还可以配备其他传感器来增强其功能。
例如,可以搭载距离传感器或超声波传感器,用来检测前方的障碍物,以避免碰撞。
还可以搭载温度传感器或光线传感器等,用来检测环境的温度或光线强度。
这些传感器可以通过串口或其他接口连接到控制器,实现对小车的全方位感知。
此外,智能循迹小车还可以通过通信模块和其他设备进行远程控制和数据传输。
例如,可以搭载蓝牙模块或Wi-Fi模块,使用户可以通过手机或电脑控制小车的行动。
还可以搭载摄像头,实现对小车周围环境的实时监控。
通过数据传输,用户可以实时获取小车的运行状态和环境信息。
最后,关于智能循迹小车的实现方法,可以采用硬件设计和软件编程相结合的方式。
在硬件设计方面,需要选择合适的电机、驱动器和传感器,搭建电路板,并且进行电路连接和调试。
在软件编程方面,可以使用C语言或其他编程语言,根据控制策略来编写控制器的代码。
代码需要能够读取传感器信号,进行数据处理,并控制驱动器的行为。
综上所述,智能循迹小车是一种能够自动行驶的小车,它通过搭载循迹传感器和控制器,能够感知轨迹并调整行进方向。
除了循迹传感器,还可以搭载其他传感器和通信模块,增强小车的功能和控制方式。
实现智能循迹小车需要进行硬件设计和软件编程,并将它们相互配合来实现自动行驶和远程控制。