liuxing7851 发表于 2011-2-14 10:12:44

求助关于ADS1232的复位使用问题

请教各位大虾:
有谁玩过ADS1232?我现在有个问题,每次复位后,读数都不一样,比如这次复位后,读数是123.47,传感器不动,读数不变,但是关掉电源,传感器维持现状,重新启动后,读数就是145.35,每次重新复位后,就变了,主芯片是STC10F08XE,看了网上的ADS1232使用笔记,说是在复位后,设置参数前(GAIN,SPEED等参数),要将PDWN置低,然后设置参数,参数设置好后,然后将PDWN拉高,这样就好了,但是我的板子GAIN,SPEED这些参数都是由板子固定的,就是直接接地了,并不用我代码设置,此时如何复位呢?我在复位后,用代码先将PDWN置低,然后延时一段时间,再将PDWN拉高,无效。
急,谢谢!

部分原理图如下,ADS1232只有PDWN,DOUT,SCLK是连接在单片机芯片上由自己控制的。
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_615910LILJJY.jpg
ADS1232部分原理图 (原文件名:ADS1232.jpg)

liuxing7851 发表于 2011-2-14 11:25:43

没人回答,自己顶了

liuxing7851 发表于 2011-2-14 21:54:53

自己顶下,看到的请帮助回答下,谢谢啦。

ssaweee 发表于 2011-2-14 23:56:07

用过ads1230

你有没有读过后面自校准的时序?
好像内置数字滤波器,前几个值没有滤波。

liuxing7851 发表于 2011-2-15 08:31:26

这个没有,不过我感觉还是复位的问题。
我试试看。谢谢指点。

hxf1978 发表于 2011-2-24 11:31:47

回复【4楼】liuxing7851
-----------------------------------------------------------------------

我最近在使用ADS1234这款芯片,和ADS1232是一样的,只是多了两个输入通道。和你碰到的问题一样。第一批ads1234芯片没有发现频繁开关机(使用的是LPC2214)时会引起ads1234输出数据异常(有时是正当极大值,有时是负担极小值,有时是不大不小的值,即使差分输入管脚短接),第二批芯片却频繁会出现开关机时采集数据异常。现象是:正常采集时从不会出现采集数据异常,当频繁开关机时出现采集数据异常且无法自动恢复正常,只有关机几秒后重新开机才能恢复正常,如果马上开机还是会异常。
其中PDWN,Gain1,Gain2,speed均由LPC2214管脚控制,看了网上的ADS1232使用笔记后,把pdwn管脚用2k电阻下拉,以防arm复位时PDWN为高电平(因为arm复位时IO口默认为输入,阻抗较高)。ARM复位重启后首先把PDWN,Gain等管脚初始化为低,speed初始化为高,然后延时一定时间再把PDWN拉高。关机时,把PDWN先拉低,延迟几百毫秒后关机。感觉程序没有大问题,困扰了好几个月了。我的联系方式hanxiufu@xgxc.com,hxf1978@sohu.com
曾经把Gain0 Gain1管脚直接接地,SPEED直接接高电平,输入短接,也不管用,依然会出现频繁开关机时采集数据异常。怀疑是不是这次采购的芯片是劣质产品,但我们领导说应该不会,不知道怎么办了。(设计电路为参照ADS1234datasheet把模拟电源接5V,数字电源接3.3V。模拟参考电源接5V。接收数据是用LPC2214 的普通IO口模拟串口数据线。)

其它奇怪现象总结: 1 关机3-6秒后再开机可恢复正常,当关机之前把PDWN拉低10秒再关机后重启数据依然异常 2 当手碰到电路板且摇晃人体时频繁开关机很容易出现数据异常,一个姿势保持不动不易出现异常,屡试不爽,怀疑是静电干扰所致 3 当出现异常时,这时用示波器地线夹接触电路地时,采集数据有时会突然恢复正常,而如果示波器一直连接电路板,而频繁开关机出现采集数据异常时,不会自动恢复正常,必须撤掉示波器探头再接上采集数据才会恢复正常。
如果一旦频繁开关机出现采集数据异常,那么数据大小比较稳定,基本不变,只有小数点第二位在变,而且很有规律,出现的总是那3-5组异常数据,即2.5V,-2.5V,或零点几伏(没具体换算)等。datasheet上说拉低pdwn会把ADS1234从锁定状态恢复正常,但现在看不是那么回事啊
曾经用示波器观察过ADS1234的输出数据,示波器看到的数据和单片机采集的一致,所以复位后采集数据异常不应该是单片机读取错误造成的。

