[匠人手记] 读匠人手记有惑

[复制链接]
 楼主| 路在何方 发表于 2008-7-18 20:20 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我在读匠人手记&nbsp;用IO口代替AD转换这一章时,产生了问题。如果我用51单片机的话,也可以吗?51单片机的IO口默认都是FF,输出高电平,PS:我量过的。否则就是低电平。如果输入信号达到门限电压,它就读到1,如果拉低到0电平,它读到的数据就是0。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;匠人大哥的**要求IO口在输入状态时是高阻态,比如P60,P61在输入态,P62是输出1,使电容放电,那电容还接一个VCC,然后P60,P62输入态,P61是输出0电平,使VCC对电容充电,然后P62读到数据是0后,充电结束。如果是51单片机的话,P60,P62作输入态,那必须先置1,(否则如果来的是高电平,它会读成0。),那就是输出高电平了,这样就没办法,P62永远读不到0。我是在网吧里。图只能将就了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我在军校的实验室里,里面东西不能拷出来,更不能上网,出来上网要走一个小时,各位高手同情小弟一下,指点指点。
 楼主| 路在何方 发表于 2008-7-19 18:53 | 显示全部楼层

郁闷

我很郁闷。难道没人能教教我吗
alongman 发表于 2008-7-19 21:11 | 显示全部楼层

一直想看看这本书.P62能否读到0,应该与R2,R3分压

有关.其实P61是0啊,不是下拉电平了吗?其实不管怎样的方法都是看外部RC的充或放电时间.只要你灵活掌握了这个,如何测,由你自己决定.这种方法精度不会高,需要能软件或电路消除不同芯片转换电平的差别,不能稳定的参数最好不要出现在结果计算中.
程序匠人 发表于 2008-7-19 23:34 | 显示全部楼层

传统的51芯片IO口不适合做这个功能

因为其IO口不能设置输入输出。也就没办法做到高阻态。<br />适合的芯片包括(但不限于):PIC、EMC、HT。等等。。。
何工 发表于 2008-7-20 01:06 | 显示全部楼层

~~~

51芯片的P0口不是高阻态的吗?不加上拉电阻,输出1时,P0口悬空啊.
chunyang 发表于 2008-7-20 12:37 | 显示全部楼层

51的标准IO确实无法实现

&nbsp;&nbsp;&nbsp;&nbsp;原因不是高阻问题,而是驱动能力太弱,尤其是高电平输出全靠片内上拉电阻实现,跟输入态没什么两样,如此,充电时间不仅非常长,放电时间更是极长,根本没法用,就是P0口也意义不大。不过现在不少51的IO都是增强型的,具有20mA上下拉能力和高阻态,当然理论上也就可以用这个“歪招”了,只是这类51大多带有片内AD,如此招数也就没有用武之地了。<br />&nbsp;&nbsp;&nbsp;匠人的这招,对很多廉价台系RISC&nbsp;MCU而言是很有价值的,所谓“便宜到家”,追求的就是这个。
aceice 发表于 2008-7-21 10:22 | 显示全部楼层

看到这一节,也有疑问

测量的充放电时间是IO口从一个门限电平到另外一个门限电平的时间,关键是门限电平不会是0~Vcc啊!也就是测量的值应该是小于实际值的。<br />那这个值怎么确定?是要用软件修正吗?<br />便宜到家不是什么好事,虽然有利于抢占市场,但是对技术不见得有利。我比较欣赏Sony的精品战略(不知道现在是不是)
nkguodalu 发表于 2008-7-21 10:34 | 显示全部楼层

刚入门的还是别研究这些了。

<br />规规矩矩把正常电路做好就不错了。<br /><br />底子不踏实就研究这些“歪门邪道”,小心以后走火入魔。<br /><br />还是练好了少林拳,再琢磨怎么耍辟邪剑吧。<br />
程序匠人 发表于 2008-7-21 10:42 | 显示全部楼层

要看具体应用了

一般来说,这种方法,测个室温什么的,还是可以的
gyt 发表于 2008-7-21 12:05 | 显示全部楼层

51也可以用类似的简易方法

就是精度同样差一些
fist84 发表于 2008-7-21 15:46 | 显示全部楼层

ww

22
xzhenggen 发表于 2008-7-22 17:26 | 显示全部楼层

上个星期六到拱北书城逛一圈,买了一本匠人手记.

为什么像程序匠人这样的高手都用VB写上位机程序,而不用VC呢?是不是就像匠人习惯用汇编一样,简洁,但却繁琐.看到汇编就头晕.现在最好用的上位机程序软件LABVIEW,建议匠人用一用,比用VB强多了.
程序匠人 发表于 2008-7-22 17:29 | 显示全部楼层

