【深大电赛】简易电压表

简介:本设计制作了51单片机的最小系统,能够精确的测量0-5V电压。DA转换电路中采用了DAC0832以及LM324,实现了在0-5V间任意设定一个电压值,作为电压源使用的功能。

开源协议: GPL 3.0

发布时间:2020-06-18 11:50:53
  • 1.9k
  • 0
  • 7
描述

**1.需求分析**

**1.1.功能要求**

题目需要制作51单片机的最小系统,通过单片机控制ADS1115采集电压范围为0-5V的电压,并通过设置两种不同的显示电压方式显示电压,同时需要在此基础上设计一个DA转换电路,输出确定的电压值0~5V,用来检验电压表的准确性。

**1.2.技术性能指标**

(1)ADS1115芯片:具有 16 位分辨率的高精度模数转换器 (ADC),采用超小型的无引线 QFN-10 封装或 MSOP-10 封装。 在设计时考虑到了精度、功耗和实现的简易性。 ADS1115 具有一个板上可编程增益放大器 (PGA),该 PGA 可提供从电源电压到低至 ±256mV 的输入范围,因而使得能够以高分辨率来测量大信号和小信号。

(2)DAC0832是将数字信号转换为模拟信号的器件。它的主要技术指标及含义如下:分辨率:8 位,可以将 8 位数字量转换为模拟量;建百立时间:1μS ,即从数字量写入 8 位DAC寄存器到产生度与输入数字量对应的模拟量输出的时间;输入信号:与 TTL 电平兼容的二进制信号;输出信号:与输入二进制信号对应的电流信专号;电源:单一+5V 电源;

1.3.准备知识  

(1)单片机工作原理

(2)ADS1115芯片

(3)DAC0832芯片

(4)数模及模数转换原理与电路图

**2. 方案选择与论证**

**2.1理论分析**

(1)AD转换电路设计分析:

AD转换电路采用了ADS1115芯片,ADS1115是具有 16 位分辨率的高精度模数转换器 (ADC),采用超小型的无引线 QFN-10 封装或 MSOP-10 封装。 在设计时考虑到了精度、功耗和实现的简易性。 ADS1115 具有一个板上可编程增益放大器 (PGA),该 PGA 可提供从电源电压到低至 ±256mV 的输入范围,因而使得能够以高分辨率来测量大信号和小信号。

(2)DA转换电路设计分析:

DA转换电路采用了DAC0832芯片.该芯片是一个8位D/A转换器芯片, 分辨率为5V/256=19.5mV,也即是单位数据输入引起的电压变化为19.5mV,在一定程度上满足了题目的在0~5V范围任意设定一个电压值的要求.

**2.2选用TI器件的依据与理由**

该系统的设计使用了六个 TI 器件分别是STC89c51单片机、Ch340G型号芯片、Type-c型号芯片、ADS1115芯片、DAC0832芯片和LM324运算放大器.

(1) STC89c51单片机

STC89C51 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

(2) CH340 USB转串口IC

USB 转串口芯片 CH340是一个 USB 总线的转接芯片,实现 USB 转串口或者 USB 转打印口。在串口方式下,CH340 提供常用的 MODEM 联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到 USB 总线。CH340 芯片内置了 USB 上拉电阻,UD+和 UD-引脚应该直接连接到 USB 总线上。 CH340 芯片内置了电源上电复位电路。CH340 芯片正常工作时需要外部向 XI 引脚提供 12MHz 的时钟信号。一般情况下,时钟信号由CH340 内置的反相器通过晶体稳频振荡产生。外围电路只需要在 XI 和 XO 引脚之间连接一个12MHz 的晶体,并且分别为 XI 和 XO 引脚对地连接振荡电容。CH340 芯片支持 5V 电源电压或者 3.3V 电源电压。当使用 5V 工作电压时,CH340 芯片的VCC 引脚输入外部 5V 电源,并且 V3 引脚应该外接容量为 4700pF 或者 0.01uF 的电源退耦电容。当使用 3.3V 工作电压时,CH340 芯片的 V3 引脚应该与 VCC 引脚相连接,同时输入外部的3.3V 电源,并且与 CH340 芯片相连接的其它电路的工作电压不能超过 3.3V。CH340 自动支持 USB 设备挂起以节约功耗,NOS#引脚为低电平时将禁止 USB 设备挂起。

