基于51控制的红外循迹车

前言

如今已经大三了,现阶段很少参加比赛了,因为马上就要考研了,这个红外循迹小车是大二参加学校的一个循迹车大赛的参赛作品,虽说是循迹车但和人家正规的恩智浦循迹车大赛还差的挺远。由于新型冠状病毒的影响,现在哪都不能去,只能待在家里,所以闲来无事总结一下,毕竟那个循迹车亲手制作的,并且拿了奖。

原理

大概介绍一下这循迹车的工作原理,比赛规则以及工作环境。
比赛环境:首先跑到为白色跑道,跑道中间用黑色胶带贴出一条轨迹,然后小车会按照黑胶带的轨迹去跑。
比赛规则:最短时间内跑完赛道的小车获胜,附加要求:小车在一圈结束后会自动刹车。
工作原理:在小车车头前方安装一排(7个)红外对管,用来检测跑道的黑胶带,通过7个红外对管返回的不同数值,通过51处理后,然后去控制小车的运动方向。从而实现循迹的功能。

材料

在这里插入图片描述

电路原理图

在这里插入图片描述

原理图简介

从上面原理图可以看出小车基本由6部分组成
1、循迹模块:7个红外对管,外加信号处理电路,用来检测赛道黑胶带轨迹,从而将信息返回给单片机。
2、舵机模块:型号忘了,淘宝上最便宜的舵机,可控角0-180
3、主控模块:采用STC89C52单片机最小系统作为主控,用来控制小车姿态
4、驱动模块:采用L298N电机驱动芯片来驱动电机 正反转
5、稳压模块:给51提供稳定的工作电压
6、刹车模块:利用干簧管检测赛道终点的磁铁,从而将赛车制动

程序

由于程序直接从keil4工程上复制过来,可能由于编码问题,程序中的中文注释全是乱码,代码后面我附上编译环境的代码图片吧,想看注释可以查看图片。

/**********************???**************************/
#include <reg52.H>
sbit  pwm=P2^0;      // ???pwm????
sbit  IN1=P3^2;   // ???????
sbit  ENA=P3^3;       //
sbit  IN2=P3^4;   //   ???????
sbit  Ghg=P2^4;     // ???? 
unsigned int GH,GL,DH,DL,zgg,zgd,zdg,zdd,a,b,c=1310,d;        //GH???????????λ
/*****************??????? 1ms******************/
void delay(unsigned int ms)
{
   
 while(ms--);  
}
/********************???????********************/
void timer1() interrupt 1 using 0       //?ж?1  T0????ж?
{
   
 pwm=!pwm;    
 if(pwm==0)   
 {
   
  pwm=0;
  TH0=DH;
  TL0=DL;
 }
 else        
 {
   
  pwm=1;
  TH0=GH;
  TL0=GL;
 }         
} 
/*********?ж????2****????????????*********/ 
void timer2() interrupt 3 using 3       //?ж?3  T1????ж????ù?????3
{
    
 IN1=!IN1;   // ??????
 if(IN1==0) 
 {
   
       IN1=0;
       TH1=zdg;    //??????????λ
       TL1
  • 22
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值