hxf1978 发表于 2011-2-24 11:38:10

回复【5楼】hxf1978
-----------------------------------------------------------------------

会不会是ADS1232/4不适合做便携式仪表啊,因为手持式仪表需要频繁开关机。而ADS1232/4datasheet上又没说自己适合做仪表,只说适用于称重、应力、压力、工业过程控制等领域,好像这几个方面都不需要频繁开关机啊,真不想放弃啊,但现在又解决不了问题。

hxf1978 发表于 2011-2-24 11:38:38

回复【6楼】hxf1978
-----------------------------------------------------------------------

自己顶一个!

hxf1978 发表于 2011-2-24 11:52:19

回复【7楼】hxf1978
-----------------------------------------------------------------------

http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_618155HVXBS3.jpg
ads1234应用原理图 (原文件名:ads1234应用原理图.jpg)

hxf1978 发表于 2011-3-1 11:18:27

回复【8楼】hxf1978
---------------------------------------------------------------------

刚才实验楼一下,发现当ads1234输出数据异常的时候,把pdwn脚拉低一次,无法使ads1234回复正常,只有把电源拉低一下(接地,数字电源管脚悬空无效,ads1234依然能够工作),它才能恢复正常的采样工作。看来pdwn无法使得芯片复位,只有强行把DVDD拉低,测量了一下,拉低电流为60多毫安,远远大于其正常工作电流。。

hxf1978 发表于 2011-3-1 11:26:53

刚才实验楼一下,发现当ads1234输出数据异常的时候,把pdwn脚拉低一次,无法使ads1234回复正常,只有把电源拉低一下(即强行接地,模拟管脚供电时数字电源管脚悬空无效,ads1234依然能够工作。如果把模拟电源管脚也断电,其它数字管脚如A0,A1,speed gain clck等拉低,这数字电源管脚和数据输出管脚依然有1V左右的电平,很奇怪哪里来的电压?),它才能恢复正常的采样工作。看来pdwn无法使得芯片复位,只有强行把DVDD拉低,测量了一下,拉低电流为60多毫安,远远大于其正常工作电流。。
也就是说只有ads1234把数字电源管脚DVDD管脚强行拉低才能使其恢复正常工作,拉低pdwn无效。

liuxing7851 发表于 2011-3-1 12:17:00

兄弟,你也出现在这里啊?

hxf1978 发表于 2011-3-1 12:45:29

是啊,没办法啊,有解决办法时别忘了告诉兄弟一声,多谢了,我看以前有人问过这个问题啊,你可以在百度里搜下几年前就有人问这个问题了,即ads1232的箝位问题,里面还有他的联系邮箱和qq,不知道他现在有解决的办法了没有?

hxf1978 发表于 2011-3-1 17:08:18

兄弟,问题已经解决了,就是机子开机时要做做一次自校正就可以了,即发26个脉冲让芯片完成偏移校正,资料上有。

hxf1978 发表于 2011-3-1 17:10:05

回复【13楼】hxf1978
-----------------------------------------------------------------------

ads1232使用笔记纯属误导。另外ads1232资料上给的信息也不够明确,估计还会有很多人在这里栽跟头。

liuxing7851 发表于 2011-3-8 14:58:42

兄弟,顶死你

aidby2004 发表于 2011-3-9 16:22:01

回复【楼主位】liuxing7851
-----------------------------------------------------------------------

