【深大电赛】简易电压表

简介:该板实现的功能主要有电压单次检测与连续检测(支持回看),此外还支持可调电压输出(0-5V)

开源协议: GPL 3.0

发布时间:2020-06-17 15:44:52
  • 1.5k
  • 2
  • 4
描述

本项目获2020年深圳大学电子设计大赛一等奖

题目:简易电压表(电路设计)

  • 基本部分:

  1. 制作51单片机最小系统(stm32之类的亦可,系统板是自己做的就行),最小系统包括时钟电路,复位电路,串口下载电路等,并且留有显示设备如OLED或者LCD1602等的插口,留有足够的按键以满足以下要求。

  2. 将ADS1115芯片及其应用电路集成在上述系统中。

  3. 单片机控制ADS1115采集电压,并显示出来,测量电压范围0-5V。

  4. 设置两种模式,模式一无记忆功能,能够迅速检测并更新当前电压。模式二有记忆功能,按下按键后才更新当前电压,并能够把前一次电压的存储下来,至少存储5组数据并且可以回看。

  • 发挥部分:

设计一个附加的DA转换电路,可以在一定范围内(0-5V)任意设定一个电压值,然后作为电压源,检测验证电压表的功能。

参赛队伍信息

  • 高/低年级组:低年级

  • 题目名称: 简易电压表

  • 队名:肝到天亮

2020年深圳大学电子设计大赛作品报告

1.需求分析

功能要求:

  • 制作单片机最小系统板,包含基础电路及显示电路
  • 在上述系统中包含ADS1115芯片,并应用其测量电压0~5V
  • 两种模式,一种迅速检测并显示电压,另一种存储并且可以回看
  • 发挥部分:设计DAC电路,设定电压值0~5V,然后用上面部分检测

技术性能指标:

  • 单片机:足够的I/O口
  • ADS1115芯片:量程为0~5V
  • DA电路C:输出0~5V电压

需要准备的知识:

  • 熟悉51单片机的使用以及绘制各模块的电路,配置显示模块
  • 熟悉ADS1115芯片的配置及使用
  • 学会ADS1115芯片两种模式的转换和使用
  • 绘制DAC电路,控制其输出电压值

物料清单:

物料清单.png

2. 方案选择与论证

(1)主控芯片选择

  • stm32f103:此芯片拥有强大的操控能力,并且自带12位DAC转换芯片。但是此项目较简单,无需太过强大的芯片。用stm32浪费其能力又浪费经费。
  • stc89c52:此芯片能力足以胜任此赛题要求,价钱也便宜。所以最后方案使用了此款芯片。

(2)显示设备

  • OLED:此设备的使用对RAM要求很大,stc89c52无法满足,故放弃。
  • LCD1602:此模块足够满足需求,又对RAM要求低,故采取此设备。

(3)发挥部分

  • stc89c52使用DAC5571芯片直接控制输出电压,精度足够,价钱便宜,故采用。
  • stc89c52控制DAC0832控制输出电流再转换成电压,外围电路较为复杂,电流转电压过程中会有精度损失,故不采用。

3. 系统架构及功能描述

(1)ADC模块

  • ADC模块里包含了ADC的中的基础参数、通信以及功能实现,对应着硬件中的ADS1115芯片。
  • 参数设置包括了不同模式(包括多次检测模式、单次检测模式以及回看模式)中ADS1115各个寄存器的基本参数以及ADS1115的地址。
  • 通信包括了ADS1115中I2C的基本操作,包括初始化,开始,写入,读取与结束函数。
  • 功能实现包括ADS1115负责的三个模式(多次、单次电压检测和回看模式)的切换逻辑和功能实现以及读取电压的转换。

(2)DAC模块

  • DAC模块包含了DAC中的通信以及功能实现。通信同样是I2C的基本操作。功能实现包括调节电压的模式切换逻辑和功能实现,以及输出电压的转换。

(3)LCD模块

  • LCD模块包含了LCD中的功能实现,包括初始,屏幕显示电压值和模式以及屏幕清空。

(4)Datatype模块

  • Datatype中集成了所有的串口定义,便于后续的修改

(5)Usual模块

  • Usual中包含了所有的通用函数与变量,例如延时函数,按键扫描函数等。

(6)主程序

  • 调用各个模块实现总体功能,包括四个模式的功能实现和转换以及LCD对应的现实。

具体功能实现:通电后进入模式0

  • 模式0:用与控制dac输出电压
    • 按键1 进入模式1
    • 按键2 dac模块更新
    • 按键3 加电压
    • 按键4 减电压
  • 模式1用于连续检测电压
    • 按键1 进入模式2
  • 模式2用于单次检测电压
    • 按键1 进入模式0
    • 按键2 更新电压
    • 按键4进入回看模式
  • 在回看模式中按键3与4用来翻页

4. 理论分析与计算

(1)时序计算

  • I2C时序图

I2C时序图.png

由于stc89c52的时钟频率不高,所以不采用高速模式,采用F/S模式。

故延时函数应该延时超过4.7us

(2)DAC计算

VOUT=VDD*D/256

D为stc89通过iic发送给dac5571数据

(3)ADC计算

ADC.png

ADS1115的转换寄存器是16位的,电压值能精准到电压除以2的15次方

  • 计算公式: ADS1115传送给51单片机的值=ADS1115测的电压值/ VCC供电值*2的15次方

