搜索
bottom↓
回复: 55

求助:能否使用51单片机完成16位的AD或者DA应用?

[复制链接]

出0入0汤圆

发表于 2013-4-19 15:43:24 | 显示全部楼层 |阅读模式
如题,小弟最近想做高精度的数字电流源,16位DA精度基本满足要求,但是以前只用过8位DA+STC89C52实现,不知道16位能否用这种单片机实现?是不是必须使用16位ARM?或者请推荐一款16位CPU?
感激不尽呐

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-4-19 18:34:09 | 显示全部楼层

出0入0汤圆

发表于 2013-4-19 19:38:57 | 显示全部楼层
可以用串行的AD或是DA,分高低位取出AD或DA的值在51单片机內處理數據就OK了

出0入0汤圆

发表于 2013-4-19 19:41:50 | 显示全部楼层
DA可以用串行的啊,或者用16位430

出0入0汤圆

发表于 2013-4-19 19:44:44 | 显示全部楼层
完全可以
只是速度慢一些

出0入0汤圆

发表于 2013-4-19 21:55:46 | 显示全部楼层
如果速度要求不是很高的话,可以使用串行的DA的,要么就IO复用的方式

出0入0汤圆

发表于 2013-4-19 22:01:04 | 显示全部楼层
8位的单片机也可以处理16位的数据;
430是16位的单片机;
ARM是32位的……

出0入0汤圆

发表于 2013-4-20 13:31:50 | 显示全部楼层
用16位的PWM来模拟,C8051F带这个功能。

出0入0汤圆

发表于 2013-4-20 20:04:19 | 显示全部楼层
可以的。比如说16位的ad,那只是说ad可以把采集来的电压转换成16位的数字量,16位的数字量在51中用个int型就可以储存了,与51是8位的没关系的。要是考虑到端口的话,串行一般有3跟线(片选、时钟和数据)。你可以查查用51控制的16位的ad7705的文档,看完后应该能解除疑惑了

出0入0汤圆

发表于 2013-4-20 23:27:14 | 显示全部楼层
用51控制的16位的ad7705很多年前试过,不过那时候很水的

出0入0汤圆

发表于 2013-4-22 13:41:46 | 显示全部楼层
明显8位的就可以控制了!

出0入0汤圆

发表于 2013-4-22 13:52:05 | 显示全部楼层
推荐 飞思卡尔 16位单片机 具体型号MSGS12 系列

出0入0汤圆

发表于 2013-4-22 14:29:17 | 显示全部楼层
貌似与单片机的关系不是很大吧!AD与DA这个玩意选择串行的就行了,16位的精度,讲究的还是基准源的选择,和整个电路的布板设计的要求更多!

出0入0汤圆

发表于 2013-4-22 14:32:14 | 显示全部楼层
过去一直用51+ad977a ,无压力,高速上兆的就别想了

出0入0汤圆

发表于 2013-4-22 14:38:03 | 显示全部楼层
用两个IO口,串行应该就行了吧。。。

出0入0汤圆

发表于 2013-4-22 14:49:45 | 显示全部楼层
我觉得处理好基准电压才是难事

出0入0汤圆

发表于 2013-4-22 17:34:04 | 显示全部楼层
当然可以啦!串行不存在问题,并行的话 可以用两组IO口呗!

出0入0汤圆

发表于 2013-4-24 11:57:08 | 显示全部楼层
可以的啊,无非高低分开处理。。。。。。。。。

出0入0汤圆

发表于 2013-4-24 12:21:42 | 显示全部楼层
那,24位的AD必须24为的CPU了? 那哪儿找去啊。

出0入0汤圆

发表于 2013-4-24 12:22:08 | 显示全部楼层
仅从AD的角度考虑,51没问题的。24位都没问题。

出0入85汤圆

发表于 2013-4-24 12:28:28 | 显示全部楼层
51? 16bit的精度?16bit分辨率还差不多

