找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2928|回复: 11
收起左侧

单片机A/D自动切换量程电压表200mV量程切换做不出,求大神指导

[复制链接]
ID:733535 发表于 2020-7-7 22:09 | 显示全部楼层 |阅读模式
120黑币
本帖最后由 扪心王老师 于 2020-7-8 23:11 编辑

电路原理很简单,添加起来应该也很简单,目前实现了2V量程和20V量程的切换也就是19.99V和1.999V的功能,想要实现200mV档位也就是199.9mV的自动切换,但是因为我只会用LED数码管,而师傅要求要用LCD显示屏,所以显示电路以及代码是借鉴别的贴主的,导致我显示电路部分看不太懂。

输入电压是首先接入子图里的运算放大器电路中进行分压,输出三个不同档位的电压再分别送入ADC0809的其中三个输入端口,三个档位的分压比分别为1/5、2、20,输入电压不同时候,相对应得档位会处于选通状态,再使用单片机将A/D转换后的得到的数字量进行换算后送入显示。

2V档位:
00.png

20V档位:
1.png

希望得到的200mV档位的显示效果:电压小于200mV时,四位半199.9mV显示,不是要0.1mV精度,只是要小数点后一位显示出来就好了。

附件里附上keil源程序和proteus仿真程序的附件,供各大神位查看,小弟在此期待论坛里大神们的指导,感激不尽!

全部资料51hei下载地址:
自动换挡电压表.7z (4.07 MB, 下载次数: 34)

最佳答案

查看完整内容

我对程序进行了Keil单步调试,程序是进行了通道选择的。而且他的显示方式不是mv,而是0.xxV。内部有个参数L就是有1,2,3三个通道值的,而且,mcu通过s1,s2,s3对通道进行了读取控制。但是对于通道in1来说,由于内部电路采用了缩小放大倍数的电路,所以其值的偏差和稳定性都很差。 系统有提示GMIN放大倍数必须在1~120之间,不能小于1,而实际值是0.001。也就是无法放大。这样第一通道in1的数据就不可取了。因此系统通常都在in2,in ...
回复

使用道具 举报

ID:62509 发表于 2020-7-7 22:09 | 显示全部楼层
我对程序进行了Keil单步调试,程序是进行了通道选择的。而且他的显示方式不是mv,而是0.xxV。内部有个参数L就是有1,2,3三个通道值的,而且,mcu通过s1,s2,s3对通道进行了读取控制。但是对于通道in1来说,由于内部电路采用了缩小放大倍数的电路,所以其值的偏差和稳定性都很差。
系统有提示GMIN放大倍数必须在1~120之间,不能小于1,而实际值是0.001。也就是无法放大。这样第一通道in1的数据就不可取了。因此系统通常都在in2,in3上取值。
我们假设是通常取GMIN=2,那么第二通道就是GMIN=20,而第三通道就是GMIN=200,这样就超出了放大器所能允许的范围了。因此上下要找到一个合适的放大倍数非常困难。这就是系统经常报错的根本原因。
你的要求显示到毫伏这种方式,实际是没有意义的,因为原理模型就有一个通道是错误的,其他就只是花样问题。没有实际意义。你甚至都可以让所有数据显示成毫伏。数据都不对,显示成毫伏有用吗?
回复

使用道具 举报

ID:733535 发表于 2020-7-8 10:39 | 显示全部楼层
这是一个技术分享的论坛,拿着自己签到了好几天攒下的所有黑币就来提问了,求大神指导一下啊
回复

使用道具 举报

ID:426143 发表于 2020-7-8 16:38 | 显示全部楼层
都是电压AD转换,原理是一样的,只要公式计算时量程改变就好了
回复

使用道具 举报

ID:733535 发表于 2020-7-8 17:57 | 显示全部楼层
土豆西红柿 发表于 2020-7-8 16:38
都是电压AD转换,原理是一样的,只要公式计算时量程改变就好了

嗯,按理说是这样,我确实也在“_02v”函数里换算了几次,但都达不到效果。不知道您是否看了我附件里的程序,如果修改起来很简单,您可以给我说一下具体修改过程吗?
回复

使用道具 举报

