题 目           基于STM32单片机的点滴检测系统                                                   

学生姓名             

学   号             

专业班级             

指导教师             

学   院             

答辩日期             

 

 

摘 要............................................................. I

ABSTRACT................................................ II

第一章  绪论.............................................. 1

1.1 设计背景....................................... 1

1.2 设计依据....................................... 1

1.3 设计的主要内容和功能............... 2

第二章  设计方案...................................... 3

2.1 设计思路....................................... 3

2.2 系统构成....................................... 3

第三章  硬件电路设计.............................. 5

3.1 系统硬件原理图........................... 5

3.2 STM32单片机介绍......................... 6

3.3 按键控制电路............................. 11

3.4 电源电路..................................... 11

3.5 报警电路..................................... 12

3.6 OLED液晶显示电路.................. 12

3.7 滴速检测模块电路图................. 15

3.8 液位检测模块电路图................. 17

3.9 步进电机控制电路..................... 20

3.9.1步进电机的介绍............... 20

3.9.2步进电机及其控制方式... 20

3.9.3步进电机驱动电路........... 21

3.10 WIFI无线传输电路.................. 21

3.11 继电器温度控制电路............... 22

第四章  软件系统设计............................ 26

4.1软件设计方法.............................. 26

4.2 软件主程序架构......................... 27

4.2 OLED显示流程图...................... 28

4.3 滴速检测流程图......................... 30

4.4 水位检测流程图......................... 30

4.5 按键子程序................................. 31

4.6 报警流程图................................. 32

4.7 步进电机驱动流程图................. 32

4.8 WIFI无线传输流程图................ 34

第五章 系统调试...................................... 37

5.1 焊接调试..................................... 37

5.2 功能调试..................................... 37

第六章 总结.............................................. 38

致   谢...................................................... 39

参 考 文 献.............................................. 40

本文详细介绍了一款基于STM32单片机的点滴检测系统设计,通过液滴检测模块,时刻检测当前药水瓶中滴液的速度,并通过引脚将数据发生给单片机,经过单片机的计算,得出具体的液滴速度,并显示在OLED液晶屏上。通过按键设置滴液速度的上限和下限值,当滴液速度低于设置的下限速度时,单片机驱动步进电机正转,模拟加大滴速。当滴液速度高于设置的上限速度是,单片机驱动步进电机反转,模拟减小滴速。当液滴速度高于上限或者低于下限时,蜂鸣器报警。当检测到药水瓶中没有药水时,蜂鸣器进行报警。并且可以通过WIFI模块把当前的数据传输到手机端进行显示提醒。

关键词: STM32单片机、液滴速度检测、OLED液晶屏、步进电机、蜂鸣器

 

ABSTRACT

This paper introduces in detail the design of a drop detection system based on STM32 single chip microcomputer. Through the drop detection module, the current drop speed in the medicine bottle is detected at any time, and the data is generated to the single chip microcomputer through the pin. After the calculation of the single chip microcomputer, the specific drop speed is obtained and displayed on the OLED LCD screen. Set the upper and lower limit values of the dripping speed by pressing the key. When the dripping speed is lower than the set lower limit speed, the single chip microcomputer drives the stepping motor to rotate forward to simulate increasing the dripping speed. When the dripping speed is higher than the set upper limit speed, the single chip microcomputer drives the stepping motor to reverse, simulating the reduction of the dripping speed. When the droplet speed is higher than the upper limit or lower than the lower limit, the buzzer will alarm. When it is detected that there is no liquid medicine in the liquid medicine bottle, the buzzer will alarm, and the current data can be transmitted to the mobile phone through WIFI Bluetooth module for display reminder.

Keywords: STM32 single chip microcomputer, droplet velocity detection, OLED LCD screen, stepping motor, buzzer

第一章  绪论

1.1 设计背景

