• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【遇到难题】硬件解决不了,请教下单片机是怎么解决的

想设计一个输出0-3V(或5V/10V/30V)电压的电压源,听起来没难度,具体要求如下:

1. 可预置,即:支持0-9键盘设置电压。

2. 可微调,即:可用编码器进行实时微调。

3. 可粗调,即:可用左/右键来设置微调的位置,如:个位,十分位,百分位。。。。

4. 设置分辨率:1mV或0.1mV

想了解的问题如下:

1. 16位的AD够不够用?还是需要24位以上的才行?

2. MCU输出可变电压的原理是什么?

3. MCU对输出电压的温飘有没有影响?

4. 对MCU的性能有什么要求?

本人对软件不了解,烦请单片机版块各高手赐教,感谢!

全部回复(87)
正序查看
倒序查看
jiame2006
LV.7
2
2014-04-21 23:32

俺也想知道,没有耐心从头学起。。。顶

0
回复
javike
LV.12
3
2014-04-21 23:41
@jiame2006
俺也想知道,没有耐心从头学起。。。顶

先说说我自己用硬件实现的思路吧:

 键盘输入采用16-4线优先编码器把0-9进行二进制编码,采样1,2,4,8为基数的基准进行二进制的十进制加法运算,这样可以得到非常准确的输出电压值,而且温飘仅受基准影响,如果不计成本,实现0.1PPM的温飘都不是问题,但问题是,需要如果按1mV步进,需要1,2,4,8,10,20,40,80。。。。。。1000,2000,4000,8000mV的基准,这阵列下来有点伤不起。。。

0
回复
javike
LV.12
4
2014-04-21 23:42
@javike
先说说我自己用硬件实现的思路吧: 键盘输入采用16-4线优先编码器把0-9进行二进制编码,采样1,2,4,8为基数的基准进行二进制的十进制加法运算,这样可以得到非常准确的输出电压值,而且温飘仅受基准影响,如果不计成本,实现0.1PPM的温飘都不是问题,但问题是,需要如果按1mV步进,需要1,2,4,8,10,20,40,80。。。。。。1000,2000,4000,8000mV的基准,这阵列下来有点伤不起。。。
粗调微调编码器用门电路配合二进制可逆计数器就可以搞定,这个不是问题,分辨率也不是问题
0
回复
2014-04-22 09:03
术业有专攻!~看来多牛的硬件大虾,也会遇到软件的问题啊希望在这里能让你找到答案J版 ~~
0
回复
2014-04-22 09:16
@电源网-娜娜姐
术业有专攻!~看来多牛的硬件大虾,也会遇到软件的问题啊[图片]希望在这里能让你找到答案J版~~
答复: 
        1.你的输出精度是比较高的,输出精度和你的输出电压有关系,例如:0-3V  精度为1MV以最大电压计算
输出最大电压/单片机的分辨率=3V/2^16=3/65536=0.000046V  大概是46uV   这个精度是够的,但是还有个问题,这个精度和你的基准源也有关系,如果基准源精度不够多少位的AD都是扯淡的。
	2.你得去看看DA的问题了,你这么高的要求是必须要AD和DA芯片来进行处理的,并且DA的分辨率也得高
基准源也不能马虎,DA的结构也有很多种你去看看。例如:权电阻方式。
	3.如果你只是一般场合应用是没有问题的,DA输出的电压温飘不大,工业用都影响不大。
	4.MCU本身要求不高,你输出的电压精度问题都交给AD和DA去处理了。
0
回复
2014-04-22 09:22
@yueyunno1
答复:     1.你的输出精度是比较高的,输出精度和你的输出电压有关系,例如:0-3V精度为1MV以最大电压计算输出最大电压/单片机的分辨率=3V/2^16=3/65536=0.000046V大概是46uV这个精度是够的,但是还有个问题,这个精度和你的基准源也有关系,如果基准源精度不够多少位的AD都是扯淡的。2.你得去看看DA的问题了,你这么高的要求是必须要AD和DA芯片来进行处理的,并且DA的分辨率也得高基准源也不能马虎,DA的结构也有很多种你去看看。例如:权电阻方式。3.如果你只是一般场合应用是没有问题的,DA输出的电压温飘不大,工业用都影响不大。4.MCU本身要求不高,你输出的电压精度问题都交给AD和DA去处理了。
还有个问题输出精度必须预留余量,比如你要输出1MV的精度,你的AD和DA的最小精度必须得比这个还小,例如:最小精度0.5MV就可以满足,有条件还可以把最小精度设置小点,对输出的精度有影响,因为芯片制造的时候有一定的误差。
0
回复
ouyjangxi
LV.2
8
2014-04-22 09:54