兄弟!能否请教你个问题啊!
你用的 是什么传感器啊?
我用的力值采集的传感器按ADS1232的文档里面是编码是偏移二级制编码:
0x7f 和0x80可以用来判断方向
力值传感器拉的时候最高八位是0x7f的话,那么压的时候就应该是0x80
但是我现在采集的得到的最高八位的值分别是0x00和0xff
这是何故啊?
难道是读函数的问题?
能否把你的读函数程序分享下啊?
我采用的是STC12C5A60S2单片机
以下是我的读程序
uchar ReadAdcData()
{
        uchar i=0;
        uchar Data=0x00;       
        for(i=0;i<8;i++)
        {
                Data<<=1;       
                Sclk=1;
                if(Dout==1)                {Data=Data+1;}       
                Sclk=0;       
        }
        Sclk=1;
        Sclk=0;
        return(Data);       
}

hxf1978 发表于 2011-3-11 11:01:58

0x80表示负数,即24位最高位如果是1,表示是负数。反之,最高位是0则表示是正数,资料上有。

读数完全取决于你的输入电压。参考电压如果为5V,则测量范围为正负2.5V

0xffxxxx表示负的比较小的数,0x00xxxx表示是正的较小的数,说明你很可能没有输入电压

hxf1978 发表于 2011-3-11 11:04:37

回复【17楼】hxf1978
-----------------------------------------------------------------------

此外,你的程序里面好像没有寻找ADC输出管脚下降沿的动作,那样才能开始输入时钟信号,adc芯片才输出数据,不然,结果肯定错。不知道是不是你的寻找下降沿的动作在别的地方?

liuxing7851 发表于 2011-3-11 14:17:25

兄弟,没话讲了,顶死你。

liuxing7851 发表于 2011-3-11 14:20:24

回复【16楼】aidby2004
-----------------------------------------------------------------------

如楼上所说,最高位1就是负的,最高位为0就是正的,也就是说,他的负数是补码方式存储。

marshallemon 发表于 2011-3-11 14:24:18

设置完第一个读出的数据是要丢弃的,

aidby2004 发表于 2011-3-12 23:32:05

回复【21楼】marshallemon
-----------------------------------------------------------------------

第一个数据我是没用!我这样做的!
吧采集到的数据,分三个八位数据发送到串口
从串口调试助手上看到的结果始终是这样的
程序方面三种时序全试过了
以为是硬件的问题
我前后测试了三块板子
全是一样的结果晕死了

marshallemon 发表于 2011-3-13 11:18:01

回复【22楼】aidby2004
-----------------------------------------------------------------------

用过ADS1242/1243,没有遇到你所说的问题,但每次启动后与上次是有点诧异的,但诧异不大,但我遇到是和楼上一位的问题差不多,数据受到干扰后会出错,出错后必须重新加电,并且中间要停10s左右。
另外你是用IO模拟的吗?什么单片机?

aidby2004 发表于 2011-3-13 11:34:07

回复【23楼】marshallemon
-----------------------------------------------------------------------

我用的是STC12C5A60S2单片机!
ADS1232的控制端口全部采用单片机IO口控制的!
这个做了很久了
一直卡在这里了
那个急啊.......

aidby2004 发表于 2011-3-13 11:35:27

回复【23楼】marshallemon
-----------------------------------------------------------------------

我即使采用别人调试听过的代码,都是STC的单片机,晶振大小也是一样的11.0592MHz的,一样的代码!
结果照样是这样的
真的是奇怪了 ....

marshallemon 发表于 2011-3-13 22:16:50

这个问题我建议你最好先去掉你的传感器,接入一个固定的电压值,然后复位看下,

liuxing7851 发表于 2011-3-14 08:57:23

我不知道你现在的情况如何,你描述的也不是很清楚,你现在读到的数据情况是怎么样的?是一成不变还是最高位是0x00或者0xFF,确定读取的时候高低位没有弄反?如果有问题,可以联系我QQ:120987843

aidby2004 发表于 2011-3-14 22:48:33

回复【27楼】liuxing7851
-----------------------------------------------------------------------