医院护士的工作主要是给病人输液,之后便一直在输液大厅内巡逻,时刻检查吊瓶内药水的液滴速度和是剩余的药水量,以便及时更换输液瓶。但是这种方式比较耗费护士的精力,病人多的时候容易出现忙不过来的情况,滴液速度全靠人眼观察,容易差生疏漏,一旦监控不及时,导致气体进入人体血液当中去,就会对病人身体造成严重的损害,情况严重的甚至会引发患者死亡。所以为了解决这一问题,市场上出现了一些智能滴速检测系统,通过滴速传感器实时检测药水瓶中液滴速度和剩余的药水量,然后将检测到的结果显示在液晶屏上,并和设置好的滴速上下限进行比较,当超出液滴速度范围时,蜂鸣器进行报价,并通过电机自行调整液滴速度。还可以通过WIFI模块无线传输数据到手机端进行显示,方便了护士的日常观察更换药水。这种设备的出现,不仅大大减少了护士的工作量,而且结果更加准确,直观。提高了工作效率。

1.2 设计依据

在单片机选项这一款,相比传统的AT89C52芯片,这次采用更加强大的STM32F103C8T6单片机,集成度更高,价格便宜,功能丰富,通过I/O口操作单片机上的外设,比较简单。通过液位传感器采集当前吊瓶液位,通过LM393比较器输出高低电平确定是否有水处理数据后,发送给单片机,滴速传感器检测输液滴速,显示在OLED液晶显示屏上。通过按键就可以设置滴液速度报警的上下限值,当检测到的滴液速度超出范围或液位传感器检测到此时瓶中没有水时,蜂鸣器进行报警,同时单片机驱动步进电机正转和反转模拟加大和减小滴速。显示部分用OLED来显示当前的信息,因为传统的数码管显示的缺陷是信息量比较少,能显示的内容有限,而OLED显示就弥补这样的缺陷,它可以显示当前的滴速以及特殊的符号,也可以显示数字,节约资源。并且通过WIFI模块把当前的数据传输到手机端进行显示也可以进行控制。

1.3 设计的主要内容和功能

本次设计是基于STM32F103C8T6单片机的点滴检测系统,通过滴速传感器检测当前滴液速度,通过水位传感器检测当前药水瓶中水位,通过水位传感器检测是否有水并发送给单片机,WIFI无线传输模块实现无线数据传输控制功能。 OLED液晶显示屏显示当前检测到的滴液速度和滴液速度上限下限,通过按键设置滴液速度的上限和下限值,当滴液速度低于设置的下限速度时,单片机驱动步进电机正转,模拟加大滴速。当滴液速度高于设置的上限速度是,单片机驱动步进电机反转,模拟减小滴速。当液滴速度高于上限或者低于下限时,蜂鸣器报警。当检测到药水瓶中没有药水时蜂鸣器进行报警。

第二章  设计方案

2.1 设计思路

本次设计主要分为检测、显示和报警三个部分。单片机采用STM32F103C8T6单片机作为CPU处理器,检测部分包括滴液速度检测和水位检测。滴液速度检测采用滴速传感器进行采集,药水瓶中水位采用液位传感器进行检测,并通过LM393比较器输出发送给单片机。 OLED液晶显示屏显示检测到的滴速和滴速上下限,按键用于设置滴速的上下限,蜂鸣器用于报警。当滴速超出上下限时,单片机驱动步进电机正反转模拟增大减小滴速。WIFI可以进行无线传输,下图是整体工作硬件框图:

工作原理图

2.2 系统构成

本次系统构成分为硬件系统和软件部分。硬件系统就是单片机的选型,传感器的选型,电子元器件的选择。当所有材料选型完成后,进行电子电路设计,确保每个电路的正确和畅通。之后按照设计好的电路图,将所有材料焊接起来,组成一个单片机系统。当硬件部分完成后,进行软件设计,用来控制整个单片机。这里采用KEIL软件进行软件的编程,KEIL软件集成链接器,,编译器,宏汇编,管理库和仿真调试器。采用语言进行整体设计,编写完成后进行测试,没有问题通过STLINK-V2烧录进单片机。

第三章  硬件电路设计

3.1 系统硬件原理图