要达到0.1mv的分辨率16bit AD 确实达不到 16bit的分辨率是0.4mv

0
回复
qinzutaim
LV.11
9
2014-04-22 10:33
@yueyunno1
答复:     1.你的输出精度是比较高的,输出精度和你的输出电压有关系,例如:0-3V精度为1MV以最大电压计算输出最大电压/单片机的分辨率=3V/2^16=3/65536=0.000046V大概是46uV这个精度是够的,但是还有个问题,这个精度和你的基准源也有关系,如果基准源精度不够多少位的AD都是扯淡的。2.你得去看看DA的问题了,你这么高的要求是必须要AD和DA芯片来进行处理的,并且DA的分辨率也得高基准源也不能马虎,DA的结构也有很多种你去看看。例如:权电阻方式。3.如果你只是一般场合应用是没有问题的,DA输出的电压温飘不大,工业用都影响不大。4.MCU本身要求不高,你输出的电压精度问题都交给AD和DA去处理了。
达到这个要求的基准电压源有么?什么型号?
0
回复
rsszd
LV.6
10
2014-04-22 10:57
@yueyunno1
答复:     1.你的输出精度是比较高的,输出精度和你的输出电压有关系,例如:0-3V精度为1MV以最大电压计算输出最大电压/单片机的分辨率=3V/2^16=3/65536=0.000046V大概是46uV这个精度是够的,但是还有个问题,这个精度和你的基准源也有关系,如果基准源精度不够多少位的AD都是扯淡的。2.你得去看看DA的问题了,你这么高的要求是必须要AD和DA芯片来进行处理的,并且DA的分辨率也得高基准源也不能马虎,DA的结构也有很多种你去看看。例如:权电阻方式。3.如果你只是一般场合应用是没有问题的,DA输出的电压温飘不大,工业用都影响不大。4.MCU本身要求不高,你输出的电压精度问题都交给AD和DA去处理了。
30V时1mv的分辨率就办不到了啊
0
回复
2014-04-22 13:33
@qinzutaim
达到这个要求的基准电压源有么?什么型号?

有很多AD  DA芯片内部是自带基准源的,这样的芯片要贵点,但是相对来说基准源要准确些,最好选择AD公司   TI公司的16位芯片~

0
回复
2014-04-22 14:08
MCU温漂确实是个大问题,感觉外部AD基准会比内部温漂会好点,而且硬件思路也有点问题。硬件思路应该是按键译码后(其实可以单片机自己解码)先解码键值,然后转换成和AD相同的16进制,然后是采样输出电压,设置的16进制和采样的16进制进行对比,控制MOS管占空比(这个需要复杂的算法)实时采样AD控制占空比,达到稳定输出,也可以用高速光耦做隔离,还可以通过软件起到短路保护,过压保护,感觉已经像数字电源迈进了,期待楼主到时实物
0
回复
2014-04-22 14:12
@wangchuangwccc
MCU温漂确实是个大问题,感觉外部AD基准会比内部温漂会好点,而且硬件思路也有点问题。硬件思路应该是按键译码后(其实可以单片机自己解码)先解码键值,然后转换成和AD相同的16进制,然后是采样输出电压,设置的16进制和采样的16进制进行对比,控制MOS管占空比(这个需要复杂的算法)实时采样AD控制占空比,达到稳定输出,也可以用高速光耦做隔离,还可以通过软件起到短路保护,过压保护,感觉已经像数字电源迈进了,期待楼主到时实物

还是用DA输出吧,占空比想达到高精度根本就不可能!

0
回复
wangshujun
LV.8
14
2014-04-22 16:18
@javike
先说说我自己用硬件实现的思路吧: 键盘输入采用16-4线优先编码器把0-9进行二进制编码,采样1,2,4,8为基数的基准进行二进制的十进制加法运算,这样可以得到非常准确的输出电压值,而且温飘仅受基准影响,如果不计成本,实现0.1PPM的温飘都不是问题,但问题是,需要如果按1mV步进,需要1,2,4,8,10,20,40,80。。。。。。1000,2000,4000,8000mV的基准,这阵列下来有点伤不起。。。

