基于stm32的智能温控饮水机
摘要
在现代生活当中,饮水机已经成为了我们日常生活中必不可少的家用电器。但是,有的饮水机的功能只是普通的加热功能,有的功能比较强大,如可以掌控水温的具体控制,但往往这样的饮水机价格使很多人望而止步,根本不能适用于普通家庭。根据这个情况,我设计了这款智能饮水机,这款饮水机的价格相对低廉但是功能却非常强大。一部分利用单片机对水温的控制,在加上液晶屏幕显示温度,得到稳定的人与机器的操作,这款饮水机有很多的模式可以使用,可以设置不同的温度和出水量。这个设计也添加了紧急措施,如果水箱在缺水的情况下使用,无法使之加热,它会通过智能报警的方式告知饮水机主人提醒主人以保证其该系统的安全性,让人用起来更加稳定。对于这个设计来说,在确保用户使用过程中的安全的情况下为用户的使用更加方便、舒心。这个设计的智能化水平相对来说比较高,自动化操作可以根据用户自己来实现。并且我们还可以通过蓝牙模块无线传输当前的温度等信息发生到手机端进行显示,
关键词:智能饮水机,单片机,继电器控制,继电器,LCD1602液晶显示
Abstract
In modern life, drinking water machine has become essential household appliances in our daily life. However, some drinking water heating machine function is normal, some more powerful features, such as the specific control can control water temperature, but often drinking machine price this makes a lot of people stop, not suitable for the ordinary family according to this situation, I designed the intelligent water dispenser, the water dispenser is relatively inexpensive but the function is very powerful. A part of the use of single-chip temperature control, temperature display and LCD screen, get the human and machine stable operation, the water dispenser has a lot of die Type can be used, such as coffee and tea. This design also added a group of emergency measures, if the tank used in the absence of water, heating can not make it, it will be through the intelligent alarm way to inform the drinking machine owner to remind the owner to ensure the safety of the system, let people use them more stable. For this design, comfortable to ensure more convenient use for users, users in the process of security. The design of the intelligent level is relatively high, automatic operation according to the user to achieve.
Key words: Intelligent Water dispenser, single chip microcomputer, relay control, relay, LCD1602 LCD display
1 引言
如今生活中,社会发展异常迅速,人们开始对平时生活的要求也是一步一步上升中,在现在打社会生活中,有许多的家用品、办公用品都开始智能化了、自动化了。向饮水机已经在所有家庭、办公室许多地方普遍使用的电器而言也朝着自动化、智能化发展方向。但是现在的水源污染比较严重,人们对于自己的健康生活要求也越来越重视,所以对于用水而言,变得着外看重,当人们在商店选饮水机时会格外注意一些比较智能、而且很安全的饮水机。这个就是这个课题研究的意义所在,怎么样才能使饮水机更加智能化呢?还有实现对饮用水消毒呢?
传统的饮水机在国外已经被淘汰了,传统饮水机只拥有普通的加热功能,而加热过程总会导致水的矿物质流失,喝这种水不利于人体健康。所以在国外和国内生产的饮水机都会有一个设计,防止千滚水设计,而且已经实现了温度可随意调节控制,从而真正做到了安全饮水健康饮水。还有些功能更加强大的蓝牙无线传输控制系统,智能化水平也相对来说比较高。因此,这也为本设计提供了设计要求:安全健康、智能化水平较高。
1.1课题研究背景及意义
从饮水机问世以来,在中国的发展趋势逐年增加。饮水机的使用量逐年增长,随着人们生活水平的提高,人们对其功能的要求也越来越高,所以,对智能饮水机的需求就逐渐显现了出来。饮水机是采用瓶装水或者自来水经净水器净化作为水源,利用电能对其进行加热,一年四季提供常温水或热水的饮水电器.饮水机基本能满足人们日常的饮水、泡茶、冲咖啡、即食食品以及调制冷饮的各种需要。饮水机具有饮水时尚、结构简单、操作方便、清洁卫生、价廉物美等点。在饮水机进入高潮的今天,市场十分活跃,然而,消费者对饮水机的选择不是留在过去的眼光,而是高标准,不仅实用而且要求外形脱俗,跟上时代潮流步伐,尤其在其功能方面要有更高的要求。当前绝大多数厂家生产的饮水机都采用智能化控制。因此,智能饮水机已是饮水机发展的必然趋势.因此设计一款基于单片机控制的饮水机势不可挡,前途广阔。
1.2 国内外研究现状
智能饮水机的出现大大的提高了人们的生活质量,使得水源的二次污染得到了很大的防止,随着经济的进步,但是环境的污染问题也是日益加重,人们也重视到了自身饮水的问题。因此,智能饮水机在家用电器方面的领域中,特别是近些年,开展迅速。
(1)国内研究现状
智能饮水机行业在我国属家电类的新兴产业,兴起于二十世纪八十年代,当时人们对于饮水机的购置率普遍不高,但是经济的开展,生活品位的提高,人们的看待事物的目光也在不断地变化,人们对于水质看得越来越重,而智能饮水机对于提升人们的饮水质量有很大的帮助,饮水机市场也相继推出了电解纯净机、电解离子水机、直饮水机、活性净水机等,这些都是中国饮水机生产企业把握开展形势开发制造的全新饮水概念的饮水机。目前国内对于智能饮水机的技术掌握已经非常的全面,功能也非常的丰富,饮水机也朝着一机多用、智能化的方向开展。
(2)国外研究现状
国外家用产品智能化已经非常的普与了,大局部的家用电器均用单片机控制,目前的饮水机均采用单片机控制,而且已经向超智能的方向开展,更加的人性化。在国外智能饮水机,尤其是在特别是一些家用电器生产和开展迅速的国家应用都比拟普遍,并且在国外人们对于智能家用电器的认知和使用都已经普与智能型的家用电器在国外已经有很强的市场竞争力。
随着人们的生活水平和日常家电的不断开展,现在的饮水机正朝着节能化、智能化、多功能化的方向开展。智能饮水机可以帮助人们实现大多数情况下的环境下的供水需求,也可以完成对于水位监视,水温的控制等工作。智能饮水机有着广阔的市场和需求。
1.3 课题研究思路
传统的饮水机的局限性一般体现在以下几个方面:第一,功能相对简单。只有简单的温度控制,而且用户还不能自己根据自己的喜好设定温控参数。第二,能耗较大。功能单一也没有显示当前水温的具体值任意造成出水是冷水的情况,在能源紧缺的今天这个方面亟待解决。第三, 长期饮用饮水机里的水会对健康不利。由于广泛使用的饮水机烧水不能完全沸腾,长期饮用这种水会对身体造成较大的伤害。本实验硬件设计主要是指应用系统的扩展部分设计和各功能模块设计,包括单片机电路设计、扩展电路设计、输入/输出通道设计、无线传输控制,控制面板设计等。
(1)单片机电路的设计主要包括时钟电路、复位电路、蓝牙无线传输、供电电路、I/O电路的设计;
(2)扩展部分的设计主要完成对鞋子的加热除湿和紫外线杀毒作用。
(3)输入/输出通道的设计包括传感器电路、DHT11温湿度采集、继电器控制、步进电机控制、红外感应电路、消毒指示灯设计;
(4)控制面板的设计主要完成按键、显示器、设计。
若单片机内部资源已能满足应用系统的要求,不必进行扩展,只需设计成一个最小应用系统就行了。
硬件电路的设计要仔细推敲,力求正确无误,从而避免硬件电路的大返工,因为系统调试中不易修改硬件。系统的硬件设计还应注意以下几点:
(1)尽可能选择标准化、模块化的典型电路;
(2)在条件允许的情况下,尽可能选择功能强、集成度高的电路或芯片,尽可能采用最新的技术;
(3)系统的扩展、外围设备配置水平和各功能模块的设计,应充分满足应用系统的功能要求,并适当留有余地,以备将来修改、扩展之需要;
(4)整个系统中相关的器件要尽可能做到性能匹配,并且要充分考虑系统各部分的驱动能力;
(5)工艺设计要考虑安装、调试、维修的方面;
(6)可靠性及抗干扰设计是硬件系统设计中不可缺少的一部分,它包括芯片和器件的选择、去耦滤波、绘制电路印制电路板布线等。
2 系统方案设计
2.1 主要芯片选择
2.2.1 单片机芯片的选择
方案一
选取复杂可编程逻辑元件CPLD作为计步器的控制器,CPLD最典型的特点是接口丰富、使用简单,不仅需要的外围电路简单,而且本身编程使用硬件描述语言进行编程,更加的底层,贴近于硬件本身,可以更好的起到控制目的。此外,CPLD本身还具备资源多、体积小、稳定性高、易扩展等特点。在许多大规模的系统中常常和DSP、或者FPGA等控制器结合起来,实现整个系统的高效控制。但由于本设计系统不需要复杂的功能,对数据运行处理要求也不高。且考虑到设计的成本,此方案舍弃。
方案二 选择ST公司的STC89C52单片机作为主控制器,STC89S52主要是低功耗、高性能器件,具有良好的存储功能。该单片机价格低,功能比较全面, 功耗小,但它是个8位存储器,不能达到实现本次设计的需求,故而因此放弃。
方案三 STM32单片机是一款超低功耗的32位器件,功能性比较丰富,模电数电集中到一个芯片上,可以较好地解决很多问题,实用性比较强。STM32F103C8T6是该系列应用较为广泛的一款控制芯片,该芯片运行在32位系统、支持精简指令集、超低功耗的混合型单片机,具有高可靠性、低功耗、易扩展、体积小、性价比高、电路简单等优势,在精密仪器上被广泛应用,以及很多智能化产品中,提高产品质量,提升经济价值,已成为众多单片机系列中一颗耀眼的新星。所以选择方案三。
2.2.2显示方案的选择
方案一 LED数码管,这种数码管的最大优势是价格较低,性能稳定,可以非常简便的和单片机相连。主要是用于数字显示上,实用性较高。但是数码管显示的数字有限,本次设计涉及数字较多,因此达不到设计的要求,此方案放弃。
方案二 点阵式数码管显示,点阵式数码管是由发光二极管构成的,既可以显示数字,也能显示文字等信息,这种数码管的价格相对较高,用在本方案中的话,性能过剩,且成本较高,因此,本方案也不适宜。
方案三 选择LCD1602显示,常和单片机配合使用,他可以显示大量的信息等等,显示的位数也比较多,外观较好,清晰,并且它的程序编写起来比较简单。经济方面价格也比较低廉,其中了LCD1602液晶显示屏随是比较有特色的一款,很适用于本次设计,综合下来选择此方案。 故选择方案三。
2.2.3温度传感器模块选择
市场上有很多温度传感器比如K型铠装热电偶、S型B型铂铑热电偶WRP-130温度传感器但是因为其价格比较昂贵和使用方式比较复杂通过对比采用单总线通信方式的数字温度传感器DS18B20来作为温度传感器。传感器输出信号进10K的上拉电阻直接接到单片机的PA11引脚上。DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,此传感器不但可以防水温度检测的范围比较广,价格低廉而且使用起来也比较方便。
2.2.4加热方式的选择
本设计为智能饮水机,对于智能饮水机来说,为其加热饮水的加热器选择就显得十分重要。我们综合考虑了以下两种方案。
方案一:采用陶瓷加热器,陶瓷加热器的特点寿命长,安全,绿色环保。
方案二:采用电加热器。电加热器是通过在螺旋的金属管中安装加热用的电阻丝,电阻丝与金属管壁之间通过绝缘材料隔断,当加热器接通电源后可以实现加热。与陶瓷加热器相比,普通的电加热器更加的常见,而且价格更加廉价,获取渠道更加的广泛,所以采用方案二。
2.2.5液位检测选择
方案一:采用液位传感器。其具有操作方便,便于携带,可靠性高,价格低廉的特点,水位传感器通过一组金属导线线迹根据水量来判断水位。能够实现液位有无信号的转换,输出的模拟值经过LM393比较器后将信息输入单片机。
方案二:超声波液位传感器。超声波传感器是通过声波的反射特点,通过计算发射和承受到发射声波的时间差来计算出液位信息的。超声波是一种振动频率很高的机械波,由换能晶片在导通电源的情况下发生振动产生的,超声波的穿透能力很强。超声波会在不同的介质间产生显著反射产生反射回波。因此超声波检测可以应用于多个方面以超声波作为检测手段,可以通过超声探头产生超声波并接收超声波
通过两种方案的比拟,两者均能满足要求,由于超声波液位传感器的价格过高,而且探头容易遮挡不好采集数据,故采用第一种方案。
2.2.6无线传输选择
方案一 选择采用NRF24L01模块进行传输,但是传输过程中需要只是2快板子分为主从才可以进行无线通信。
方案二 选用HC05蓝牙模块,我们只需要通过此模块进行串口通信在手机端下载厂家提供的APP就可以完成数据的传输和显示,价格也比较便宜传输数据稳定。故选择方案二。
2.2系统硬件框图
本设计由单片机本模块、传感器模块、用户按键模块、LCD1602显示模块、电磁阀模块构成。传感器模块采用了DS18B20数字温度传感器实现温度采集、显示部分使用芯片LCD1602实现数据的显示,可以形成一个良好的人机界面信息交换。液位检测部分采用光电液位传感器监测液位,当饮水机的水位过低时,蜂鸣器发出报警,LED指示灯亮。重置按钮设计实现用户模式选择和用户所需的温度设置。用户可以根据不同的需要选择性地设置不同的参数。系统运行比较稳定,操作更加简单,整个系统框图如下所示:
3 硬件电路设计
3.1硬件总体结构
硬件和软件设计是单片机系统的两个重要方面。本章主要论述该系统的硬件电路设计。本系统在硬件电路设计时,主要从以下原则出发:
- 硬件电路设计与软件设计相结合优化硬件电路。一些由硬件实现的功能可用软件来实现,反过来一些由软件实现的功能也可用硬件来完成。用软件来实现硬件的功能时,其响应时间比用硬件实现长,还要占用CPU时间。但是用软件实现硬件的功能可以简化硬件结构,提高硬件电路的可靠性,系统升级简化等优点,还可降低成本,因此在本系统的设计过程中,在满足可行性和实时性的前提下尽可能地将硬件功能用软件来实现。
- 可靠性及抗干扰设计,根据可靠性设计理论,系统所用芯片数量越少,系统的平局无故障时间越长,而且所用芯片数量越少,地址数据总线在电路板上受干扰的可能性就越少,因此单片机基本系统的设计思想是在满足功能的情况下力争使用较少数量的芯片及线路,系统选用的DS18B20数字温度传感器也基于这方面的考虑。本系统大都采用了功能先进的DIP(插件)器件,因此从组件数、电路板空间、功耗、抗干扰及系统成本上都得以大幅度改善。
- 灵活的功能升级及系统扩展。一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善,需要进行功能升级;并且,在设计时应考虑到系统在以后应用中扩展的方便性。功能扩展时系统应在原设计不需做很大变动的情况下,修改软件和少量硬件甚至不修改硬件就能完成。功能扩展是否灵活是衡量一个系统优劣的重要指针。
根据系统要求及上面几个硬件设计原则,确定系统硬件原理图。系统以单片机STM32F103C8T6为中央处理单元,DS18B20温度采集、继电器控制、LCD液晶显示、指示灯,红外感应,水位采集,无线传输,按键设置等。原理图如3-1所示:下面对主要的电路设计做详细介绍。
3.2 单片机讲解
单片机也就是我们经常说的单片小型计算机。经常用在控制领域中。是微型计算机的非常重要的一部分。在我们日常生活中经常用来进行控制。单片机主要是由内部单块集成电路构成。内部最为重要的就是包含了cpu处理芯片也就是中央处理器、IO口和存储器。我们只需要用相应的编译器烧写程序就可以实现对外围器件的控制。对单片机的选型设计是以STM32C8T6核心板。STM32单片机是一个低电压,高性能微处理和快速可擦除字节。它非常简单,方便,易于使用。在医疗机构和工业生产中广泛应用于实时控制、停车场、计算机外围设备和通信设备等各个领域。
想要实现系统功能,就必须完成单片机与电路或外部功能信息交流。这时就需要用到管脚将它们相连接达到通连的效果,同时我们也称管脚将单片机的外特性表现出来。科技的进步,单片机也更加注重体积和外观了,所以科学家想出了让很多引脚是双功能或多功能的。就现在的情况来说,STM32单片机的封装形式是多种多样,本设计就以40线双列直播式封装形式为例详细介绍,
STM32特点:
工作频率 (MHz) 48
16-bit 定时器 8
32-bit 定时器 1
A/D 转换器 1x12-bit
D/A 转换器 1x12-bit
通信接口 1xSPI/I2S;1xSPI; 2xI2C;2xUSART;CEC
I/Os 39
电压 (V) 2 to 3.6
STM32F103是STM32f101的增强型单片机,在32位的MCU中性能最强;具有出众的控制和通讯,非常适合低电压/低功耗的应用场合。下图为STM32内核
STM32单片机管脚图
STM32103基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。时钟频率达到72MHz,是同类产品中性能最高的产品;内置32K到128K的闪存,闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。STM32有4个p口;SPI-NSS片选,使能。
SPI-MISO数据输出;SPI-SCK时钟线;SPI-MOSI数据输入。
STM32单片机复位:复位电路的作用是为了是系统恢复到初始状态的,单片机的复位方式也是存在好几种的:上电复位,系统复位,备份区域复位。上电复位:其产生的条件是,当系统上电、掉电,以及系统从待机模式返回时,发生电源复位。电源复位能够复位除了备份区域寄存器之外的所有寄存器的状态。系统复位:以下任一事件发生时,均能产生一个系统复位:
1.NRST引脚上的低电平(外部复位)
2. 窗口看门狗计数终止(WWDG复位)
3. 独立看门狗计数终止(IWDG复位)
4. 软件复位(SW复位)
5. 低功耗管理复位
STM32单片机震荡电路:首先要明确的是STM32没有内部晶振,HSI是内部RC振荡器。HSI内部8MHz的RC振荡器的误差在1%左右,内部RC振荡器的精度通常比用HSE(外部晶振)要差上十倍以上。没所谓优缺点,最重要的是根据应用场合,对时钟要求不高时也是可以用HSI的,要注意的是当用HSI时,最高系统时钟的频率是达不到72MHz的。STM32的ISP就是用(HSI)内部RC振荡器。
STM32F103单片机是一款低功耗、高性能的微控制器,是STC公司早期生产用于工业控制的单片机。其作用是控制各种传感器和外设,自行计算处理得到的数据和信号,并进行相应的操作,在工业生产中起到大脑的作用。相比于日常生活中使用的电脑,单片机只能称得上微小电路集成系统,能起到的作用非常有限,只能处理一些简单的控制工作。单片机的应用非常广泛,绝大部分电器都是采用单片机进行控制,家里的大家电,比如冰箱、空调、洗衣机、电视机,小到遥控器、鼠标、键盘、闹钟。其里面都包含一个或者多个单片机。单片机广泛应用于仪表仪器,航空航天,家用电器和医用设备上。智能设备的发展也非常依赖单片机,多样化的传感器对单片机也提出了一定的要求,故此越来越多的高级的单片机成出现。
对于本次设计,我们选择的单片机是STM32F103C8T6单片机。此单片机和32系列相比多了很多功能,不但运行速度比32单片机要快很多,自带2个AD转换,方便我们在设计烟雾和CO的时候免去了需要加外部ADC进行转换,非常方便;
STM32有着很强大的通信功能和控制功能。这一点是32单片机无法比拟的。因为32单片机只有1个串口进行通信,而32单片机具有5个串口进行通信,所以对一些要求用串口进行通信的模块而且就不需要通过CD4052等双串口模块来转换,所以这一点被市场上广泛的运用,32单片机因为本身可以进行多种不同的时钟模数来进行工作,所以在功耗要求比较严格的产品中占有一席之地。
STM32特点:
- STM32C8T6系列的起振晶部分采用了RTC,低负载的方式,而没有像传统的比较廉价的圆柱晶振。
- 引脚个数为48个。
- 工作频率为72MHZ。
- 单片机具有3个普通定时器和1个高级定时器。
- 单片机具有2个2位/16通道的ADC模数转换。
- 使用了3.3V稳压芯片,可以保证最大输出300MA电流。
- 支持ST-LINK和JTAG调试下载。
- 存储资源为64kb byte FLASH和20byte Sram。
STM32实物图如下图所示:
STM32F103C8T6 实物图
1、电源指示灯LED(PWR通常为红色):如果电源指示灯亮亮说明单片机正常运行,如果较暗或者闪烁,表示此单片机可能存在故障。
2、用户LED(PC13):这个功能的使用大大的方便了我们进行一些比较简单的功能测试,如单片机的运行状态等,方便初学者进行更好的测试。
3、单片机上采用了跳帽的方式,我们可以对stm32进行3种编程方式。如用户的SARM、闪存和系统的存储器。
4、为单片机的复位电路。
5、8M晶振:主要是用于设置单片机系统的频率为72MHZ。
6、32.768KHz晶振:可供内置RTC使用,避免了需要专门的时钟芯片进行 定时器处理等。
3.3 电源电路设计
单片机的电源采用直流5V供电,电源模块包括一个3脚的电源座子和6脚的电源开关。电源座子用于连接外部的电源插头,电源开关用于控制整个单片机的电路开和关。电源座子的2口引脚接地,3口引脚仅仅起到固定的作用,没有特殊的用处,1口引脚连接到电源开关的3口引脚,电源开关的1、3口引脚和4、6口引脚的作用相同,用于电源的正极输出。电源开关的2、5口引脚作为单片机的接地引脚,在使用时采取相对的选择,即选择1、3口引脚作为输出,那么就要选择5口引脚作为接地引脚,选择4、6引脚作为输出端口,2口引脚则作为接地引脚。本次单片机的传感器和无线传输芯片的电压都在5V内,所以5V的电压足够满足。若有12V或者其他电压的传感器,则可以采取升压模块将5V提升到更高的电压,进行供电。本次设计的电源电路如下图所示:
电源电路设计
3.4 按键设置电路
⑴本系统应用有人机对话功能,该功能即能随时发出各种控制命令和数据输入以及和LCD连接显示运行状态和运行结果。键盘分为:独立式和矩阵式两类,每一类按其编码方法又可以分为编码和非编码两种。由于本系统只有自动手动 、加减、开灯关灯功能。按键较少,所以本系统选择独立式按键。
⑵独立式按键是直接用I/O口线构成的单个按键电路。每个独立式按键占有一根I/O口线。各根I/O口线之间不会相互影响。在此电路中,按键输入部采用低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平,(AT89C52 .P1口内部接有上拉电阻)所以就不需要再外接上拉电阻。
⑶键盘抖动的消除:抖动的消除大致可以分为硬件削抖和软件削抖。
①硬件削抖是采用硬件电路的方法对键盘的按下抖动及释放抖动进行削抖,经过削抖电路后使按键的电平信号只有两种稳定状态。
②软件削抖的基本原理是当检测出键盘闭合时,先执行一个延时子程序产生数毫秒的延时,待接通时的前沿抖动消失后再判别是否有健按下。当按键释放时,也要经过数毫秒延时,待后沿抖动消失后再判别键是否释放。
③由于应用硬件削抖还需要外加器件,成本相对较高,所以本系统选择软件延时削抖的方法。
当我们按下按键后会输出低电平给单片机,松开后输出高电平这样我们就知道按键是否被按下,通过程序写入按键扫描函数就执行我们需要实现的功能。按键电路图设计
3.5 LCD1602液晶显示电路
考虑到要显示的是温度和湿度这两个数据,所以只需要能够显示一到两行的显示器即可。我选择了LCD1602液晶显示器[10]。它是一款工业字符型液晶,可以显示两行数据,每行可以显示十六个符号、字母或者数字,刚好可以满足设计的需要。它体积小巧,功耗较低,显示效果良好,是一款非常实用的液晶显示设备。
LCD 1602有16个引脚,它的引脚介绍如下:
表2-4 LCD1602引脚介绍
引脚号 | 引脚名称 | 引脚功能 |
1 | GND | 电源接地端 |
2 | VCC | 5V电源正极 |
3 | VL | 调节显示器对比度 |
4 | RS | 寄存器选择端 |
5 | RW | 读写信号线 |
6 | E | 使能端口 |
7~14 | D0~D7 | 双向数据端口 |
15 | BL+ | 背光正极 |
16 | BL- | 背光负极 |
LCD1602工作在3.5V~5V的工作电压下,它内部设计有复位电路,可以进行光标移动、清屏的操作。显示的亮度可以通过外部连接的电位计进行调节。内部带有存储器可以储存数据。它可以直接与单片机相连接,通过单片机程序来控制液晶的显示。
LCD 1602有16个引脚,其中RS、RW的值控制单片机对它的读写:
表2-5 LCD工作状态介绍
RS | RW | 操作命令 |
0 | 0 | 写入指令寄存器(清清屏等) |
0 | 1 | 读busy(DB7),以及读取位址计数器 (DB0—DB6) 的值 |
1 | 0 | 写入数据寄存器(显示各字符等) |
1 | 1 | 从数据寄存器读取数据 |
LCD1602液晶显示在执行程序指令之前要进行模块标志位的忙信号,只有当它的忙标志位为低电平时才表示可以执行指令。
对于本次设计采用的信息我们通过LCD1602进行液晶显示
显示电路的设计
3.6 继电器控制电路
本次设计中我们主要是通过继电器来控制外围电路,我们在继电器端口加上负载电路就可以使其进行驱动,我们需要开启加热片或者是水泵的时候单片机发送低电平信息给三极管三极管发达电流后控制继电器闭合从而带动风扇进行除湿,或者是当湿度高的时候我们通过另一个继电器闭合加热加热棒进行烘干加热作用。
开启继电器是一种电控制器件。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。 当输入量(如电压、电流、温度等)达到规定值时,继电器被所控制的输出电路导通或断开。输入量可分为电气量(如电流、电压、频率、功率等)及非电气量(如温度、压力、速度等)两大类。继电器具有动作快、工作稳定、使用寿命长、体积小等优点。广泛应用于电力保护、自动化、运动、遥控、测量和通信等装置中。当继电器闭合后看看有直接启动加湿器进行加湿。
电磁继电器工作原理和特性:
电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。
继电器原理图
3.7 DS18B20温度采集
DS18B20 是美国 DALLAS 半导体公司推出的应用单总线技术的数字温度传感器。它的主要技术特性如下:
①具有独特的单线接口方式,即微处理器与其接口时仅需占用 1 位I/O 端口;
②支持多节点,使分布式多点测温系统的线路结构设计和硬件开销大为简化;
③测温时无需任何外部元件:
④可以通过数据线供电,具有超低功耗工作方式:
⑤测温范围为-55~+125℃,测温精度为±0.5℃:
⑥温度转换精度 9-12 位可编程,能够直接将温度转换值以 16 位二进制数码的方式串行输出。12 位精度转换的最大时间为 750ms。
因为它是数字输出,而且只占用一个 I/O 端口,所以它特别适合于微处理器控制的各种温度测控系统,避免了模拟温度传感器与微处理器接口时需要的 A/D 转换和较复杂的外围电路。缩小了系统的体积,提高了系统的可靠性。
1.DS18B20 的结构
DS18B20 主要由四部分组成。
①64 位光刻 ROM 数据存储器
②温度传感器
③非易失性电可擦写温度报警触发器 TH 和 TL
④非易失性电可擦写设置寄存器
如下图所示,器件只有 3 根外部引脚,其中 VDD和 GND 为电源引脚,另一根 DQ 线则用作 I/O 总线,因此称为一线式数据总线。与单片机接口的每个 I/O 口可挂接多个 DS18B20 器件。
每片 DS18B20 含有一个唯一的 64 位 ROM 编码。头八位是产品系列编码,表示产品的分类编号;接着的 48 位是一个惟一的产品序列号,序列号是一个 15 位的十进制编码,每个芯片惟一的编码可以通过寻址将其识别出来,最后 8 位是前 56 位的循环冗余(CRC)校验码,是数据通信中校验数据传输是否正确的一种方法。所以多片 DS18B20 能够连接在同一条数据线上而不会造成混乱。这为温度的多点测量带来了极大的方便。
DS18B20 传感器的内部数据存储器由 9 个字节组成。第一、二个字节是温度数据(MSB、LSB),可以在系统配置寄存器中自行设置数据位数(9~12 位),数据位越多温度分辨率越高,多余的高位是温度数据的符号扩展位。第三、四字节是温度上下限报警值( TH、TL) 。第五字节是系统配置寄存器,寄存器各位定义如下:第八位用来设置传感器的工作状态,“1” 为测试状态,“0”为操作状态,出厂设置为操作功能状态,用户不能修改;第七、六两位是温度转换数据位的设置(00、01、10、11 分别对应9、10、11、12 位温度数据),出厂设置为 12 位温度数据位,用户可根据需要进行修改,其余位无效。第六、七、八字节保留未用。第 9 个字节是CRC 校验码,是前面 8 个字节的循环校验码,用在通信中验数据传送的正确性。
DS18B20的结构框图
温度传感器的转换结果以 16 位二进制补码的形式存放在便笺式存储器中,其中第一个字节(Byte0)存放测温结果的低位(LS Byts),第二个字节(Byte1)存放测温结果的高位(MS Byts),S 为符号位,其它位为数据位,温度为负时 S=1;温度为正时 S=0。格式如下表所示:
表3-1低位存放数据
LSByts | Bit0 | Bit1 | Bit2 | Bit3 | Bit4 | Bit5 | Bit6 | Bit7 |
23 | 22 | 21 | 20 | 2-1 | 2-2 | 2-3 | 2-4 |
表3-2高位存放数据
MSByts | Bit8 | Bit9 | Bit10 | Bit11 | Bit12 | Bit13 | Bit14 | Bit15 |
S | S | S | S | S | 26 | 25 | 24 |
如果测量的温度值高于温度报警触发器 TH 或低于 TL 中的值,则DS18B20 内部的报警标志位就被置位,表示温度测量值超出范围。DS18B20 的温度转换位数可以选择 9~12 位,分别对应的测温分辨率为0.5℃, 0.25℃,0.125℃,0.0625℃。不过温度转换位数越大,转换时间也越长。12 位精度的最大转换时间为 750ms。DS18B20 的测温范围为-55~+125℃,温度转换结果以16 位二进制方式单线输出, 转换的位数可通过写配置寄存器(字节 4)设定, 其格式如下表:
表3-3输出位数配置寄存器
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
0 | R1 | R0 | 1 | 1 | 1 | 1 | 1 |
R1、R0 的设定值与位数、分辩率和最大转换时间的关系如表 3-1 所示,可见位数每减少一位,分辩率同比减少而转换时间则加快一倍, 器件上电时默认分辩率为 12 位。
表3-4 配置寄存器设置
R1 | R0 | 分辨率℃ | 最大转换时间ms | 有效位数 |
0 | 0 | 0.5 | 93.75 | 9位(Bit11~Bit3) |
0 | 1 | 0.25 | 187.50 | 10位(Bit11~Bit2) |
1 | 0 | 0.125 | 375.00 | 11位(Bit11~Bit1) |
1 | 1 | 0.0625 | 750.00 | 12位(Bit11~Bit0) |
温度报警触发器和设置寄存器都由非易失性电可擦写存储器(EEPROM )组成,设置值通过相应命令写入,一旦写入后不会因为掉电而丢失。
2. DS18B20 的测温原理
DS18B20 的温度传感器是通过温度对振荡器的频率影响来测量温度,如图 3-4 所示。DS18B20 内部有两个不同温度系数的振荡器。低温系数振荡器输出的时钟脉冲信号通过由高温系数振荡器产生的门开通周期而被计数,通过该计数值来测量温度。计数器被预置为与- 55℃对应的一个基数值,如果计数器在高温系数振荡器输出的门周期结束前计数到零,表示测量的温度高于- 55℃,被预置在- 55℃的温度寄存器的值就增加一个增量,同时为了补偿和修正温度振荡器的非线性,计数器被斜率累加器所决定的值进行预置,时钟再次使计数器计数直至零,如果开门通时间仍未结束,那么重复此过程,直到高温度系数振荡器的门周期结束为止。这时温度寄存器中的值就是被测的温度值。这个值以 16 位二进制补码的形式存放在便笺式存储器中。温度值由主机通过发读存储器命令读出,经过取补和十进制转换,得到实测的温度值。
3. DS18B20 的封装和供电方式
DS18B20 是 DS1820 的升级产品,一般封装为 TO-92,比 DS1820 的PR-35 封装更小。DS18B20 只有三根外引线:单线数据传输端口 DQ、共用地线 GND、外供电源线 VDD。
DS18B20 有两种供电方式:一种为数据线供电方式,此时 VDD 接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,完成温度转换的时间较长。为了保证在有效的时钟周期内,提供足够的电流,这种情况下,用一个 MOSFET 管和单片机的一个 I/O 口来完成对 DS18B20总线的上拉。另一种是外部供电方式(VDD 接+5V),完成温度测量的时间较短。当使用数据总线寄生供电时,供电端必须接地,同时总线口在空闲的时候必须保持高电平,以便对传感器充电。但当所测温度超过 100℃时,DS18B20 的漏电流增大,传感器从 I/O 线上获取的电流不足以维持DS18B20 通讯所需的电流,此时只能选用外部供电方式。比较而言,寄生电源方式少用一根导线,但它完成温度测量所需的时间较长,而外部电源方式测量速度则要快些。
3.8 蜂鸣器报警电路设计
当无水的时候单片机控制蜂鸣器进行报警提示,因为此设计是stm32单片机,单片机上电后引脚为高组态,所以我们不可以使用8550,因为8550 是低电平导通,8050 是高电平导通,当我们想让蜂鸣器进行报警的时候,我们给三极管一个高电平 ,就实现了蜂鸣器报警。三极管本身具有的作用是放大电流(放大200倍)加1k电阻是为了进行限流。参数为:电压5V,灵敏度:min 75 dB这个蜂鸣器的工作电压可以在5V电源下工作,且P3口不需要上拉电阻。IO口输出后接一个1K电阻,到NPN三极管(S8050)的基极,PNP三极管的发射极接一个5V电源。三极管的集电极接蜂鸣器的正极,蜂鸣器负极接地,R=(5-0.6-3)/2mA=0.7K欧姆,则取1K欧姆。
3.9 红外感应电路
红外感应模块是通过红外传感器在有效范围内检测有无物体,然后将信息传给单片机。红外感应模块电路图如下图所示。鎦诗
紲鯗
该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3V-5V。该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。
模块参数说明
1 当模块检测到前方障碍物信号时,电路板上绿色指示灯点亮电平,同时OUT端口持续输出低电平信号,该模块检测距离2~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。
2、传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色探测距离小,白色大;小面积物体距离小,大面积距离大。
3、传感器模块输出端口OUT可直接与单片机IO口连接即可,也可以直接驱动一个5V继电器;连接方式:VCC-VCC;GND-GND;OUT-IO
4、比较器采用LM393,工作稳定;
5、可采用3-5V直流电源对模块进行供电。当电源接通时,红色电源指示灯点亮;
6、具有3mm的螺丝孔,便于固定、安装;
7、电路板尺寸:3.2CM*1.4CM 8、每个模块在发货已经将阈值比较电压通过电位器调节好,非特殊情况,请勿随意调节电位器。 模块接口说明 1 VCC 外接3.3V-5V电压(可以直接与5v单片机和3.3v单片机相连) 2 GND 外接GND 3 OUT 小板数字量输出接口(0和1) 4.工作电流是10ma以内
通过旋转电位器可以调节感应的距离
红外感应模块当在自动模式下检测到有人触摸后,表示要开门或者是关门,这时输出电平信号给单片机。
3.10 水位采集电路
检测饮水机是否有水我们主要是通过水位传感器进行采集然后通过LM393比较器进行判断主要特点如下:
(1)工作电源电压范围宽,单电源、双电源均可工作,单电源:2~36V,双电源:±1~±18V;
(2)消耗电流小,Icc=0.8mA;
(3)输入失调电压小,VIO=±2mV;
(4)共模输入电压范围宽,Vic=0~Vcc-1.5V;
(5)输出与TTL,DTL,MOS,CMOS 等兼容;
(6)输出可以用开路集电极连接“或”门;
采用双列直插8 脚塑料封装(DIP8)和微形的双列8 脚塑料封装(SOP8)。LM393引脚图及内部框图如下图所示:
LM393是高增益,宽频带器件,象大多数比较器一样,如果输出端到输入端有寄生电容而产生耦合,则 很容易产生振荡.这种现象仅仅出现在当比较器改变状态时,输出电压过渡的间隙.电源加旁路滤波并不能解决这个问题,标准PC板的设计对减小输入—输出寄生电容耦合是有助的.减小输入电阻至小于10K将减小反馈信号,而且增加甚至很小的正反馈量(滞回1.0~10mV)能导致快速转换,使得不可能产生由于寄生电容引起的振荡.除非利用滞后,否则直接插入IC并在引脚上加上电阻将引起输入—输出在很短的转换周期内振荡,如果输入信号是脉冲波形,并且上升和下降时间相当快,则滞回将不需要。
比较器的所有没有用的引脚必须接地. LM393偏置网络确立了其静态电流与电源电压范围 2.0~30V无关。 通常电源不需要加旁路电容,差分输入电压可以大于Vcc并不损坏器件.保护部分必须能阻止输入电压向负端超过-0.3V。LM393的输出部分是集电极开路,发射极接地的 NPN输出晶体管,可以用多集电极输出提供或OR ing功能。输出负载电阻能衔接在可允许电源电压范围内的任何电源电压上,不受 Vcc端电压值的限制。此输出能作为一个简单的对地SPS开路(当不用负载电阻没被运用),输出部分的陷电流被可能得到的驱动和器件的β值所限制.当达到极限电流(16mA)时,输出晶体管将退出而且输出电压将很快上升。输出饱和电压被输出晶体管大约60ohm 的γSAT限制。当负载电流很小时,输出晶体管的低失调电压(约1.0mV)允许 输出箝位在零电平。
本设计采用LM393电压比较器进行电压比较,水位传感器和电位器设定电压比较,当水位传感器检测到水位,LM393比较器输出低电平,单片机检测到低电平判断为无水这样我们就可以知道饮水机是否有水了实现防干烧功能。
3.11 蓝牙无线传输电路
本次设计关于无线通信方面我们采用的模块是HC05蓝牙模块,我们通过此模块可以把当前的数据和参数无线端发送到用户手机上进行显示,同时我们也可以通过手机端对当前的实物像按键一样进行控制。
作为蓝牙串口模块,ATK-HC05模块是主从一体的,而且性能较高,可以与PDA、手机、电脑等具有蓝牙功能的设备实现配对,该模块所支持的波特率范围非常大,为4800~1382400,而且该模块和3.3V或5V的单片机系统相兼容,极其方便、灵活。
在建立微微网前,一切设备都是就绪状态,在此状态中,每1.28s未连接的设备便会对一次消息进行监听,唤醒设备后,在监听信息时可以预设32个调频频率,主设备初始化后实现连接进程。倘若已知设备的地址,通过页信息实现连接;倘若地址是未知的,那么通过页信息的查询信息实现连接。微微网中,如果设备未进行数据传输,那么它便进入节能状态。主设备设置从设备为保持方式,此过程中处于工作状态的只有内部定时器;从设备亦可以进入到保持方式。设备一旦转出保持方式便可以开始数据传输。在和几个微微网相连,或者对低功耗器件进行管理时,常用保持方式。低功耗的另外两种工作方式是休眠、监听方式。鉴于蓝牙基带技术,其支持面向连接方式、无连接方式,前者传输语音,后者传输分组数据,温度数据就通过无连接方式传输。
蓝牙采用的是跳频和时分多址技术。为了使频谱扩展,需要利用伪随机码序列实现频移键控,此载波频率发生跳变,即为跳频。传统通信系统中使用定频方式,在发射机中,主振荡器具有固定的振荡频率,为了实现载波频率的跳变,得到跳频信号,按照控制指令改变主振荡器的频率。能够得到跳频信号的装置被称作跳频器,它主要包括跳频指令发生器、频率合成器。如果将跳频器等同于主振荡器,那么和传统的发信机没有任何不同。可以对模拟、数字形式的信号进行传送,之后利用调制器实现调制,进而得到固定频率的已调波信号,接着和频率合成器的主载波频率信号实现混频,此时输出载波频率符合射频通带要求的已调波信号,在经过高通滤波器反馈后,利用天线将信号发射出去,此过程即为发送定频信号的过程。时分多址是分割时间为不重叠的帧,再分割帧为不重叠的信道,和用户一一对应,主要利用信道对地质不同的信号进行区分,实现多址连接。
4软件设计
单片机开发中除必要的硬件外,同样离不开软件,我们写的C语言源程序要变为CPU可以执行的机器码.随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil5软件是目前最流行开发STM32系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理等完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
4.1 编程语言选择
由于整个程序比较复杂,且计算量较大,用到了较多的浮点数计算,所以程序的编写采用了C语言。
对于大多数32系列的单片机,使用C语言这样的高级语言与使用汇编语言相比具有如下优点:
(1)不需要了解处理器的指令集,也不必了解存储器结构。
(2)寄存器分配和寻址方式由编译器进行管理,编程时不需要考虑存储器的地址和数据类型等细节。
(3)指定操作的变量选择组合提高了程序的可读性。
(4)可使用与人的思维更相近的关键字和操作函数。
(5)与使用汇编语言相比,程序的开发和调试时间大大缩短。
(6)C语言的库文件提供了许多标准的例程。
(7)通过C语言可实现模块化编程技术,从而可将已编制好的程序加到 新程序中。
(8)C语言可移植性好且非常普及,C语言编译器几乎适用于所有的目标系统,己完成的项目可以很容易的转换到其它的处理器或环境中与汇编语言相比,C语言在功能上、结构性、可读性、可移植性、可维护性上有明显的优势,易学易用。
4.2单片机程序开发环境
Keil 5是美国Keil Software公司出品的兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
Keil5软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的C语言代码就能体会到Keil生成的目标代码效率非常之高,在开发大型软件时更能体现高级语言的优势。
4.3 软件整体设计
主程序模块:系统上电后,我们需要初始化相关的模块,温度传感器采集当前环境的温度,采集完成后通过LCD1602进行液晶显示,按键用来进行设置相关的操作,通过继电器模块控制加热片加热和水泵出水。
如下图所示,是整个系统的主程序流程图
4.4 DS18B20程序流程图
温度采集子程序就是驱动外部的温度传感器DS18B20进行工作,通过I/O口通信方式向STM32单片机中写入数据,并且送到OLED液晶显示屏来进行显示。首先进行I/O口初始化,然后是复位DS18B20使其恢复初始状态等待DS18B20响应。将DS18B20读到的温度数据进行数据转换,并且写入DS18B20单片机,最后结束子程序。配置程序流程图如下图所示:
4、再延时750微秒(该时间的范围为480--960ms)。
7、CPU如果读到了数据线上“0”状态的低电平,还要继续做延时,延时时间由发出高电平开始算起(第(5)步的时间开始算),最少需480ms。
4.5 LCD1602流程图
LCD1602液晶显示屏上电后,首先进行初始化操作,屏幕清零,内部存储清空。之后和单片机进行双向通信,始化显示内容为uchar code Init1[]=" ";lcd延迟void LCDdelay(uint z);写入命令void write_com(uchar com);写数据void write_data(uchar date);初始化void Init1602(){ write_com(0x38)读取字节for(i=0;i<14;i++) {write_data(Init1[i]);}单片机控制显示屏亮度和显示内容,延时一定时间后,将检测到的温度和水位值显示在液晶显示屏上。在设置温度和水位报警值上下限时,根据按键操作,实时变换数值。单片机操控写入引脚写入要显示内容的命令。之后显示屏执行指令,将内容显示出来。LCD1602显示流程图如如下图所示:
LCD1602初始化流程图
4.6 继电器控制子程序
继电器模块程序也非常简单,就是高低电平,我们采用的三极管为S8050,S8050为低电平导通,当我们需要继电器闭合的时候单片机只需要给三极管高电平就可以驱动继电器进行闭合。
流程图如下:
4.7 按键设置子程序
按键电路有四个引脚。其中两两相同。我们在连接电路的时候只需要连接2个引脚就可以了。连接的方式就是上图所示。工作远离其实就是一个对信号的高低电平检测。在我们按键被按下时,单片机引脚的IO口就会检测为低电平。这些IO口电平特性的改变就会程执行相应的功能操作。判断按键是否按下if(K1==0){while(K1==0)去抖;mode++;模式切换 if(mode==3)数字减 mode=0模式切换; else if(K2==0){delay_key()延迟;然后while(K2==0);是否按下模式为加if(mode==1) {Max++;到最大 if(Max》=3){Max=1;}。不同的按键实现不同的功能。注意进行延时操作,防止误差。按键可以用来设置不同的报警参数范围。按键程序流程图如下图所示:
按键设置子程序
4.8 蜂鸣器报警子程序
主函数执行后,一直检测当前参数是否在设置范围内如果不在范围内蜂鸣器进行报警提醒,报警电路采用蜂鸣器报警电路,蜂鸣器与家用电气上的喇叭在用法上也有相似的地方,通常工作电流比较大,电路上的TTL点评基本上驱动不了蜂鸣器,需要增加一个电流放大的电路才可以,即此一个管脚很难驱动蜂鸣器发出声音,所以增加了一个三极管来增加通过蜂鸣器的电流。蜂鸣器的正极性的一端联接到三极管上,为了防止三极管直接被导通我们加一个1K的限流电阻,通过单片机iO口来输出低电平,当管脚为低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。当管脚为高电平时,三极管截至,蜂鸣器不发出声音。其电路如下图所示。
报警流程图
4.9 蓝牙无线传输程序流程图
我们通过手机点“搜索位于有效范围内的设备”,系统将搜索蓝牙设备,默认设备名称“HC-05”,双击或者点击右键选择“添加蓝牙设备”, 输入配对密码(默认为“1234”)。点击“下一步”,如果密码正确,则单片机和手机之间则建立通信,在手机选择波特率9600,下图是HC-05蓝牙通信模块配对流程图:
HC-05蓝牙通信流程图
本次设计使用HC-05蓝牙模块作为单片机和手机间的的通信工具。首先给蓝牙透传模块上电,此时led闪烁。单片机上的蓝牙模块也上电工作,蓝牙主要是通过串口进行数据传输,首先蓝牙初始化void uart_init(unsigned int baud);然后设置率为9600,打开总断EA = 1; 串口开始发送数据字符串 :void uart_send(unsigned char *bufs,unsigned char len) bufs为字符串,len是表示字符串长度;等待发送完成while (len--)
5系统调试
在安装前要做好检查工作,确保元器件质量功能可靠,尤其要注意晶体管的型号,电容器的耐压和极性,按照原理图组装电路,使元件安装的位置、极性正确、布局合理;整机清洁无污物,导线不杂乱。由于电路的要求,所以我们按照单元电路逐级安装,逐级调试然后联合调试的方法。在安装调试过程中用到的仪器主要有示波器,万用表。
其步骤如下:
在Keil软件中完成设计程序的编写以后,按照要求进行编译、连接、调试等,
2、根据芯片说明书,了解各个组件的工作原理,开始着手调试各功能模块。
3、把各个功能模块编写成单独的源文件进行调试,调试成功以后,再将各部分联合在一起。
4、调试了各模块之后,接下来的工作就是将各源程序段连接起来,进行综合调试了,综合调试需要我们特别注意细节部分,这样才能尽可能的减少错误的产生。
5.1干扰产生的后果
在实验室里设计的控制系统,在安装、调试后完全符合设计要求,但把系统置入现场后,系统常常不能正常稳定地工作。产生这种情况的原因主要是现场环境复杂和各种各样的电磁干扰,所以单片机应用系统的可靠性设计、抗干扰技术变得越来越重要了。
工业现场环境中干扰是以脉冲产的形式进人单片机系统的,其主要的渠道有三条,即空干扰多发生在高电压、大电流、高频电磁场附近,并通过静电感应,电磁感应等方式侵入系统内部;供电系统干扰是由电源的噪声干扰引起的;过程通道干扰是干扰通过前向通道和后向通道进入系统的。干扰一般沿各种线路侵入系统。系统接地装置不可靠,也是产生干扰的重要原因;各类传感器,输人/输出线路的绝缘损坏均有可能引入干抚。
(1)数据采集误差的加大。当干扰侵入单片机系统的前向通道叠加在信号上,会使数据采集误差增大,特别是前向通道的传感器接口是小电压输入时,此现象会更加严重。
(2)程序运行失常:①控制状态失灵。在单片机系统中,由于干扰的加人使输出误差加大,造成逻辑状态改变,最终导致控制失常。②死机。在单片机系统受强干扰后,造成程序计数器(PC)值的改变,破坏程序正常运行。
(3)系统被控对象误操作。①单片机内部程序指针错乱,指向了其它地方,运行了错误的程序;②DRAM中的某些数据被冲乱或者特殊寄存器的值被改变,使程序计算出错误的结果。③中断误触发,使系统进行错误的中断处理。
(4)被控对象状态不稳定。锁存电路与被控对象间的线路(包括驱动电路)受干扰,从而造成被控对象状态不稳定。
(5)定时不准。①单片机内部程序指针错乱,使中断程序运行超出定时时间;②RAM中计时数据被冲乱,使程序计算出错误的结果。
(6)数据发生变化。在单片机应用系统中,由于外部RAM是可读写的,在干扰的侵入下,RAM中数据有可能发生改变,虽然ROM能避免干扰破坏,但单片机片内RAM以及片内各种特殊功能寄存器等状态都有可能受干扰而变化,甚至EPROM中的数据也可能误读写,使程序计算出错误的结果。
针对以上出现的问题,本系统分别从硬件和软件两个方面来探讨一些提高单片机应用系统抗干扰能力的方法。合理地使用软件和硬件抗干扰技术,可使系统最大限度地避免干扰的产生和受干扰后能使系统恢复正常运行,保证系统长期稳定可靠地工作。
5.2 单片机应用系统的硬件抗干扰设计
(1)供电系统。①防止从电源系统引入干扰,可采取交流稳压器保证供电的稳定性,防止电源的过压和欠压。使用隔离变压器滤掉高频噪声,低通滤波器滤掉工频干扰。②采用开关电源并提供足够的功率余量,主机部分使用单独的稳压电路,必要时I/O供电分别采用DC-DC模块隔离,以避免各个部分相互干扰。
(2)注意印制电路板的布线与工艺。①尽量采用多层印制电路板,多层板可提供良好的接地网,可防止产生地电位差和元件之间的耦合。②印制电路板要合理分区。模拟电路区、数字电路区、功率驱动区要尽量分开,地线不能相混,分别和电源端的地线相连。③元件面和焊接面应采用相互垂直、斜交、或者弯曲走线,避免相互平行以减小寄生耦合:避免相邻导线平行段过长;加大信号线间距。高频电路互联导线尽量短,使用45°或者圆弧折线布线,不要使用90°折线,以减小高频信号的发射。④印制电路板要按单点接电、单点心接地的原则送电。三个区域的电源线、地线分三路引出。地线、电源线要尽量粗,噪声元件与非噪声元件要尽量离远一些。时钟振荡电路、特殊高速逻辑电路部分用地线圈起来,让周围电场趋近于零。⑤使用满足系统要求的最低频率的时钟,时钟产生器要尽量靠近用到该个TTL或20多个CMOS。如果输出负载过重,会降低输出电平,使电平处于或低于被驱动器件的输入门槛电平,从而造成系统不稳定。
(3)提高元器件的可靠性。①选用质量好的电子元件,并进行严格的测试、筛选和老化。②设计时元件技术参数要有一定的余量。③提高印制板和组装的质量。
(4)使用双机冗余设计。在对控制系统的可靠性有严格要求的场合,使用双机冗余可进一步提高系统抗干扰能力。双机冗余,就是执行同一个控制任务,可安排两个单片机来完成,即主机与从机。正常情况下,主机掌握着三总线的控制权,对整个系统进行控制,此时,从机处于待机状态,等待仲裁器的触发。当主机由于某种原因发生误动作时,仲裁器根据判别条件,若认为主机程序已混乱,则切断主机的总线控制权,将从机唤醒,从机将代替主机进行处理与控制。
(5)用好去耦电容。好的高频去耦电容可以去除高到1AHZ的高频成份。陶瓷片电容或多层陶瓷电容的高频特性较好。设计印刷线路板时,每个集成电路的电源,地之间都要加一个去耦电容。去耦电容有两个作用:一方面是本集成电路的蓄能电容,提供和吸收该集成电路开门关门瞬间的充放电能;另一方面旁路掉该器件的高频噪声。数字电路中典型的去耦电容为0.1uf的去耦电容有5nH分布电感,它的并行共振频率大约在7MHz左右,也就是说对于10MHz以下的噪声有较好的去耦作用,对40MHz以上的噪声几乎不起作用。1uf,10uf电容,并行共振频率在20MHz以上,去除高频率噪声的效果要好一些。在电源进入印刷板的地方和一个1uf或10uf的去高频电容往往是有利的,即使是用电池供电的系统也需要这种电容。每10片左右的集成电路要加一片充放电电容,或称为蓄放电容,电容大小可选10uf。
5.3 软件抗干扰技术
1.数据采集误差的软件对策
(1)用软件滤波算法,可滤掉大部分由输入信号干扰而引起的输出控制错误。最常用的方法有算术平均值法、比较舍取法、中值法、一阶递推数字滤波法。具体选取何种方法,必须根据信号的变化规律选择。对开关量采用多次采集的办法来消除开关的抖动。
(2)关键数据可使用软件冗余技术,即给数据增加一定的冗余位,以实现数据的检错和纠错功能。常用的方法有:奇偶校验,海明码和循环码校验。
2.程序运行失控的软件对策
对于程序运行失常的软件对策,主要是发现失常状态并及时将系统引导到初始状态。
(1)指令冗余。对单片机大部分指令为单字节,当出错的程序落到其上时,出错的程序可自动纳入正轨;当落到多字节指令的操作数时,程序将继续出错,所以在关键的对程序的流向起决定性的指令之前插入两条NOP指令,以使被弹飞的指令恢复正轨。
(2)设置程序指针陷阱。软件陷阱将出错的程序捕获并强行引入出错处理的程序,软件陷阱可安排在四个地方:①未使用的中断向量区,干扰可使未使用的中断开放并激活中断,在这些地方设置软件陷阱就能及时捕获到错误中断。②未使用的ROM空间,在其中每隔一段设置一个陷阱,可将弹飞至该区域的出错程序捕获。③表格,储存在EPROM中的表格后安排软件陷阱,可在一定程度上防止软件弹飞。④程序区,一般程序中不能任意安排软件陷阱,但是在正常程序中会有一些跳转指令,在这些指令后使用软件陷阱可捕获到弹飞到跳转指令的操作数上的出错程序。
(3)使用程序监视跟踪定时器。程序监视跟踪定时器即Watchdog,在单片机抗干扰设计中使用非常广泛,各大器件生产商提供了不同功能的芯片,如Maxim的MX760、MX813,IMP的IMP690A1692AL是用于微处理器系统的电源监视和控制电路,可为CPU提供复位信号、看门狗监视、备用电池自动切换及电源失效监视。除上/掉电条件下为微处理器提供复位外,这些器件还具有备用电池切换功能。利用watchdog和软件的配合使用可大大提高系统的抗干扰能力。
6总结与体会
对此次课程设计进行一个总结,因为我这次设计采用的是单片机为继电器控制,温度采集和液晶显示等,所以要求硬件和软件相结合,两者必须完整配合,协调一致。在学校学习的单片机知识偏重于理论而不是应用,通过做课程设计的这个机会,我把理论联系到了实际。通过一次的温习了以前学习的专业基础知识,可以使我们可以独立设计和完成一个简单的单片机控制系统,体验了从原理图的设计、电路板的制作和单片机系统的调试的整个过程,给即将走向工作岗位的我又上了一堂精彩的课。
通过这次课程设计,系统的掌握了单片机、液晶显示、土壤湿度传感器、电容等元器件的工作原理及其应用;熟练的使用万用表、示波器等相关实验仪器和设备,能使用相关软件设计电路图并进行仿真;使我对模拟电子、数字电子技术在实践中的应用有了更深刻的理解;对像Keil、Altium Designer等工程软件有了深入的了解,能独立完成电路图的绘制。在设计电路的过程中,充分了解了各元器件的功能作用,把课本知识变得生动有趣,当实验现象出现的那一刻,心中非常的激动,因为是我们独立完成的课程设计,所以很有成就感,同时这个设计也激发了我们对学习电子方面知识的积极性。
在编程过程中遇到很多麻烦,比如电流可能因为供电不足液晶不显示等问题,所以要根据实际的测量值来调试程序。但是都在我们积极地查阅资料与商讨中得到解决。在设计中除了学会许多专业知识外,在遇到困难时,积极的去请教我的指导老师,我通过看现有的教材、视屏,去图书馆查阅资料,去网上搜索相关信息这些方式,不仅完成了我的课程设计,而且大大增强了我的自学能力和求知心理,更重要的是我拓展了思路,开阔了视野,活跃了思想。学会了理论联系实际。
在这个阶段,我们在学习上和思想上都受益匪浅,这除了自身的努力外,与老师的支持和他的循循善诱是分不开的,其实在做这个设计的过程中我们也遇到了一些困难,有时候感到头疼,但是我没有灰心丧气,加上老师的细致指导,我们都一一克服,这些都是从这次设计中的收获,所以我们要感谢指导老师,他的严谨细致,一丝不苟的作风是我学习、工作中的榜样,他的不拘一格的思想也给予我无尽的启迪。
7参考文献
[1]谢自美:电子线路设计·实验·测试(第二版),华中科技大学出版社,2002,P23-P34
[2]欧大生、杨杉:电路设计与制板——Prot
el DXP实用教程,西安电子科技大学出版社,2004,P45-P56
[3]沙占友:智能传感器系统的设计,电子工业出版社,2004.06,P34-P45
[4张庆双:电源应用电路集萃,机械工业出版社,2005,P56-78
[5]康华光、陈大钦:电子技术基础(第四版),高等教育出版社,1999,P89-P101
[6]常健生:检测与转换技术,机械工业出版社,2003.01,P56-P65
[7]陈德福、林君:智能仪器,机械工业出版社,2005.02,P78-P98
[8]张志锐: 数字电路设计与实际电路,华南理工大学出版社,1988.10,P23-P24
[9]邹延: 使用电子电路手册,北京高级教育出版社,1988.11,P67-P73
[10]任为民: 电子技术基础课程设计指导,中央广播电视大学出版社,1997.5,P45-P47
[11]秦娟娟、吴年祥: 基于单片机的智能控制应用设计,安徽理工大学,2011.12,P19-P23
[12]伍建阳:饮水机制造基础,机械工业出版社,1999.1,P59-P61
[13]杨素行:模拟电子技术基础简明教程,高等教育出版社,2006.5,P2-P3
[14]高吉祥:电子技术基础实验与课程设计,电子工业出版社,2011.4,P23-P25
[15]姜忠良、陈秀云:温度的测量与控制,清华大学出版社有限公司, 2005,P100-P110
8总结
通过这次课程设计的练习,我收获很多,不仅提高了自己在嵌入式系统设计应用方面的实践技能,也树立了严谨的科学作风,更培养自己综合运用理论知识解决实际问题的能力,这是一次深刻的自我实践课程的练习,在电路设计、安装、调试、整理资料等环节中,我们都碰到了很多的问题,在这一过程中我们通过不断的学习、查资料、请教老师同学等方式逐步又解决了问题,同时,在这一提出问题、解决问题的过程中,懂得了如何去学习去运用。
我的这次课程设计是第一次将理论知识运用到具体实践的学习,感触很深,在开始的时候往往没有头绪,不知如何下手,通过老实得值、同学的帮助,进步很大,主要有如下几方面的提高:
首先,初步掌握了数字逻辑电路分析和设计的基本方法,根据设计任务和指标,初选电路,通过调查研究,设计计算,确定电路方案;选测元器件,连接仿真电路,独立进行测试,并通过调试改进方案,分析实验结果,写出设计总结报告;其次培养了一定的自学能力和独立分析问题、解决问题的能力,在这次的电路测试中,排除一些设计故障往往牵涉到很多问题,故具有扎实的基础理论知识是设计的根本和前提,从而加深了学习理论知识的重要性,但仅有理论知识是不够的,还要有较强的变通能力,懂得真正的运用。最重要的是加深了协作与相互学习的团队精神的认识,从与同学的交流也更加巩固了所学知识,领悟的更加深刻,在这里最重要的是信息的共享很珍贵,之间的设计方案与想法,往往也是思路的源泉,故而加强协作与沟通是这次设计取得成功的所在。