视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
红外线遥控小车报告
2025-09-29 16:41:31 责编:小OO
文档
红外遥控小车报告外

目录

一、方案论证    - 1 -

1、主控系统分析与论证:    - 1 -

2、机械系统分析与论证:    - 1 -

3、电机驱动模块分析与论证:    - 1 -

4、遥控系统分析与论证:    - 1 -

二、结构图    - 2 -

1、主程序控制流程图    - 2 -

三、硬件电路图    - 3 -

1、整体电路图    - 3 -

2、L298说明    - 3 -

3、7805说明    - 5 -

四、软件    - 7 -

1、程序:    - 7 -

五、红外发射接收的原理    - 19 -

1、编码格式    - 19 -

2、遥控指令编码规律    - 19 -

3、遥控器的解码算法    - 19 -

4、资料码表    - 21 -

六、调试过程中遇到的问题及解决的办法    - 22 -

1、在选择电机中遇到的问题及解决办法    - 22 -

2、程序中遇到的问题及解决办法    - 22 -

一、方案论证

1、主控系统分析与论证:

我们采用单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此,这种方案是一种较为理想的方案,也是我们主要的学习方向。但是在实际应用中,由于该系统所需用到的传感器数目较多,需要处理的敏感量较多,很有可能会引来单片机资源不足的问题。

2、机械系统分析与论证:

     本题目要求小车的机械系统稳定、简单,而四轮运动系统具备以上特点。因此我选用市售玩具汽车的机械运动系统并进行了改装。

3、电机驱动模块分析与论证:    

方案一:使用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,成本低,加速能力强,但功率损耗大,特别是低速大转距运行时,通过电阻R的电流大,发热厉害,损耗大。

     方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。

     方案三:通过PWM脉宽调制的方法,实现对小车速度的控制。这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。

      因此决定采用PWM脉宽调制的方法控制直流电机。

4、遥控系统分析与论证:

红外线遥控是目前使用最广的一种遥控手段。红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,遥控条件指向性较强,受障碍物阻的影响较大指向性较差,受地形或障碍物阻挡的影响较小,综合考虑各种因素,我们决定采用红外的方式

二、结构图

1、主程序控制流程图

三、硬件电路图

1、整体电路图

2、L298说明

恒压恒流桥式2A驱动芯片L298N

L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。

L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。

L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7 V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46 V。输出电流可达2.5 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。表1是L298N功能逻辑图。

    

15脚是输出电流反馈引脚,其它与L293相同。在通常使用中这两个引脚也可以直接接地。上图是其与51单片机连接的电路图。

3、7805说明

H 7805 系列为 3 端正稳压电路,TO-220 封装,能提供多

种固定的输出电压,应用范围广。内含过流、过热和过载保

护电路。带散热片时,输出电流可达 1A。虽然是固定稳压电

路,但使用外接元件,可获得不同的电压和电流。

主要特点:

 输出电流可达 1A

 输出电压有:5V

 过热保护

 短路保护

 输出晶体管 SOA 保护

7805原理图

四、软件

1、程序:

    TS  EQU 1         ;一次按键送出脉冲信号个数

;----------------------------------------------

    K1  EQU P2.6        ;按键1引脚定义

    K2  EQU P2.7        ;按键2引脚定义

    K3  EQU P2.5        ;按键3引脚定义

    K4  EQU P2.4        ;按键4引脚定义

;----------------------------------------------

    WLED EQU P3.7       ;工作指示灯引脚定义

    PUL1  EQU P1.4       ;直流电机控制线1

    PUL2  EQU P1.5

    PUR1  EQU P1.6       ;直流电机控制线2

    PUR2  EQU P1.7

;----------------------------------------------

;IR遥控器按键1~7比较码

    CODE_K1 EQU 0FH

    CODE_K2    EQU 12H

    CODE_K3    EQU 0EH

    CODE_K4    EQU 1DH

    CODE_K5    EQU 43H

    CODE_K6    EQU 13H

    CODE_K7    EQU 46H

;----------------------------------------------

    IRCOM EQU 30H       ;红外线信号译码数据放置变量起始地址

    COM   EQU 32H       ;比较第3字节

    GDP   EQU 34H

    DDP   EQU 35H

    IRIN  EQU P3.2      ;红外线IR信号输入位

;----------------------------------------------

    ORG 0000H

    JMP START

    ORG 0040H

START:                    

    CLR PUL1

    CLR PUL2            

    CLR PUR1

    CLR PUR2

    CALL LED_BL

    MOV P0,#0FFH

    MOV COM,#0FFH

    MOV GDP,#241

    MOV DDP,#1

;----------------------------------------------

LOOP:

    MOV R0,#IRCOM     ;变量起始地址给R0

    CALL IR_IN          ;调用解码程序

    MOV A,COM         ;

    MOV P0,A           ;把第3字节的数送给P0口

    CALL OP

;----------------------------------------------

