基于51单片机的巡线小车

合集下载

基于51单片机智能小车循迹程序

基于51单片机智能小车循迹程序

#include<reg52.h>#define uchar unsigned char#define uint unsigned int////电机驱动模块位定义////sbit M11=P0^0;//左轮sbit M12=P0^1;sbit M23=P0^2;//右轮sbit M24=P0^3;sbit ENA=P0^4;//左轮使能PWM输入改变dj1数值控制转速sbit ENB=P0^5;//右轮使能PWM输入改变dj2数值控制转速////占空比变量定义////unsigned char dj1=0;unsigned char dj2=0;uchar t=0;////红外对管位定义////sbit HW1=P1^0;//左前方sbit HW2=P1^1;//右前方sbit HW3=P1^2;//左后方sbit HW4=P1^3;//右后方////小车前进////void qianjin(){M11=1;//左轮M12=0;//M23=1;//右轮M24=0;//dj1=50;dj2=50;}////向左微调////void turnleft2(){M11=1;M12=0;M23=1;M24=0;dj1=7;//左轮dj2=50;//右轮}////向右微调////void turnright2(){M11=1;M12=0;M23=1;M24=0;dj1=50;dj2=7;}////向左大调////void left(){M11=0;M12=1;M23=1;M24=0;dj1=7;dj2=80;}////向右大调////void right(){M11=1;M12=0;M23=0;M24=1;dj1=80;dj2=7;}////循迹动作子函数////void xj(){if(HW1==0&&HW2==0&&HW3==0&&HW4==0)//前进逻辑{qianjin();}if(HW1==1&&HW2==0&&HW3==0&&HW4==0)//左右微调{turnleft2();}if(HW1==0&&HW2==1&&HW3==0&&HW4==0){turnright2();}if(HW1==1&&HW2==0&&HW3==1&&HW4==0)//左右大调{left();}if(HW1==0&&HW2==1&&HW3==0&&HW4==1){right();}}////初始化////void init(){TMOD=0x01;TH0=(65536-500)/256;TL0=(65536-500)%256;EA=1;ET0=1;TR0=1;}////定时器0中断////void timer0() interrupt 1 using 1{TH0=(65536-500)/256;TL0=(65536-500)%256;t++;if(t<dj1)ENA=1;else ENA=0;if(t<dj2)ENB=1;else ENB=0;if(t>=50){t=0;}}void main(){init();P1=0Xff;while(1){/////////////////循迹模式/////////////////////xj();}}。

基于51单片机智能小车循迹程序

基于51单片机智能小车循迹程序

