华科电工实习智能小车课后论文(含代码)

更新时间:2024-03-07 21:03:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

电工实习

关于智能小车组装与操控的论文

第五组:

1

一.硬件部分

1.硬件组装

(1)

小组成员对硬件的组装都有自己的意见和建议,以及自己的思想,在短暂的电工实习课程中不可能让自己的思维与想法完全付诸于智能车(形成现实),所以在这一部分,我们小组将分别陈述自己对智能小车硬件部分的组装以及要改进的地方。以下是几个小组成员的想法整理。

在这次机器人制作的实习中,我对智能控制机器人有了初步的认识。第一次接触这个东西的我觉得它非常高大上,我们之前学过一些传感器知识和c++语言,今天才得以运用这些知识。 开始制作时,我们先了解了这个机器人的各种功能和使用的传感器以及其他元件,然后开始对机器人进行安装,使外形尽量合理,以便更好发挥其功能。接下来在组长的带领下我几个开始实现机器人的各种功能,按照步骤初始化引脚,写代码,烧录……很快我们就弄好了蓝牙模块,用手机蓝牙连接机器人实现简单的前进后退转向功能。在不断地修改和调试后,其他功能也一一实现。 虽然在检查时部分功能没有达到完美的效果,中途我们也遇到很多问题包括像电脑突然关机代码全部丢了等等…但我们觉得这次实习激发了我对电工的兴趣,也让我了解到了很多知识的应用与操作,希望有机会再进行这样的实习。 真正功能实现部分的内容写的略少……因为打酱油。

(2)

这次参加了智能车的电工实习,感觉很过瘾,很好玩。个人是挺喜欢智能玩具的,通过这次自己的实习,感觉通过软硬件的结合,就像搭积木一样,一点点自己把具有完整功能的模块结合起来,完成具有实际应用价值的小车,挺酷炫的。但感觉在时间上挺仓促的,而且现在需要迎接着考试的压力,所以感觉课程安排上有点不自由。

由于自己之前有一点编程的基础,所以还能完成课程任务。但倘若,完全一次都没接触过这些东西的话,个人感觉是很难第一次做就能把课程中设计的每一个任务都完成好的。任务量确实有点大。

最后,很感谢学校能提供这样一个平台让我们学习这些,感觉这比学校课本上枯燥的知识有趣的多,能亲自去动手实践,挺自由,挺快乐!

(3)

对于智能小车的组装,因为时间问题所以使用了之前已经组装好了的智能小车,但这毕竟不是自己组装的,所以有很多自己不太满意的地方。当然,也许自己的想法未必是最好的,也许自己的想法比别人的差好多,但自己做出来的东西始终是自己做出来的,对它的性能和工作状态能有更好的理解和掌握。就先说说对智能小车的组装吧。

首先,无论是哪一个环节的调试,小车在现实的运行总和代码有出处,也不是说和代码不相符,而是无法完全灵活的实现程序所要表达的内容。在我看来小车的前轮就是个大问题。我们完全可以不要前轮,或者是将前轮的行动与后轮一致,所以整个车身的改进可以有以下两个方案。

2

第一,将前轮去掉,扩大两个后轮的直径,让后轮支撑起整个车身的电池部分和电路板部分。在车身的下部分加重重量,使得车身在运动工程中不发生来回的摆动。在车轮的内侧安装灰度辨认器,这样能很好的解决由于前轮带来的偏差和灰度辨识器与后轮距离而产生的滞后现象。

第二,将单个的前轮设置成两个车轮,同时可以设置前后传动齿轮,让后轮的动力通过齿轮直接传送到各一侧的前轮,那样一来,不仅前轮方向的不确定性可以改变,加入两个前轮后,由于齿轮的传动,前轮总可以保持与后轮方向的协调。除此,可以改变其他方面的相关内容。

其次,自己对程序这部分实在是差的厉害,设计硬件系统还可以,但软件部分完全起不到建议性的意见。只能是在一旁对调试不当的小车进行口语的表面现象的直观建议。

通过本次实验了解智能小车的运行以及代码的调试,了解智能车运行的根本机制,从而深刻体会到程序自动控制给现代社会所带来的方便。 2总结

通过本次试验,我们小组成员各自收获了很多,对智能控制机器人有了初步的认识,了解智能小车的运行以及代码的调试,了解智能车运行的根本机制虽然在检查时部分功能没有达到完美的效果,但通过软硬件的结合,一点点自己把具有完整功能的模块结合起来,完成具有实际应用价值的小车,激发了我们对电工的兴趣,也让我们了解到了很多知识的应用与操作。

二.软件部分

1.代码介绍

首先定义整个电路板的控制端,记录测量次数,每5次取一下平均值,确定电机的转向,电机到底是右转还是左转取决于电机端的接线和控制脚的顺序。当电机两个端短接了之后,会紧急制动。一系列的准备工作做完后,进行蓝牙程序的读写,将对小车的直接控制转化成间接地蓝牙控制,从而带来方便。

以下是程序运行所要实现的的几个大模块:追踪,避障,悬崖漫游,循迹,而这些模块的实现都有以下几个程序以及器件实现:

超声波测距仪以及相关程序员 灰度探测仪以及相关程序 红外传感器以及相关程序

电机转动速度控制以及相关程序 2.代码

char getstr;

int in1=5; int in2=6; int in3=9; int in4=10; int c1=14; int c2=18; int c3=16; int c4=17;

//上面定义了板上的4个控制端,12一组,34一组

3

int i=0;//记录测量次数,每5次取一下平均值

void _mRun(int pin1,int pin2)//电机右转,电机到底是右转还是左转取决于电机端的接线和控制脚的顺序