本次设计采用OLED液晶显示器显示采集到的滴速和滴速的上限、下限值。单片机型号为STM32F103C8T6单片机,滴速传感器用于检测当前药水瓶内滴速,液位传感器时刻检测当前药水的水位。图中包含3个按键,用来设置滴液速度的报警上下限值,当液滴速度高于上限或低于下限蜂鸣器报警,当检测到瓶中无水时,蜂鸣器进行报警。当液滴速度低于我们设置速度,电机正转模拟加大滴速,当液滴速度高于我们设置速度,电机反转模拟减小滴速。本次单片机系统采用5V直流电源进行供电,并且通过WIFI模块把当前的数据传输到手机端进行显示也可以进行控制。下图是其硬件电路原理图:

系统硬件原理图

3.2 STM32单片机介绍

单片机的最小系统应能让单片机正常工作并且能够正常的发挥其功能的一个集成在一块芯片上的完整计算机系统。它是一个小型的电脑设备所具有的那样拥有者明显的大脑,也就是控制的核心。同时,也具有一些输出设备,还有就是定时器,能够作为时间的控制中心,具有作为通讯的接口,把所有需要用到的都集中在一个小小的芯片之上,这就是单片机。当然单片机现在的发展已经比较先进,我们来看一下作为最基本的存在它是怎样的。如下图所示:

单片机最小系统框

STM32单片机概述

单片机也就是我们经常说的单片小型计算机。经常用在控制领域中。是微型计算机的非常重要的一部分。在我们日常生活中经常用来进行控制。单片机主要是由内部单块集成电路构成。内部最为重要的就是包含了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

STM32F103STM32f101增强型单片机,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单片机。此单片机和51系列相比多了很多功能,不但运行速度比51单片机要快很多,自带2个AD转换,方便我们在设计烟雾和CO的时候免去了需要加外部ADC进行转换,非常方便;

STM32有着很强大的通信功能和控制功能。这一点是51单片机无法比拟的。因为51单片机只有1个串口进行通信,而32单片机具有5个串口进行通信,所以对一些要求用串口进行通信的模块而且就不需要通过CD4052等双串口模块来转换,所以这一点被市场上广泛的运用,32单片机因为本身可以进行多种不同的时钟模数来进行工作,所以在功耗要求比较严格的产品中占有一席之地。

STM32特点:

  1. STM32C8T6系列的起振晶部分采用了RTC,低负载的方式,而没有像传统的比较廉价的圆柱晶振。
  2. 引脚个数为48个。
  3. 工作频率为72MHZ。
  4. 单片机具有3个普通定时器和1个高级定时器。
  5. 单片机具有2个2位/16通道的ADC模数转换。
  6. 使用了3.3V稳压芯片,可以保证最大输出300MA电流。
  7. 支持ST-LINK和JTAG调试下载。
  8. 存储资源为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 按键控制电路

单片机的按键控制电路是由3个微动开关并联组成的电路,按键的一段连接单片机的双向I/O口,另一端接地。当按键开关处于张开状态时,I/O引脚和地断开,此时该I/O引脚处于高电平状态。当按下按键时,I/O引脚接地,此时高电平置低电平,并返回一个低电平信号给单片机。按键开关的检测其原理就是高低电平的检测。按键开关由于其拨动时间,难免产生误差,所以在编写按键函数时,要额外写一个去抖函数,提高精确性。下图为按键控制电路原理图:

按键控制电路

3.4 电源电路

单片机的电源采用直流5V供电,电源模块包括一个3脚的电源座子和6脚的电源开关。电源座子用于连接外部的电源插头,电源开关用于控制整个单片机的电路开和关。电源座子的2口引脚接地,3口引脚仅仅起到固定的作用,没有特殊的用处,1口引脚连接到电源开关的3口引脚,电源开关的1、3口引脚和4、6口引脚的作用相同,用于电源的正极输出。电源开关的2、5口引脚作为单片机的接地引脚,在使用时采取相对的选择,即选择1、3口引脚作为输出,那么就要选择5口引脚作为接地引脚,选择4、6引脚作为输出端口,2口引脚则作为接地引脚。本次设计的电源电路如下图所示:

电源电路

3.5 报警电路