#include <reg51.h>#include <stdio.h>#define uint unsigned int#define uchar unsigned char/**********************************/uchar led_data[9]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80}; uchar turn_count=0;bit end=0; //圈数跑完标志/*********************************/sbit xg0=P1^0; //左寻轨对管sbit xg1=P1^1; //中间寻轨对管sbit xg2=P1^2; //右寻轨对管sbit xz=P1^3; //感应挡板对管/*********************************/sbit Q_IN1=P2^0; //车前左轮控制sbit Q_IN2=P2^1;sbit Q_IN3=P2^2; //车前右轮控制sbit Q_IN4=P2^3;sbit H_IN1=P2^4; //车尾左轮控制sbit H_IN2=P2^5;sbit H_IN3=P2^6; //车尾右轮控制sbit H_IN4=P2^7;sbit Q_ENA=P3^0; //车前左轮使能,PWMsbit Q_ENB=P3^1; //车前右轮使能,sbit H_ENA=P3^6; //车尾左轮使能,sbit H_ENB=P3^7; //车尾右轮使能,/****************************************/#define stra_q_l 100 //直线行走时,四个轮子占空比调试#define stra_q_r 100#define stra_h_l 100#define stra_h_r 100#define turn_q_l 100 //转弯时四个轮子的占空比调试#define turn_q_r 100#define turn_h_l 100#define turn_h_r 100#define turnr_time 2900//右转弯时的延时常数#define turnl_time 3000 //左转弯时的延时常数#define dt_time 5800 //原地掉头时延时常数#define over_time 1000 //停止延时#define back_time 2500 //走完环形,回到直道延时转弯#define black_time 1500 //过黑线的时间#define correct_l_time 700 //左矫正时间#define correct_r_time 700 //右矫正时间#define hou_time 200/***************************************/uchar q_duty_l,q_duty_r,h_duty_l,h_duty_r,//车前后左右轮占空比i=0,j=0,k=0,m=0;/**************************************/void delay_cir(uint n){uchar x;while(n--){for(x=0; x<250;x++);};}/***********************************/void delay(uint ct) // 延时函数{uint t;t=ct;while(t--);}/***************************************/ void straight() //直走{q_duty_l=stra_q_l;q_duty_r=stra_q_r;h_duty_l=stra_h_l;h_duty_r=stra_h_r;Q_IN1=1;Q_IN2=0;Q_IN3=1;Q_IN4=0;H_IN1=1;H_IN2=0;H_IN3=1;H_IN4=0;}/***************************************/ void houtui() //后退{q_duty_l=stra_q_l;q_duty_r=stra_q_r;h_duty_l=stra_h_l;h_duty_r=stra_h_r;Q_IN1=0;Q_IN2=1;Q_IN3=0;Q_IN4=1;H_IN1=0;H_IN2=1;H_IN3=0;H_IN4=1;}/***************************************/ void turn_left() //左转{q_duty_l=turn_q_l;q_duty_r=turn_q_r;h_duty_l=turn_h_l;h_duty_r=turn_h_r;Q_IN1=0; //左轮反转Q_IN2=1;H_IN1=0;Q_IN3=1; //右轮正转Q_IN4=0;H_IN3=1;H_IN4=0;delay(turnl_time);}/***********************************/ void turn_right() //右转{q_duty_l=turn_q_l;q_duty_r=turn_q_r;h_duty_l=turn_q_l;h_duty_r=turn_q_r;Q_IN1=1; //左轮正转Q_IN2=0;H_IN1=1;H_IN2=0;Q_IN3=0; //右轮反转Q_IN4=1;H_IN3=0;delay(turnr_time);}/**************************************************/ void turn_round() //原地掉头{q_duty_l=turn_q_l;q_duty_r=turn_q_r;h_duty_l=turn_h_l;h_duty_r=turn_h_r;Q_IN1=0; //左轮反转Q_IN2=1;H_IN1=0;H_IN2=1;Q_IN3=1; //右轮正转Q_IN4=0;H_IN3=1;H_IN4=0;delay(dt_time);}/******************************************************/void over() //小车停止{Q_IN1=0;Q_IN2=0;Q_IN3=0;Q_IN4=0;H_IN1=0;H_IN2=0;H_IN3=0;H_IN4=0;}/*****************************************************/ void correct_right() //左偏,向右矫正{q_duty_l=turn_q_l;q_duty_r=turn_q_r;h_duty_l=turn_q_l;h_duty_r=turn_q_r;Q_IN1=1; //左轮正转Q_IN2=0;H_IN1=1;H_IN2=0;Q_IN3=0; //右轮反转Q_IN4=1;H_IN3=0;H_IN4=1;delay(correct_r_time);}void correct_left() //右偏,向左矫正{q_duty_l=turn_q_l;q_duty_r=turn_q_r;h_duty_l=turn_h_l;h_duty_r=turn_h_r;Q_IN1=0; //左轮反转Q_IN2=1;H_IN1=0;H_IN2=1;Q_IN3=1; //右轮正转Q_IN4=0;H_IN3=1;H_IN4=0;delay(correct_l_time);}/*************************************/ void xunji(){if(xg1==1){turn_count++;over();delay(over_time);if(turn_count==1){straight();delay(black_time);}elseif(turn_count==2){houtui();delay(hou_time);turn_left();}elseif(turn_count==3) {houtui();delay(hou_time); turn_right();}elseif(turn_count==4) {houtui();delay(hou_time); turn_right();}elseif(turn_count==5) {straight();delay(black_time); }elseif(turn_count==6) {houtui();delay(hou_time); turn_right();}elseif(turn_count==7) {houtui();delay(hou_time); turn_right(); straight();delay(back_time); turn_left();}elseif(turn_count==8) {straight();delay(black_time); }elseif(turn_count==9) {houtui();delay(100);turn_round();}if(turn_count>=9){turn_count=0;cir_count++;circle--;}{end=1;over();delay(500);}}elseif((xg0==0)&&(xg1==0)&&(xg2==0)) {straight();}elseif((xg0==1)&&(xg1==0)&&(xg2==0)) {over();delay(over_time);houtui();delay(hou_time);correct_right();}//左偏,向右矫正elseif((xg0==0)&&(xg1==0)&&(xg2==1)){over();delay(over_time);houtui();delay(hou_time);correct_left();} //右偏,向左矫正}/***********************************************/ void int0(void) interrupt 0 //中断圈数设定{EX0=0;delay_cir(250);circle++;if(circle>8){circle=0;}P0=led_data[circle];EX0=1;}/*************************************/void time1(void) interrupt 3 //T1溢出中断,电机调速{i++;j++;k++;m++;if(i<q_duty_l)Q_ENA=1;else Q_ENA=0;if(i>100){Q_ENA=1;i=0;}if(j<q_duty_r)Q_ENB=1;else Q_ENB=0;if(j>100 ){Q_ENB=1;j=0;}if(k<h_duty_l)H_ENA=1;else H_ENA=0;if(k>100){H_ENA=1;k=0;}if(m<h_duty_r)H_ENB=1;else H_ENB=0;if(m>100){H_ENB=1;m=0;}P0=led_data[circle];TH1=0XFF;TL1=0XF6;}/*************************************/ void main(){P0=led_data[circle];P1=0xFF;P1=0XFF; //P1口做输入P2=0X00; //P2口初始化,小车禁止P3=0XFF;TMOD=0X11;//T0,T1,工作方式1TH1=0XFF; //T1中断一次10USTL1=0XF6;TR1=1;EX0=1;ET1=1;EA=1;while(1){while((xz==1)&&(end!=1)) //无挡板,扫描对管,前进{xunji();};};}。

基于51单片机的自动巡线避障小车精编版

基于51单片机的自动巡线避障小车精编版

唐山师范学院本科毕业论文题目基于单片机的智能小车的设计学生***指导教师*** 副教授年级2008级专业电子信息科学与技术系别物理系唐山师范学院物理系2012年5月郑重声明本人的毕业论文是在老师的指导下独立撰写完成的。

如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。

特此郑重声明。

毕业论文作者(签名):年月日目录摘要 (3)第一章引言 (3)第二章方案说明 (3)2.1、方案论证 (3)2.2、总体设计方案概述 (4)第三章硬件电路设计 (5)3.1、主控电路 (5)3.1.1、L7805稳压器 (5)3.1.2、MAX232芯片简介 (6)3.2、八路红外传感器模块 (6)3.2.1、LM324简介 (6)3.2.2、74HC14D简介 (6)3.3、L298N电机驱动模块 (7)3.3.1、L298N简介 (8)3.4、机械部分 (9)第四章软件系统设计 (9)4.1、程序流程图 (9)4.2、程序设计方案 (9)参考文献 (12)第五章结束语 (12)致谢 (12)附录1 (13)附录2 (13)外文页 (20)基于单片机的智能小车的设计摘要本文介绍了基于STC89C52单片机的智能小车的设计与实现。

小车主要能够识别黑线并检测障碍物从而实现在固定跑道内行驶并且可自动避障。

小车以STC89C52单片机控制器;采用八路红外传感器及其处理模块实现对黑线及障碍物的检测;通过单片机产生PWM波并通过L298N来对小车的方向和速度进行控制。

关键字STC89C52 单片机红外传感器 PWM L298N第一章引言社会的发展,科技的进步,使得人们对生活中的很多事物都提出了更高的要求,就像人们自己走累了便想到了坐车,所以马车出现了;而马车已经满足不了人们对速度的追求的时候,便又发明了汽车,所以科技创新是基于人们的需要而出现的;那么到了现在这个普通汽车已经很普遍的掌控在人们手中的时候,一个新的概念便被提了出来,它就是智能车。