;按键检测

    JB K1,X1

    JNB K1,$

    CALL LED_BL       

    CALL GO_FOR        ;前进展示

    CALL GO_FOR

    CALL GO_FOR

    JMP LOOP

;----------------------------------------------

X1:

    JB K2,X2

    JNB K2,$

    CALL LED_BL

    CALL GO_BACK       ;后退展示

    CALL GO_BACK

    CALL GO_BACK

    JMP LOOP

;----------------------------------------------

X2:

    JB K3,X3

    JNB K3,$

    CALL LED_BL

    CALL GO_LEFT        ;左转展示

    CALL GO_LEFT

    CALL GO_LEFT

    JMP LOOP

;----------------------------------------------

X3:

    JB K4,X4

    JNB K4,$

    CALL LED_BL

    CALL GO_RIGHT       ;右转展示

    CALL GO_RIGHT

    CALL GO_RIGHT

    JMP LOOP

;----------------------------------------------

X4:

    JMP LOOP

;----------------------------------------------

;DELAY R5*10ms;延迟子程序

DELAY:

    MOV R6,#50

D1:

    MOV R7,#100

    DJNZ R7,$

    DJNZ R6,D1

    DJNZ R5,DELAY

    RET

;----------------------------------------------

;工作指示灯闪烁

LED_BL:

    MOV R4,#2

L0:

    CPL WLED

    MOV R5,#5

    CALL DELAY

    DJNZ R4,L0

    SETB WLED

    RET

;----------------------------------------------

;伺服机1反转控制

PUL_BACK:

    SETB PUL2

    CLR PUL1

    MOV A,GDP

    MOV R4,A

A1:

    CALL DEL

    DJNZ R4,A1

    CLR PUL1

    CLR PUL2

    MOV A,DDP

    MOV R4,A

A2:

    CALL DEL

    DJNZ R4,A2

    RET

;----------------------------------------------

;伺服机1正转控制

PUL_FOR:

    SETB PUL1

    CLR PUL2

    MOV A,GDP

    MOV R4,A

B1:

    CALL DEL

    DJNZ R4,B1

    CLR PUL1

    CLR PUL2

    MOV A,DDP

    MOV R4,A

B2:

    CALL DEL

    DJNZ R4,B2

    RET

;--------------------------------------------

;直流电机正转展示

DEMO_FOR:

    MOV R3,#TS

C1:

    CALL PUL_FOR

    DJNZ R3,C1

    RET

;--------------------------------------------

;直流电机反转展示

DEMO_BACK:

    MOV R3,#TS

E1:

    CALL PUL_BACK

    DJNZ R3,E1

    RET

;--------------------------------------------

;DELAY R5*0.1ms;0.1秒延迟子程序

DEL:

    MOV R5,#1

DELAY1:

    MOV R6,#2

F1:

    MOV R7,#17

    DJNZ R7,$

    DJNZ R6,F1

    DJNZ R5,DELAY1

    RET

;----------------------------------------------

;直流电机2反转控制

PUR_BACK:

    SETB PUR2

    CLR PUR1

    MOV A,GDP

    MOV R4,A

G1:

    CALL DEL

    DJNZ R4,G1

    CLR PUR1

    CLR PUR2

    MOV A,DDP

    MOV R4,A

G2:

    CALL DEL

    DJNZ R4,G2

    RET

;----------------------------------------------

;直流电机2正转控制

PUR_FOR:

    SETB PUR1

    CLR PUR2

    MOV A,R5

    MOV R4,A

H1:

    CALL DEL

    DJNZ R4,H1

    CLR PUR1

    CLR PUR2

    MOV A,DDP

    MOV R4,A

H2:

    CALL DEL

    DJNZ R4,H2

    RET

;----------------------------------------------

;车体前进

GO_FOR:

    MOV R3,#TS

J1:

    CALL PUL_FOR

    CALL PUR_BACK

    DJNZ R3,J1

    RET

;----------------------------------------------

;车体后退

GO_BACK:

    MOV R3,#TS

S1:

    CALL PUL_BACK

    CALL PUR_FOR

    DJNZ R3,S1

    RET

;----------------------------------------------

;车体左转

GO_LEFT:

    MOV R3,#TS

M1:

    CALL PUL_BACK

    CALL PUR_BACK

    DJNZ R3,M1

    RET

;----------------------------------------------

;车体右转

GO_RIGHT:

    MOV R3,#TS

Q1:

    CALL PUL_FOR

    CALL PUR_FOR

    DJNZ R3,Q1

    RET

;----------------------------------------------

;

OP:

    MOV A,COM

    CJNE A,#CODE_K1,O1

    CALL GO_FOR

    RET

O1:

    CJNE A,#CODE_K2,O2

    CALL GO_BACK

    RET

O2:

    CJNE A,#CODE_K3,O3

    CALL GO_LEFT

    RET

O3:

    CJNE A,#CODE_K4,O4

    CALL GO_RIGHT

    RET

