求助关于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) 没人回答,自己顶了 自己顶下,看到的请帮助回答下,谢谢啦。 用过ads1230
你有没有读过后面自校准的时序?
好像内置数字滤波器,前几个值没有滤波。 这个没有,不过我感觉还是复位的问题。
我试试看。谢谢指点。 回复【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的输出数据,示波器看到的数据和单片机采集的一致,所以复位后采集数据异常不应该是单片机读取错误造成的。 回复【5楼】hxf1978
-----------------------------------------------------------------------
会不会是ADS1232/4不适合做便携式仪表啊,因为手持式仪表需要频繁开关机。而ADS1232/4datasheet上又没说自己适合做仪表,只说适用于称重、应力、压力、工业过程控制等领域,好像这几个方面都不需要频繁开关机啊,真不想放弃啊,但现在又解决不了问题。 回复【6楼】hxf1978
-----------------------------------------------------------------------
自己顶一个! 回复【7楼】hxf1978
-----------------------------------------------------------------------
http://cache.amobbs.com/bbs_upload782111/files_36/ourdev_618155HVXBS3.jpg
ads1234应用原理图 (原文件名:ads1234应用原理图.jpg) 回复【8楼】hxf1978
---------------------------------------------------------------------
刚才实验楼一下,发现当ads1234输出数据异常的时候,把pdwn脚拉低一次,无法使ads1234回复正常,只有把电源拉低一下(接地,数字电源管脚悬空无效,ads1234依然能够工作),它才能恢复正常的采样工作。看来pdwn无法使得芯片复位,只有强行把DVDD拉低,测量了一下,拉低电流为60多毫安,远远大于其正常工作电流。。 刚才实验楼一下,发现当ads1234输出数据异常的时候,把pdwn脚拉低一次,无法使ads1234回复正常,只有把电源拉低一下(即强行接地,模拟管脚供电时数字电源管脚悬空无效,ads1234依然能够工作。如果把模拟电源管脚也断电,其它数字管脚如A0,A1,speed gain clck等拉低,这数字电源管脚和数据输出管脚依然有1V左右的电平,很奇怪哪里来的电压?),它才能恢复正常的采样工作。看来pdwn无法使得芯片复位,只有强行把DVDD拉低,测量了一下,拉低电流为60多毫安,远远大于其正常工作电流。。
也就是说只有ads1234把数字电源管脚DVDD管脚强行拉低才能使其恢复正常工作,拉低pdwn无效。 兄弟,你也出现在这里啊? 是啊,没办法啊,有解决办法时别忘了告诉兄弟一声,多谢了,我看以前有人问过这个问题啊,你可以在百度里搜下几年前就有人问这个问题了,即ads1232的箝位问题,里面还有他的联系邮箱和qq,不知道他现在有解决的办法了没有? 兄弟,问题已经解决了,就是机子开机时要做做一次自校正就可以了,即发26个脉冲让芯片完成偏移校正,资料上有。 回复【13楼】hxf1978
-----------------------------------------------------------------------
ads1232使用笔记纯属误导。另外ads1232资料上给的信息也不够明确,估计还会有很多人在这里栽跟头。 兄弟,顶死你 回复【楼主位】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);
} 0x80表示负数,即24位最高位如果是1,表示是负数。反之,最高位是0则表示是正数,资料上有。
读数完全取决于你的输入电压。参考电压如果为5V,则测量范围为正负2.5V
0xffxxxx表示负的比较小的数,0x00xxxx表示是正的较小的数,说明你很可能没有输入电压 回复【17楼】hxf1978
-----------------------------------------------------------------------
此外,你的程序里面好像没有寻找ADC输出管脚下降沿的动作,那样才能开始输入时钟信号,adc芯片才输出数据,不然,结果肯定错。不知道是不是你的寻找下降沿的动作在别的地方? 兄弟,没话讲了,顶死你。 回复【16楼】aidby2004
-----------------------------------------------------------------------
如楼上所说,最高位1就是负的,最高位为0就是正的,也就是说,他的负数是补码方式存储。 设置完第一个读出的数据是要丢弃的, 回复【21楼】marshallemon
-----------------------------------------------------------------------
第一个数据我是没用!我这样做的!
吧采集到的数据,分三个八位数据发送到串口
从串口调试助手上看到的结果始终是这样的
程序方面三种时序全试过了
以为是硬件的问题
我前后测试了三块板子
全是一样的结果晕死了 回复【22楼】aidby2004
-----------------------------------------------------------------------
用过ADS1242/1243,没有遇到你所说的问题,但每次启动后与上次是有点诧异的,但诧异不大,但我遇到是和楼上一位的问题差不多,数据受到干扰后会出错,出错后必须重新加电,并且中间要停10s左右。
另外你是用IO模拟的吗?什么单片机? 回复【23楼】marshallemon
-----------------------------------------------------------------------
我用的是STC12C5A60S2单片机!
ADS1232的控制端口全部采用单片机IO口控制的!
这个做了很久了
一直卡在这里了
那个急啊....... 回复【23楼】marshallemon
-----------------------------------------------------------------------
我即使采用别人调试听过的代码,都是STC的单片机,晶振大小也是一样的11.0592MHz的,一样的代码!
结果照样是这样的
真的是奇怪了 .... 这个问题我建议你最好先去掉你的传感器,接入一个固定的电压值,然后复位看下, 我不知道你现在的情况如何,你描述的也不是很清楚,你现在读到的数据情况是怎么样的?是一成不变还是最高位是0x00或者0xFF,确定读取的时候高低位没有弄反?如果有问题,可以联系我QQ:120987843 回复【27楼】liuxing7851
-----------------------------------------------------------------------
现在的情况是:能读到数据,但是比较奇怪的数据,传感器放在那不动的时候得到的数据是 0xff faxx这样的,但是无论 你压传感器还是拉传感器,都是这样的,这样我也没办法确定ADS1232到底是不是正常工作了! 回复【26楼】marshallemon
-----------------------------------------------------------------------
我这样试过了,我直接把输入端接地!但是还是能读到很大的数据!没办法确定ADS1232到底是不是正常工作了 首先确认是否硬件上有问题,最好上原理图,读取数据的时候要等待DOUT信号,如果DOUT是正常工作的,那么可以判断芯片正常工作了,如果没有问题,那么就可以判定是ADS1232坏了,我也遇到过这个问题,不管是静置还是施力,都是超量程(即输出最大值),所以可以确定是ADS1232是坏了。 回复【30楼】liuxing7851
-----------------------------------------------------------------------
我重新焊接了块板子!正准备测试!
这是我焊接的第四块板子了啊晕
你的初始化流程是什么样的啊?
通道的设置、增益的选择,速度的选择之类的,在初始化的时候他们分先后顺序吗? 初始化话的时候是不分先后的,但是在初始化参数时,一定要PDWN=0x00,然后设置参数,最后再PDWN=0x01,注意,在设置参数时,加上点延时,因为PDWN在置位和复位之间需要延时。完后,再校准一次,就是发26个SCLK脉冲,这个datasheet上有,最后再读取几笔数据,去掉不要(不稳定),就行了 回复【32楼】liuxing7851
-----------------------------------------------------------------------
奇怪的现象啊
http://cache.amobbs.com/bbs_upload782111/files_37/ourdev_622756D0W9F1.jpg
采集到的数据 (原文件名:2011-03-15_170147.jpg) 这个问题,传感器的方向本来就是人为设置的,未必就是你认为的正向就是正向,负向就是负向,既然上拉是增大,那么可以认为你方向弄错了,反过来就行了。 回复【34楼】liuxing7851
-----------------------------------------------------------------------
但是输出的数据不对啊!应该是0x7f xx xx和0x80 xx xx啊 ... 数据的确不对,原理图贴上来看看,还有确认ADS1232是否损坏,我也碰到过类似问题,最后确认是AD芯片损坏。 回复【36楼】liuxing7851
-----------------------------------------------------------------------
这是第四片ADS1232了前三片是在TI申请的,不会这么容易坏把? 回复【36楼】liuxing7851
-----------------------------------------------------------------------
电路图
http://cache.amobbs.com/bbs_upload782111/files_37/ourdev_622854RUQY2I.jpg
电路图 (原文件名:ADS1232.jpg) to:aidby2004
晶振上20pF的电容需要么? 回复【39楼】li0713
-----------------------------------------------------------------------
?????
难道可以不要吗?
这个会对ADS1232有什么影响吗? 回复【39楼】aidby2004
-----------------------------------------------------------------------晶振上20pF的电容不需要 必须得接上晶振么?不接可不可以? 求助关于ADS1232的复位使用问题
[复制链接]
你好,能把你这个的程序发我一份吗?我正在学这块,想参考参考你的程序,非常感谢你。我的QQ邮箱530080904
页:
[1]