基于51单片机四路循迹小车

基于51单片机四路循迹小车

基于51单片机四路循迹小车[导读]这学期开设的51单片机课程的课程设计即将验收,今天开始正式着手做循迹小车~这学期开设的51单片机课程的课程设计即将验收,今天开始正式着手做循迹小车~一. 任务要求二. 系统原理本系统以设计题目的要求为目的,采用STC89C52单片机为控制核心,利用红外传感器检测轨道,控制电动小汽车的自动循迹,快慢速行驶。

这里的轨道是指汽车沿着白色地板上的黑线行驶。

由于黑线与白地板的反射系数不同,可以根据接收到的反射光的强度来判断“道路”。

常用的方法是红外检测。

红外检测方法,即在汽车行驶过程中,利用红外光在具有不同颜色的物体表面的不同反射特性,不断向地面发射红外光。

当红外光与白纸地板相遇时,会发生漫反射,反射光被安装在车内的接收器接收,如果遇到黑线,就会变成红色。

外部光被吸收,车内的接收器不能接收红外线。

单片机根据是否接收到反射的红外光来确定黑线的位置和汽车的行驶路线。

三. 整体方案1. 控制模块小车的核心控制部件采用STC公司生产的8位单片机STC89C52。

它是一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。

STC89C52有3个16 位定时器/计数器,2个外部中断,1个串口中断。

最小系统51单片机的具体引脚功能不细说,不了解的可自行百度。

直接上最小系统电路图(自己画的,凑合着看)。

