MAX6675无法实时更新数据

时间:2021-08-30 14:54:31
        最近在使用热电偶,采用K型热电偶数据采集芯片MAX6675,上电后,发现数据是不变的,但是断电重启之后,数据才会更新,而此刻这个数据应该是可以反应当前温度的变化。
        我增大采样间隔时间也是不行,不知道是怎样的原因,请各位大神帮我分析分析。

10 个解决方案

#1


这个芯片只有在CS为高的时候,才进行温度转换,检查程序是否在读完数据后,让cs变高

#2


引用 1 楼 worldy 的回复:
这个芯片只有在CS为高的时候,才进行温度转换,检查程序是否在读完数据后,让cs变高

在程序中,一次转换完毕之后,CS确定为0,而且在Proteus中仿真的可以了。

#3


引用 1 楼 worldy 的回复:
这个芯片只有在CS为高的时候,才进行温度转换,检查程序是否在读完数据后,让cs变高

以下是我写的程序:
/***************************************************************************************/
void Max6675_Init(void)
{
  T_CS=1;
  T_CLK=0;
}
/***************************************************************************************/
uint Read_Max6675(void)
{
 uint date;
 uchar i;
 uchar k;
 T_CS=0;
 Delay(20);
 for(i=16;i>0;i--)
 {
  Delay(20);
  T_CLK=1;
  Delay(20);
  k=T_SO;
  date|=(k<<(i-1));
  k=0;
  T_CLK=0;
  Delay(20);
 }
 T_CS=1;
 T_CLK=0;
 return(date);
}
/***************************************************************************************/
float Max6675_Process(uint date)
{
 float value;
 date&=0x7fff;
 date>>=3;
 value=date*0.25;
 return (value);
}
/***************************************************************************************

#4


引用 2 楼 wxh751117 的回复:
Quote: 引用 1 楼 worldy 的回复:

这个芯片只有在CS为高的时候,才进行温度转换,检查程序是否在读完数据后,让cs变高

在程序中,一次转换完毕之后,CS确定为0,而且在Proteus中仿真的可以了。

打错了,确定为1

#5


T-要接地

 T_CS=1;
 T_CLK=0;
这两句顺序应该对调,
 T_CLK=0;
_nop_();
 T_CS=1;

另外延时不需要那么长时间

#6


引用 5 楼 worldy 的回复:
T-要接地

 T_CS=1;
 T_CLK=0;
这两句顺序应该对调,
 T_CLK=0;
_nop_();
 T_CS=1;

另外延时不需要那么长时间

问题终于解决了,软件没有太大的 问题,解决的办法是:加更大的采样间隔时间,就可以了。

#7


恭喜lz MAX6675无法实时更新数据

#8


大家好!我的MAX6675 低位不正常。室温,就显示125左右。
怎么解决,我的是 500MS 读一次温度。

#9


需要您的帮助QQ2032897425   读取温度不稳定       

#10


楼主能程序发给我一份吗?我也遇到了同样的问题......

#1


这个芯片只有在CS为高的时候,才进行温度转换,检查程序是否在读完数据后,让cs变高

#2


引用 1 楼 worldy 的回复:
这个芯片只有在CS为高的时候,才进行温度转换,检查程序是否在读完数据后,让cs变高

在程序中,一次转换完毕之后,CS确定为0,而且在Proteus中仿真的可以了。

#3


引用 1 楼 worldy 的回复:
这个芯片只有在CS为高的时候,才进行温度转换,检查程序是否在读完数据后,让cs变高

以下是我写的程序:
/***************************************************************************************/
void Max6675_Init(void)
{
  T_CS=1;
  T_CLK=0;
}
/***************************************************************************************/
uint Read_Max6675(void)
{
 uint date;
 uchar i;
 uchar k;
 T_CS=0;
 Delay(20);
 for(i=16;i>0;i--)
 {
  Delay(20);
  T_CLK=1;
  Delay(20);
  k=T_SO;
  date|=(k<<(i-1));
  k=0;
  T_CLK=0;
  Delay(20);
 }
 T_CS=1;
 T_CLK=0;
 return(date);
}
/***************************************************************************************/
float Max6675_Process(uint date)
{
 float value;
 date&=0x7fff;
 date>>=3;
 value=date*0.25;
 return (value);
}
/***************************************************************************************

#4


引用 2 楼 wxh751117 的回复:
Quote: 引用 1 楼 worldy 的回复:

这个芯片只有在CS为高的时候,才进行温度转换,检查程序是否在读完数据后,让cs变高

在程序中,一次转换完毕之后,CS确定为0,而且在Proteus中仿真的可以了。

打错了,确定为1

#5


T-要接地

 T_CS=1;
 T_CLK=0;
这两句顺序应该对调,
 T_CLK=0;
_nop_();
 T_CS=1;

另外延时不需要那么长时间

#6


引用 5 楼 worldy 的回复:
T-要接地

 T_CS=1;
 T_CLK=0;
这两句顺序应该对调,
 T_CLK=0;
_nop_();
 T_CS=1;

另外延时不需要那么长时间

问题终于解决了,软件没有太大的 问题,解决的办法是:加更大的采样间隔时间,就可以了。

#7


恭喜lz MAX6675无法实时更新数据

#8


大家好!我的MAX6675 低位不正常。室温,就显示125左右。
怎么解决,我的是 500MS 读一次温度。

#9


需要您的帮助QQ2032897425   读取温度不稳定       

#10


楼主能程序发给我一份吗?我也遇到了同样的问题......