基准的精度没有你想象的好,达到常规温度范围1ppm以下温漂的基准都不便宜,基准芯片常见的标注方式是ppm/摄氏度,换算到全温度范围误差都很大的

0
回复
2014-04-22 16:20
@wangshujun
基准的精度没有你想象的好,达到常规温度范围1ppm以下温漂的基准都不便宜,基准芯片常见的标注方式是ppm/摄氏度,换算到全温度范围误差都很大的
这个有道理,基准源是关键,并且很贵!个人建议用好点的AD  DA  内部带基准源的实惠点~
0
回复
wangshujun
LV.8
16
2014-04-22 16:26
@javike
先说说我自己用硬件实现的思路吧: 键盘输入采用16-4线优先编码器把0-9进行二进制编码,采样1,2,4,8为基数的基准进行二进制的十进制加法运算,这样可以得到非常准确的输出电压值,而且温飘仅受基准影响,如果不计成本,实现0.1PPM的温飘都不是问题,但问题是,需要如果按1mV步进,需要1,2,4,8,10,20,40,80。。。。。。1000,2000,4000,8000mV的基准,这阵列下来有点伤不起。。。

编码器之类的就别考虑了,成本比单片机贵多了,实现难度更大

16位ad的分辨数有65536,在3v输出时可以达到0.046mv的分辨率,但是一般来说16位的可信精度也就是15位甚至更低一些。这时候精度差不多是0.1-0.2mv,还是充分满足要求的

30v的时候应该能到1-2mv也能有效的满足需要的

0
回复
wangshujun
LV.8
17
2014-04-22 16:29
@wangchuangwccc
MCU温漂确实是个大问题,感觉外部AD基准会比内部温漂会好点,而且硬件思路也有点问题。硬件思路应该是按键译码后(其实可以单片机自己解码)先解码键值,然后转换成和AD相同的16进制,然后是采样输出电压,设置的16进制和采样的16进制进行对比,控制MOS管占空比(这个需要复杂的算法)实时采样AD控制占空比,达到稳定输出,也可以用高速光耦做隔离,还可以通过软件起到短路保护,过压保护,感觉已经像数字电源迈进了,期待楼主到时实物
独立的ad和da只和外部的基准源相关和单片机的温漂没啥关系的,即使单片机内部的高位的ad和da也有独立的参考电压输入的
0
回复
javike
LV.12
18
2014-04-22 16:41
@wangshujun
基准的精度没有你想象的好,达到常规温度范围1ppm以下温漂的基准都不便宜,基准芯片常见的标注方式是ppm/摄氏度,换算到全温度范围误差都很大的
市场0.1PPM的基准不多,但还是有的,凌特的“老头子”就有2款,不过单价在250-300RMB,DIY玩玩还是可以接受的,实测过可以达到0.05PPM左右
0
回复
javike
LV.12
19
2014-04-22 16:42
@wangshujun
编码器之类的就别考虑了,成本比单片机贵多了,实现难度更大16位ad的分辨数有65536,在3v输出时可以达到0.046mv的分辨率,但是一般来说16位的可信精度也就是15位甚至更低一些。这时候精度差不多是0.1-0.2mv,还是充分满足要求的30v的时候应该能到1-2mv也能有效的满足需要的
编码器是必须的,电位器满载不了寿命和可靠性,编码器做飞梭应该是不二的选择
0
回复
wangshujun
LV.8
20
2014-04-22 16:43
@javike
市场0.1PPM的基准不多,但还是有的,凌特的“老头子”就有2款,不过单价在250-300RMB,DIY玩玩还是可以接受的,实测过可以达到0.05PPM左右
这个价格是自带恒温的吧,好像国办也有,开机需要过一会才稳定的,一般产品里面用不起呀
0
回复
wangshujun
LV.8
21
2014-04-22 16:44
@javike
编码器是必须的,电位器满载不了寿命和可靠性,编码器做飞梭应该是不二的选择
我说的编码器是指16/4的编译码器,不是用于输入的旋转编码器
0
回复
javike
LV.12
22
2014-04-22 16:47
@yueyunno1
答复:     1.你的输出精度是比较高的,输出精度和你的输出电压有关系,例如:0-3V精度为1MV以最大电压计算输出最大电压/单片机的分辨率=3V/2^16=3/65536=0.000046V大概是46uV这个精度是够的,但是还有个问题,这个精度和你的基准源也有关系,如果基准源精度不够多少位的AD都是扯淡的。2.你得去看看DA的问题了,你这么高的要求是必须要AD和DA芯片来进行处理的,并且DA的分辨率也得高基准源也不能马虎,DA的结构也有很多种你去看看。例如:权电阻方式。3.如果你只是一般场合应用是没有问题的,DA输出的电压温飘不大,工业用都影响不大。4.MCU本身要求不高,你输出的电压精度问题都交给AD和DA去处理了。

