鱼C论坛

 找回密码
 立即注册
查看: 4541|回复: 44

[学习笔记] 51小车设计:循迹+遥控

[复制链接]
发表于 2021-6-19 01:33:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小伤口 于 2021-12-12 17:46 编辑

51小车设计:循迹+遥控






外观

演示视频请看评论下方


小车

IMG_20210619_002617(1).jpg

软件(并不是我写的)

Screenshot_20210619_002259_xnj.lazydog.btcontroll.jpg

零件

一个小车底板,两个减速电机,一个 51 最小系统(气人的是买来的竟然是坏的,
最后只好自己焊了一个),两个红外对管,一个 L298N 电机驱动模块
一个 12 V 的锂电池,若干根杜邦线


各个模块的作用

红外对管

下载.jpg

传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来的强度不够大,
光敏三极管就会处于关断状态(表示开关断开时,电路处于无电的状态。),此时模块输出端为低电平,
指示二极管一直处于熄灭状态;被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,
光敏三极管饱和,此时模块的输出端为高电平,指示二极管被点亮。


发射的红外线遇到黑线被吸收因此可以通过这个原理达到循迹的效果

L298N驱动模块

v2-f004502d47884368183ab96507151e1c_720w.jpg

L298N 是一款接受高电压的电机驱动器,直流电机和步进电机都可以驱动。一片驱动芯片可同时控制两个直流减速电机做不同动作,在 6 V 到 46 V 的电压范围内,提供 2 安培的电流,并且具有过热自断和反馈检测功能。

L298N 可对电机进行直接控制,通过主控芯片的 I/O 输入对其控制电平进行设定,就可为电机进行正转反转驱动,操作简单、稳定性好,可以满足直流电机的大电流驱动条件。


然后通过 51 单片机可以控制正反转根据 PWM 来控制电机的速度,两个电机不同的转速就可以实现转弯

HC-06

OIP.jpg

用串口通信通过蓝牙接受蓝牙发送的二进制数据来达到控制的效果

代码

主代码( C 语言)
#include <AT89X52.H>
#include "UART.h"
#include "timer0.h"

typedef unsigned int uint;
typedef unsigned char uchar; 
uint Su_Ju = 0; 

sbit Moter_1=P0^1;
sbit Moter_2=P0^2;
sbit Moter_3=P0^3;
sbit Moter_4=P0^4;
sbit XunJi_1=P1^0;
sbit XunJi_2=P1^1;
unsigned char counter_1,shudu_1,shudu_2,behind_1,behind_2;
void main()
{
        unsigned char Mo_Shi=0;
        UART_Init();
        Timer0_Init();
        while(1)
        {
                if (Su_Ju==0x35 ||Su_Ju==0x36)//遥控模式
                {
                        Mo_Shi=        Su_Ju;
                }
                if (Mo_Shi==0x35)//遥控模式
                {
                        if (Su_Ju==0x30)//向左
                        {
                                behind_1=1;
                                behind_2=0;
                                shudu_1=100;
                                shudu_2=50;
                        }
                        if (Su_Ju==0x31)//向右
                        {
                                behind_1=1;
                                behind_2=0;
                                shudu_1=40;
                                shudu_2=90;
                        }
                        if (Su_Ju==0x32)//向后
                        {
                                behind_1=1;
                                behind_2=0;
                                shudu_1=100;
                                shudu_2=90;
                        }
                        if (Su_Ju==0x33)//向前
                        {
                                behind_1=0;
                                behind_2=1;
                                shudu_1=100;
                                shudu_2=90;
                        }
                        
                        if (Su_Ju==0x34)//停止
                        {
                                behind_1=0;
                                behind_2=0;
                        }
                        
                }
                if (Mo_Shi==0x36)//循迹模式
                {
                        behind_1=1;
                        behind_2=0;
                        if (XunJi_1==0&&XunJi_2==0)
                        {
                                shudu_1=20;
                                shudu_2=20;
                        }
                        if (XunJi_1==0&&XunJi_2==1)//左
                        {
                                shudu_1=60;
                                shudu_2=0;
                        }
                        if (XunJi_1==1&&XunJi_2==0)//右
                        {
                                shudu_1=0;
                                shudu_2=60;
                        }
                }
        }
                
}
void TIMER_Interrupt()interrupt 1
{
        TL0= 0x9C;                //设置定时初值
        TH0 = 0xFF;                //设置定时初值
        counter_1++;
        counter_1%=100;
        if (counter_1<shudu_1)
        {
                                Moter_1=behind_1;
                                Moter_2=behind_2;                                
                
        }
        else
        {
                        Moter_1=0;
                        Moter_2=0;
        }
        
        
        if (counter_1<shudu_2)
        {
                                Moter_3=behind_1;
                                Moter_4=behind_2;                                
        }
        else
        {
                        Moter_3=0;
                        Moter_4=0;
        }
        
}
void UART_Interrupt() interrupt 4
{
        Su_Ju=SBUF;
        RI=0;
        SBUF = Su_Ju;    //手机和蓝牙模块通讯时,我们可以打开电脑串口调试工具查看我们的发送值)
        while(!TI);
        TI = 0; 
}

整个文件
游客,如果您要查看本帖隐藏内容请回复

宣传

ewm.jpg

欢迎大家关注小伤口的微信公众号

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
昨非 + 5 + 5 + 3 棒棒棒~

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-19 16:14:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-19 19:19:15 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-19 20:36:26 From FishC Mobile | 显示全部楼层
哈喽!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-20 09:48:17 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-20 09:51:46 From FishC Mobile | 显示全部楼层
龙舞九天 发表于 2021-6-19 20:36
哈喽!


hello
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-20 15:04:40 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-21 08:58:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-21 09:52:06 | 显示全部楼层

回帖奖励 +2 鱼币

学习一下NIce!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-21 13:02:27 | 显示全部楼层

回帖奖励 +2 鱼币

?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-21 15:47:24 | 显示全部楼层

回帖奖励 +2 鱼币

开始进军硬件了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-21 16:47:06 From FishC Mobile | 显示全部楼层
51Arduino32 发表于 2021-6-21 15:47
开始进军硬件了吗

不过会的知识太少了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-21 22:19:37 | 显示全部楼层

回帖奖励 +2 鱼币

666666666666666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-21 23:32:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-22 09:14:11 | 显示全部楼层
可以的,不断学习,充实自己,加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-22 15:52:30 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-22 18:00:33 | 显示全部楼层
感谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-22 21:15:53 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-22 21:35:39 | 显示全部楼层

回帖奖励 +2 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-23 09:12:00 From FishC Mobile | 显示全部楼层
昨非 发表于 2021-6-22 21:35

好久没看 you 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 14:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表