ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[应用相关] 基于 STM32 的高精度数字电压表设计

[复制链接]
508|22
 楼主 | 2019-8-23 20:22 | 显示全部楼层 |阅读模式
针对传统数字电压表分辨率低的问题,本文以 STM32 为控制芯片, 结合 TFT-LCD 显示屏, 设计了一款高精度的数
字电压表,分辨率可达 0. 8mV。此外加入报警电路,当测量电压超过数字电压表量程时,可进行报警提示。经试验验证, 此数字
电压表可完成对 0 ~ 3V 电压的精确测量,在电子测量领域具有很好的实际应用价值  

使用特权

评论回复
 楼主 | 2019-8-23 20:28 | 显示全部楼层
作为一种数字化测量技术, 数字电压表是一种将连续的
模拟电压信号转化为离散型数字信号, 并通过可视化显示界
面进行数字显示的电压测量仪器。相对于传统的指针式电压
表,数字电压表具有测量精度高, 响应速度快, 稳定性好等
优点,且测量值以数字化的形式进行存储 ,便于测量数据的
可视化显示,避免了传统指针电压表在读数过程中产生的视
觉误差。基于上述特点,数字电压表已在自动化测量、自动化
仪表、电子电工测量等先相关领域得到了广泛的应用

使用特权

评论回复
 楼主 | 2019-8-23 20:29 | 显示全部楼层
现行的数字电压表,其数据处理单元多采用 8 位处理器,
最大分辨率仅为 0. 0196( 5 /28) V[5-7] ,不能对低于分辨率的微
弱电压变化进行有效的识别及测量, 这将在一定程度上影响
数字电压表的测量精度, 尤其是对微电压的测量。针对此不
足,本文选用 STM32 作为数字电压表的数据处理单元, 借助
其内部自带的 12 位 A /D 转换功能, 完成对测量电压模拟量
的数字化转换,其分辨率可达 0. 8mV( 3. 3 /212) V。

使用特权

评论回复
 楼主 | 2019-8-23 20:31 | 显示全部楼层
本设计选用基于 Crotex-M3 内核的 STM32 单片机作为测
量数据的处理单元, 其内部集成 12 位的逐次逼近型 A /D 转
换模块[8] ,可完成对测量电压模拟量的数字化转换。STM32
单片机将转换后数字量经 TFTLCD 显示屏进行显示[9] , 电源
模块主要完成整个系统的供电, 复位电路用以完成对 STM32
的初始化,时钟电路为 STM32 的运行提供精准的时钟周期。
由于微处理器外接引脚所能承受的电压最大不能超过 3. 3V,
当外测电压超过 3. 3V 时,报警电路进行报警提示

使用特权

评论回复
 楼主 | 2019-8-23 20:31 | 显示全部楼层
系统结构框图
367395d5fdca47357e.png

使用特权

评论回复
 楼主 | 2019-8-23 20:34 | 显示全部楼层
选用基于 Crotex-M3 内核的 STM32 单片机作为微
控制器,具有 32 位的数据处理能力。相对于传统的 8 位单片
机,STM32 内部自带 12 位逐次逼近型 A /D 转换器, 模 /数转
换最高分辨率可达 0. 8mV( 3 /212) ,转换速率可达 1MHz, 采样
模式、扫描模式、存储模式均可自由设置。在实现方式上, 只
需通过简单的软件设计, 即可完成对测量模拟量的数字化转
换。另外使用 STM32 内部的模拟看门狗特性, 可对输入电压
的阈值进行自定义设定, 当测量电压超过数字电压表的量程
时,报警单元进行报警提示

使用特权

评论回复
 楼主 | 2019-8-23 20:38 | 显示全部楼层
TFT-LCD( Thin Film Transistor-Liquid Crystal Display) ,即
薄膜晶体管液晶显示器。相比于无源 LCD, TFT-LCD 通过在
液晶屏的每个像素点设置薄膜晶体管的方式, 有效克服了选
通切换时视觉暂留效应的影响, 具有较高的液晶显示质量。
本文使用 TFTLCD 显示屏进行测量电压的数字化显示, 显示
驱动芯片 使 用 LIL9341。通 讯 方 式 上, 借 助 STM32 自 带 的
FSMC( Flexible Static Memory Controller) 接口, 使用 8080 并行
的方式完成显示数据的传输[10] 。其读写时序如图 ( 2) 、图
( 3) 所示,使用到的信号线主要有: CS: TFT-LCD 片选信号。
WR: 向 TFT - LCD 写入数据。RD: 从 TFT - LCD 读取数据。
DC: 命令 /数据标志( 0, 读写命令; 1, 读写数据) 。D[7: 0]: 8
位双向数据线。RST( RES) : 硬件复位。

使用特权

评论回复
 楼主 | 2019-8-23 20:40 | 显示全部楼层
使用 8080 并行传输模式,在片选信号 CS 置低电平时, 表
示 TFT-LCD 器件被选中; 传输数据或传输命令由 D /C 引脚
确定( 0, 读写命令; 1, 读写数据) 。当 WR 引脚为高电平时
STM32 读取 TFT-LCD 的状态信息。在每个 RD 引脚的上升
沿,LIL9341 将 TFT-LCD 的数据锁存至 D[7: 0] 供 STM32 读
取,STM32 根据 TFT-LCD 的状态反馈确保数据读写的正确时
序。当 RD 引脚为高电平时, STM32 向 TFT-LCD 写入数据。
在每个 WR 的上升沿,数据被锁存至 D[7: 0], TFT-LCD 通过
LIL9341 驱动芯片,完成测量数据的刷新显示。

