课设报告基于Arduino单片机的实物设计Word格式文档下载.docx

上传人:b****2 文档编号:3684177 上传时间:2023-05-02 格式:DOCX 页数:21 大小:872.34KB
下载 相关 举报
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第1页
第1页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第2页
第2页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第3页
第3页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第4页
第4页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第5页
第5页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第6页
第6页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第7页
第7页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第8页
第8页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第9页
第9页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第10页
第10页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第11页
第11页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第12页
第12页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第13页
第13页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第14页
第14页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第15页
第15页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第16页
第16页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第17页
第17页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第18页
第18页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第19页
第19页 / 共21页
课设报告基于Arduino单片机的实物设计Word格式文档下载.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

课设报告基于Arduino单片机的实物设计Word格式文档下载.docx

《课设报告基于Arduino单片机的实物设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《课设报告基于Arduino单片机的实物设计Word格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。

课设报告基于Arduino单片机的实物设计Word格式文档下载.docx

6.L298N电机驱动板1个;

7.ARDUINOUNO328控制板1个;

8.ARDUINO传感器扩展板1个;

9.云台1个;

10.舵机1个;

11.超声波模块1个;

12.三组寻线模块;

13.红外接收传感器;

14.单片机遥控器;

15.2000MA18650充电电池2节;

16.18650电池盒一个;

17.18650充电器一个。

3.2硬件设计说明

结合实际、根据需要,将系统分为四个模块,即电机驱动模块,循迹模块,避碰模块,红外模块,分开做,自后将其综合起来。

3.3电机驱动模块

3.3.1L298N说明

L298N是一个驱动模块,就是单片机的驱动电流太小无法驱动电动机,因此L298N其起到一个放大器作用。

通过控制L298NI1I2I3I4接口,控制电机的正转,反转,转弯和停顿。

3.3.2L298N连接图

如以下图所示:

3.4循迹模块

3.4.1寻线功能

使小车沿着黑线走,根据黑线的位置选着行走的状态。

3.4.2寻线传感器与实验连接图

TCRT5000红外对管的工作原理是利用红外线对颜色的反射率不一样,将反射信号的强弱转化成电流信号。

黑白寻迹模块在检测到黑色高电平有效,检测到白色是为低电平有效,检测高度为0—3cm。

使用方法

1.传感器接口有3根排针,分别是GND,VCC,OUT。

VCC和GND为供电端,OUT是信号输出端。

2.检测到物体,信号端输出低电平;

未检测到物体,信号端输出高电平。

3.主要判断信号输出端是0或者1,就能判断物体是否存在。

性能参数:

1:

检测距离,检测白纸时约为2厘米。

视颜色的不同距离有所不同,白色最远。

2.供电电压:

2.5V~12V,不要超过12V。

(注意:

最好用低电压供电,供电电压太高传感器的寿命会变短。

5V供电为佳。

)3.工作电流,5V时18~20ma。

经大量测试,传感器硬件设置为18~20ma工作电流时性能最佳,主要表现在抗干扰能力上。

4.检测到物体,信号端输出低电平;

5.传感器输出TTL电平,能直接与3.3V或者5V单片机IO口相连。

黑线或者白线检测原理1.利用黑色对光线的反射率小这个特点,当平面的颜色不是黑色时,传感器发射出去的红外光被大局部反射回来。

于是传感器输出低电平0。

2.当平面有一黑线,传感器在黑线上方时,因黑色的反射能力很弱,反射回来的红外光很少,达不到传感器动作的水平,所以传感器还输出1。

3.我们只要用单片机判断传感器的输出端是0或者是1,就能检测黑线。

4.检测白线的原理和检测黑线的原理一样,检测白线时,白线周边的颜色也要比较接近黑色,然后调节红外传感器上面的可调电阻,将灵敏度调低,一直调到刚好周边的颜色检测不到为止,那样就能检测白线了。

连接参考图如下:

3.5避碰模块

3.5.1超声波模块