ID:62509 发表于 2020-7-9 06:43 | 显示全部楼层
我下载了你的资料,并且观看了你的模型和程序,主要的出在AMP的复合模块中,其内部使用了lm324四芯片放大器两个。但电路不完整,负反馈放大电路电阻匹配不合适。我做了基本电路修复,和基本电阻匹配。现在能运行起来了,但还是提示放大倍数超限。你自己测算调整吧。我给你发了一个负反馈直流放大电路计算教程,望受用。另外修改后的程序我也发给你。还给你发了一个其他类型的电压测量电路,望参考。谢谢!

电路计算

电路计算

自动换挡电压表.7z

194.34 KB, 下载次数: 13

修改后的模型

电压表.zip

66.43 KB, 下载次数: 10

参比模型

评分

参与人数 1黑币 +20 收起 理由
admin + 20 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:62509 发表于 2020-7-9 09:39 | 显示全部楼层
你好!你的问题用新 模型解决了。精度在0.0001以下。有图。

模型整体显示

模型整体显示

三路信号高度一致

三路信号高度一致

自动换挡电压表.7z

197.71 KB, 下载次数: 14

新模型程序

评分

参与人数 1黑币 +40 收起 理由
admin + 40 绝世好帖!

查看全部评分

回复

使用道具 举报

ID:733535 发表于 2020-7-9 23:37 | 显示全部楼层
shinezhangxiao 发表于 2020-7-9 09:39
你好!你的问题用新 模型解决了。精度在0.0001以下。有图。

首先谢谢您的热心的回贴和帮忙修改,但我遇到的主要是编程问题,我目前在做的电路是一个四位半显示且可以自动切换200mV、2V、20V三种档位的电压表,您看了我的仿真后应该可以发现,电压大于2V时,会自动从1.999V的显示切换到19.99V显示,也就是20V档位显示,但电压低于200mV时和低于2V时共用一个档位,就是1.999V的显示档位,因为我不知道输入电压低于200mV时怎么转换数值并显示(电压低于200mV时处理的是IN2通道的数值),所以目前只实现了2V档位和20V档位的自动切换,想要实现200mV(显示方式为199.9mV)和2V档位的自动切换。
回复

使用道具 举报

ID:62509 发表于 2020-7-10 04:44 | 显示全部楼层
我又重新对放大器AMP内的放大电路进行了重新计算,现在的测量和显示精度,对于目前的模型来说,应该是最好的情况了。全量程的精度基本小于1%。详见压缩文件。
由于电路的电子平衡是动态的,所以初值很重要!建议滑动电阻的初值选择在高位,也就是在75%这头,逐渐调整下来,这样才能保证电路平衡。
谢谢!

自动换挡电压表.7z

1.17 MB, 下载次数: 18

调整了AMP模块

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:213173 发表于 2020-7-10 06:54 | 显示全部楼层
本帖最后由 wulin 于 2020-7-10 07:11 编辑

感觉楼主的硬件构架没有问题,程序构架不理想。建议用轮询法,得到不断更新的三组数据,判断三组数据之中最合适的数据送LCD显示。如此再扩大到4挡也不难。
回复

使用道具 举报

ID:733535 发表于 2020-7-10 09:42 | 显示全部楼层
shinezhangxiao 发表于 2020-7-10 05:13
我对程序进行了Keil单步调试,程序是进行了通道选择的。而且他的显示方式不是mv,而是0.xxV。内部有个参数L ...

是我有些急于求成了,我也知道自己本身的电路精度达不到,就算显示出来也不理想,但如果我要做出200mV档位,那么显示单位就只能是199.9mV这种,而不是全程使用一个单位,目前看来这种结构可能实现不了。感谢您的指正,补充了我的一些硬件知识,我准备重新再设计一下电路图啦。
回复

使用道具 举报

ID:733535 发表于 2020-7-10 09:47 | 显示全部楼层
wulin 发表于 2020-7-10 06:54
感觉楼主的硬件构架没有问题,程序构架不理想。建议用轮询法,得到不断更新的三组数据,判断三组数据之中最 ...

感谢回复,我程序设计确实不太合理,但硬件构架也不是没有问题。比如精度和稳定性都不理想,您的意见对我还是很有帮助的,我再编程会使用轮询法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表