5.电路图和PCB

原理图

原理图.png

关于简易电压表的设计,我们组选择了STC89C52RC-40I芯片,这款芯片为44引脚,其封装为PCLL。

  • 首先,需要设计好一块最小系统板,基础部分如下:

(1)时钟电路;采用11.0592MHz无源晶振提供时钟信号,在无源晶振两端都接负载电容接至地。

(2)复位电路:上电时电容充电,RST引脚高电平,实现复位。当按下RSTK1按键电流通过R15流入地,RST处高电平复位。

(3)串口下载电路:使用CH340G芯片实现USART串行通信。当按下六脚自锁按键POWER,给单片机上电,通过LED1红色LED灯的亮灭可判断是否正常上电。在进行程序的烧录或进行通信时,可通过LED2和LED3的亮灭判断通信的正常与否。

(4)独立按键:每次上电,电容充电,KEY1、KEY2、KEY3、KEY4呈低电平之后保持为高电平,当按下独立按键由呈低电平。

(5)将P0的所有引脚拉高,做IO输出口使用;另外EA接高电平,访问内部程序存储器;加入两脚排针,分别接VCC和GND,作为备份电源输入接口;将部分引脚引出,方便控制其他模块等。

  • 将最小系统板设计完后,开始设计实现简易电压表的模块:

(6)ADC:为测量电压,使用ADS1115芯片来采集电压,将AIN0-3四个输入口接到4脚排针。另外用于I2C通信的两引脚SCL和SDA接上拉电阻拉高,ADDR脚接地定义其地址,ATERT/RDY接至P15留有。

(7)LCD1602:能转换电压后,还需要显示,使用LCD1602来完成,接口电路的3号引脚接一502可变电阻,用来调节背光屏亮度,并且将其他引脚引出,D0-7接到P00-P07实现并行通信,EN、RS、WR引脚接至P34到P36,默认高电平(51单片机的P1至P3默认输出高电平)

(8)DAC:此外,为了方便提供电压给ADC部分做测试,设计了DAC模块扩展部分。芯片采用DAC5571,该芯片以I2C模式通信,A0接地定义地址,SCL和SDA引脚接至与ADC的I2C通信的两线相同的单片机IO口。VDD引脚接VCC电源,通过100nF电容滤波。引出VOUT,连至2脚排针输出,同时接一滤波电容。

PCB图

PCB图.png

  • PCB的设计分以下几步

(1) PCB规则设计:电源线(VCC、GND、5V)线宽为20mil

(2) 边框设计:电路板宽97mm,高57mm

(3) 布局:如上图所示

(4) 布线:采用自动布线

(5) 添加丝印:将排针的编号丝印画出

6.调试与测试结果

调试中遇到困难和解决办法:

  • 困难1:usb插口无法识别 原因:串口下载电路晶振一开始选错了,选成了11.0592MHZ,然而ch340芯片要求最低晶振不能超过11.98MHZ。 解决方法:将晶振换成了12MHZ。
  • 困难2:检测电压时dac模块失效 原因:DAC模块选用的是DAC5571,其广播地址与本电路板上ADS1115地址冲突, 解决方法:将DAC模块换到另一块板上,并把另一块板上的iic引脚通过杜邦线引到主板p25,p24引脚,从而避免两个模块iic地址冲突
  • DAC模块选用的是DAC5571,其广播地址与本电路板上ADS1115地址冲突, 解决方法:将DAC模块换到另一块板上,并把另一块板上的iic引脚通过杜邦线引到主板p25,p24引脚,从而避免两个模块iic地址冲突 (原理图改进了,此问题被解决,但是代码未更新)
  • 最终调试结果存在0.05V左右的误差,产生误差的主要原因有: (1)笔记本提供电压不稳定(经测量,笔记本提供电压为5.07V左右) (2)采购的dac芯片较便宜,本身精度不够 (3)Ads1115芯片本身存在一定误差 (4)写程序代码时,测量值用浮点数float定义的变量储存,改变量在计算时易产生误差

7. 结束语

第一次参加电赛,收获了很多,感触比较深的是用什么芯片都要好好看芯片手册,测试时出现什么问题也都要保持冷静。参加电赛,对许多方面的能力都有所提升,设计一件完整的DIY,需要考虑到各个方面,从基础电路的设计开始,到PCB打板,焊接电路板,测试电路板,敲代码,测试程序,最后报告文档的编写。这个过程虽然并没有设计产品流程那样细,但对于个人今后自己制作一些小玩意很有帮助。总之,参加电赛不管获奖与否,技能的提升就是最大的收益。队员间互相信任和协作也很重要。设计电路要一起讨论分配引脚;写代码要互相配合,统一变量函数;最后总结也要各自分工,共同完成。一个综合能力强的团队,分工合理的团队,互相沟通良好的团队也是我们能顺利将完成作品的关键所在。

8.参考文献

[1]DAC5571用户手册,https://atta.szlcsc.com/upload/public/pdf/source/20131206/1457706662524.pdf

[2]ADS1115用户手册 , https://wenku.baidu.com/view/9a840b3683c4bb4cf7ecd135.html

设计图

简易电压表

在编辑器中打开

简易电压表

在编辑器中打开
BOM
暂无

服务时间

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

服务时间

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

    easyeda

  • QQ交流群

    664186054

  • 开源平台公众号

    oshwhub