基准可以达到的,但我担心单片机对基准做分压的精度,而且不懂单片机是如何实现分压的,如果是PWM积分,估计误差不小。

DA/AD用16位的应该差不多了吧,权电阻还是串电阻?我了解过威世和安捷伦的电阻网络模块芯片,都是需要比较特殊的分压,不是二进制也不是十进制的,比较郁闷。

我担心的不是DA的温飘,担心是MCU输出的温飘

0
回复
javike
LV.12
23
2014-04-22 16:48
@yueyunno1
有很多AD DA芯片内部是自带基准源的,这样的芯片要贵点,但是相对来说基准源要准确些,最好选择AD公司  TI公司的16位芯片~

自带基准的基准肯定达不到要求。

我预计的基准和AD,DA加起来估计500RMB左右

0
回复
javike
LV.12
24
2014-04-22 16:49
@ouyjangxi
要达到0.1mv的分辨率16bitAD确实达不到16bit的分辨率是0.4mv
这个怎么算来的?
0
回复
javike
LV.12
25
2014-04-22 16:51
@wangchuangwccc
MCU温漂确实是个大问题,感觉外部AD基准会比内部温漂会好点,而且硬件思路也有点问题。硬件思路应该是按键译码后(其实可以单片机自己解码)先解码键值,然后转换成和AD相同的16进制,然后是采样输出电压,设置的16进制和采样的16进制进行对比,控制MOS管占空比(这个需要复杂的算法)实时采样AD控制占空比,达到稳定输出,也可以用高速光耦做隔离,还可以通过软件起到短路保护,过压保护,感觉已经像数字电源迈进了,期待楼主到时实物
控制占空比的方式误差会比较大吧
0
回复
javike
LV.12
26
2014-04-22 16:52
@wangshujun
我说的编码器是指16/4的编译码器,不是用于输入的旋转编码器
16-4的编码器用CD4000系列的芯片就可以搞定,几块钱的东西,很便宜的
0
回复
wangshujun
LV.8
27
2014-04-22 17:06
@javike
16-4的编码器用CD4000系列的芯片就可以搞定,几块钱的东西,很便宜的

你需要的功能用单片的话全算上5块钱就够了(不算adda和基准,那个要求高就没边了),而且就是一片芯片,布线简单方便

3-4块钱的单片机加上驱动数码管的595一类的芯片

如果控制精度在1mv,连ad和da都算上用一个10块钱的芯片就足够了

0
回复
wangshujun
LV.8
28
2014-04-22 17:07
@javike
基准可以达到的,但我担心单片机对基准做分压的精度,而且不懂单片机是如何实现分压的,如果是PWM积分,估计误差不小。DA/AD用16位的应该差不多了吧,权电阻还是串电阻?我了解过威世和安捷伦的电阻网络模块芯片,都是需要比较特殊的分压,不是二进制也不是十进制的,比较郁闷。我担心的不是DA的温飘,担心是MCU输出的温飘
mcu又不参与ad和da,处理的都是数字信号,票一点没影响
0
回复
wangshujun
LV.8
29
2014-04-22 17:21
@javike
控制占空比的方式误差会比较大吧
在你追求的精度上pwm是没有任何意义的,反应慢,精细度差
0
回复
javike
LV.12
30
2014-04-22 17:23
@wangshujun
你需要的功能用单片的话全算上5块钱就够了(不算adda和基准,那个要求高就没边了),而且就是一片芯片,布线简单方便3-4块钱的单片机加上驱动数码管的595一类的芯片如果控制精度在1mv,连ad和da都算上用一个10块钱的芯片就足够了
10块钱肯定是达不到这个要求的,这个不用算,我预算成本500块做到就不错了。
0
回复
javike
LV.12
31
2014-04-22 17:24
@wangshujun
mcu又不参与ad和da,处理的都是数字信号,票一点没影响

那输出的电压不是MCU输出的?是DA?

比如基准源是7V的,要输出1V,分压是AD完成的?这个我有点不理解了,是如何完成的,精度如何保证?

0
回复