基于单片机的加药自动控制电路的设计.docx
《基于单片机的加药自动控制电路的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的加药自动控制电路的设计.docx(33页珍藏版)》请在冰豆网上搜索。
![基于单片机的加药自动控制电路的设计.docx](https://file1.bdocx.com/fileroot1/2023-2/9/ed4b2075-4868-406b-8bea-f0ea1d777625/ed4b2075-4868-406b-8bea-f0ea1d7776251.gif)
基于单片机的加药自动控制电路的设计
摘要
加药自动控制电路的设计对早前的加药控制器进行了改进,之前的加药控制器需要人工的监测,加药自动控制电路的设计免去了这种既耗时间又耗经济的弊端。
本设计是在基于单片机的基础上实现自动控制,在单片机最小系统,检测电路模块,电源电路模块,报警电路模块,ADC0804模数转换电路模块,显示电路模块和软件编程的基础上来实现药水水位的自动控制。
文章结合了1602,蜂鸣器,STC89C52,ADC0804模数转换器,水位传感器等的使用方法,水位传感器是根据内部阻值感应水位高低而改变,继而在整体的电路中产生电压的变化并在LCD上显示电压的变化,功能模块通过水位传感器检测水位高低得到电压的不同值,然后再通过模数转换器把由于水位高低的不同而引起的电压不同值转换成数字信号输入给单片机,单片机在做出相应的处理从而达到设计要求的自动检测水位功能。
实践表明,此设计有良好的应用前景。
关键词:
自动控制;单片机;AltiumDesigner;LCD1602;ADC0804
Abstract
ThisdesignofDosingAutomaticControlCircuithasrefinedthepreviousDosingControllerwhichneedsartificialmonitoring.AndthenewdesignofDosingAutomaticControlCircuithassuccessfullyavoidedthedisadvantagesofwastingtimeandmoney.ThisdesignisbasedonSingleChipMicrocomputertoachievetheautomaticcontrolandrealizetheautomaticcontrolofliquidmedicine’waterlevelthroughtheminimumSCMsystem,detectioncircuitmodule,powercircuitmodule,alarmcircuitmodule,ADC0804analogdigitalconversioncircuitmodule,displaycircuitmoduleandsoftwareprogramming.Thisarticlehascombinedwithapplicationmethodsof1602LiquidCrystalDisplay,buzzer,STC89C52,ADC0804analogdigitalconverterandwaterlevelsensorwhichvarieswithinternalresistanceinductionofwaterlevelandcauseschangesofthewholecircuit’svoltageaccordingly,thenmakesitshowedintheLCD.Afterwards,throughthedifferentvoltagevaluesinductedbywaterlevelsensorwhichsoonwillbeconvertedintodigitalsignalsbytheanalogdigitalconvertor,thefunctionmoduletheninputsthedigitalsignalsintotheSCM.AndtheSCMmakescorrespondingprocessing,thusmeetsthedesignrequirementsforautomaticfunctionofdetectingwaterlevel.Practiceshowsthatthisdesignhasagoodapplicationprospect.
KeyWords:
automaticcontrol;singlechipmicrocomputer;altiumdesigner;1602liquidcrystaldisplay;ADC0804analogdigitalconverter
1绪论
1.1引言
自动控制理论是研究自动控制共同规律的一门学科。
目前,已有工程控制论,生物控制论,经济控制论和社会控制论等多个分支,其中工程控制论是研究工程领域的自动控制,本设计也是用到了工程控制论的加药自动控制。
所谓自动控制,就是指在没有人直接参与的情况下,利用控制装置使整个生产过程或设备自动地按规律运行,或使其某个参数按要求变化,此次设计是设计一个自动加药的装置,在工程应用中很是广泛。
加药自动控制的设计是在单片机的基础上结合硬件电路模块和软件程序部分共同实现的。
自动加药控制电路设计是通过单片机来控制药汞药水水位的监测,外加液晶显示屏来显示设备的运行状况,水位传感器电路来检测药水水位的高低,最后通过报警电路和电机驱动电路来模拟加药水,从而实现智能自动加药,此设计不需要人为监测,省时又省钱,带来了许多方便。
在药汞的设计上可以根据用户需求来设计大小,在此设计中通过报警电路的设计来编写程序,从而设定自动加药的间隔时间。
加药自动控制在国内外化工行业,农业方面使用都比较普遍,随着科学技术的发展自动控制技术也在不断的提升改进,相信在以后自动控制技术将会给农工行业带来许多的便利,加药自动控制的设计也是在农工行业很是常见。
2系统的整体方案设计
2.1功能要求
实际药水水位的控制在药汞中有个限定的范围,不能过高也不能过低,此次设计中通过运用水位传感器来检测药水水位的高低,继而来控制电动机保持药水水位正常。
检测装置是在以单片STC89C52为核心的基础上,通过液晶屏1602和报警电路来实现药水水位过低报警和过高报警并且相应处理的设计要求。
2.2设计要求
现场提出急需一种自动检测水位,当水位降低到某个阈值时,发出报警信号并自动停汞。
并让药汞周期性间歇运行,运行周期为一个小时,或者可以随意设定每周期的加药的定时时间的自动控制系统。
在通电下,电机会随着水位传感器而工作,药水水位过低时,电机会转动,蜂鸣器也会报下警,液晶屏也会显示药水水位过低。
药水水位正常时,电机停止转动,蜂鸣器也会报下警,液晶屏显示药水水位正常。
2.3单片机选择
目前电子市场上有种类较多的单片机,像51单片机,avr单片机和PIC单片机等。
由于单片机的种类比较众多,各类单片机的功能也不一样,我们选择单片机的时候不是要求它功能有多好,仅仅只需要符合我们的设计要求即可。
性能比较差的单片机不能实现我们设计所需要求,而且性能差的单片机相当不稳定,给我们做设计带来一些麻烦;高性能的单片机却是能满足我们设计所需要求,但是性能高的话,价格一定比较贵并且可能有很多功能不一定会用到,这么一来就显得有点浪费,所以我们做设计时选择单片机不能随便选择,要选择自己最合适的;因此本次设计我选用的单片机是STC89C52单片机。
STC89C52的单片机是一个低电压,高性能的CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读存储器和256bytes的随机存储器,器件采用ATMEL公司高密度,非易失行存储技术生产,兼容标准MCS-51指令系统,片内置通用8为中央处理器和Flash存储单元,STC89C52单片机在电子行业有着广泛的应用。
3系统的硬件设计
3.1电路原理框图
单片机最小模块
报警电路
ADC0804模数转换电路
电机驱动电路
电源电路
检测电路
图3-1电路原理框图
此次设计的电路设计框图大致如图3-1所示,在单片机最小系统的基础上加上了外围电路来实现设计的要求。
电源电路是设计的开端,而后有报警电路和电机驱动电路是根据设计要求在检测水位时蜂鸣器报警和电机转动模拟加水,检测电路应用到了水位压力传感器产生模拟信号,此时加上模数转换电路把模拟信号转换为数字信号输给单片机,让单片机来工作,此次设计的硬件电路模块方面就是这些。
3.2主控芯片简介
3.2.1主控芯片STC89C52概述
STC89C52是一种功耗较低,高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
主要特性:
•6时钟/机器周期和12时钟/机器周期可以任意选择,
•工作电压:
5.5V~3.3V
•工作频率范围:
0~40MHz,实际工作频率可达48MHz
•用户应用程序空间为8K字节片上集成512字节RAM通用I/O口(32个),复位后为:
P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
•ISP/IAP,无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
•具有EEPROM功能,门狗功能,3个16位定时器/计数器。
即定时器T0、T1、T2
•通用异步串行口(UART),还可用定时器软件实现多个UART工作温度范围:
-40~+85℃(工业级)
STC89C52引脚功能:
•VCC:
电源电压
•VSS:
接地
•P0端口(P0.0~P0.7,39~32引脚):
P0口是一个漏极开路的8位双向I/O口。
作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。
在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。
此时,P0口内部上拉电阻有效。
•P1端口(P1.0~P1.7,1~8引脚):
P1口是一个带内部上拉电阻的8位双向I/O口。
P1的输出缓冲器可驱动4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。
P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。
此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入
•P2端口(P2.0~P2.7,21~28引脚):
P2口是一个带内部上拉电阻的8位双向I/O端口。
P2的输出缓冲器可以驱动4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。
P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器和16位地址的外部数据存储器P2送出高8位地址。
时,在访问8位地址的外部数据存储器时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。
在对FlashROM编程和程序校验期间,P2也接收高位地址和一些控制信号。
•P3端口(P3.0~P3.7,10~17引脚):
P3是一个带内部上拉电阻的8位双向I/O端口。
P3的输出缓冲器可驱动4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。
P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。
在对FlashROM编程或程序校验时,P3还接收一些控制信号。
•P3口引脚复用功能
引脚号P3.0~P3.7复用功能分别如下:
RXD(串行输入口)
TXD(串行输出口)
(外部中断0)
(外部中断1)
T0(定时器0的外部输入)
T1(定时器1的外部输入)
(外部数据存储器写选通)
(外部数据存储器读选通)
•RST(9引脚):
复位输入。
当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。
看门狗计时完成后,RST引脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
•ALE/(30引脚):
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚()也用作编程输入脉冲。
•(29引脚):
外部程序存储器选通信号()是外部程序存储器选通信号。
•VPP(31引脚):
访问外部程序存储器控制信号。
•XTAL1:
片内震荡反相放大器和时钟发生器电路的输入端
当使用片内振荡器时,该引脚接外部石英晶体和微调电容;当采用外接时钟源时,接外部时钟振荡器的信号。
•XTAL2:
片内振荡器反相放大器的输出端。
当采用片内振荡器时,接外部石英晶体和微调电容;当采用外部时钟源时,悬空。
•RST:
复位信号输入端,高电平有效。
加上大于2个机器周期的高电平,就可以使单片机复位。
EA/Vpp:
EA是外部程序存储访问允许控制端,Vpp在对片内Flash进行编程时可用。
•ALE/PROG:
ALE为CPU访问外部程序存储器或外部数据存储器提供一个地址锁存信号,将低8为地址锁存在片外的地址锁存器中。
PROG在对片内Flash存储器编程时,此引脚作为编程脉冲输入端。
•PSEN:
片外程序存储器的读选通信号,低电平有效。
图3-2单片机引脚图
3.3液晶屏1602简介
3.3.1液晶屏1602的简单介绍
液晶屏1602是一种专门用来显示数字,符号,字母等的点阵型液晶模块,液晶屏1602是由多个5X7或5X11等点阵字符组成,在液晶屏1602中每一个单独的点阵字符位都可以显示一个字符;位与位之间有一个点距的间隔行与行之间也是一样也有间隔,就是这些间隔让液晶屏在显示的时候呈现出字符间的间隔和行距之间间隔,使我们观看的时候更直观,清晰。
1602LCD是指在显示屏上我们可以看到16X2,也就是说可以显示两行,每行16个字符液晶模块。
液晶屏1602管脚功能特性:
第一脚:
VSS是接电源地
第二脚:
VDD接5V电源正极
第三脚:
V0为液晶显示器对比度调整端口,当V0接至电源正极时,对比度最弱;相反当V0接地时,对比度却是最高。
第四脚:
RS是寄存器选择,当是高电平1时选择的是数据寄存器,低电平0时选择的是指令寄存器。
第五脚:
RW是读写信号线,执行读操作的指令是高电平1时,执行低电平的操作指令是低电平0.
第六脚:
EN端是使能端。
第七~十四脚:
D0~D7是8位双向数据端。
第十五~十六脚:
空脚或背灯电源,15脚是背光正极,16脚背光负极。
1602LCD液晶显示屏的特征:
微功耗,体积较小,内容显示比较丰富,超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。
液晶1602有三条控制线,RS/数据命令端,RW/读写选择端、EN/使能端,一个8位的数据端
3.4系统功能电路
3.4.1最小系统工作原理
图3-4单片机最小系统
单片机最小包含复位电路和晶振电路。
晶振电路是单片机的动力来源,与单片机的XATL1和XATL2两引脚相连接我选用的是11.0592M的晶振。
图3-5晶振电路
上图是复位电路,分为手动按键复位和上电复位两种。
上电复位的原理是在系统刚上电时电容两端电压不会突然变化,因此RST上的电平就为高电平,这个过程时间比较短,但是还是能够让单片机复位的。
手动按键复位的原理是在系统工作时可以通过手动按键来使单片机复位。
图3-6复位电路
3.4.2蜂鸣器报警电路原理
蜂鸣器报警电路使用的是9012PNP三极管驱动,PNP管的发射机接蜂鸣器器然后再接到+5V的电压,集电极接地,基集串连一个1K的电阻连接到单片机的P1.0口。
在单片机的P1.0口为低电平时,9012三极管导通,蜂鸣器会报警发出声音,当P1.0口是高电平时,三极管处于截止状态,蜂鸣器没有反应不会发出声音。
在实现设计功能时,当传感器检测到药水水位过低,则将P1.0端口拉低使三极管导通,让蜂鸣器报警提示目前水位过低;当传感器检测到水位过高时,也将P1.0端口拉低,三极管导通,蜂鸣器报警,提示当前水位过高,当水位正常时,蜂鸣器是不报警状态,当然单单靠蜂鸣器报警还不能辨别水位是过高还是过低,这还需要设计的另一模块来辅助说明,也就是即将要介绍的电机驱动模块,在设计中我选择的蜂鸣器是有源蜂鸣器。
图3-7蜂鸣器报警电路
3.4.3电机驱动电路
电机驱动电路使用的是IRF540N场效应管,与蜂鸣器报警电路工作原理几乎一样,但电机驱动电路接的是单片机的P2.0口,也与蜂鸣器报警电路一样,在P2.0口是低电平时电机转动,高电平时,电机不工作。
在实现功能时,电机模块是结合蜂鸣器报警电路来共同提示水位的高低状况的,当水位过低时,蜂鸣器报警而且此时还需要驱动电机转动来实现模拟加水,当水位从低水位上到正常水位时,此时蜂鸣器不报警,电机保持原状态继续转动,一直达到高水位,蜂鸣器报警,电机停止转动。
相反,若是水位从高降到正常水位,电机模块也是保持原状态停止转动,直到低水位的时候在驱动转动来实现自动加药水的这一自动控制技术。
图3-8电机驱动电路
3.4.4液晶1602显示功能电路
液晶1602显示器共有16个引脚,每一个引脚的意义都不一样。
其中4号5号6号是控制引线;7号到14号引脚是信号线。
还有就是3号引脚是背光电源指示端,它这个所接电阻阻值不一样,背光就会有不一样的结果,在此我选用的背光电阻是10K的电阻。
图3-9液晶1602显示电路图
3.4.5电源电路
电源电路是由变压器,单相桥式整流电路,三端稳压器7805,滤波电路组成。
此次的设计需要的是一个5V的直流电源,但我们的日常电压是220V,不能直接接在电路上,所以在这里就需要一个变压器将电压降下来。
日常220V电压是交流电压,但我的设计需要的是直流,所以在此加上一个单相桥式整流电路,将交流电压转换成设计所需的直流电压,它是由四个二极管组成,桥式整流电路是利用二极管的单向导电性,四个二极管轮流导通,在负载上产生的一直是一个单向的电压。
电解电容是有极性的,阻止电压反相,电容的充放电也起到了滤波的作用,最后引出两个接口作为电源的正极个负极。
图3-10电源电路
3.4.6ADC0804模数转换电路
ADC0804是逐次比较性的模数转换芯片,它的一些主要特性如下:
1.工作电压:
Vcc=+5V。
2.分辨率:
8位。
3.转换时间:
100us。
4.模拟输入电压范围:
0到+5v。
5.参考电压:
2.5V。
6.转换误差:
+-11SB。
引脚功能说明:
6号脚Vin(+)和7号脚Vin(-)是ADC0804模数转换器的两模拟信号输入端。
DB0~DB7是模数转换器的数据输出端,具有三态特性。
AGND:
模拟信号地。
10号脚:
数字信号地。
CLKIN:
外电路提供时钟脉冲输入端。
19号脚CLKR:
内部时钟发生器外接电阻端口。
1号脚CS:
片选信号输入端,是低电平有效,只有在低电平的时候,才能选中该芯片,然后工作。
2号脚RD:
读信号端,低电平有效,该引脚要正常工作不仅要次引脚是低电平而且前提要CS为低电平。
3号脚WR:
写信号端,低电平有效,与读信号端一样,要前提选中该芯片即CS为0,才能启动转换。
INTR:
转换结束输出信号,低电平有效。
当它输出低电平时,就代表转换已经完成。
图3-11模数转换电路
3.5系统总原理图
系统的总原理图就是以上电路的总和,有单片机最小系统,蜂鸣器报警电路,电机驱动电路,1602液晶显示电路,指示灯,模数转换电路,电源电路。
图3-11系统总原理图
4系统的软件设计
4.1编程语言介绍
4.1.1C语言介绍
C语言是世界上广泛流行的计算机高级语言。
它适合作为系统描述语言,既可以用来编写系统软件,也可以用来编写应用软件。
早期的操作系统软件住哟是用汇编语言编写的(包括UNIX操作系统在内)。
但是汇编语言程序可读性和课移植性比较差,所以为了改变这种现状C语言就在这种情况下应运而生了。
C语言是在B语言的基础上发展起来的,根源追溯到ALGOL60.最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的。
1973年,KenThompsin和D.M.Ritchie合作把UNIX的百分之九十以上用C语言改写(即UNIX第5版。
原来的UNIX操作系统是1969年由美国的贝尔实验室的KenThompsin和D.M.Ritchie开发成功的,是用汇编语言来编写的)。
后来C语言多次做了改进,在1975年UNIX第6版发布后,C语言的突出优点才引起人们的普遍注意。
C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成。
1978年以后,C语言先后移植到大,中,小,微型计算机上,已经独立于UNIX和PDP了。
C语言便很快风靡全世界,成为世界上应用最广泛的几种计算机语言之一。
C语言是一种结构性语言,层次清晰而且还容易调试和维护。
它不仅有非常丰富的运算符和数据类型,便于实现各种比较复杂的数据结构。
它还有一项功能是可以直接访问内存的物理地址,进位一级的操作,因为C语言实现了对硬件的编程操作,所以C语言既可以用于系统软件开发,又可以用于应用软件的开发。
C语言具有绘图能力强,可移植性强,还有良好的数据处理功能,所以非常实用编写系统软件,动画和多位图,也是树脂计算的高级语言。
C语言的主要特点共有8点,具体如下
(1)语言简洁,紧凑,使用方便,灵活。
(2)运算符丰富。
C语言的运算符包含的范围很广泛,共有34种运算符
(3)数据类型丰富,具有现代语言的各种数据结构。
C语言提供的数据类型有:
整型,浮点型,字符型,数组型,指针类型,结构体类型,共用体类型等,能用来实现各种复杂的数据结构的运算。
尤其是指针类型数据,使用十分灵活和多样化。
(4)具有结构化的控制语句(像if...else语句,while语句,for语句等)。
用函数作为程序的模块单位,便于实现程序的模块化。
(5)语法限制不太严格,程序设计自由度大。
(6)C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
(7)生成目标代码质量高,程序执行效率高。
C语言一般只比汇编程序生成的目标代码效率低百分之十到百分之二十。
(8)用C语言编写的程序可移植性好。
基本上不做修改就能用于各种型号的计算机和各种系统操作。
4.2系统程序设计
4.2.1程序设计步骤
C语言程序设计一般包括三个基本步骤:
(1)分析问题:
这一步必须做到:
a.作为解决问题的一种方法,确定要产生的数据(输出)。
作为这一子步的一部分,你应定义表示输出的变量。
b.确定需产生输出的数据(称为输入),作为这一子步的一部分,你应定义表示输入的变量。
c.研制一种算法,从有限步的输入中获取输出。
这种算法定义为结构化的顺序操作,以便在有限步内解决问题。
就数字问题而言,这种算法包括获取输出的计算,但对非数字问题来说,这种算法包括许多文本和图象处理操作。
(2)画出程序的基本轮廓:
这一步需要一些句子来画出程序的基本轮廓。
每个句子对应一个简单的程序操作。
若是个简单的程序,列出程序顺序执行的动作就