本次设计的报警模块采用蜂鸣器进行报警,当检测到温度较低、滴速低于下限或者高于上限时,蜂鸣器报警。当水位检测模块检测到瓶中无水时,蜂鸣器报警。蜂鸣器电路如下图所示,蜂鸣器一端连接三极管的引脚,另一端接地。三极管采用NPN三极管,其主要功能是放大电流和电平特性,因为单片机电路的电路非常小,无法提供蜂鸣器所需的电流,经过三极管放大驱动电流后,电流放大200倍,驱动蜂鸣器报警。同时三极管的上拉电阻起到限流的作用,防止电流过大从而击穿蜂鸣器。

蜂鸣器报警电路

3.6 OLED液晶显示电路

有机发光显示器(Organic Light Emitting Display,OLED)是一种新型发光和显示器件。OLED实质上是一个薄膜器件,即在阳极和阴极之间夹多层有机薄膜组成的稳定的绿色有机薄膜电致发光器件。当有电流通过时,这些有机材料就会发光。OLED使用普通的矩阵交叉屏,OLED位于交叉排列的阳极和阴极中间,通过对阳极和阴极组合的选通,可以控制每一个OLED的点亮。由于OLED属于电流型器件,显示器的亮度可用电流来控制。国际上实力比较强的有我国香港的Solomon公司和美国的Clare公司等。OLED可广泛应用于通信、计算机、消费电子、工业应用、商业、交通等领域。

液晶显示模块电路如图所示,P5是一个4孔的排针,专门供OLED液晶显示屏使用,5V是指接的5V电压;显示屏的SCL引脚连接的是单片机的B6引脚,通过SCL引脚传输串行时钟数据;SDA引脚连接的是单片机的B7引脚,通过SDA引脚传输串行数据。


 OLED是128列×64行点阵的OLED、字符、图形显示模块,接口电路简单,使用方便。该模块具有以下特点:

①128×64点阵的单色图形显示模块;

②高亮度,高对比度,宽视角,响应速度快,温度范围宽,低功耗;

③8位并行数据接口,读、写操作时序;可以直接与八位微处理器相连;

④模块内含128×64显示数据 RAM。RAM中每位数据对应 OLED屏上一个点的亮、暗状态;

⑤集成SOLOMEN SSD1306 OLED驱动器;

⑥模块功耗:90 mw(1/3素点点亮,不带偏振片,亮度100 cd/m²)

;⑦模块逻辑电源电压: VDD+3 V±10 %;

⑧OLED 显示屏驱动电压:VCC 3.3V~5 V。

如果我们想要显示当前需要的信息,只要按照OLED的时序进行读和写,即可完成OLED的显示。  所显示文字或图片的字符库,需要自己造,可以选用字模提取软件,再根据OLED显示数据的RAM地址结构,选纵向的取模方式,由于OLED模组的字节结构是高位在下低位在上,所以要设置成字节倒序,字符的字体、字形、大小和显示效果(下划线和删除线)可根据需要进行调整,取模生成单个字符的点阵显示代码,最后根据需要在OLED屏上的显示效果,对代码进行相应调整即可得到所需字符库。

        根据所要显示的文字生成所需字符库,通过OLED显示程序将字符代码写入并存储在SSD1306的GDDRAM模块后,就可以稳定地显示出来。 如汉字“汉”,该文字为宋体12,字体对应的点阵为:宽×高=16×16(32 B显示码)。提取字模为:

        Charcode Han[]=

        {

        0x00,0x10,0x61,0x06,0xC0,0x30,0x02,0x3E,0xC2, 0x02, 0x82, 0x62, 0x1F, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x3F, 0x20, 0x20, 0x10, 0x08, 0x05, 0x02, 0x05, 0x08, 0x10, 0x30, 0x10, 0x00,

        }

LCD1602液晶显示电路图

3.7 滴速检测模块电路图

本次设计采用滴速检测模块实时采集药水瓶中的滴液速度。模块如上图所示。

其检测原理时元器件通过计算水滴落下的时间,计算出此时的水滴速度,并通过多次检测采取平均值。通过引脚和单片机进行通信,将采集到的滴速数据发送给单片机,最终显示在OLED液晶屏上。下图是滴速检测模块电路图:

滴速检测模块电路图

此次设计用到的滴速检测模块也叫测速传感器模块 脉冲计数器 电机马达测速传感器位置限位槽型光耦。实际上名称有很多不但可以测滴速也可以测电机转数,脉冲等功能,在此次设计中我们主要是用来进行滴数检测。

测试方法:通过在凹槽部分测试是否有东西经过,通过单片机内部定时器计算比如1分钟通过多少次从而计算出当前的滴数。

检测原理:

槽型光耦也被工程技术人员称作槽型光电开关或者对射式光电开关,也是以光为媒体,由发光体与受光体间的光路遮挡或由反射光的光亮变化为信号,检测物体的位置、有无等的装置。槽型光耦也是由一个红外线发射管与一个红外线接收管组合而成。它与接近开关同样是无接触式的,受检测体的制约少,且检测距离长,应用广泛。耦合器以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用。它已成为种类最多、用途最广的光电器件之一。

光耦合器一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。

由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。所以,它在长线传输信息中作为终端隔离元件可以大大提高信噪比。在计算机数字通信及实时控制中作为信号隔离的接口器件,可以大大提高计算机工作的可靠性。又由于光耦合器的输入端属于电流型工作的低阻元件,因而具有很强的共模抑制能力。

由于是采用对检测对象的表面进行反射及光透过方式,不像接近开关只能对金属,还能对玻璃、塑料、木制物体、液体等各种物质进行检测。当物体遮挡一次凹槽,模块D0口会输出一次高电平,也就是数这个脉冲,通过单片机定时器进行计算一定时间内通过模块输出的高低电平次数的变化从而确定滴速。

模块特色:

1、使用进口槽型光耦传感器,槽宽度 5mm

2、有输出状态指示灯,输出高电平灯灭,输出低电平灯亮。

3、有遮挡,输出高电平;无遮挡,输出低电平。

4、比较器输出,信号干净,波形好,驱动能力强,超过 15mA

5、工作电压 3.3V-5V