出0入0汤圆

发表于 2013-4-24 21:27:52 | 显示全部楼层
PIC的也行

出0入0汤圆

 楼主| 发表于 2013-4-26 14:02:39 | 显示全部楼层
censtar 发表于 2013-4-24 12:22
仅从AD的角度考虑,51没问题的。24位都没问题。

感谢各位大侠,大侠们推荐一款16位DA芯片呗,本来考虑使用MAX541,不过看100块大洋感觉有点贵啊,有木有便宜的啊?请指教啊

出0入0汤圆

 楼主| 发表于 2013-4-26 14:03:12 | 显示全部楼层
dingdan258 发表于 2013-4-24 11:57
可以的啊,无非高低分开处理。。。。。。。。。

和我想的一样谢谢

出0入0汤圆

 楼主| 发表于 2013-4-26 14:03:36 | 显示全部楼层
kyan3886 发表于 2013-4-22 14:32
过去一直用51+ad977a ,无压力,高速上兆的就别想了

感谢,,,大侠推荐一款16位DA芯片呗,本来考虑使用MAX541,不过看100块大洋感觉有点贵啊,有木有便宜的啊?请指教啊

出0入0汤圆

 楼主| 发表于 2013-4-26 14:05:22 | 显示全部楼层
聆听风声 发表于 2013-4-22 14:29
貌似与单片机的关系不是很大吧!AD与DA这个玩意选择串行的就行了,16位的精度,讲究的还是基准源的选择,和 ...

嗯,对极,多谢,能不能推荐一款便宜点的16位DA芯片?

出0入0汤圆

 楼主| 发表于 2013-4-26 14:06:11 | 显示全部楼层
glllglll 发表于 2013-4-20 20:04
可以的。比如说16位的ad,那只是说ad可以把采集来的电压转换成16位的数字量,16位的数字量在51中用个int型 ...

感谢感谢,能不能推荐一款便宜点的16位da芯片啊

出0入0汤圆

发表于 2013-4-26 14:18:15 | 显示全部楼层
速度不高的DA片子很多,要就呼一下啦!

出0入0汤圆

发表于 2013-4-26 15:06:20 | 显示全部楼层
最好建议才有内部带AD功能的单片机 外接单片机 做到16位精度 基准源(参考点)的选择很头疼 做不好还不如10位或者8位的AD

出0入0汤圆

 楼主| 发表于 2013-4-26 15:28:49 | 显示全部楼层
电子爱好者_MCU 发表于 2013-4-26 15:06
最好建议才有内部带AD功能的单片机 外接单片机 做到16位精度 基准源(参考点)的选择很头疼 做不好还不如10 ...

感谢,我想用8位的,毕竟用过0832,但老师要求步进1mv精度0.01mv,8位的话步进算下来10mv左右吧,精度好像也不满足,悲催!

出0入0汤圆

 楼主| 发表于 2013-4-26 15:29:53 | 显示全部楼层
lpc1788 发表于 2013-4-26 14:18
速度不高的DA片子很多,要就呼一下啦!

大侠推荐一款便宜点的16位da啊?多谢多谢~~~

出0入0汤圆

发表于 2013-4-26 16:28:20 | 显示全部楼层
kpzclxtx 发表于 2013-4-26 14:02
感谢各位大侠,大侠们推荐一款16位DA芯片呗,本来考虑使用MAX541,不过看100块大洋感觉有点贵啊,有木有 ...

AD7705     

出0入0汤圆

发表于 2013-4-26 16:28:36 | 显示全部楼层
TM7705    也差不多

出0入0汤圆

 楼主| 发表于 2013-4-26 18:23:30 | 显示全部楼层
censtar 发表于 2013-4-26 16:28
AD7705

这个是AD转换器,我在找DA芯片亲,不过必须感谢。。

出350入477汤圆

