K热电偶的 MAX6675 数据高位丢失,难道是假货?
本帖最后由 yiminglei_2 于 2015-7-15 00:12 编辑刚刚接触MAX6675,发现个问题请教大家,谢谢:
发现个奇怪的问题,通过GPIO读MAX6675,读回来的12位温度数据只有低7位,高5位数据始终为0,导致转换后的温度只能到31度,再高一点就从0开始了。
如果把热电偶开路,则读回来的16位数据为:0111 1111 1111 1101,这个数据是正常的,也即能够识别到热电偶开路,温度数据全为1。
如果把热电偶短路,则显示的是常温(24-26度)。
我反复查看过软件,不会存在变量范围的问题,因为每个比特位都是通过GPIO一个一个读出来看的。
因此感觉MAX6675没有把温度数据的高5位输出,难道是假货?大家有没有遇到这样的情况?谢谢!
以下是读取MAX6675的代码:
u16 MAX6675_Read(void)
{
u16 res=0,s=0;
u32 i;
MAX6675_CLR_CS();
delay_us(50);
s=MAX6675_SO_READ();
printf("0-%d\r\n",s);
if(s == 1)
{
res++;
}
delay_us(50);
for(i=1;i<16;i++)
{
MAX6675_SET_SCK();
delay_us(50);
MAX6675_CLR_SCK();
delay_us(50);
res<<=1;
s=MAX6675_SO_READ();
printf("%d-%d\r\n",i,s);
if(s == 1)
{
res++;
}
delay_us(50);
}
MAX6675_SET_CS();
return (res);
} 如果把热电偶开路,则读回来的16位数据为:0111 1111 1111 1101,这个数据是
正常?
开路应该是是室温的吧 本帖最后由 yiminglei_2 于 2015-7-19 00:39 编辑
找到问题了,可能因为MAX6675使用了DC-DC电源,104离太远了,在芯片旁放一个就好了。。。 几钱买的? xiaobendan 发表于 2015-7-19 08:07
几钱买的?
15元/片。。。 这么贵,应该不是假的吧。我看到X宝有5块多的,不知道能用不。
看到普通仪表还是用运放做比较便宜,省钱。 yiminglei_2 发表于 2015-7-19 00:30
找到问题了,可能因为MAX6675使用了DC-DC电源,104离太远了,在芯片旁放一个就好了。。。 ...
您用的6675应该跟31855是一类的吧,我现在读出来的值全是0或者全是1,可能是没有读出来。难道也是电容的位置问题?我电容放的挺近的了。 {:shocked:}{:sweat:}
页:
[1]