基于Arduino单片机的线束检测仪.docx
- 文档编号:27775602
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:31
- 大小:1.94MB
基于Arduino单片机的线束检测仪.docx
《基于Arduino单片机的线束检测仪.docx》由会员分享,可在线阅读,更多相关《基于Arduino单片机的线束检测仪.docx(31页珍藏版)》请在冰豆网上搜索。
基于Arduino单片机的线束检测仪
基于Arduino单片机的线束检测仪
【摘要】本毕业设计采用Arduino单片机为主控芯片来设计模拟线束检测仪,采用Arduino单片机为核心部分,该线束检测仪具有线束检测功能,能够利用单片机内部的存储器存放线束样本,通过3-8译码器配合反相器、锁存器和缓冲器组成外部逻辑电路,完成信号的输出和检测。
最后对检测到的信号和样本信号进行比较,判断线束的连接情况,给出错误线束编号和错误类型。
实际应用表明,该线束检测仪性能可靠,操作简便,能够有效提高线束检测的效率。
【关键词】Arduino单片机;线束检测仪;3-8译码器;反相器;锁存器
WiringharnessdetectorbasedonArduinomicrocontroller
[Abstract]ThegraduationdesignUSEStheArduinosinglechipmicrocomputerasmaincontrolchiptodesigntheanalogcabledetector,usingArduinomicrocontrollerasthecorepartofthewiringharnessdetectorhastheabilitytolearnandstandardsampleharnessdetectionfunction,usingsinglechipcomputertoblocktheinternalROMstoragewiresamples,through3-8decoderwithlatch,externallogiccircuitandbuffercompositiontocompletetheoutputofthesignalanddetection.Finally,thedetectedsignalsandasampletocompare,judgethewireconnection,anerrornumberandwrongtypeofwiringharness.Practicalapplicationshowsthatthebeamdetectorperformanceisreliable,easytooperate,caneffectivelyimprovetheefficiencyofwireharnessinspection.
[KeyWords]TheArduinomicrocontroller;Cabledetector;3-8decoder;latch
1概述1
2系统硬件设计3
3软件以及程序设计部分9
4组装与调试12
5总结15
6致谢15
参考文献16
附录1主要代码17
1概述
1.1设计背景介绍
线束是电路中连接各电器设备的接线部件,由绝缘护套、接线端子、导线及绝缘包扎材料等组成。
1.电线束
为了便于安装、维修,确保电气设备能在最恶劣的条件下工作,将全车各电气设备所用的不同规格、不同颜色的电线通过合理的安排,将其合为一体,并用绝缘材料把电线捆扎成束,这样既完整,又可靠。
2.电线截面积与色标的正常选择
1)电线截面积的正确选择
车上的电气设备根据负载电流的大小选择所用电线的截面积。
长时间工作的电气设备可选用电线实际载流量的60%;短时间工作的电气设备可用电线实际载流量的60%-100%。
2)电线色标的选择
为了便于识别和维修,电线束中的电线采用了不同的颜色。
为了在电路图中标注方便,导线的颜色均用字母表示,其代表的颜色在各线路图中均有附注。
汽车线路常见的故障有:
插接件接触不良、导线之间的短路、断路、搭铁等。
产生原因有以下几个方面:
1)自然损坏
电线束使用超过了使用期,使电线老化,绝缘层破裂,机械强度显著下降,引起电线之间短路、断路、搭铁等,造成电线束烧坏。
线束端子氧化、变形,造成接触不良等,会引起电气设备不能正常工作。
2)由于电气设备的故障造成电线束的损坏
当电气设备发生过载、短路、搭铁等故障,都可能引起电线束损坏。
3)人为故障
装配或检修汽车零部件时,金属物体将电线束压伤,使电线束绝缘层破裂;电线束位置不当;电气设备的引线位置接错;蓄电池正负极引线接反;检修电路故障时,乱接、乱剪电线束电线等,都可以引起电气设备的不正常工作,甚至烧坏电线束。
1)电线束烧坏故障的检测与判断
电线束烧坏,都是突然发生的,而且燃烧速度很快,烧坏的线路中,一般无保险装置。
电线束烧坏的规律是:
在电源系统的电路中,哪点搭铁,电线束就烧到哪里,其烧坏与完好部位的交接处,可认为该处电线搭铁;若电线束烧坏至某电气设备的接线部位时,则表明该电气设备故障。
2)线路之间的短路、断路、接触不良故障的检测与判断
电线束受到外部挤压、冲击,引起电线束内电线绝缘层损坏,导致电线之间的短路,使某些电气设备失控、保险丝熔断。
判断时,可拆开电气设备与控制开关两端的电线束插接器,用电表或试灯检测线路的短路之处。
导线断路故障,除明显的断裂现象外,常见故障多发生在导线与导线端子之间。
有的导线断路后,外绝缘层与导线端子完好,但导线内芯线与导线端子已断路。
判断时,可对怀疑断路的导电线与导线端子做拉力试验,在拉力试验过程中,如导线绝缘层逐渐变细时,可确认该导线已断路。
线路接触不良,故障多发生在插接器内。
当故障出现时,会引起电气设备不能正常工作。
判断时,接通该电气设备电源,碰触或拉动该电气设备的有关插接器,当碰触某个插接器时,该电气设备的工作忽正常,忽不正常,表明该插接器有故障。
1.外观的检查
1)新的电子线束型号应与原车型一致,导线端子与导线连接可靠,可用手拉一拉各插接器与导线有无松动、脱落现象。
2)将新的电子线束与原电子线束对比一下,如:
电子线束的尺寸、导线端子接头、导线颜色等应基本一致。
对有疑问之处,可用万用表进行测试,确认该电子线束完好后,方可更换。
2.电子线束的安装
各电气设备的插接器、插头、插座须与电子线束上的插座、插头相对应。
各连接导线与电气设备连接后,要留有一定的余量,导线不可拉得太紧或放的太松。
3.线路的检查与接通试验
1)线路的检查
电子线束更换完毕后,首先检查电子线束插接器与电气设备的连接是否正确,蓄电池正、负极是否连接正确。
2)通电试验
蓄电池的搭铁线可暂时不接,用一只12V,20W左右的灯泡做试灯,将试灯串接在蓄电池负极与车架搭铁端之间,关闭车上所有用电设备开关。
正常时试灯应不亮,否则表明电路有故障。
当电路正常后,取下灯泡,用一只容量为30A的保险丝,串接在蓄电池负极与车架搭铁端之间,不启动发动机,逐个接通车上各用电设备电源,对电气设备及线路检查,在确认电气设备及线路无故障后,取下保险丝,连接好蓄电池搭铁线[1]。
1.2设计目的
线束作为电路连接组件,广泛应用于飞机、汽车和仪器设备等内部电路。
为了保证线束能够安全、可靠地工作,在完成线束装配后要进行严格的线束检测。
目前大部分线束检测设备价格昂贵,不利于在国内的中小型企业普及。
线束生产单位检测线束质量的方法还比较落后,常利用万能表逐点搭接线束导线端子,判断线束连接情况[2],这种方法效率低下,并且不容易检查出导线内部短路问题,造成漏检或错检,在生产阶段不能及时发现不合格线束。
本研究设计了一种基于Arduino单片机[3]的自学习型线束检测仪,该产品能够学习标准样线的样本数据,判断线束连接情况、液晶显示错误类型和错误线束编号,且性能可靠,价格低廉,易于普及,对于线束生产过程中提高检测效率、保证线束质量监控有着重要作用。
1.3设计要求
设计一个Arduino线束检测仪,其具体指标要求如下:
①用Arduino单片机作为主控,杜邦线等模拟线束。
②按键控制检测的进行。
③1602实时显示检测状态。
④软件设计时思路要清晰,要做到程序简单,调试方便。
⑤在硬件设计时,要尽量做到简单方便、易于实现,使系统电路尽量简化。
1.4设计方案
线束生产过程中典型的错误主要有4类:
断连、错连、粘连和接触不良[4],如图1-1所示。
这些线束中存在的问题常常会导致设备无法正常工作,甚至烧毁控制器等昂贵的器件。
为能够智能化检测线束中存在的典型错误,设计检测原理如下:
将线束的一端作为信号输出端,每个输出点记为:
O1,O2,,,On;另一端作为检测输入端,每个输入点记为:
I1,I2,,,Im。
每次从信号输出口输出信号时,保证只有一个输出点Oi(i=1,2,3,,n)的信号为高电平,记1,其余输出保持低电平,记为0。
在信号输入端对m个输入点输入信号进行检测,如果线束连接正确,那么只有与输出高电平的点相连的导线能检测到高电平。
出现其余情况都表明线束中存在错误,将检测到的数据与单片机中保存的标准样本数据比较可以进一步判断发生错误的导线的编号和错误类型[5]。
图1-1线束常见错误
为判断接触不良的情况,完成第一次检测后隔0.2s再进行一次检测,如果两次结果相同,则线束不存在接触不良的情况;否则认为该线束接触不良。
总结以上判断原理,如表1所示,其中ni为样本中的高电平数。
表1错误类型判断原理
2系统硬件设计
2.1系统的总体设计
整机有电源电路、复位电路、LCDKEYPADSHIELD模块、74HC138译码器、7404反相器和74LS373缓冲器组成。
电源电路负责给整个系统供电采用USB供电。
整个系统需要+5V供电,液晶显示部分采用1602字符型液晶,按键用来控制检测进度,74xx系列芯片构成外围电路。
系统框图如图2-1所示:
图2-1系统硬件框图
2.2Arduino介绍
图2-2Arduino单片机
(1)Arduino(图2-2),是一个开放源代码的单芯片微电脑,它使用了AtmelAVR单片机,采用了基于开放源代码的软硬件平台,构建于开放源代码simpleI/O接口板,并且具有使用类似Java,C语言的Processing/Wiring开发环境。
Arduino可以使用Arduino语言与MacromediaFlash、Processing、Max/MSP、PureData和SuperCollider等软件,结合电子元件,例如开关或传感器或其他控制器件、LED、步进马达或其他输出装置,作出互动作品。
Arduino也可以独立运作成为一个可以跟软件沟通的接口。
(2)Arduino单片机的特色:
基于创用CC开放源代码的电路图设计。
免费下载,也可依需求自己修改,但需遵照姓名标示。
您必须按照作者或授权人所指定的方式,表彰其姓名。
依相同方式分享,若您改变或转变著作,当散布该衍生著作时,您需采用与本著作相同或类似的授权条款。
Arduino可使用ICSP线上烧入器,将Bootloader烧入新的IC芯片。
可依据Arduino官方网站,取得硬件的设计档,加以调整电路板及元件,以符合自己实际设计的需求。
可简单地与传感器,各式各样的电子元件连接,如红外线、超音波、热敏电阻、光敏电阻、伺服马达…等。
支援多样的互动程式,如AdobeFlash,Max/MSP,VVVV,PureData,C,Processing…等。
使用低价格的微处理控制器(AtmelAVR)(ATMEGA8,168,328等)。
USB接口,不需外接电源。
另外有提供直流(DC)电源输入[6]。
2.3系统各模块介绍
2.3.1LCD1602显示和按键模块
(1)LCD1602液晶显示屏概述:
液晶字符型液晶显示模块可用来显示字母、数字、符号等,目前常用16*1,16*2,20*2和40*2行等的模块。
我们使用的是长沙太阳人电子有限公司的1602字符型液晶显示器[7]。
1602LCD分为带背光和不带背光两种,大部分都用HD44780做控制器,带背光的比不带背光的略微厚一些,是否带背光在应用中差别不大,两者尺寸差别如图2-3:
图2-31602字符型液晶显示器尺寸图
(2)1602LCD的基本参数及引脚功能
LCD1602主要技术参数:
显示容量:
16×2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
引脚功能说明:
1602LCD液晶显示屏采用标准的14脚(无背光)或16脚(带背光)接口,在此选用16脚带背光的液晶屏,各引脚接口说明如下表2-1:
表2-1引脚接口说明图
引脚
符号
说明
引脚
符号
说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
LED背光电源正负极。
(3)1602LCD液晶显示器与单片机的连接如下,该1602液晶显示器的8位双向数据线与P0口连接所以需要接上上拉电阻。
图2-41602字符型液晶显示电路
由于按键和LCD1602一起使用将会占用大量的IO,故我们使用了成熟的LCDKEYPADSHIELD模块,见图2-5。
图2-5LCD1602KeypadShield
下面是关于该模块的简介:
(1)LCDKeypadShield是一款提供2行16字符液晶显示的Arduino扩展板。
扩展了多个按键输入,可供用户作为LCD显示屏的菜单选择按键或者操控按键使用。
一个扩展板就能让你与Arduino设备进行互动。
我们还扩展ArduinoReset按键,方便用户进行软件调试。
用户通过调节扩展板上的蓝色电位器,能够帮助您调节LCD屏的对比度。
对于Arduino初学者来说,不必为繁琐复杂液晶驱动电路连线而头疼了,这款LCD扩展板将电路简化,直接将此板插到ArduinoDuemilanove或Uno控制器上即可使用,调用Arduino自带的LCD库,简单的几行代码便可以完成数据和字符的显示功能。
(2)技术规格:
1602蓝色背景液晶(2行16字节)
具有LCD对比度调节功能
5个按键输入
扩展模拟信号传感器接口和数字口
ICSP编程接口
具有APC220,蓝牙V3接口
尺寸:
58x80mm
(3)引脚与连接
LCDKeypadShield输入输出扩展板使用2行16个字符液晶,具有对比度调节和背光灯,使用1个模拟口便完成5个按键的输入,1个复位按键,未使用的IO口都扩展出来备用,充分利用IO口。
占用数字端口:
PIN4(DB4),5(DB5),6(DB6),7(DB7),8(RS),9(E),10(背光控制),模拟按键端口A0。
与Arduino配合使用时的引脚定义见图2-6:
图2-6引脚分配
2.3.2译码电路
作为线束检测仪的输入端口,我选择的是74HC138芯片,以下为该芯片的简介:
74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC138译码器可接受3位二进制加权地址输入(A0,A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。
74HC138特有3个使能输入端:
两个低有效(E1和E2)和一个高有效(E3)。
除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。
利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。
任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。
图2-7译码电路
具体实现方式如下:
根据3-8译码器的工作特性,当3-8译码器工作时只有一个输出引脚是低电平,其余都为高电平,当译码器未使能时,输出全部为高电平,好符合设计需要。
电路中74HC138-1输出信号data0~data7作为锁存数据[8]输出,而74HC138-2作为片选信号,依次使能8个锁存器。
电路工作时,首先由Arduino控制74HC138-1的输出数据,向数据总线输出锁存数据。
在数据总线获得锁存数据后,控制74HC138-2的输出使能信号,选择对应的锁存器,将总线上的数据输出到锁存器的输出口,而此时其他锁存器输出的数据不变。
依次对8个锁存器执行以上过程,完成数据输出过程。
2.3.3反相电路
由于从3-8译码器输出的信号为一个高电平和7个低电平,与预期的线束检测算法正好相反所以加入一个由74HC04(如图2-8),反相器构成的反相电路,使输入的信号与我们需要的正好相同。
图2-874HC04反相器
2.3.4输入缓冲和输出缓存电路
由Arduino控制3个IO口控制3-8译码器的数据口依次输入0~7八个测试信号从3-8译码器输出到反相器后生成8个测试信号,通过缓冲电路进入带测试的线束,然后Arduino单片机提供一个上升沿和下降沿使通过待测试的线束后被锁存在输出缓存的74HC373里,然后单片机读取数据与取得的样本数据比较,得出错误类型和线束编号。
图2-9缓冲、缓存电路
3软件以及程序设计部分
3.1ArduinoIDE
Arduino的编译程序是一个包含有串口通讯功能的自主设计的编译软件(如图3-1),其的软件界面是仿的processing的编译软件,该软件除了能够编译软件以外,还能直接经行ISP下载,将写好的正确的程序直接下载进Arduino单片机中。
该软件的体积很小,且界面简单清爽,操作十分方便。
图3-1软件的界面图
该软件的使用步骤:
1、建立源文件,使用菜单“file->new”,在新的文本编辑窗口输入源程序。
2、程序写成之后需要进行编译来看程序是否有语法、IO调用、输入输出等错误。
3、之后,连接Arduino单片机,将程序下载入单片机中。
3.2系统的总程序
系统的总程序包括LCD液晶显示程序、按键扫描和控制、数据输入和数据读出、线束错误类型判断以及检错函数。
Arduino编程所使用的语言是一种基于C语言语法的编程语言,因为和C语言很相似,故若是懂得C语言的人想要学习Arduino将会上手很快,这也是为什么我选择这个单片机的原因。
3.2.1系统主程序流程图
图3-2线束检测仪主程序流程图
系统上电后开始工作,首先进行液晶初始化,再通过扫描按键,若是有按键按下则进行一步检测。
图3-3检测过程程序流程图
本线束检测仪程序设计的主要思想是根据标准样本对线束进行检测,因此软件设计主要包括两个部分:
采样和检测。
在采样和检测过程中,读取数据是配合硬件电路读入缓冲器的数据,并且暂时存放于单片机内部RAM中。
在完成读入所有输出数据对应的输入后,进入对应操作[9]。
如果执行采样,则将标准样本的数据存内存中,若是执行检测,则根据标准样本的数据,对线束的连接情况进行检测,最终将检测结果显示到液晶屏幕,其程序流程如图3-2所示[10]。
通过对测试线束信号和标准样本信号进行比较,判断线束内部连接情况,此过程在程序设计过程中最为关键,检测过程的程序流程图如图3-3所示。
依次通过8个输出点向检测线束发出低电平信号,在检测仪的输入口读取通过待测线束后的信号。
第1次检测完成后,延迟0.2s后进行第2次检测操作,判断线束中是否存在接触不良的情况[11]。
若前后两次获得的信号相同,则通过对检测到的信号和内存中存放的样本信号进行比较,进一步判断待测线束内部的连接情况如果线束中存在错误,那么可以通过比较检测到的高电平数和标准样本中的高电平数将3种错误情况分开,然后记录与标准样本信号不同的信号点,这些点对应发生错误的导线[12]。
4组装与调试
4.1制作所需的元器件
Arduinomega2560单片机、杜邦线、LCDKeyPadShield、跳线、74HC04、74LS138、74HC373。
4.2硬件制作与调试中遇到的问题及解决方法
(1)在焊接时也要注意很多的问题,首先铜板就必须保持清洁防止表面被氧化,其次是需要合适的助焊剂通常是采用松香作为助焊剂,最后是焊件要加热到合适的温度在合适的时间焊好管脚。
在我的焊接过程中,由于电烙铁的焊头被氧化了,所以在焊接的过程中并不顺利,后来我换了一个焊头,顺利的完成了焊接的工作。
(2)制作后可以先不要急着上电,而是应该先用万用表检查电路是否有断路或短路等情况,由于电路板焊接完成的时候没有特意镀锡,所以在后面的调试过程中有部分电路被氧化了,我用万能表对电路进行了检查,在检查中发现有短路的地方所以特地用焊锡补上。
4.3软件调试时遇到的问题以及解决方法
(1)在程序的编写中,由于自己不够细心,出现了很多细节上的问题,比如标点符号用了中文的格式,或者是哪里忘记加括号等的问题,后面在编译检查的过程中改正过来了。
(2)把程序加载到单片机后,上电调试后发现,长时间按下按键会使得程序连续跳跃,后来我又加入了一条按键检测程序,使连续按住按键不会使按键产生多次跳跃。
(3)在编写液晶程序的时候,发现液晶不能保持当前的状态显示,只能瞬间的显示状态,因此在每个液晶显示程序后面加上一个延时的程序,这样的话液晶就能保持状态。
(4)在实行断开检测时,我发现模拟线束的检测端口在没有信号输入的情况下是保持高电平状态,这就破坏了程序设计时的算法,于是我在程序中加入了检错函数,若是碰见两个以上高电平时,额外进行一步输入看是否是由线束断开引起的异常。
4.4实物调试图
(1)
图4-1系统整体图片
(2)
图4-2线束错连时的状态
(3)
图4-3线束断开时的状态
(4)
图4-4线束粘连时的状态
5总结
该线束系统经过一系列过程终于能够按照设计的理论来实现了。
这次毕业设计对于我来说是一段比较艰辛的历程。
虽然说之前也做过类似的课程设计,但是与毕业设计不同是是,毕业设计需要自己独立完成一个作品。
从选题到方案的选择以及软件硬件的设计,这些都是需要我们自
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Arduino 单片机 检测
![提示](https://static.bdocx.com/images/bang_tan.gif)