发表于 2013-4-26 19:32:45 来自手机 | 显示全部楼层
pwm当da最便宜

出0入8汤圆

发表于 2013-4-26 19:43:51 | 显示全部楼层
51单片机没有16位的AD吧  好像也就10位的最高

出350入477汤圆

发表于 2013-4-26 19:47:15 来自手机 | 显示全部楼层
高分辨率高精度的da都不便宜  
便宜没好货
pwm便宜但线性不好
不过如果愿意费点事,用个高精度ad采自己输出的值然后再调整,就可以不依靠da的线性了
16位线性的ad还是很好找的

出0入0汤圆

发表于 2013-4-26 22:43:51 | 显示全部楼层
marshallemon 发表于 2013-4-24 12:28
51? 16bit的精度?16bit分辨率还差不多

51为什么不能做16bit精度?
ADC的精度和单片机有什么关系?
不要求速度的话,C51哪怕处理128bit的数据又有什么问题?

出0入85汤圆

发表于 2013-4-26 22:51:39 | 显示全部楼层
本帖最后由 marshallemon 于 2013-4-26 23:06 编辑
bigeblis 发表于 2013-4-26 22:43
51为什么不能做16bit精度?
ADC的精度和单片机有什么关系?
不要求速度的话,C51哪怕处理128bit的数据又 ...


看来貌似你是高手了,你自己做过16bit的DA吗?你见过IC>20bit的DA没?你知道PWM做DA有哪些因素要注意吗?128bit的分辨率有意义吗?128bit的分辨率你能做到多高的nosie free分辨率?又能做到多高的INL,DNL?

另外说你下你的128bitDA的思想,用PWM做DA,是需要外接RC网络的,要做到128bit这时间常数可不小,电阻大了4KRT噪声大,电容大了就要注意漏电,吸附效应和ESL了,毕竟你的频率较低所以漏电也不能小视

出0入0汤圆

发表于 2013-4-27 00:04:49 | 显示全部楼层
marshallemon 发表于 2013-4-26 22:51
看来貌似你是高手了,你自己做过16bit的DA吗?你见过IC>20bit的DA没?你知道PWM做DA有哪些因素要注意吗? ...

请问,你说的这些问题,好像都是外围模拟电路的难点吧?与你使用什么单片机来提供原始数据有关系么?
你认为C51不能做16bit精度的处理,我认为这个是可以的,仅此而已!

出0入85汤圆

发表于 2013-4-19 15:43:25 | 显示全部楼层
本帖最后由 marshallemon 于 2013-4-27 10:51 编辑
bigeblis 发表于 2013-4-27 00:04
请问,你说的这些问题,好像都是外围模拟电路的难点吧?与你使用什么单片机来提供原始数据有关系么?
你 ...


首先说下影响PWM做DA精度和噪声的因素,使用MCU来做PWM da,首先要保证晶振的频率的稳定度,其次要保证PWM脉宽的稳定度,传统的51内部没有PWM,使用软件模拟的话要充分考虑初值重装带来的影响,这个影响处理不好可是要累加的,再次要考虑PWM幅度的稳定性。不论是MCU内部还是外围电路的设计都将表现为精度,无噪声分辨率,重复性,再现性等问题。
你歪楼了吧,我只是说16bit的精度比较不好实现,由其对于问出这种问题来的LZ,先作出16bit的分辨率,再说16bit的精度精度,但并不是说绝对不能实现,而是要按顺序来,现成的DA大多数也只是16bit的分辨率,16bit的精度,这个要是那么容易实现就好了,但不排除你对这个的设计很有天赋,凡事不能光靠理论去想,要自己亲手做过才知道,我做过16bit分辨率的DA,PWM实现的
http://bbs.ednchina.com/BLOG_ARTICLE_3010874.HTM

出350入477汤圆