现在的情况是:能读到数据,但是比较奇怪的数据,传感器放在那不动的时候得到的数据是 0xff faxx这样的,但是无论 你压传感器还是拉传感器,都是这样的,这样我也没办法确定ADS1232到底是不是正常工作了!

aidby2004 发表于 2011-3-14 22:50:07

回复【26楼】marshallemon
-----------------------------------------------------------------------

我这样试过了,我直接把输入端接地!但是还是能读到很大的数据!没办法确定ADS1232到底是不是正常工作了

liuxing7851 发表于 2011-3-15 11:29:37

首先确认是否硬件上有问题,最好上原理图,读取数据的时候要等待DOUT信号,如果DOUT是正常工作的,那么可以判断芯片正常工作了,如果没有问题,那么就可以判定是ADS1232坏了,我也遇到过这个问题,不管是静置还是施力,都是超量程(即输出最大值),所以可以确定是ADS1232是坏了。

aidby2004 发表于 2011-3-15 14:39:48

回复【30楼】liuxing7851
-----------------------------------------------------------------------

我重新焊接了块板子!正准备测试!
这是我焊接的第四块板子了啊晕

你的初始化流程是什么样的啊?
通道的设置、增益的选择,速度的选择之类的,在初始化的时候他们分先后顺序吗?

liuxing7851 发表于 2011-3-15 15:04:50

初始化话的时候是不分先后的,但是在初始化参数时,一定要PDWN=0x00,然后设置参数,最后再PDWN=0x01,注意,在设置参数时,加上点延时,因为PDWN在置位和复位之间需要延时。完后,再校准一次,就是发26个SCLK脉冲,这个datasheet上有,最后再读取几笔数据,去掉不要(不稳定),就行了

aidby2004 发表于 2011-3-15 17:05:17

回复【32楼】liuxing7851
-----------------------------------------------------------------------

奇怪的现象啊
http://cache.amobbs.com/bbs_upload782111/files_37/ourdev_622756D0W9F1.jpg
采集到的数据 (原文件名:2011-03-15_170147.jpg)

liuxing7851 发表于 2011-3-15 18:22:33

这个问题,传感器的方向本来就是人为设置的,未必就是你认为的正向就是正向,负向就是负向,既然上拉是增大,那么可以认为你方向弄错了,反过来就行了。

aidby2004 发表于 2011-3-15 22:52:35

回复【34楼】liuxing7851
-----------------------------------------------------------------------

但是输出的数据不对啊!应该是0x7f xx xx和0x80 xx xx啊 ...

liuxing7851 发表于 2011-3-16 08:12:59

数据的确不对,原理图贴上来看看,还有确认ADS1232是否损坏,我也碰到过类似问题,最后确认是AD芯片损坏。

aidby2004 发表于 2011-3-16 08:14:58

回复【36楼】liuxing7851
-----------------------------------------------------------------------

这是第四片ADS1232了前三片是在TI申请的,不会这么容易坏把?

aidby2004 发表于 2011-3-16 08:49:49

回复【36楼】liuxing7851
-----------------------------------------------------------------------

电路图
http://cache.amobbs.com/bbs_upload782111/files_37/ourdev_622854RUQY2I.jpg
电路图 (原文件名:ADS1232.jpg)

li0713 发表于 2011-4-1 23:08:38

to:aidby2004

晶振上20pF的电容需要么?

aidby2004 发表于 2011-4-28 16:04:47

回复【39楼】li0713
-----------------------------------------------------------------------

?????
难道可以不要吗?
这个会对ADS1232有什么影响吗?

fujun888 发表于 2011-6-2 19:46:15

回复【39楼】aidby2004
-----------------------------------------------------------------------晶振上20pF的电容不需要

king000 发表于 2011-11-22 13:05:58

必须得接上晶振么?不接可不可以?

zoujunhua502 发表于 2013-8-15 18:10:50

求助关于ADS1232的复位使用问题
[复制链接]            
你好,能把你这个的程序发我一份吗?我正在学这块,想参考参考你的程序,非常感谢你。我的QQ邮箱530080904
页: [1]
查看完整版本: 求助关于ADS1232的复位使用问题