{

digitalWrite(pin2,LOW); digitalWrite(pin1,HIGH); }

void _mBack(int pin1,int pin2)//同上 {

digitalWrite(pin1,LOW); digitalWrite(pin2,HIGH); }

void _mStop(int pin1,int pin2)//紧急制动,实际就是将电机两个端短接了 {

digitalWrite(pin1,LOW); digitalWrite(pin2,LOW); }

void _m(int pin1,int pin2,int sj)//同上 {

digitalWrite(pin2,LOW); analogWrite(pin1,sj); }

void setup() {

Serial.begin(9600);

pinMode(in1,OUTPUT); pinMode(in2,OUTPUT); pinMode(in3,OUTPUT); pinMode(in4,OUTPUT); pinMode(15, OUTPUT); pinMode(14, INPUT);

pinMode(c1, INPUT); pinMode(c2, INPUT); pinMode(c3, INPUT); pinMode(c4, INPUT);

//下面程序开始时让控制端都为高电平,电机保持不动。 digitalWrite(in1,LOW); digitalWrite(in2,LOW); digitalWrite(in3,LOW); digitalWrite(in4,LOW);

4

}

void loop() {

getstr=Serial.read();//得蓝牙指令 if(getstr=='1') {

//Serial.println(\追踪!\ while(1) {

digitalWrite(15,LOW); //超声波测距 delayMicroseconds(2); digitalWrite(15,HIGH); delayMicroseconds(10); digitalWrite(15,LOW);

float distance=pulseIn(14,HIGH); distance=distance/58;

if(distance>50&&digitalRead(c1)&&digitalRead(c2)) {

_mRun(in1,in2); //全速前进 _mRun(in3,in4); } else

if(distance>20&&distance<50&&digitalRead(c1)&&digitalRead(c2))

{

_m(in1,in2,150); //中速前进 _m(in3,in4,150); }

else if(!digitalRead(c1)&&digitalRead(c2)) {

_m(in1,in2,50); _m(in3,in4,160); }

else if(digitalRead(c1)&&!digitalRead(c2)) {

_m(in1,in2,160); _m(in3,in4,50); }

else if(!digitalRead(c1)&&!digitalRead(c2)) {

_m(in1,in2,120); _m(in3,in4,120); }

5

delayMicroseconds(10); } }

else if(getstr=='2') {

//Serial.println(\避障!\ while(1) {

digitalWrite(15,LOW); //超声波测距 delayMicroseconds(2); digitalWrite(15,HIGH); delayMicroseconds(10); digitalWrite(15,LOW);

float distance=pulseIn(14,HIGH); distance=distance/58;

if(distance>50&&digitalRead(c1)&&digitalRead(c2)) {

_mRun(in1,in2); //全速前进 _mRun(in3,in4); } else

if(distance>20&&distance<50&&digitalRead(c1)&&digitalRead(c2))

{

_m(in1,in2,150); //中速前进 _m(in3,in4,150); }

else if(!digitalRead(c1)&&digitalRead(c2)) {

_m(in1,in2,160); _m(in3,in4,50); }

else if(digitalRead(c1)&&!digitalRead(c2)) {

_m(in1,in2,50); _m(in3,in4,160); }

else if(!digitalRead(c1)&&!digitalRead(c2)) {

_mStop(in1,in2); _mStop(in3,in4); _m(in2,in1,50); _m(in4,in3,160); }

6

delayMicroseconds(10); } }

else if(getstr=='3') {

// Serial.println(\漫游!\ while(1) {

if(digitalRead(c1)&&digitalRead(c2)) {

_m(in1,in2,120); _m(in3,in4,120); }

else if(!digitalRead(c1)&&digitalRead(c2)) {

_m(in1,in2,140); _m(in4,in3,80); }

else if(digitalRead(c1)&&!digitalRead(c2)) {

_m(in2,in1,80); _m(in3,in4,140); }

else if(!digitalRead(c1)&&!digitalRead(c2)) {

_m(in2,in1,140); _m(in4,in3,80); }

delayMicroseconds(10); } }

else if(getstr=='4') {

// Serial.println(\循迹!\ while(1) {

if(digitalRead(c1)&&digitalRead(c2)) {

_m(in1,in2,80); _m(in3,in4,80); }

else if(!digitalRead(c1)&&digitalRead(c2)) {

7

_m(in2,in1,100); _m(in3,in4,60); }

else if(digitalRead(c1)&&!digitalRead(c2)) {

_m(in1,in2,60); _m(in4,in3,100); }

else if(!digitalRead(c1)&&!digitalRead(c2)) {

_m(in2,in1,140); _m(in3,in4,80); }

delayMicroseconds(10); } }

else if(getstr=='f') {

Serial.println(\ _mStop(in1,in2); _mStop(in3,in4);

_mRun(in1,in2); _mRun(in3,in4); }

else if(getstr=='b'){

Serial.println(\ _mStop(in1,in2); _mStop(in3,in4);

_mBack(in1,in2); _mBack(in3,in4); }

else if(getstr=='l'){

Serial.println(\ _mStop(in1,in2); _mStop(in3,in4);

_mRun(in1,in2); _m(in3,in4,50); }

else if(getstr=='r'){

Serial.println(\

8

_mStop(in1,in2); _mStop(in3,in4);

_mRun(in3,in4); _m(in1,in2,50); }

else if(getstr=='t'){

Serial.println(\ _mStop(in1,in2); _mStop(in3,in4);

_mRun(in3,in4); _mBack(in1,in2); }

else if(getstr=='s'){

Serial.println(\ _mStop(in1,in2); _mStop(in3,in4); } }

9

本文来源:https://www.bwwdw.com/article/uhga.html

Top