51单片机循迹小车是初学者最容易的一个项目,做好一辆小车就相当于入门单片机了。在做项目之前要学习单片机的相关的知识,不要急于求成。红外寻迹小车_哔哩哔哩_bilibili,这是我做的小车基本框架,没有思路的同学可以参考一下。
一. 要准备的基本模块
首先仔细想想小车需要什么?
轮子,用普通的轮子就行。
直流电机,用这种简单的直流电机就行了,价格也便宜,很适合初学者,在这家店里也就几块钱。
电源,用18650锂电池就行,这东西也是便宜。
这些是搭建一个小车的最基本的东西。这些东西要准备好。
二. 51单片机最小系统
单片机最小系统可以在淘宝上买现成的最小系统板,这种板子最适合不过了。
当然,自己画板子也是可以的,用嘉立创免费白嫖一块板子,我就是用自己画的最小系统板,好用也可以锻炼自己画板子的能力。嘉立创上面的开源最小系统板挺多的,找一找然后打印下来,然后买点电阻电容啥的自己焊起来,培养培养动手能力。画这个板子主要就是要留多电源接口。
三. 红外循迹模块
红外循迹模块没啥说的,无非就是寻到黑线输出高电平还是低电平,然后用单片机引脚检测红外模块的输出口,我的红外模块是输出低电平,模块的L 、O、R分别接单片机的P3.7、P3.6、P3.5,VCC和GND接在单片机上的电源接口。至于巡线之后电机怎么转,可以想一想挖掘机怎么转弯的。
四. 电机驱动TB6612
这个东西是必须要的,一般要使用电机的话都需要tb6612,单片机的接口接tb6612的接口如下,当然,还要接电源接口。VM要接5V以上的电源。tb6612的原理就不用多讲了,网上有很多资料。
bin1 = P2^6;
bin2 = P2^7;
ain1 = P2^4;
ain2 = P2^5;
pwma = P2^1;
pwmb = P2^0;
stby = P2^2;
然后两个电机分别接在AO1、AO2、BO1、BO2。
五. 降压模块
降压模块选择LM2596S降压模块,电池的正负极接IN+、IN-。OUT+、OUT-,接单片机的+5V和GND,然后tb6612的VM接在OUT+上面,调接电压到5V。文章来源:https://www.toymoban.com/news/detail-411711.html
六. 代码部分
#include<reg52.h>
unsigned char dlayleft,dlayright;
sbit bin1 = P2^6;
sbit bin2 = P2^7;
sbit ain1 = P2^4;
sbit ain2 = P2^5;
sbit pwma = P2^1;
sbit pwmb = P2^0;
sbit stby = P2^2; //TB6612,必须接,输出高电平。
sbit l = P3^7;
sbit o = P3^6;
sbit r = P3^5;
void zhi() //直走
{
dlayleft = 45;
dlayright = 52 ;
ain1 = 1;
ain2 = 0;
bin1 = 1;
bin2 = 0;
}
void zuo()//左转
{
dlayleft = 45;
dlayright = 48;
ain1 = 0;
ain2 = 1;
bin1 = 1;
bin2 = 0;
}
void you() //右转
{
dlayleft = 48;
dlayright = 45;
ain1 = 1;
ain2 = 0;
bin1 = 0;
bin2 = 1;
}
void timer0init()
{
TMOD|=0x01;
TH0=0xff;
TL0=0x9c;
EA=1;
ET0=1;
TR0=1;
}
//定时器中断服务函数
void timer0() interrupt 1
{
unsigned char i,j;
TH0=0xff;
TL0=0x9c;
i++;
j++;
if(i<=dlayleft)//左轮占空比,控制左轮速度
pwma=1;
else
pwma=0;
if(j<=dlayright)
pwmb=1;
else
pwmb=0;
if(i==100) //设置pwm周期=0.1ms*100=10ms
{
i=0;//加到100后变为0,重新计数
}
if(j==100)
{
j=0;
}
}
void xunji()
{
unsigned char flag;
if((l==0)&&(r==1))
{
flag = 0;//左边黑线
}
else if((l==1)&&(r==0))
{
flag = 1;//右边黑线
}
else if((l==1)&&(r==1))
{
flag = 3; //两边都没黑线
}
else
{
flag = 4;
}
switch(flag)
{
case 0: you();break;
case 1: zuo();break;
case 3: zhi();break;
case 4: zhi();break;
default: zhi();break;
}
}
void main()
{
stby = 1;
timer0init();
while(1)
{
xunji();
}
}
有问题的可以在评论区解答。文章来源地址https://www.toymoban.com/news/detail-411711.html
到了这里,关于51单片机最小系统循迹小车(带源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!