(3) ADS1115芯片

ADS1115 是具有16 位分辨率的高精度模数转换器(ADC),采用超小型的无引线QFN-10 封装或MSOP-10 封装。ADS1115具有1MHz的内部振荡器,产生250 kHz的采样频率。ADS1115在上电时复位,并将Config寄存器中的所有位都设置为相应的默认设置。完成复位后,ADS1115进入掉电状态,器件接口和数字模块处于活动状态,但不进行数据转换。这里主要用到的是ADS1115芯片采集电压的模式,ADS1115使用开关电容输入级,其中电容器连续充电,然后放电以测量AINP和AINN之间的电压,以两种模式之一运行:连续转换或单次拍摄。ADS1115有低功耗,4通道输入,内部基准,PGA等多项优点。

(4) DAC0832芯片

DAC0832是8位的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片拥有价格低廉、接口简单、转换控制容易等优点。通过单片机8个IO口输入‘0’或‘1’,便可相应控制电压的输出。

(5) LM324

LM324系列器件带有真差动输入的四运算放大器,具有真正的差分输入。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。

**2.3设计方案论证**

DA转换电路方案

方案一:通过PWM来实现DA转换。PWM 是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。但由于PWM DAC的精度没有DAC的高,因此我们选择放弃这个方案。

方案二:利用DAC0832芯片来实现DA转换。该电路采用DAC0832的直通方式,此方式适用于连续反馈控制线路和不带微机的控制系统.由于DAC0832输出的是电流,因此在输出端我们接了一个LM324运算放大器实现了电流到电压的转换.因该转换电路操作方便、转换控制容易,所以我们最终选择了此方案.

**3. 系统架构及功能描述**

**3.1硬件设计**

3.1.1系统框图(参考文档)

3.1.2不同功能单元电路的功能描述

(1)时钟电路

时钟电路就是产生像时钟一样准确运动的振荡电路。任何工作都按时间顺序。用于产生这个时间的电路就是时钟电路。时钟电路由晶体振荡器、晶振控制芯片和电容组成。

(2)复位电路

复位电路是一种用来使电路恢复到起始状态的电路设备,它的操作原理与计算器有着异曲同工之妙,只是启动原理和手段有所不同。复位电路,就是利用它把电路恢复到起始状态。就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。和计算器清零按钮有所不同的是,复位电路启动的手段有所不同。一是在给电路通电时马上进行复位操作;二是在必要时可以由手动操作;三是根据程序或者电路运行的需要自动地进行。复位电路都是比较简单的大都是只有电阻和电容组合就可以办到了,再复杂点就有三极管等配合程序来进行了

(3)串口下载电路

编译好程序后的烧录,带有type-c接口。

(4)采集电压电路

AD模块采用ADS1115芯片采集电压值,可利用独立按键分别控制两种模式,模式一无记忆功能,能够迅速地检测并且更新当前电压。模式二有记忆功能,按下按键后才能更新当前的电压,并能存储五组电压数据。

(5)DA转换电路

DAC0832有三种工作方式:直通方式、单缓冲方式、双缓冲方式。而我们使用的方式为直通方式。直通方式是资料不经两级锁存器锁存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高电平。此外,由于DAC0832为电流输出型D/A转换器,因此为得到电压的输出,在其电流输出端接了LM248运算放大器。转换数据通过DI0~DI7口输入。当数据全为1时,输出5V电压;数据全为0时,输出0V电压。

(6)显示电路