超声波智能避障实现方便、计算简单、易于做到实时控制,并且在测量精度方面能到达实用的要求,因此成为常用的避障方法。

3.5.2实验连接图

3.6红外模块

3.6.1红外模块说明

实验前须知:

1.先把IRremote函式库资料夹放进Arduinolibraries目录底下

2.开启IrReceive.pde测得自己的红外线遥控的码〔在SerialMonitor可显示IRcode〕,再将IRcode记录下来,然后到程式里面修改成自己的红外线码即可。

3.6.2实物图

四、模块软件设计

4.1循迹模块程序

intMotorRight1=8;

//IN1

intMotorRight2=9;

//IN2

intMotorLeft1=7;

//IN4

intMotorLeft2=6;

//IN3

intspeedpin=11;

//定义EA(PWM调速)

intspeedpin1=10;

//定义EB(PWM调速)接口

constintSensorLeft=5;

//左感測器輸入腳

constintSensorMiddle=4;

//中感測器輸入腳

constintSensorRight=3;

//右感測器輸入腳

intSL;

//左感測器狀態

intSM;

//中感測器狀態

intSR;

//右感測器狀態

voidadvance(inta)//前进

{digitalWrite(MotorRight1,LOW);

digitalWrite(MotorRight2,HIGH);

digitalWrite(MotorLeft1,LOW);

digitalWrite(MotorLeft2,HIGH);

delay(a*50);

}

voidleft(inti)//左转

digitalWrite(MotorLeft2,LOW);

delay(i*30);

voidright(intc)//右转

digitalWrite(MotorRight2,LOW);

delay(c*30);

voidstopp(intd)//停顿