发表于 2013-4-27 12:18:06 | 显示全部楼层
marshallemon 发表于 2013-4-27 10:46
首先说下影响PWM做DA精度和噪声的因素,使用MCU来做PWM da,首先要保证晶振的频率的稳定度,其次要保证PW ...

精度问题如果你可以降低速度,那么可以用一个精确的AD来校正。
精确到16位的SigmaDeltaAD很好找。
这样这个PWM的DA只需要关心噪声和短稳
温漂老化什么的都可以靠精确AD来补偿
当然PWM的分辨率最好是超过16位,例如17-18位,这样得到16位精确度就比较容易了
如果只有16位PWM,在某些点上没法稳定到16位。某些时候PWM增加1个LSB,结果AD可能测到数据变化了2个LSB,那你就没办法减小半个LSB了。

出0入85汤圆

发表于 2013-4-27 12:50:28 | 显示全部楼层
本帖最后由 marshallemon 于 2013-4-27 12:53 编辑
redroof 发表于 2013-4-27 12:18
精度问题如果你可以降低速度,那么可以用一个精确的AD来校正。
精确到16位的SigmaDeltaAD很好找。
这样这 ...


恩,做成闭环当然是最妥当不过了,再能加上内部校准(自带传递测量)哪就更好了,例如FLUKE的高位万用表校准仪,另外要看你的满幅度的大小,你的满幅度高了同样是16bit自然对噪声要求就相对低了。
不降低速度也是可以的,使用两路PWM合成就好,这个速度也不损失,精度还能提高。
我没说实现不了,只是鉴于lZ问的问题,能看出LZ对这个没有概念,建议LZ还是先把16bit的分辨率做出来,再说精度的问题,没有>16bit的分辨率,谈啥16bit的精度。
我对DA不只要求短温,长期稳定性,年稳也是有要求的。没有了年稳,只能在刚校准后来说这个精度了

出0入0汤圆

发表于 2013-4-27 13:17:40 | 显示全部楼层
我正在用的,ST32M015,M0的核,10人民币以内

出0入0汤圆

 楼主| 发表于 2013-4-27 13:39:00 | 显示全部楼层
marshallemon 发表于 2013-4-27 12:50
恩,做成闭环当然是最妥当不过了,再能加上内部校准(自带传递测量)哪就更好了,例如FLUKE的高位万用表校 ...

感谢,现阶段是想用16位的MAX5541来实现,想先做出来看看结果。分辨率我可以理解,但是精度为什么很难实现?这个还是有点疑惑?感谢大牛!

出350入477汤圆

发表于 2013-4-27 13:42:56 | 显示全部楼层
marshallemon 发表于 2013-4-27 12:50
恩,做成闭环当然是最妥当不过了,再能加上内部校准(自带传递测量)哪就更好了,例如FLUKE的高位万用表校 ...

呵呵,就是啊
所以我才说要他做成闭环的,靠一个精确的AD反馈。
现在的24位SigmaDelta AD完全是白菜价,稳定到18-19位的线性还是轻轻松松的。
这样PWM只要分辨率和噪声够了就行,温漂和长稳完全靠AD实时校正就行了。

要是找个直接达到这种精度的DA,我真不知道是什么价格了。

至于您说用两路PWM合成,我不明白这是什么意思。。。
是把一个PWM的值缩小若干倍,然后跟第二个PWM做加法,以此来降低PWM的位数吗?
这样会确实会加快稳定速度,但代价是校准计算复杂了很多(例如,你发现需要增加30个输出LSB,那么应该把高位PWM加几,低位PWM加几?)

出0入85汤圆

发表于 2013-4-27 13:53:45 | 显示全部楼层
redroof 发表于 2013-4-27 13:42
呵呵,就是啊
所以我才说要他做成闭环的,靠一个精确的AD反馈。
现在的24位SigmaDelta AD完全是白菜价, ...