使用特权

评论回复
 楼主 | 2019-8-23 20:48 | 显示全部楼层
8080 并口传输模式读时序
607535d5fe08f08439.png

使用特权

评论回复
 楼主 | 2019-8-23 20:48 | 显示全部楼层
8080 并口传输模式写时序
569235d5fe0a9a4d85.png

使用特权

评论回复
 楼主 | 2019-8-23 20:49 | 显示全部楼层
数字电压表的过电压提示模块, 借助 STM32 内部的
模拟看门狗特性,当数字电压表测量电压超过 3. 3V 时, 进行
报警提示。电 路 组 成 如 图 4 所 示, 主 要 由 NPN 型 三 极 管
S8050 和有源蜂鸣器组成,由 STM32 单片机的 PB8 引脚控制。
52115d5fe0c88c33b.png

使用特权

评论回复
 楼主 | 2019-8-23 20:49 | 显示全部楼层
为防止蜂鸣器误发声,上电复位时, PB8 默认设置为低电
平。在程序设计中,设置电压的阈值变量 CNT,当数字电压表
的测量电压超过设定阈值时,PB8 输出为高电平, 驱动蜂鸣器
进行报警提示。

使用特权

评论回复
 楼主 | 2019-8-23 20:52 | 显示全部楼层
作为 STM32 内部自带的 A /D 转换功能,只需通过固件库
存进行代的编程即可实现 STM32 的 A /D 转换功能。此设计
选用 ADC1 转换的通道 1,采样模式选择独立模式, A /D 转换
模式选择单次转换,数据存储方式选择右对齐,启动规则转换
触发方式选择软件触发。为提高 A /D 转换的精确度, 可适当
延长 A /D 转 换 的 采 样 时 间。

使用特权

评论回复
 楼主 | 2019-8-23 20:53 | 显示全部楼层
A /D 转换子程序流程图
850125d5fe1b848b45.png

使用特权

评论回复
 楼主 | 2019-8-23 20:53 | 显示全部楼层
A /D 转换使用到 STM32 的引脚 PA1,时钟使能包括 GPIOA 口的时钟使能及 ADC 的时钟使能, 同时设置 PA1
口为模拟输入模式。通过 ADC 复位, 将 ADC1 的全部寄存器
设置 为 缺 省 值, 通 过 分 频 确 保 ADC 的 转 换 频 率 不 超 过
14MHz,此设计将 PLL 锁相环倍频输出( 72MHz) 进行 6 分频
作为 ADC 的转换频率, 确保了 A /D 转换的采样时间。待完
成相关设置以后,通过 ADC 使能函数 ADC_Cmd( ADC1,ENABLE) 启动 AD 转换,同时进行复位校正和 AD 校正, 最后进行
AD 转换数据的读取及存储。

使用特权

评论回复
 楼主 | 2019-8-23 20:56 | 显示全部楼层
单次的 AD 转换所用的时间大约为 1us, 为提高 A /D 转
换结果读数的准确性,对连续采样的 10 次 AD 转换结果求取
平均值,然后再发送至 TFT-LCD 显示屏进行数字化显示。

使用特权

评论回复
 楼主 | 2019-8-23 21:02 | 显示全部楼层
TFT-LCD 显示屏作为测量电压的可视化界面,
借助 STM32 单片机的 FSMC 接口, 采用 16 位的 8080 并行接
口方式完成 TFT-LCD 与 STM32 单片机的数据传输

使用特权

评论回复
 楼主 | 2019-8-23 21:19 | 显示全部楼层
TFT-LCD 显示程序流程图
23755d5fe7d260fb4.png

使用特权

评论回复
 楼主 | 2019-8-23 21:19 | 显示全部楼层
时钟使能主要包括 STM32 的 GPIO 时钟使能,FSMC 时钟使能。除此之外, 因为使用到 STM32 的端口重映射功能, 需
开启 AFIO 时钟使能。GPIO 和 FSMC 的初始化分别由库函数
GPIO_Init( ) 、FSMC _NORSRAMInit( ) 完成, FSMC 的使能及
TFT-LCD 的初始化分别由库函数 FSMC_NORSRAMCmd( ) 、
LCD_Init( ) 完成。通过坐标设置函数 LCD_SetCurso-r( ) 设置
字符显示位置, 最终使用字符显示函数 LCD_ShowChar( ) 将
GRAM( Graphi-cs Random Access Memory) 中的内容依次在
TFT-LCD 液晶屏上进行刷新显示。

使用特权

评论回复
 楼主 | 2019-8-23 21:20 | 显示全部楼层
为验证此数字电压表对电压测量的精确度, 使用直流可
调稳压电源及精密电压测量仪器对其进行测量比对试验。电
压测量仪器与数字电压表共用接地线, 其测量结果如表 1 所
示: “仪器测量电压”为测量仪器所测得的直流可调稳压电源
的输出电压, “数字电压表测量电压”为本文所设计的基于
STM32 的数字电压表所测得的电压。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表