51“motorrr”寻迹小车学习1电机和寻迹模块

本文详细记录了51单片机驱动L298N电机和寻迹模块的硬件连接问题,包括芯片烧录、电机调速和寻迹模块的使用。遇到的挑战包括程序加载超时、电机不动作和PWM调速失效等,通过调整芯片位置和正确连接解决了问题。软件部分介绍了电机控制的管脚定义及寻迹模块的简单应用,提供了前进、转弯和停止等基本功能的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一 硬件

二 软件

前几天完成了寻迹小车的电机和寻迹模块的学习,这里板子用的是51最小系统板。

一 硬件

电机驱动模块L298N 和 寻迹模块

其实也没什么,pwm控制速度再加上寻迹模块,主要是遇见了一些玄学问题,这里来总结一下:

1.用下载器烧不进程序,总显示什么芯片加载超时==,解决方法:用51板子烧进去芯片再按上去就好了,(注意芯片的方向不要按反)就是比较麻烦。。

2.按进去芯片之后,上边那个数码管的数字一闪一闪的,车有想动的趋势但是不动,差点想把车拆了换个芯片重新装了,结果发现是芯片按的位置原因,应该把芯片按在正中间,试过了,最左最右都不行。

3.实现不了pwm调速,总是以最大引脚速度走,是那个跳线帽的原因,把跳线帽拔掉连上pwm的线就好了。

4.注意l298n的连线,12V  GND(板子的GND和电池负极)  5V 。还有最好先检查一下锂电池有没有问题。。。还有,用下载器连上电脑之后,别开单片机的开关,然后电脑就会直接黑屏(可能是之前接线有问题)。。

二 软件

管脚定义:

电机:前左右停 左大转 右大转

速度自己调

//前进 停止
#define l_forward		{IN1=1,IN2=0;}//左1
#define l_stop			{IN1=0,IN2=0;}
#define l_back			{IN1=0,IN2=1;}
	
#define ll_forward      {IN3=1,IN4=0;}//左2
#define ll_stop			{IN3=0,IN4=0;}
#define ll_back			{IN3=0,IN4=1;}

#define r_forward   {IN11=1,IN22=0;}//右1
#define r_stop      {IN11=0,IN22=0;}
#define r_back      {IN11=0,IN22=1;}

#define rr_forward  {IN33=1,IN44=0;}//右2
#define rr_stop     {IN33=0,IN44=0;}
#define rr_back     {IN33=0,IN44=1;}
void forward()
{
	left=12;lleft=12;
	right=12;rright=12;
	l_forward;
	ll_forward;
	r_forward;
	rr_forward;
}

void turn_right()//右
{
	left=18;lleft=18;
	right=40;rright=40;
	l_forward;
	ll_forward;
	r_back;
	rr_back;
}

void turn_left()
{
  left=40;lleft=40;	
	right=18;rright=18;
	l_back;
	ll_back;
	r_forward;
	rr_forward;
}

void stop()
{
	l_stop;
	ll_stop
	r_stop;
	rr_stop;
}

void turn_big_right()//右
{
	left=18;lleft=18;
	right=50;rright=50;
	l_forward;
	ll_forward;
	r_back;
	rr_back;
}

void turn_big_left()
{
  left=50;lleft=50;	
	right=18;rright=18;
	l_back;
	ll_back;
	r_forward;
	rr_forward;
}
unsigned char count=0,count1=0,count2=0,count3=0;//计数值
unsigned char left=0,lleft=0;  //左边的比较值
unsigned char right=0,rright=0;//右边的比较值

中断里面:计数值++

四个电机调速(小于比较值为0 大于比较值为1 大于100为0) 都一样。

寻迹模块:可能还需要加,这个效果还行。

void xunji()
{
	if(D1==0&&D2==0&&D3==0&&D4==0)	{forward();}
	if(D1==1&&D2==1&&D3==1&&D4==1)	{stop();}
	if(D2==0&&D3==1)     			{turn_right();}
	if(D2==1&&D3==0)				{turn_left();}
	if(D2==1&&D3==1)				{forward();}
	if(D1==1&&D2==0&&D3==0&&D4==0)	{turn_big_left();}
	if(D1==0&&D2==0&&D3==0&&D4==1)	{turn_big_right();}
}

电机和寻迹模块差不多就这些了,有别的再补充,==。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值