的确是这样的,输出两路PWM,一路是大信号,一路做小信号,然后合成,FLUKE的高位的万用表校准仪也是使用的PWM做的da,输出频率大概在80HZ左右,我用MCU的硬件PWM做到16bit的频率为122hZ,现在的分辨率是31.25uV,倘若我想再提高分辨率,外围的信号切换速度就不得不考虑了,能满足较高的切换速度的管子比较难找,所以如果采用两路合成这样对这个管子的要求就低了许多。

最好的闭环+自校准,这样年稳也有保障

出0入85汤圆

发表于 2013-4-27 14:00:22 | 显示全部楼层
kpzclxtx 发表于 2013-4-27 13:39
感谢,现阶段是想用16位的MAX5541来实现,想先做出来看看结果。分辨率我可以理解,但是精度为什么很难实 ...

所谓的精度你可以这样理解,对于AD来说接入的是标准的2.000V,AD运算出来的就是2.000V,精度要受到年稳的制约,例如你的万用表年稳是300ppm,也就是一年变化300/1000000,你刚校准玩时测试2V的标准电压是2.000000,结果一年后再测标准2V成了2.000600V了

出0入0汤圆

 楼主| 发表于 2013-4-27 14:13:56 | 显示全部楼层
marshallemon 发表于 2013-4-27 14:00
所谓的精度你可以这样理解,对于AD来说接入的是标准的2.000V,AD运算出来的就是2.000V,精度要受到年稳的 ...

理解了,,感谢大牛

出0入0汤圆

 楼主| 发表于 2013-4-27 14:58:11 | 显示全部楼层
bbssilverkey 发表于 2013-4-22 14:49
我觉得处理好基准电压才是难事

感谢,不知道大牛2.5v的基准电压是用什么芯片?本来想用TL431,但看有人说这个不稳呢?

出0入0汤圆

发表于 2013-4-27 16:34:36 | 显示全部楼层
xujihu 发表于 2013-4-26 19:43
51单片机没有16位的AD吧  好像也就10位的最高

增强型的有,c8051f 系列的有24bit的,精度嘛....

出0入85汤圆

发表于 2013-5-1 08:26:55 | 显示全部楼层
kpzclxtx 发表于 2013-4-27 14:58
感谢,不知道大牛2.5v的基准电压是用什么芯片?本来想用TL431,但看有人说这个不稳呢? ...

基准的选用这个种类很多,如果你做的只是可以提供大功率的电源则对这个基准要求并不高,TL431即可,如果要求再稍高一些可以选择LM385.我做的并不是功率电源,而是参考电源,输出功率很小,输出电流最大只有10mA,电压基准用的REF5020I.

出0入0汤圆

 楼主| 发表于 2013-5-1 14:50:19 | 显示全部楼层
marshallemon 发表于 2013-5-1 08:26
基准的选用这个种类很多,如果你做的只是可以提供大功率的电源则对这个基准要求并不高,TL431即可,如果 ...

感谢,最终选择了REF192,也只是作为电压基准非功率器件。还有一个问题就是,如果我希望系统断电后重启DA输出仍旧是上一次设定的输出,应该怎么实现?

出0入85汤圆

发表于 2013-5-1 20:54:44 | 显示全部楼层
kpzclxtx 发表于 2013-5-1 14:50
感谢,最终选择了REF192,也只是作为电压基准非功率器件。还有一个问题就是,如果我希望系统断电后重启DA ...

使用外置的E2PROM或FLASH,或使用MCU内部的IAP写FLASH记录当前的输出HEX值,上电后读取这个HEX值输出

出0入0汤圆

 楼主| 发表于 2013-5-1 22:15:57 | 显示全部楼层
marshallemon 发表于 2013-5-1 20:54
使用外置的E2PROM或FLASH,或使用MCU内部的IAP写FLASH记录当前的输出HEX值,上电后读取这个HEX值输出 ...

真心感谢,准备使用AT24C01、、、、

出0入0汤圆

发表于 2013-5-1 22:19:18 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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