因为只会用VB嘛,呵呵

  
quakegod 发表于 2008-7-23 01:30 | 显示全部楼层

偶做的这个比匠人的复杂些

原理类似,用的元件多些,IO管脚少些,<br />但是能做到12位分辨率。不过电容要用校正电容才行。<br />当然,做到12位分辨率是因为测量的结果是对数的。<br />偶将这个电路用到了音量指示发光条上,太合适了,<br />因为那个也是需要对数的,连转换都省了,性能超过普通10位AD,<br />而且对数的AD还真的不好找呢。<br />
quakegod 发表于 2008-7-23 02:11 | 显示全部楼层

这是电路图

这个图是偶说的那个电路的主体部分,显示驱动没再画出来<br />主芯片使用的是89C2051,然后同时显示4路声音的音量<br />用了1片LM324进行峰值滤波,<br />用了1片LM339进行4路比较,<br />使用了单片机的INT0中断,还有4个输入输出IO和1个控制IO<br />如果只是1路的话,可以不用那4个输入输出IO.<br />工作原理是这样,首先控制IO&nbsp;P3.7输出低电平,<br />这样Q301导通,对C303进行充电,足够长的时间后,认为充电已经完成,稳定了。<br />4个输入输出IO可以对任何几路进行屏蔽,也可以采集那几路的状态。<br />转换开始,P3.7输出高电平,Q301关断,C303通过R303放电。<br />偶们知道,电容通过电阻放电的曲线是一个对数曲线<br />τ=RC=0.1u*1.3K=0.00013S=130uS<br />Ut=U0*e^(-t/τ),每过130uS电压降为原来的36.7879%<br />经过8.3τ后,电压降为原来的0.0249%,即1/4023.约12位分辨率<br />经历时间130*8.3=1079uS.<br />在电容上电压逐渐降低过程中,如果从高于其中允许的一路的电压变为低于,那么比较器就会翻转,然后就会触发INT0中断,这时读取计数值,就可计算得知那一路的电压值。<br /><br /><br />
quakegod 发表于 2008-7-23 02:30 | 显示全部楼层

继续

误差分析<br />首先电阻和电容的精度直接影响系统的精度,<br />电阻误差1%的很好找,但是千分之一的精度很不好找,电容就更难找了,<br />好在并不要求他们两个都很精确,只要他们两个的乘积精确就可以了<br />所以电容用低温漂的校正电容,电阻用可调电阻<br />然后从输入端输入标准信号进行校正,校正后封死或换上固定电阻<br />另外,比较器的失调电压也会影响精度,<br />不过好在,比较器的最大失调电压才2mV,<br />约为5V电源电压的1/2500,只影响1位精度<br />另外比较器的输入偏置电流为25nA,在1.3K电阻上形成的压降只有32.5uV,4个比较器加在一起也只有130uV的电压,可以忽略不计。<br />还有一个就是定时准确度<br />单片机时钟为24MHz,晶震精度至少100PPM,可以忽略不计<br />关键在于程序上的中断反映时间。<br />1个机器周期为0.5uS,中断反映时间最大误差为8个机器周期,即4uS<br />e^4/τ=e^4/130=e^0.030769=1.0312.误差约3%,但是这个3%不是最大量程的3%,而是当前采样的3%,因为是对数采样,<br />即,如果计算结果是4V,那么误差就是3%,即0.12V,<br />&nbsp;&nbsp;&nbsp;&nbsp;如果计算结果是400mV,那么误差也是3%,即12mV<br />所以对精度没有影响,只有计时误差达到总时间1079的1/12时,即90uS才会影响1位分辨率.误差50%.<br />对于其他误差,比如前级的峰值滤波,还有电源电压波动等,在这里暂不做分析
程序匠人 发表于 2008-7-23 08:34 | 显示全部楼层

quakegod: 你把第14到16楼的贴整理一下,就可得裤子一条

quakegod:&nbsp;你把第14到16楼的贴整理在一起,就可得裤子一条
pheavecn 发表于 2008-7-23 08:46 | 显示全部楼层

用了这么多lm324/lm339,弄个sigma-delta多好。

1个IO就可以支持sigma-delta测量了。
yewuyi 发表于 2008-7-23 08:48 | 显示全部楼层

51的话加个三极管就可以做了

效果差不多,做的好的话,可以做到12BIT的分辨率
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

7

帖子

0

粉丝

4

主题

7

帖子

0

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