原理图中留有LCD1602显示屏的接口,由于OLED多为彩屏,是点阵结构,适于显示图形,其用法和TFT彩屏类似。但OLED屏一般尺寸较小,大尺寸较贵,OLED屏无背光,靠像素点的LED自发光,功耗比较低。LCD分单色屏和彩屏,单色屏分为段式结构和点阵结构,段式结构只能显示简单字符,点阵结构可显示简单图形。本项目只要求显示数值,考虑到成本因素,这里使用LCD1602显示屏。LCD显示器根据ADS1115的工作模式显示不同数据,连续转换模式下LCD不断刷新显示的数据,单次转换模式下按下开关,LCD才更新显示数据,并且这里使用LCD滚动刷新数据,可同时显示五组数据,已达到记忆和回看功能。

**4. 理论分析与计算**

**不同功能单元电路及接口设计**

(1)时钟电路

由于单片机正常工作需要一个时钟,因此就需要在单片机晶振引脚上外接一个晶振(我们使用的 STC89CXX 单片机晶振引脚是 18 和 19 脚),至于需要多大晶振这就取决于你所使用的单片机,由于我们使用的是 51 单片机,其时钟频率可在 0-40MHZ 上运行,一般情况下我们建议选择 12M(适合计算延时时间)或者是 11.0592M(适合串口通信)。若直接将此晶振接入单片机晶振引脚,会发现系统工作不稳定,这是因为晶振起振的一瞬间会产生一些电感,为了消除这个电感所带来的干扰,可以在此晶振两端分别加上一个电容,电容的选取需要无极性的,另一端需要共地。根据选取的晶振大小决定电容值,通常电容可在 10-33PF值范围内选取。我们使用的是 22PF 电容。这样一来就构成了晶振电路。只有保证晶振电路稳定,单片机才能继续工作。其电路如下所示: image.png

(2)复位电路

复位电路是一种用来使电路恢复到起始状态的电路设备,它的操作原理与计算器有着异曲同工之妙,只是启动原理和手段有所不同。复位电路,就是利用它把电路恢复到起始状态。就像计算器的清零按钮的作用一样,以便回到原始状态,重新进行计算。复位电路工作原理如图所示,VCC上电时,使电容C充电,在10K电阻上出现高电位电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。工作期间,按下S22,C放电,放电结束后,在10K电阻上出现电压,使得单片机进入复位状态,直到S松手,C充电完毕,随后,单片机进入工作状态。 image.png  

(3)串口下载电路 电路图如下: image.png 在CH340的数据手册上有引脚的介绍以及作用:

这两个引脚:DTR#和RTS#都是 输出类型, MCUISP(一键下载工具)会控制CH340这两个引脚的高低电平状态。

DTR# 输出 MODEM联络输出信号,数据终端就绪,低(高)有效
RTS# 输出 MODEM联络输出信号,请求发送,低(高)有效

通过控制DTR#和RST#这两个引脚的高低电平状态,从而控制STM32的BOOT0 和 RESET.

用万用表测量可知,DTR#、RST#初始状态的时都是高电平,在启用下载的时候,DTR#维持高,RST#拉低,此时两个三极管Q2 和Q3 导通,那么BOOT0 为高电平,RESET为低电平复位,然后DTR#变低,Q2不导通,复位结束,此时BOOT0 为高电平。

由启动模式可知:

B00T0 B00T1 启动模式 说明
X 0 用户闪存储存器 用户闪存储存器,即FLASH启动
0 1 系统储存器 用于串口下载
1 1 SRAM启动 用于在SRAM中调试代码

可知,stm32的启动模式变为从系统存储器启动,启用串口下载,STM32 和 MCUISP下载软件进行通信,进行代码下载,等到代码下载结束时 RST#先变为高电平,然后DTR#在变成高电平。 如果DTR#先变成高电平,那么会在一次产生复位。

(4)AD转换电路

image.png