顺便说一句,在我看来一个没有指示灯的电路是最烦的电路<(`^´)> 我的复位一定要有灯才行!三部分:①电源电路:给单片机提供5V的电源②时钟电路:外接11.0592M石英晶振。

③复位电路:确保单片机是从一个确定的初始状态开始。

焊接时注意P0口要接上拉电阻,否则不能用,一般都用排阻做上拉电阻(当然如果能自己画板子就更好了)。

去除AD网格线记一下怎么去除AD网格线,如图步骤,最后去掉Visible前面的对勾即可,别忘记最后点OK:2. 电机驱动模块我使用的是最经典的LM298N电机驱动:我太喜欢用298了。

基于51单片机的寻迹小车设计报告

基于51单片机的寻迹小车设计报告

寻迹小车摘要:以C8051F单片机作为微空机器,设计出一种寻迹小车,通过红外传感器检测黑带信号,利用单片机输出PWM脉冲控制两组直流电机正反转和转动的速度,使小车沿着还带行走。

关键词:寻迹,检测,传出信号。

1.方案论证与选择1.1电机驱动芯片的选择方案一:采用内部集成H桥式芯片L298驱动电路。

方案二:采用分立元件的H桥驱动电路。

由于采用内部集成H桥式芯片每一组PWM波用来控制一个电机的速度,而另外两个I/O口可以控制电机的正反转,控制比较简单,电路也很简单,一个芯片内包含有8个功率管,这样简化了电路的复杂性,所以采用方案一。

1.2传感器的选择方案一:采用发光二极管发光,用光敏二极管接收。

当发光二极管发出的可见光照射到黑带时,光线被黑带接收,光敏二极管检测到信号,呈现高阻抗,使输出端为低电平。

当发光二极管发出的可见光照射到地面时,它发出的可见光反射回来被光敏二极管检测到时,起阻抗迅速降低,此时输出端为高电平。

但是由于光敏二极管受环境中可见光影响较大,电路中的电压不太稳定。

方案二:利用红线发射管发射红线,红外线二极管进行接收。

采用四组红外光敏耦合三极管发射和接收红外信号,外面课见光对接收的信号影响较小。

接收的红外信号转化为电压信号经过LM393进行比较,产生高电平或低电平输出,信号返回给C8051F单片机.方案三:采用光敏电阻接收可见光检测。

四组光敏电阻用于检测可见光信号。

当光敏电阻检测到黑带时,输出端为低电平,当光敏电阻没有检测到黑带时,输出端为高电平,信号返回给单片机,通过单片机控制电机的转向。

光敏电阻易受环境的影响,电压稳定性较差。

综上比较,本设计才用方案二。

2.硬件设计2.1元器件明细表:(1) C8051单片机×1(2) 298带散热片×1(3) 7805带散热片×2(4) TCR5000 ×8(5) LM393 ×4(6)定位器×9(7) 1602显示屏×1(8)开关×1(9)电容:470uF ×110uf ×2104 ×4(9)电阻:EN4007 ×8150Ω×125.1K ×8200Ω×1(10)发光二极管×11(11)三极管×1(12)蜂鸣器×1(13)其他:导线,排线,排针,杜邦头,杜邦针2.2单元电路设计:2.11单片机最小系统电路2.12驱动电路2.13寻迹电路2.14电源电路2.15显示屏电路2.16蜂鸣器电路2.17指示灯电路VDD +5150VSS3、软件设计主控芯片为C8051F120,编程由C语言实现,程序流程如下:4.系统测试4.1单元电路的检测:4.11驱动电路的检测5V、12V、接地分别接好,使能1使能2接口接5V,A口接5V,B口接地,C口接5V,D口接地,然后用万用电表测01和02,03和04的输出电压是否为12V(可有小偏差),然后交换A,B接口,测01和02,03和04的输出电压是否反向,最后断开使能1和使能2接口,测01和02,03和04的输出电压是否为0V.4.12寻迹电路的检测先把电路接通,用照相机观察TCRT5000是否发光,再把万用表调到20V档位,正接线柱接输出,负接线柱接负极,看电压表示数是否5V(可有小偏差),用白纸挡上四个TCRT5000后,看电压是否有明显变化,最好低电压为1V以下。

51循迹小车程序实验报告

51循迹小车程序实验报告

竭诚为您提供优质文档/双击可除51循迹小车程序实验报告篇一:智能循迹小车实验报告摘要本设计主要有单片机模块、传感器模块、电机驱动模块以及电源模块组成,小车具有自主寻迹的功能。

本次设计采用sTc公司的89c52单片机作为控制芯片,传感器模块采用红外光电对管和比较器实现,能够轻松识别黑白两色路面,同时具有抗环境干扰能力,电机模块由L298n芯片和两个直流电机构成,组成了智能车的动力系统,电源采用7.2V的直流电池,经过系统组装,从而实现了小车的自动循迹的功能。

关键词智能小车单片机红外光对管sTc89c52L298n1绪论随着科学技术的发展,机器人的设计越来越精细,功能越来越复杂,智能小车作为其的一个分支,也在不断发展。

在近几年的电子设计大赛中,关于小车的智能化功能的实现也多种多样,因此本次我们也打算设计一智能小车,使其能自动识别预制道路,按照设计的道路自行寻迹。

2设计任务与要求采用mcs-51单片机为控制芯片(也可采用其他的芯片),红外对管为识别器件、步进电机为行进部件,设计出一个能够识别以白底为道路色,宽度10mm左右的黑色胶带制作的不规则的封闭曲线为引导轨迹并能沿该轨迹行进的智能寻迹机器小车。

3方案设计与方案选择3.1硬件部分可分为四个模块:单片机模块、传感器模块、电机驱动模块以及电源模块。

3.1.1单片机模块为小车运行的核心部件,起控制小车的所有运行状态的作用。

由于以前自己开发板使用的是ATmeL公司的sTc89c52,所以让然选择这个芯片作为控制核心部件。

sTc89c52是一种低损耗、高性能、cmos八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。

其程序和数据存储是分开的。

3.1.2传感器模块方案一:使用光敏电阻组成光敏探测器采集路面信息。

阻值经过比较器输出高低电平进行分析,但是光照影响很大,不能稳定工作。

方案二:使用光电传感器来采集路面信息。

基于单片机循迹小车的设计

基于单片机循迹小车的设计

基于单片机循迹小车的设计
一、硬件结构设计
(1)外观设计
该循迹小车采用4轮驱动底盘,使小车有较强的稳定性,小车安装有
一个带调光功能的LED头灯,可以缩短小车行驶的距离,以及一个用于采
集道路信息的循迹模块。

四个车轮上安装有电机,以及一个用于驱动小车
的电源,主控器采用的是51单片机。

(2)基础硬件设计
1)电源:采用12V锂电池,通过一个5V调整稳压电路改变输出电压,并调整电流大小以供电源的可靠性;
2)车轮电机:采用马达,可提供足够的动力,能够拉动小车行驶,
同时通过电路来控制马达的速度;
3)主控器:采用51单片机,作为小车的主控单元,可实现小车的运
动控制、数据采集等功能;
4)循迹模块:采用模拟循迹模块,用于采集道路信息,根据采集的
信息以及灰度传感器的反馈信息,调整小车的运动方向;
5)头灯:采用LED头灯,可实现可调光的功能,使得车子在夜晚的
黑暗环境中也能保持安全的运行;
6)电路板:依据小车的硬件结构设计出合理的路径,实现电路图和
实际的车路径的一一匹配,以此实现对小车运行的控制。

二、软件程序设计
(1)程序流程设计。

单片机的智能循迹小车

单片机的智能循迹小车
多次测试:在实际环境中进行多次测试,以验证程序的稳定性和可靠性
调试方法
A
总之,基于 51单片机的 智能循迹小 车是一种简 单实用的智 能控制系统
B
通过合理的 硬件设计和 软件编程, 可以实现小 车的自动循
迹功能
C
在调试过程中, 需要逐步排查 问题,不断优 化程序,以提 高系统的性能
和稳定性
感/谢/聆/听
以及调试方法
1
原理
原理
1Байду номын сангаас
基于51单片机的智能循迹小车通过传感器检测小车与路径之间的距 离,将检测到的信号转换为电平信号,然后通过单片机进行处理
单片机根据接收到的信号控制电机驱动模块,从而控制小车的运动 方向和速度
2
3
通过不断调整小车的运动方向和速度,使得小车能够沿着指定的路 径进行运动
2
硬件组成
51单片机的智能 循迹小车
-
01
原理
02 硬件组成
03 软件设计 04 调试方法
51单片机的智能循迹小车
1
智能循迹小车是一种自动 控制系统,能够沿着指定
的路径进行运动
2
基于51单片机的智能循迹 小车是一种使用51单片机 作为主控制器的智能循迹
小车
3
下面将详细介绍基于51单 片机的智能循迹小车的原 理、硬件组成、软件设计
4
调试方法
调试方法
基于51单片机的智能循迹小车的调试方法主要包括以下几个步骤
硬件调试:检查硬件连接是否正确,确保电源、传感器、电机驱动模块等设备 能够正常工作
软件调试:通过调试器或仿真器对程序进行调试,检查程序是否存在语法错误 或逻辑错误
实际环境测试:将调试好的程序下载到单片机中,然后在实际环境中进行测试 。观察小车的运动情况,如果存在偏差或问题,需要对程序进行调整和优化

基于51单片机智能巡线避障小车毕业论文

基于51单片机智能巡线避障小车毕业论文

基于51单片机智能巡线避障小车1系统方案确定及主要元件的选择1.1 系统方案确定本次设计的智能小车实现的基本功能如下:❖实时检测路径,并按照指定路线行驶;❖实时检测障碍物,并躲过继续行驶;❖实时显示当前速度,并显示在lcd1602上为此以AT89C52为主控芯片,主要包括避障模块、电源模块、声控模块、电机驱动模块等,系统框图如图2.3所示。

通过寻迹及避障传感器来采集周围环境信息来反馈给CPU,通过主控的处理,来控制电机的运转,从而实现寻迹与避障,达到智能行驶。

且本设计添加了声控效果,通过声音传感器来对小车发出指令,让其行驶与停止。

为了能够更好地完成本次设计任务,我们采用三轮车,其前轮驱动,前轮左右两边各用一个电机驱动,调制前面两个轮子的转速起停从而达到控制转向的目的,后轮是万象轮,起支撑的作用,并通过软件程序控制,与硬件架构相结合,从而实线自动寻迹、避障的功能。

1.2 主要元件的选择1.2.1 主控器按照题目要求,控制器主要用于控制电机,通过相关传感器对路面的轨迹信息进行处理,并将处理信号传输给控制器,然后控制器做出相应的处理,实现电机的前进和后退,保证在允许范围内实线寻迹避障。

方案一:可以采用ARM为系统的控制器,优点是该系统功能强大,片上外设集成度搞密度高,提高了稳定性,系统的处理速度也很高,适合作为大规模实时系统的控制核心。

而小车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高。

若采用该方案,必将在控制上遇到许许多多不必要增加的难题。

方案二:使用51单片机作为整个智能车系统的核心。

用其控制智能小车,既可以实现预期的性能指标,又能很好的操作改善小车的运行环境,且简单易上手。

对于我们的控制系统,核心主要在于如何实现小车的自动控制,对于这点,单片机就拥有很强的优势——控制简单、方便、快捷,单片机足以应对我们设计需求[5]。

51单片机算术运算功能强,软件编程灵活、自由度大,功耗低、体积小、技术成熟,且价格低廉。

基于51单片机控制的自动循迹小车技术指标要求

基于51单片机控制的自动循迹小车技术指标要求

基于51单片机控制的自动循迹小车技术指标要求1.引言1.1 概述概述部分:在现代科技的发展中,自动化技术逐渐成为人们生活和工作中不可或缺的一部分。

自动循迹小车作为自动化技术的一种重要应用,广泛应用于工业生产、仓储物流、无人驾驶和教育领域等各个领域。

本文将以基于51单片机的自动循迹小车为研究对象,探讨其技术指标要求及实现原理。

通过对循迹传感器原理和控制算法原理的介绍,将带领读者深入了解自动循迹小车的核心技术。

在循迹传感器原理方面,本文将介绍如何通过光电传感器进行光线检测,并利用检测结果来实现对小车运动方向的控制。

同时,在控制算法原理方面,本文将详细介绍基于51单片机的控制算法的设计思路和实现方法。

在硬件要求和软件要求部分,本文将分别列举并详细说明自动循迹小车各个功能模块的需求和实现方法。

通过对硬件和软件的需求分析,读者将了解到自动循迹小车技术研究和开发过程中的具体要求和实现方式。

通过本文的阅读,读者将能够全面了解基于51单片机控制的自动循迹小车的技术指标要求及实现原理。

同时,本文还将总结研究结果并展望未来自动循迹小车技术的发展方向,希望能够为相关领域的工程应用和学术研究提供有益的参考和借鉴。

1.2文章结构文章结构本文将详细介绍基于51单片机控制的自动循迹小车技术指标要求。

文章结构如下所述。

引言部分概述了本文的内容和目的。

首先,对自动循迹小车的技术指标要求进行了概述,包括硬件要求和软件要求。

然后,介绍了基于51单片机的控制原理,包括循迹传感器原理和控制算法原理。

正文部分将详细讨论技术指标要求。

首先,对硬件要求进行了分析和说明,包括所需的传感器、电机、微控制器等。

其次,对软件要求进行了介绍,包括编程语言、开发环境和控制算法等。

接下来,详细介绍基于51单片机的控制原理。

首先,解释了循迹传感器原理,包括红外线传感器的工作原理和信号处理方法。

其次,探讨了控制算法原理,包括循迹算法的设计和实现。

结论部分对全文进行总结,并展望了未来可能的研究方向。

基于51单片机的循迹小车系统设计说明

基于51单片机的循迹小车系统设计说明

基于51单片机的循迹小车系统设计摘要80C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。

在生活中但凡涉及到自动控制的地方都会出现单片机的身影,单片机的应用有利于产品的小型化、智能化,并且能够提高生产效率。

这里介绍的是如何用AT89C52单片机来实现小车的循迹功能,该设计是结合科研项目而确定的设计类课题。

本系统以设计题目的要求为目的,采用AT89C52单片机为控制核心,利用红外传感器检测道路上的黑线,控制电动小汽车的自动循迹,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,和寻光功能。

整个系统的电路结构非常简单,可靠性能很高。

实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。

关键词:80C51单片机;电动小车;pwm调速;光电检测;自动调速系统Car tracking system based on microcontrollerAbstract80C51 is a 8 bit single chip computer. Its easily using and multi-function suffer large users.In life, whenever it comes to automatic control of the local microcontroller will appear figure, microcontroller applications in favor of product miniaturization, intelligent, and can improve productivity. Here is how to use AT89C52 microcontroller to achieve the car tracking feature, which is designed to determine the combination of scientific research and design class topic. This system design requirements of the subject for the purpose of usingAT89C52 microcontroller core, the use of infrared sensors to detect the black line on the road, the automatic tracking control of electric cars, fast low traffic speeds, as well as automatic parking, and can automatically record time , mileage and speed, and look for the light function.The circuit structure of the entire system is very simple, very high reliability. The test results meet the requirements, the paper focuses on the hardware design and test results of the system analysis.Keywords:80C51 microcontroller; Electric car Pwm speed; A photodetector; Automatic Speed Control System.目录中文摘要 (I)外文摘要 (Ⅱ)1 绪论 (1)1.1 课题背景及意义 (1)1.2 智能小车研究前景及功能 (3)1.3 国外的研究情况 (6)1.3.1 智能小车国外研究现状.........................1.3.2 智能小车国研究现状.........................1.4 本课题具体应用方面及场合2 智能循迹小车的方案设计2.1 智能小车的运行环境及行走路线 (7)2.1.1 智能小车的运行环境2.1.2 智能小车的运行路线2.2 主控芯片的选择与原理 (8)2.2.1 51单片机引脚与功能说明2.3 调速系统的设计 (8)2.3.1 PWM逆变电路及其控制方法2.3.1.1 计算法2.3.1.2 调制法2.3.2 PWM调速的优点3 硬件电路的选择与搭建3.1 单片机的辅助电路3.1.1 时钟电路3.1.2 复位电路3.2 单片机控制模块的设计3.3 驱动模块的设计3.3.1 电机驱动芯片3.3.2 电机驱动模块3.4 循迹模块的制作与设计3.4.1 循迹传感器工作原理3.4.2 寻光电路分析3.4.3 循迹电路分析3.4.3.1 红外对管TCRT5003.4.3.2 电压比较器LM3243.5 各模块的组装与连接4 循迹小车的软件设计4.1 软件设计开发平台 (15)4.2 小车运动状态分析及三路算法的设计 (16)4.2.1 小车运动状态分析 (16)4.2.2 三路循迹算法设计 (17)4.3 软件设计流程图 (20)4.4 软件的调试 (24)4.4.1 设置和删除断点 (24)4.4.2 查看和修改寄存器的容 (26)4.4.3 观察和修改变量 (28)4.4.4 查看存储器区域结论 (44)参考文献 (45)致 (46)附录1 智能循迹小车原理图 (50)附录2 循迹程序附录3 外文参考文献(译文) (50)附录4 外文参考文献(原文)51绪论1.1课题背景及意义随着汽车工业的发展,关于汽车的研究也就越来越受到人们的关注。

基于51单片机的循迹小车程序设计

基于51单片机的循迹小车程序设计

#include<reg51.h>#define uchar unsigned char#define uint unsigned intuint zkb1=0 ; //**右边电机的占空比**//uint zkb2=0 ; //**左边电机的占空比**//uint t=0; //**定时器中断计数器**//sbit rin1=P1^0;sbit rin2=P1^1;sbit lin1=P1^2;sbit lin2=P1^3;sbit lift2=P2^2;sbit lift1=P2^3;sbit mid=P2^4;sbit right1=P2^5;sbit right2=P2^6;sbit pwm1=P2^0;sbit pwm2=P2^1;//****************延时函数****************// void delay(uint x){uchar j;while (x--){for(j=0;j<123;j++);}}//**********初始化定时器,中断***********// void init(){ TMOD=0x01;TH0=(65536-100)/256;TL0=(65536-100)%256;EA=1;ET0=1;TR0=1;}//***********中断函数+脉宽调制***********// void timer0() interrupt 1{TH0=(65536-100)/256;TL0=(65536-100)%256;++t;if(t<=zkb1){pwm1=1;}if(t>zkb1){pwm1=0;}if(t<=zkb2){pwm2=1;}if(t>zkb2){pwm2=0;}if(t==1000){t=0;}}// zkb2=左,zkb1=左//******************直行******************// void qianjin(){// zkb2=200; zkb1=170;zkb2=1000; zkb1=920;lin1=1; //******给电机加电启动******//lin2=0;rin1=1;rin2=0;}//***************左转1函数***************// void turn_right1(){// zkb2=200; zkb1=0;zkb2=950; zkb1=100;rin1=0;rin2=1;}//***************左转2函数***************// void turn_right2(){// zkb2=300; zkb1=0;zkb2=1000; zkb1=110;rin1=0;rin2=1;}//***************右转1函数***************// void turn_lift1(){// zkb2=0; zkb1=200;zkb2=100; zkb1=950; lin1=0;lin2=1;}//***************右转2函数***************//void turn_lift2(){// zkb2=0; zkb1=300;zkb2=110; zkb1=1000; lin1=0;lin2=1;}//***************循迹函数*****************//void xunji(){uchar flag;if((lift2==1)&&(lift1==1)&&(mid==0)&&(right1==1)&&(right2==1)) { flag=0; }//*******直行*******//else if((lift1==0)&&(mid==0)&&(right1==0)){ flag=0; } //******直行*******////else if((lift2==1)&&(lift1==1)&&(mid==1)&&(right1==1)&&(right2==1)) // { flag=0; } //*******直行*******//else if((lift2==1)&&(lift1==0)&&(mid==1)&&(right1==1)&&(right2==1)) { flag=1; } //*******左转1*******//else if((lift2==0)&&(lift1==1)&&(mid==1)&&(right1==1)&&(right2==1)) { flag=2; }//***左转2***//else if((lift2==1)&&(lift1==1)&&(mid==1)&&(right1==0)&&(right2==1)) { flag=3; }//***右转1***//else if((lift2==1)&&(lift1==1)&&(mid==1)&&(right1==1)&&(right2==0)) { flag=4; }//***右转2***//switch (flag){case 0:qianjin();break;case 1:turn_lift1();break;case 2:turn_lift2();break;case 3:turn_right1();break;case 4:turn_right2();break;default: break;}}//****************主程序****************// void main(){init();while(1){ lin1=1; //******给电机加电启动******// lin2=0;rin1=1;rin2=0;// pwm1=1;// pwm2=1;while(1){xunji(); //*********寻迹**********// // zkb1=0;// zkb2=500;// qianjin();// turn_lift1();// turn_lift2();// turn_right1();// turn_right2();}}}。

基于51单片机的智能循迹小车设计

基于51单片机的智能循迹小车设计

********************** ************************参赛学校:******************参赛队号:******************参赛题目:(A题)智能小车控制参赛学生:*******************指导教师:*******************参赛日期:2011.7.18~2011.7.22智能小车控制摘要智能作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等用途。

我们通过软件编程实现它的行进、绕障、停止的精确控制以及遇障次数的显示,并再次寻找到原来的轨道。

一、功能说明1、基本功能:小车能够在设计的线路上完成寻迹功能;2、拓展功能:在循迹线路上设置障碍物,小车遇到障碍物能够自动绕道行驶,完成避障功能;二、方案论证方案一:以AT89S51单片机为核心的控制电路,采用模块化的设计方案,运用传感器检测电路,实现小车在行驶中自动寻迹、躲避障碍物的功能。

并将循迹过程中遇障次数等数据传至单片机进行处理,然后由单片机根据所检测数据实现对电动小车的智能化控制。

方案二:采用各类数字电路来组成电动小车的控制系统。

采用数字电路对外围探测轨迹信号,避障信号进行处理。

但对输入输出都是模拟量的小装置,如果采用数字化方案,则要先用A/D转换器和D/A 转换器实现数字量与模拟量之间的转换。

这样必然带来高成本、电路复杂等缺点。

因此,本方案灵活性不高,效率低,不利于电动小车智能化的扩展。

同时,对各路信号处理也比较困难。

比较以上两种方案的优缺点,方案一简洁、灵活、可扩展性好,能达到设计要求,因此本设计采用方案一来实现。

三、各模块设计电路分为电源模块、单片机系统模块、电机驱动板、寻迹模块、避障模块。

智能小车运行基本原理框图见图1。

图11、电源模块首先我们想到的是稳压电源供电,稳压电源供电稳定方便调试,但是稳压电源体积大,只适合调试阶段的使用。

基于51单片机控制的循迹小车

基于51单片机控制的循迹小车

目录摘要 (1)目录 (1)第1章绪论 (1)1.1课题背景 (2)1.2课题研究的目的和意义 (3)1.3 本设计的意义 (3)第二章方案论证 (4)2.1 控制器方案论证 (4)2.2 供电单元方案论证 (4)2.3 智能循迹小车电源模块的选择 (5)2.4智能循迹小车电机驱动电路的选择 (5)2.5 检测循迹模块 (5)2.5 显示模块论证 (5)第三章智能循迹小车硬件部分 (6)3.1 系统总体方案 (6)3.2 单片机最小系统 (6)3.3 电源模块 (7)3.4 电机驱动模块 (8)3.5 循迹单元电路 (10)3.6测速模块电路 (12)3.7 显示模块电路 (13)第四章循迹小车项目软件流程图 (14)4.1 总体软件流程图 (14)4.2小车循迹流程图 (15)4.3中断程序流程图 (16)第五章总结 (17)第六章致谢 (18)第七章参考文献 (18)附图设计总体图 (19)封底....................................................................................................................................... 错误!未定义书签。

摘要本文论述了基于单片机的智能循迹小车的控制过程。

智能循迹是基于自动引导机器人系统,用以实现小车自动识别路线,以及选择正确的路线。

智能循迹小车是一个运用传感器、单片机、电机驱动及自动控制等技术来实现按照预先设定的模式下,不受人为管理时能够自动实现循迹导航的高新科技。

该技术已经应用于无人驾驶机动车,无人工厂,仓库,服务机器人等多种领域。

本设计采用89C52单片机作为小车的控制核心;采用RPR220红外反射式开关传感器作为小车的循迹模块来识别白色路面中央的黑色引导线,采集信号并将信号转换为能被单片机识别的数字信号;采用驱动芯片L298N构成双H桥控制直流电机,其中软件系统采用C程序,本设计的电路结构简单,容易实现,可靠性高第1章绪论1.1课题背景目前,在企业生产技术不断提高、对自动化技术要求不断加深的环境下,智能车辆以及在智能车辆基础上开发出来的产品已成为自动化物流运输、柔性生产组织等系统的关键设备。

基于51单片机的蓝牙循迹小车

基于51单片机的蓝牙循迹小车

基于51单⽚机的蓝⽛循迹⼩车51单⽚机课程设计做了辆蓝⽛⼩车,下⾯是对课程设计内容的⼀些总结基于51单⽚机的蓝⽛循迹⼩车硬件模块L298N具体如图所⽰:⼯作原理简介:可以直接驱动两路 3-16V 直流电机,并提供了 5V 输出接⼝(输⼊最低只要 6V),可以给 5V 单⽚机电路系统供电。

输⼊电压最好是7v以上,输⼊电压低了会导致⼀系列问题,在后⾯有具体实践总结具体应⽤:可以⽅便的控制直流电机速度和⽅向,也可以控制 2 相步进电机,5 线 4 相步进电机。

管脚应⽤可以参考如图所⽰:①板载5V输出使能:如果跳线帽接上,则5v端⼦可以输出电压,若跳线帽没有街上,则12v输⼊端⼦没有作⽤,只能5v输⼊⼝输⼊(如果不接上直接废了,5v 输⼊基本不能使电机模块正常⼯作)②AB通道使能:端⼦接在上⾯表⽰AB通道⼀直保持⾼电平,处于使能状态,并且电压和5v输⼊端⼝电压相同;若处于没有使能状态,直接影响到输⼊端,让其⽆法⼯作!③单⽚机IO控制输⼊ + 马达AB输出 :顾名思义,四个IO输⼊端⼝和单⽚机四个IO⼝相连,然后通过电机驱动模块(双H桥电路)马达AB输出,以获得更⼤的驱动直流减速电机的能⼒,带动电机转动!B站直接搜L298N电机驱动模块,有视频详情介绍问题以及解决⽅案下⾯是⼀些使⽤L298N驱动电机的⼀些问题以及解决⽅法总结问题:1.直流减速电机不能正常转动,⼀个轮⼦只能单⽅向转动2.使能端⼝帽摘下来后,pwm信号输⼊问题3.供电问题解决:1.起初⽤4节南孚电池供电,⽤万⽤表测电压⼩于4.8v(电池快没啥电了),更换四节电池后⽤万⽤表测得4.9v+,上⾯出现的问题解决了2.输⼊端电压⼩于7v(⽤得四节南孚电池6v不到供电),使能电压和5v输⼊端⼦的电压相同,经测量5v端⼝电压只有3.8v左右,故使能电压就只有3.8v左右了,对PWM输出使能有⼀定影响3.L298N电机驱动中有稳压降压模块,如果供电⾜够⼤(⼤于7v),那么稳压降压模块会发挥作⽤,使得5v输⼊端⼦、使能端⼦、马达电机都能有稳定的5v⾼电平输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机的巡线小车
杭州电子科技大学信息工程学院二分院科技创新大赛
技术报告
作品名称:基于51单片机的巡线小车
参赛队伍:WALLE
参赛队员:周先军
吴添恒
南畅
目录
第一章设计思路以及技术方案 (2)
第二章技术要求 (3)
第三章系统方案比较与论证 (4)
第四章系统电路设计 (6)
第五章系统硬件设计 (8)
第六章系统软件设计 (9)
第七章测试方法与数据 (12)
第八章结论 (13)
第一章、设计思路以及技术方案
智能寻机器人之所以能够寻迹,主要需要三个模块完成。

信号采集模块、控制模块、驱动模块。

通过信号采集系统将实际路径信号采集以电信号的形式传递给控制系统,控制系统将采集来的信号进行比较分析计算,并给出判断驱动驱动模块,控制小车前进。

基于51单片机的小车迅疾系统,该系统采用四组高灵敏度的光点对管,对路面黑色轨迹进行检测,并利用单片机产生的PWM波,控制两个独立的电机分别以合适的速度转动,使得小车能沿着轨迹前进。

第二章. 技术要求
小车循迹路线为白底黑线KT跑道,轨迹与底板用黑白两色区分。

小车能正确的识别其中的黑线,并由STC89C52RC单片机控制处理,驱动两个直流电机转动,使得小车能沿着正确的路径行进。

第三章、系统方案比较与论证
整个电路系统分为检测、控制、驱动三个模块。

首先利用关电对管度路面信号进行检测,通过比较器处理之后,送给控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。

系统方案如图
该智能小车在画有黑线的白纸“路面“上行驶,由于黑线和白纸对光线的反射系数不同,课根据接收的反射光的强度来判断黑线。

用红外检测综合比较是最佳的方案。

ST 系列的集成红外谈都价格便宜、体积小、使用方便、用途广泛,系统最终选择了ST168反射传感器作
为红外的发射和接收器件,其原理图如下:
ST168采用高发射功率红外光、电二极管和灵敏的光点晶体管组成。

采集距离很小。

实践检测时加上5V电压时,最佳的检测距离为10mm-15mm.因此在架车时要充分考虑ST168的检测距离,合理设好高度高度。

采用如图的方案将4个光点传感器一字排列。

两个个点击分别设置在小车的后方,前面用个万向轮导向。

通过电子差速控制。

单片机IO口输出的信号无法直接驱动电机转动,因此需要驱动模块来驱动电机。

为了简化电路,小车驱动模块采用了两块ULN2003
并联组成的驱动电路驱动直流电机转动。

直流电机外接齿轮减速器,增大扭力,让小车能顺利前进。

第四章、系统电路设计
1,检测模块
基于ST168光点传感器的检测电路
2,系统控制模块
基于STC89C52单片机的控制电路
信号比较电路
3,驱动模块
ULN2003驱动电路
第五章系统硬件设计
鉴于小车的制作成本和效率等因素,本小车采用了4节5号电池串联供电。

6V直接供电电机,驱动小车前进;4.5V供给51单片机,控制小车运行。

采样电压有4.5V和6V两个选择,经过对比测试,6V 供电能使小车采集的信号更稳定。

直流电机和减速器制作比较麻烦,这里采用网购这样套件。

用薄木板坐车身钻孔固定各种部件模块。

两个驱动轮放置小车后方,前部用外向轮协助转向,提高稳定性。

最后测试时网购买了来的轮子轮胎与路面摩擦不够,打滑严重,我们采用了网球拍的防滑带用双面胶贴在轮胎上增大摩擦。

第六章、系统软件设计
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define s1 0
#define s0 1
sbit dj0=P2^4;
sbit dj1=P2^5;
sbit qy0=P1^0;
sbit qy1=P1^1;
sbit qy2=P1^2;
sbit qy3=P1^3;
void delayus(uchar n)
{
while(n--);
}
void init() {
P1=0x00;
dj0=dj1=0;
}
void main()
{
init();
while(1)
{
while(qy0==1&&qy1==0&&qy2==0&&qy3==0)
{
dj0=1;
delayus(20);
dj0=0;
delayus(20);
}
while(qy0==0&&qy1==1&&qy2==0&&qy3==0)
{
dj1=1;
delayus(20);
dj1=0;
delayus(20);
}
while(qy0==1&&qy1==1&&qy2==1&&qy3==1) //全白,冲出轨道了
{
dj0=dj1=0;
}
while(qy0==0&&qy1==0&&qy2==0&&qy3==0) //全黑,跑到交叉路口
{
dj0=dj1=1;
}
while(qy0==1&&qy1==0&&qy2==0&&qy3==1) //
{
dj0=dj1=1;
}
while(qy0==1&&qy1==0&&qy2==1&&qy3==1)
{
dj0=1;
delayus(10);
dj0=0;
delayus(2);
}
while(qy0==0&&qy1==0&&qy2==1&&qy3==1)
{
dj0=1;
delayus(10);
dj0=0;
delayus(10);
}
while(qy0==0&&qy1==1&&qy2==1&&qy3==1)
{
// dj0=1;
// delayus(0);
dj0=0;
// delayus(2);
}
while(qy0==1&&qy1==1&&qy2==0&&qy3==1)
{
dj1=1;
delayus(10);
dj1=0;
delayus(2);
}
while(qy0==1&&qy1==1&&qy2==0&&qy3==0)
{
dj1=1;
delayus(10);
dj1=0;
delayus(10);
}
while(qy0==1&&qy1==1&&qy2==1&&qy3==0)
{
// dj1=1;
// delayus(10);
dj1=0;
// delayus(2);
}
}
}
第七章、测试方法与数据
在确定方案后,我们首先对各模块电路进行测试。

单片机最小系统、信号采集模块、电机驱动模块。

再确定各电路正常后,我们用单片机开发板模拟各电路,用LED灯检查程序运行情况。

硬件软件均测试成功后才将各电路组装,架车调试。

最后将小车放在实际跑道中进行实际测试,根据实际情况调整部分参数,使得小车以最佳的状态巡线前进。

第八章、结论
基于51内核的STC89C52RC单片机是电子设计入门级别的单片机,学习51单片机能很好的提高自己的C语言编程能力,为以后学习更高级的控制系统打下基础。

51单片配合一些简单的电路能制作出很多很实用的电子作品,例如:无线红外控制器、数字万年历、电子闹钟。

本51巡线小车,设计方式简单,电路可靠性高,程序简单。

适合初学者学习自动控制思想,能为参加飞思卡尔智能车打好基础。

相关文档
最新文档