6、输出形式 :数字开关量输出(0 1

7、设有固定螺栓孔,方便安装

8、小板 PCB 尺寸:3.2cm x 1.4cm

9、使用宽电压 LM393 比较器

3.8 液位检测模块电路图

本次设计采用的水位传感器是由液位传感器模块和LM393芯片组成。液位传感器的工作原理是其触液面由一个压强传感器,检测此时的压强值,当水越多电压就越高,通过和LM393比较器进行比较,如果有水的情况下会输出高电平,无水输出低电平这样我们就可以判断当前瓶子内是否有水。下图为液位检测电路图:

图中lm393 电压比较器电路,接2个10k 是为了分压,产生的电压为2.5V电压值。3为外接器件也就是用来进行光敏采集 out为输出电平.Lm393只会输出2中电平 一种是高电平一种是低电平0和1,当电压大于2.5V就会输出高电平,低于2.5V输出低电平。所以我们做lm393电路中3引脚外接的无论是光敏,水位,烟雾,湿度等器件这个引脚只是采集电压进行比较最后输出是的都是高低电平0和1

(输出负载电阻能衔接在可允许电源电压范围内的任何电源电压上,不受 Vcc端电压值的限制,输出部分的陷电流被可能得到的驱动和器件的β值所限制。当达到极限电流(16mA)时,输出晶体管将退出而且输出电压将很快上升。输出饱和电压被输出晶体管大约60ohm 的γSAT限制。当负载电流很小时,输出晶体管的低失调电压(约1.0mV)允许 输出箝位在零电平。)

LM393主要特点   

工作温度范围:0°C -- +70°C    

SVHC(高度关注物质):No SVHC (18-Jun-2010)   

器件标号:393工作电源电压范围宽,单电源、双电源均可工作,

单电源: 2~ 36V,

双电源:±1~±18V;    

消耗电流小,ICC=0.4mA;   

输入失调电压小,VIO=±2mV;    

共模输入电压范围宽, VIC=0~VCC-1.5V;   

输出与TTL,DTL,MOS,CMOS 等兼容;   

输出可以用开路集电极连接“或”门;   

表面安装器件:表面安装

LM393是高增益,宽频带器件,像大多数比较器一样,如果输出端到输入端有寄生电容而产生耦合,则很容易产生振荡。这种现象仅仅出现在当比较器改变状态时,输出电压过渡的间隙,电源加旁路滤波并不能解决这个问题,标准PC板的设计对减小输入—输出寄生电容耦合是有助的。减小输入电阻至小于10K将减小反馈信号,而且增加甚至很小的正反馈量(滞回1.0~10mV)能导致快速转换,使得不可能产生由于寄生电容引起的振荡,除非利用滞后,否则直接插入IC(集成电路板integrated circuit,缩写:IC 并在引脚上加上电阻将引起输入—输出在很短的转换周期内振荡,如果输入信号是脉冲波形,并且上升和下降时间相当快,则滞回将不需要。LM393偏置网络确立了其静态电流与电源电压范围 2.0~30V无关。通常电源不需要加旁路电容。差分输入电压可以大于Vcc并不损坏器件,保护部分必须能阻止输入电压向负端超过-0.3V

 

3.9 步进电机控制电路

3.9.1步进电机的介绍

前面介绍了按键电路,OLED液晶显示电路,和单片机电路部分的设计,其最终的目的也就是要控制步进电机的正反转。步进电机是将电脉冲转化为角位移的开环控制执行机构。步进电机又称为脉冲电动机,当步进驱动器接收到一个脉冲信号, 它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。其中步距角是对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度(转子齿数J*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度,八拍运行时步距角为θ=360度/(50*8)=0.9度。在负载能力范围内这些关系不因电源电压、负载大小、环境条件的波动而变化。因而可适用于开环系统中作为执行元件,使控制系统大为简化。步进电动机可以在很宽的范围内通过改变脉冲频率来调速;能够快速反转和制动。它不需要变换可直接将数字脉冲信号转换为角位移,很适合采用微型计算机控制。步进电动机是纯粹的数字控制电动机。它将电脉冲信号转变成角位移,即给一个脉冲信号,步动机就转动一个角度,因此作常适合于单片机控制,推动了步进电动机的发展,为步进电动机的应用开辟了广阔的前景。

3.9.2步进电机及其控制方式

本系统用到的是四相步进电动机,四相步进电动机是将电信号转变成角位移或线位移的开关控制元件,其转速、停止位置只与脉冲信号的频率和脉冲数有关,具有误差小,易控制等特点,广泛用于仪器设计。选用28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A),双(双相绕组通电)四拍(AB-BC- CD-DA-AB-),八拍(A-AB-B-BC-C-CD-D-DA-A)。

3.9.3步进电机驱动电路

步进电机单靠交流供电或直流电源无法运动,必须与驱动电路同时使用时才能发挥其功能,步进电机驱动器(驱动电路)由决定换向顺序的控制电路(或称为逻辑电路)与控制电机输出功率的换相电路(或称为功率电路(power stage))组成。本图是步进电机驱动电路原理图。驱动电路通过ULN2003构成比较多的驱动电路,8个NPN达林顿晶体管,连接在阵列非常适合逻辑接口电平数字电路(例如TTL,CMOS或PMOS上/ NMOS)和较高的电流/电压,如电灯,电磁阀,继电器,打印锤或其他类似的负载,广泛的使用范围:计算机,工业和消费应用。所有设备功能由集电极输出和钳位二极管瞬态抑制。该ULN2003是专为符合标准TTL。该电路为反向输出型,即输入低电平电压,输出端才能导通工作。

基本工作原理:如果1脚输入高电平1,则16脚输出低电平0,反之一样!一般来说,步进电动机的工作电压是5V,对应芯片的9脚接步进电动机的工作电压5V。输入接上拉电阻即接单片机引脚。引脚输入低电平,ULN2003就输出高电平,正反转跟输入电平有关。电路图如下图所示。

3.10  WIFI无线传输电路

本次设计关于无线通信方面我们采用的模块是WIFI模块,我们通过此模块可以把当前的数据和参数无线端发送到用户手机上进行显示。

本次设计无线通信部分采用ESP8266无线串口模块作为数据发送模块。ESP8266模块是一款超低功耗的UART-WiFi 透传模块,功能非常强大,通信距离很远,价格低,体积小,方便去嵌入奥任何产品,功能强大内部跑LWIP协议,支持AP,STA,AP+STA三种模式,简洁高效的AT指令。ESP8266无线模块工作电压是3.3V,单片机5V电压满足其工作电压要求,而且体积很小,价格非常便宜。在本次设计中用于单片机和手机之间的无线通信,通过WIFI模块,单片机将温湿度和烟雾浓度值发送给手机端,最后显示在APP上。下图是ESP8266模块电路图,从图中可以看出,2号、4号和8号引脚接地,1号引脚连接单片机的RXD引脚,5号引脚连接单片机的TXD引脚。

第四章  软件系统设计

软件设计是点滴控制系统设计的主要内容和重点,应该根据系统功能要求,以系统硬件电路为基础进行系统的软件设计。为了使设计出来的软件功能明确,阅读、调试方便,健壮性、可靠性好,一般采用结构化的程序设计方法。结构化的程序设计包括三方面的工作:自顶向下的设计、模块化编程和结构化编程。除此之外,有时还需要加强软件抗干扰设计,以提高程序的可靠性。

单片机系统程序采用单片机C编程语言进行开发的,整个单片机系统的程序共分为六个模块,即单片机数据处理、继电器控制、温度采集模块、蓝牙无线传输、屏幕显示模块、蜂鸣器与步进电机驱动程序等。其中主程序调用子程序。

4.1软件设计方法

在介绍具体软件实现之前,先来介绍一下系统软件的设计方法:模块化设计。模块化设计就是把软件按照规定的原则划分为一个个较小的、相对独立但又相关的模块。分解、信息隐藏和模块独立性,是实现模块化设计的重要指导思想。

分解是人们处理复杂问题常用的方法,对问题求解的大量实验表明,将一个复杂的问题分解为几个较小的问题,能够减小解题所需要的总工作量。但在一个软件系统的内部,各组成模块之间是相互关联的。模块划分的数量越多,各模块之间的联系也就越多。模块本身的复杂度和工作量虽然随模块的变小而减小,模块的接口工作量却随着模块数的增加而增大。每个软件都存在一个最小成本区,把模块数控制在这个范围内,可以使总的开发工作量保持最小。

模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是否合理的标准。坚持模块的独立性,一般认为是获得良好设计的关键。独立性可以从两个方面来度量,即模块本身的内聚和模块之间的耦合。前者指模块内部各个成分之间的联系,所以也称块内联系或模块强度;后者指一个模块与其它模块之间的联系,所以又称为块间联系。模块的独立性愈高,则块内联系越强,块间联系越弱。

在开发软件的同时,还要注意软件开发中文档的建立。在软件开发过程中,总是产生和使用大量的信息。软件文档在产品的开发过程中起着重要的作用。文档提高了软件开发过程的能见度。把开发过程中发生的事件以某种可阅读的形式记录在文档中,还可提高开发效率。软件文档的编制,使得开发人员对各个阶段的工作都进行周密思考、全盘权衡、减少返工,可在开发早期发现错误和不一致性,便于及时加以纠正,并且便于协调以后的软件升级、使用和维护。

本系统是以上述的软件设计思想为指导,采用Keil 5集成开发环境开发软件部分,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。Keil 5软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,代码紧凑,容易理解。

4.2 软件主程序架构

当硬件端设计调试完成后,就要针对单片机和外设传感器进行软件设计。系统设计首先要构思清楚,首先画一个流程图,按照传感器先后顺序,进行系统设计。启动的步骤为:DS18B20温度采集,步进电机控制。无线串口通信、滴速传感器检测当前滴液速度,液位传感器检测当前水瓶中水位,然后显示在OLED液晶屏上。按键设置滴速报警上下限。当超出报警上限或者低于报警下限时,蜂鸣器报警,单片机控制步进电机正转或反转。当水瓶中没有水时,蜂鸣器报警。整个主流程图如下图所示:

系统流程图

4.2 OLED显示流程图

要让液晶显示屏正常工作,首先写入命令控制字,然后在写入需要显示的数据。写入命令控制字之前,必须用指令来查看液晶是否正在工作。如果正在工作,那就必须等待,直到液晶发出工作完成的信号时,才能够写入控制字和数据。液晶显示模块程序流程图如下图所示。

开始

OLED液晶初始化

延时

显示器是否忙

写指令,设置第一行显示位置

写显示的数据

写指令,设置第二行显示位置

写显示的数据

结束

Y

N

液晶显示模块程序设计流程图

4.3 滴速检测流程图

滴速传感器供电后开始工作,单片机给滴速传感器启动信号,然后传感器实时检测滴液的时间,计算出滴速。之后再发送给单片机,单片机将数据进行计算处理,并最终显示在OLED液晶屏上。下图是滴速检测的流程图:

滴速检测流程图

4.4 水位检测流程图

液位传感器检测是其触液面由一个压强传感器,检测此时的压强值,如果有水会输出大于2.5V电压所以当有水的时候LM393会输出高电平,无水输出低电平。其流程图如下图所示:

液位检测模块

4.5 按键子程序

本次设计按键电路功能不多,分别是设置滴速报警的上限和下限值。单片机的按键具有4个引脚,相同的一侧是连接的,3个按键并联在一起,只要将相同的引脚连接一起即可。按键的工作原理就是对低电平信号的检测,在主程序中,循环执行检测,一旦检测到按键低电平信号,单片机产生信号中断,进入按键子程序中。2个按键分别表示加、减,分别用2个函数执行不同的操作,注意进行延时操作,防止误差。流程图如下图所示:

按键流程图

4.6 报警流程图

主函数执行后,一直检测是否发生中断,首先通过按键设定好滴速报警上下限和温度下限值,然后检测是否超出上下限值,或者水位检测传感器检测到瓶中是否无水。当检测到滴速超出上下限或者瓶中没有水时,并且判断温度是否低于下限。单片机控制蜂鸣器报警,报警流程图如下图所示:

单片机输出高电平蜂鸣器报警

是否触发报警条件

报警程序入口

返回

Y

N

Y

报警流程图

4.7 步进电机驱动流程图

 控制电动机正反转为本次设计滴速控制部分。系统开始工作后,判断电机是否需要正转,若需要就依次给AB、BC、CD、DA通电实现正转,正转结束后延时3S电机开始反转,即依次给AD、DC、CB、DA充电。电机驱动子流程图如下图所示。

4.8 WIFI无线传输流程图

本次设计采用的无线通信模块为esp8266,此模块我们只需要和单片机进行串口通信通过相应的AT指令集就可以对数据进行无线传输,利用wifi模块的热点模式。供电电压3-3.6V ,峰值输出功率20DBM。峰值电流240毫安。波特率我们采用115200。我们只需要连接3.3V,GND TXD RXD就可以和单片机进行通信,并且手机端可以接受到当前wifi 发送的数据信息。

首先初始化波特率为115200 . void esp8266_init(),配置wifi模式为AP热点模式void esp_ap_mode(void),Uart1_SendStr("AT+CWMODE=2\r\n");设置wifi名称和密码Uart1_SendStr("AT+CWSAP=\"TEST\",\"12345678\",1,3\r\n");       通过串口把指令发送出去,Uart1_SendStr("AT+CIPMUX=1\r\n");建立多路连接模式(可由一个或者是多个esp8266向手机端发送数据),Uart1_SendStr("AT+CIPSERVER=1,8080\r\n");配置端口号为8080。开始发送数据void  esp_send_buf(unsigned char conn_id, char * buf, unsigned char len); printf("AT+CIPSEND=%d,%d\r\n",conn_id,len);d第一个表示ID号第二个表示数据长度。strx = strstr((const char*)Usart1RecBuf,(const char*)"SEND OK");发送完成

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