开始制作一个简易电压表:使用到的元器件和模块。
主控芯片采用了 STC89C52RC,时钟电路:12MHz 晶振,30pf 瓷片电容 2 个,显示电路:OLED 7针,复位电路:10uf 电解 电容,100K 电阻。指示灯电路:LED0805,1K电阻。采集电路:ADS1115,1K电阻,3K电阻。以及其余原件若干。
思路:
51内部是没有集成ADC的,如果需要测量外部模拟信号,那么是要用到ADC的,为了保证精度,这边用了ADS1115(16位的ADC)。如果直接用ADS1115进行电压读取,那么读的外部电压最大只有ADS1115的内部基准电压:4.096V。
为了解决这个问题:我才用了简单的电阻分压电路,用来讲测量的电压进行分压。之后乘以两个电阻之间的分压系数。
电路仿真部分:
使用软件:proteus 8.6
RP1使用10K排阻做上拉,因为51P0口的驱动能力不够,需要上拉驱动。
P1.1和P1.2作为ADC的IIC信号口。之后通过R1和R2进行电压的分压部分。
P2.0、2.1、2.2作为液晶的三个控制口。
分析:仿真中通过 LCD1602显示对应的采样电压转换后的值,ADC采用PCF8591作为ADC的采样芯片,因为PCF8591和ADS1115一样都是使用IIC作为协议的一种ADC,因此可以使用PCF8591模拟电压的数值,但是PCF8591是8位(精度有点低,不过凑活也能用,看要求)的ADC不符合,但是可以用来作为电路的仿真,验证电路的实现合理性。
程序设计部分:
代码部分分为:主程序,OLED的驱动部分,以及ADS1115读取数据部分。其中主程序负责进行OLED上的显示部分,数据的计算,滤波和误差处理等,ADS1115负责数据的采样和转换。OLED的显示部分,负责对于OLED进行读写指令来驱动和初始化OLED的显示,在初始化之后,通过对应的函数来进行数字和字母的显示
仿真验证结果
电路原理图绘制:
使用软件立创EDA(支持国产,立创YYDS)
PCB布局:
实物效果验证:
个人信息部分都打了码。
测量数据:
注意事项:
从最初的使用当ADS1115采样电压只能达到4.096V时,之后想到通过分压电阻分压的方式来进行数据电压测量的上限,在之后通过进行测量的时候发现了测量电压始终不准,最后发现是因为ADS1115并不是简单的16位的ADC,ADS1115的转换数据是15位,有一位是符号位,因此要除以不是2的16次方,而是2的15次方,其次在进行ADS1115进行测量时发现他的基准电压是4.096V,而且具有4个模式基准电压都是4.096V。
具体程序如下链接:
简易的电压表(ADC1115和OLDE显示).zip-硬件开发文档类资源-CSDN下载