O4:

    CJNE A,#CODE_K5,O5

    ;MOV GDP,#61

    ;MOV DDP,#41

    RET

O5:

    CJNE A,#CODE_K6,O6

    ;MOV GDP,#81

    ;MOV DDP,#21

    RET

O6:

    CJNE A,#CODE_K7,O7

    ;MOV GDP,#101

    ;MOV DDP,#1

    RET

O7:

    RET

;------------------------------------------------

;IR译码4字节数据

IR_IN:

I1:

    JNB IRIN,I2

;MOV COM,#0          ;保持P0口数据输出不变

    RET

I2:

    MOV R4,#20

I20:

    CALL DEL

    DJNZ R4,I20

    JB IRIN,I1

    CLR WLED

I21:

    JB IRIN,I3

    CALL DEL

    JMP I21

I3:

    MOV R3,#0

LL:

    JNB IRIN,I4

    CALL DEL

    JMP LL

I4:

    JB IRIN,I5

    CALL DEL

    JMP I4

I5:

    MOV R2,#0

L1:

    CALL DEL

    JB IRIN,N1

    MOV A,#8

    CLR C

    SUBB A,R2

    MOV A,@R0

    RRC A

    MOV @R0,A

    INC R3

    CJNE R3,#8,LL

    MOV R3,#0

    INC R0

    CJNE R0,#34H,LL

    JMP OK

N1:

    INC R2

    CJNE R2,#30,L1

OK:

    SETB WLED

    RET

;--------------------------------------------

END

五、红外发射接收的原理

1、编码格式

遥控器发射的信号由一串0和1的二进制代码组成。就拿TOSHIBA电视遥控器为例子来说,0码由0.8ms低电平和0.4ms高电平组合而成.脉冲宽度为1.2ms.1码由0.8ms低电平和1.6ms高电平组合而成.脉冲宽度为2.4ms。在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。

2、遥控指令编码规律

当我们按下遥控器的按键时,遥控器将发出一串二进制代码,我们称它为一帧数据。根据各部分的功能。可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。遥控器发射代码时.均是低位在前。高位在后。引导码高电平为9ms,低电平为4.5ms。当接收到此码时.表示一帧数据的开始。单片机可以准备接收下面的数据。地址码由8位二进制组成,共256种.图中地址码重发了一次。主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。不同的设备可以拥有不同的地址码.因此。同种编码的遥控器只要设置地址码不同,也不会相互干扰。在同一个遥控器中.所有按键发出的地址码都是相同的。数据码为8位,可编码256种状态,代表实际所按下的键。数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢弃。在同一个遥控器上.所有按键的数据码均不相同。数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前).两者之和应为0FFH。

3、遥控器的解码算法

程序必须设计一个精确的0.1ms延时时间当作挤出时间,以计数实际的波形宽度,若读值为4表示波形宽度为0.4ms,若读值为16则表示波形宽度为1.6ms,依此类推。低电平的宽度为0.8ms为固定,因此直接可以判断高电平的宽度的计数值是4还是16,来决定编码为0或是1,程序中可以用减法指令SUBB 来完成判断,指令“SUBB A,R2”中若R2为计数值,A寄存器设为8,思考如下:

    当“8-R2”有产生借位,借位标志C=1,表示编码为1。

当“8-R2”无产生借位,借位标志C=0,表示编码为0。

将借位标志C经过右移指令“RRC A”转入A寄存器中,再经由R0寄存器间接寻址存入内存内。程序片段如下:

    MOV A,#8    ;设置减数为8

    CLR C       ;清除借位标志C

    SUBB A,R2   ;判断高地位

    MOV A,@R0   ;取出内存内原先数据

    RRC A       ;右移指令,将借位标志C右移进入a寄存器中

    MOV @R0,A   ;将数据写入内存内

最后收集到4个字节数据后,红外线的结束信号可以不必理会跳过即可。

4、资料码表

遥控功能资料码遥控功能资料码
101开关13
202AV15
303CH-10
404CH+0F
505VOL-0D
606VOL+0E
707MUTE(喑哑)0B
808SLEEP(

睡眠

14
909DISPLAY(显示)10
000SMPX17
-/--/---0AMENU(菜单)11
POWER(

力量

OBSCAN(

扫瞄

1E
六、调试过程中遇到的问题及解决的办法

1、在选择电机中遇到的问题及解决办法

在刚着手制作红外遥控小车的时候,买了两个金属齿扭矩减速电机,但是由于两个电机的转速不匹配,相差太多无法正常使用,所以选择在玩具商店买现成的小车底盘。

2、程序中遇到的问题及解决办法

1、由于电机动作周期过长,导致有的红外线号丢失,所以减小了一次按键送出脉冲的信号个数,使动作周期小于9ms。

2、由于数码显示编码是后加进去的,在家数码管的时候,编码无法保持,在经过仔细读程序屏蔽掉了MOV COM,#0这条程序,问题得到了解决。下载本文

显示全文
专题