{

digitalWrite(MotorRight1,LOW);

delay(d*10);

voidback(intg)//后退

{digitalWrite(MotorRight1,HIGH);

digitalWrite(MotorLeft1,HIGH);

delay(g*100);

voidre(intx)//右大转

delay(x*25);

voidle(inth)//左打转

delay(h*25);

voidsetup()

{Serial.begin(9600);

pinMode(MotorRight1,OUTPUT);

//腳位8(PWM)

pinMode(MotorRight2,OUTPUT);

//腳位9(PWM)

pinMode(MotorLeft1,OUTPUT);

//腳位7(PWM)

pinMode(MotorLeft2,OUTPUT);

//腳位6(PWM)

pinMode(speedpin,OUTPUT);

pinMode(speedpin1,OUTPUT);

pinMode(SensorLeft,INPUT);

//左感測器

pinMode(SensorMiddle,INPUT);

//中感測器

pinMode(SensorRight,INPUT);

//右感測器

}

voidloop()

SL=digitalRead(SensorLeft);

SM=digitalRead(SensorMiddle);

SR=digitalRead(SensorRight);

SL=digitalRead(SensorLeft);

if(SM==HIGH){

if(SR==LOW&

SL==HIGH)//向左

{left

(1);

stopp

(2);

}elseif(SL==LOW&

SR==HIGH)

{right

(1);

stopp

(2);

elseif(SL==HIGH&

SR==HIGH)

{if(count<

des-1)

{advance

(1);

stopp(50);

count=count+1;

if(count==des-1)

{le(12);

SM=digitalRead(SensorMiddle);

SR=digitalRead(SensorRight);

}elseif(count>

=des){digitalWrite(MotorRight1,LOW);

delay(50000);

}elseadvance

(2);

else//直進

}}

if(SM==LOW)

{if(SR==LOW&

SL==HIGH)

}elseif(SL==LOW&

SR==HIGH)

{right

(1);

if((SL==LOW&

SR==LOW&

SM==LOW))

{

le

(1);

}}}

4.2红外模块程序

longadvence=0x00FF629D;

longback=0x00FFA857;

longstopp=0x00FF02FD;

longleft=0x00FF22DD;

longright=0x00FFC23D;

IRrecvirrecv(RECV_PIN);

decode_resultsresults;

voiddump(decode_results

*results)

{intcount=

results->

rawlen;

if(results->

decode_type==UNKNOWN){Serial.println("

Couldnotdecodemessage"

);

else{if(results->

decod_type==NEC)Serial.print("

DecodedNEC:

"

}elseif(results->

decode_type==SONY){Serial.print("

DecodedSONY:

}elseif(results->

decode_type==RC5){Serial.print("

DecodedRC5:

decode_type==RC6){Serial.print("

DecodedRC6:

Serial.print(results->

value,HEX)Serial.print("

("

Serial.print(resuls->

bits,DEC);

Serial.println("

bits)"

}Serial.print("

Raw("

Serial.print(count,DEC);

Serial.print("

):

for(inti=0;

i<

count;

i++){if((i%2)==1)Serial.print(results->

rawbuf[i]*USECPERTICK,DEC);

}else{Serial.print(-(int)results->

rawbuf[i]*USECPERTICK,DEC);

}Serial.print("

}Serial.println("

"

{Serial.begin(9600);

irrecv.enableIRIn();

//Startthereceiver

}inton=0;

unsignedlonglast=millis();

void(loop)

{i(irrecv.decode(&

results))}

if(millis()-last>

250){on=!

on;

digitalWrite(13,on?

HIGH:

LOW);

dump(&

result)

if(results.value==?

){}

}}

4.3避碰模块程序

主程序

{myservo.write(90);

//测量

detection();

//测量角度

if(directionn==2)//假设directionn(方向)=2(倒車)

{back(5);

//倒退

stopp();

//停顿

while

(1);

}if(directionn==8)

{advance

(2);

}}

五、综合设计与调试

5.1流程图

红外信号

障碍物

路径1

路径2

终点

开场

5.2软件设计

#include<

IRremote.h>

#include<

Servo.h>

intRECV_PIN=12;

intMotorRight1=8;

constintSensorLeft=2;

constintSensorRight=5;

intSM;

intinputPin=A0;

intoutputPin=A1;

intFspeedd=0;

intdirectionn=0;

Servomyservo;

intdelay_time=250;

intFgo=8;

intBgo=2;

intcount=0;

intdes=0;

intf=0;

//******红外控制局部********

longb=0x00FFA857;

longs=0x00FF02FD;

longl=0x00FF22DD;

longr=0x00FFC23D;

voiddump(decode_results*results)

{intcount=results->

decode_type==UNKNOWN)

{Serial.println("

else{if(results->

decode_type==NEC){Serial.print("

decode_type==SONY)

{Serial.print("

}elseifresults->

decode_type==RC5)

{Serial.print("

}elseif(results->

decode_type==RC6){

Serial.print("

}Serial.print(results->

value,HEX);

Serial.print(results->

Serial.println("

bits)"

Raw("

for(inti=0;

i++)

{if((i%2)==1)

{Serial.print(results->

else{Serial.print(-(int)results->

inton=0;

pinMode(SensorMiddle,INPUT);

pinMode(speedpin1,OUTPUT);

Serial.begin(9600);

pinMode(inputPin,INPUT);

pinMode(outputPin,OUTPUT);

myservo.attach(3);

voiddetection()

{intdelay_time=250;

ask_pin_F();

if(Fspeedd<

3)

{directionn=Bgo;

else{directionn=Fgo;

voidask_pin_F()

{myservo.write(90);

digitalWrite(outputPin,LOW);

delayMicroseconds

(2);

digitalWrite(outputPin,HIGH);

delayMicroseconds(10);

floatFdistance=pulseIn(inputPin,HIGH);

Fdistance=distance/5.8/10;

Fspeedd=Fdistance;

voidadvance(inta)

{digitalWrite(MotorRight1,LOW);

digitalWrite(MotorRight2,HIGH);

digitalWrite(MotorLeft1,LOW);

digitalWrite(MotorLeft2,HIGH);

delay(a*50);

voidleft(inti)

digitalWrite(MotorLeft2,LOW);

}voidright(intc)

digitalWrite(MotorRight2,LOW);

voidstopp(intd)

}voidback(intg)

{digitalWrite(MotorR

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2