AD转换电路使用ADS1115转换器。ADS1115包含输入多路复用器(MUX),可以测量四个单端或两路差分信号。这里使用AIN0和AIN1单端输入,电路板中留一个2p的排针,用来接入量程为5V的交变电源,最后检测得的电压值应为VAIN0-VAIN1。在检测电压读值的准确性时利用开关控制电路转为用DA模块产生电压,输入AIN0和AIN1。将AIN2和AIN3连接0.1μF电容并接地,SCL和SDA为输出端。引脚功能如图:

image.png

ADS1115在上电时复位,并将Config寄存器中的所有位都设置为相应的默认设置。ADS1115在上电时复位,并将Config寄存器中的所有位都设置为相应的默认设置。当Config寄存器中的MODE位设置为1时,ADS111x进入掉电状态,并以单次模式运行。直到1被写入Config寄存器中的操作状态(OS)位。当OS位被置位时,器件将在25μs内上电,将OS位复位为0,并开始一次转换。在连续转换模式(MODE位设置为0)中,ADS1115连续执行转换。转换完成后,ADS1115将结果放在转换寄存器中,并立即开始另一次转换。

ADS1115通过I2C接口进行通信, I2C总线由SCL、SDA两条线组成,SCL提供时钟,SDA携带数据。SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出,需通过上拉电阻10k接电源VCC。89C51作为主机驱动SDA和SCL,SDA和SCL分别连接到主机的P2.6和P2.7端口。ADDR引脚用来配置器件的I2C地址,该引脚可以连接到GND,VDD,SDA或SCL。

ADS1115通过I2C接口使用地址指针寄存器访问转换寄存器(包含上次转换结果)、Config寄存器(更改操作模式和查询设备的状态)、Lo_thresh和Hi_thresh寄存器(设置用于比较器功能的阈值)。本电路主要使用转换寄存器和Config。

ADS1115的满量程范围由Config的PGA[2:0]控制增益放大器配置。本实验要求检测0~5V的电压值,故使用5V的VDD,PGA[2:0]设置为0x000,满量程为

6.144V,数据误差大约为187.5μV。

(5)DA转换电路

DAC0832内部结构如下图

image.png

 

CS*为片选信号,WR1*为第一信号(输入),WR2*为第二信号(输入),XFER*为数据传送控制信号。以上信号均为低电平有效,当为DAC00832工作方式为直通方式时,均接地即可。ILE为数据锁存允许信号(输入),高电平有效,因此外接VCC。如下图。DI0到DI7为转换数据输入,我们将其与单片机的P0口对应上。通过P0口的数据输入,便可控制电压的输出。

image.png  其中8位D/A转换及运算放大器大致如下图

image.png

DAC 输出电压计算公式:V0=Vref*z/256

公式中的 z 表示单片机给的数字量,vref 为参考电压,通常我们是接在系统

电源上,即 5V,数值 256 表示 DAC 精度为 8 位。

5.电路图和PCB

6.****调试与测试结果****

仿真电路图(包括AT89C51,独立按键,AD模块,DA模块,LCD1602,晶振电路):  image.png

由于keil没有仿真元件ADS1115芯片,故使用另一功能相似的ADS1015芯片替代,这两种芯片功能基本相同,除了一些默认寄存器设置不同,因此不影响实验功能实现。

测试结果:

我们小组通过分工,分别负责程序、仿真等不同模块,,我们的仿真结果中最后实现的功能有:ADS1015的无记忆模式和有记忆模式,DAC0832的检测电路。

这次仿真结果并没有达到最开始的预期结果,比较遗憾的是对于ADS1015采集电压值的精确度没有控制好,输出的电压值和真实电压值有较大的差距,我们会继续查阅资料,改写代码和原理图,争取解决这个问题。

设计图

PCB_2020-05-06_15-14-59 copy

在编辑器中打开

Sheet_1 copy copy

在编辑器中打开
BOM
暂无

服务时间

周一至周五 9:00~18:00
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 立创EDA微信号

    easyeda

  • QQ交流群

    664186054

  • 开源平台公众号

    oshwhub