佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1700|回复: 16

PIC16F873 + LM335..temperature sensor

[复制链接]
发表于 14-11-2006 05:16 PM | 显示全部楼层 |阅读模式
想问问LM335 是怎样让PIC16F873读到他的温度?

[ 本帖最后由 pic 于 11-3-2007 09:09 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 15-11-2006 09:21 AM | 显示全部楼层
原帖由 w0t3rf15h 于 14-11-2006 05:16 PM 发表
想问问LM335 是怎样让PIC16F873读到他的温度?

简单的是接去PIC16F873的A/D。
从A/D的Value转换去温度。
回复

使用道具 举报

 楼主| 发表于 15-11-2006 01:55 PM | 显示全部楼层
原帖由 pic 于 15-11-2006 09:21 AM 发表

简单的是接去PIC16F873的A/D。
从A/D的Value转换去温度。


可以说明白点吗?
我打算用pt2272来传送温度(4bits signal only)
就好象1'c=0000  2'c=0001 酱。
然后用pt2262来接收再把0000换回1'c。
现在问题是我不懂把temperature换去binary number.
回复

使用道具 举报

发表于 16-11-2006 01:18 AM | 显示全部楼层
原帖由 w0t3rf15h 于 15-11-2006 01:55 PM 发表


可以说明白点吗?
我打算用pt2272来传送温度(4bits signal only)
就好象1'c=0000  2'c=0001 酱。
然后用pt2262来接收再把0000换回1'c。
现在问题是我不懂把temperature换去binary number.

由于lm335 return 的是voltage, 是analog value. mcu不能直接用analog value来进行运算。所以用adc---> analog to digital converter,就是把analog value换去binary value. pic 有内建10bit adc.你可以直接拿来用。 把lm335接去pic 的 adc.然后写一些program就可以了。
回复

使用道具 举报

发表于 16-11-2006 10:10 AM | 显示全部楼层
原帖由 w0t3rf15h 于 15-11-2006 01:55 PM 发表
我打算用pt2272来传送温度(4bits signal only)
就好象1'c=0000  2'c=0001 酱。
然后用pt2262来接收再把0000换回1'c。

你要做无线传输?你要用4bit?0000-1111 那只有16个组合而已。。。

最好可以把整个应用和功能在一开始就讲清楚,越清楚越能帮到你自己, 大家的回复也越精确, 不要用猜的。
回复

使用道具 举报

 楼主| 发表于 16-11-2006 04:28 PM | 显示全部楼层
原帖由 fritlizt 于 16-11-2006 01:18 AM 发表

由于lm335 return 的是voltage, 是analog value. mcu不能直接用analog value来进行运算。所以用adc---> analog to digital converter,就是把analog value换去binary value. pic 有内建10bit adc.你可以直接拿 ...


那我需要用到74HC4066吗?
8analogue input 换成 4个output.


"把analog value换去binary value. pic 有内建10bit adc."
那我要怎样弄到
IF 30'
THEN output=0000 .....
IF 31'
THEN output=0001

[ 本帖最后由 w0t3rf15h 于 16-11-2006 07:09 PM 编辑 ]
回复

使用道具 举报

Follow Us
发表于 18-11-2006 01:41 PM | 显示全部楼层
原帖由 w0t3rf15h 于 16-11-2006 04:28 PM 发表


那我需要用到74HC4066吗?
8analogue input 换成 4个output.


"把analog value换去binary value. pic 有内建10bit adc."
那我要怎样弄到
IF 30'
THEN output=0000 .....
IF 31'
THEN output=0001

其实我不是很懂你要问的是什么。我当作你要把analog 换去0000,0001,等的signal,然后再传输出去。
你要output = 0000,0001,0010,0011到1111.不过pic是10bit resolution.有1024个level. 要convert 去16个level,这就要看program了。。。看你的要求如何, 再program.
回复

使用道具 举报

 楼主| 发表于 18-11-2006 04:28 PM | 显示全部楼层
原帖由 fritlizt 于 18-11-2006 01:41 PM 发表

其实我不是很懂你要问的是什么。我当作你要把analog 换去0000,0001,等的signal,然后再传输出去。
你要output = 0000,0001,0010,0011到1111.不过pic是10bit resolution.有1024个level. 要convert 去16个leve ...



对对,我就是要把analog 换去0000,0001,等的signal,然后再传输出去。LM334每 10mV=1degree 。pic16F873 是0-5v, 5/1024=5mv precision.
要怎样convert 去16个level这我就不懂了。
是不是说如果我要300k,那就减掉temperature300k with 300 then get B'0000' 酱?
回复

使用道具 举报


ADVERTISEMENT

发表于 19-11-2006 11:06 AM | 显示全部楼层
原帖由 w0t3rf15h 于 18-11-2006 04:28 PM 发表



对对,我就是要把analog 换去0000,0001,等的signal,然后再传输出去。LM334每 10mV=1degree 。pic16F873 是0-5v, 5/1024=5mv precision.
要怎样convert 去16个level这我就不懂了。
是不是说如果我要300 ...



用return value作comparison.
1024/16 = 64

0-63 = 0000
64-127 = 0001
128 - 191 = 0010




960 - 1023 = 1111

我能想到的是这个办法。
可能还有其他办法。
回复

使用道具 举报

 楼主| 发表于 19-11-2006 03:08 PM | 显示全部楼层
原帖由 fritlizt 于 19-11-2006 11:06 AM 发表



用return value作comparison.
1024/16 = 64

0-63 = 0000
64-127 = 0001
128 - 191 = 0010




960 - 1023 = 1111

我能想到的是这个办法。
可能还有其他办法。


越来越乱了,
问题又回到当初,
当sensor output 1mV=1'c 要怎样让他=0-63level --->0000?
可以写一段mplab program 吗?
我想酱就比较容易明白了。
我是pic超级新手,
pai sheh
回复

使用道具 举报

发表于 19-11-2006 04:35 PM | 显示全部楼层
原帖由 w0t3rf15h 于 19-11-2006 03:08 PM 发表


越来越乱了,
问题又回到当初,
当sensor output 1mV=1'c 要怎样让他=0-63level --->0000?
可以写一段mplab program 吗?
我想酱就比较容易明白了。
我是pic超级新手,
pai sheh


可不可以让pic只拿bit 6到bit 9,bit 0到bit 5 don't care
就是拿 1111000000 AND bbbbbbbbbb,然后就会变成 bbbb000000
再rotate right6次
这方法可以吗?

我只用过8051而已
回复

使用道具 举报

 楼主| 发表于 22-11-2006 11:31 AM | 显示全部楼层
现在我的receiver input 用 rb0-rb3,再用rc6  as output connect to max232 T1in. 想问问如何让max232 T1out 输出hex number.

换句话说,要怎样把input rbo-rb3  =0000 --->rc6 output D'1'
                 =0001 --->rc6 output D'2'
                 .......................

我酱做对吗?
错的话请纠正。
project 就要交了
><
回复

使用道具 举报

 楼主| 发表于 23-11-2006 10:38 PM | 显示全部楼层

回复 #12 w0t3rf15h 的帖子

用ADCon得到的result store in ADRESH 和 ADRESL.
分成两个那我要怎样懂它的result?
还有要怎样把两个加起来?mean ADRESH+ADRESL=RESULT(我就是要这个result)
回复

使用道具 举报

发表于 24-11-2006 07:28 AM | 显示全部楼层
原帖由 w0t3rf15h 于 23-11-2006 10:38 PM 发表
用ADCon得到的result store in ADRESH 和 ADRESL.
分成两个那我要怎样懂它的result?
还有要怎样把两个加起来?mean ADRESH+ADRESL=RESULT(我就是要这个result)


ADRESH应该是 high byte吧, ADRESL是 low byte, 总共 16bit
那么 result 就是 ADRESH ADRESL
比如说 ADRESH = 03 H, ADRESL = B8 H
Result = 03B8 H
回复

使用道具 举报

 楼主| 发表于 24-11-2006 02:48 PM | 显示全部楼层
原帖由 bomber27 于 24-11-2006 07:28 AM 发表


ADRESH应该是 high byte吧, ADRESL是 low byte, 总共 16bit
那么 result 就是 ADRESH ADRESL
比如说 ADRESH = 03 H, ADRESL = B8 H
Result = 03B8 H


还有要怎样把两个加起来,
我要用那个result.
result*0.48828125=value i wan to use.
回复

使用道具 举报

 楼主| 发表于 24-11-2006 02:59 PM | 显示全部楼层

回复 #15 w0t3rf15h 的帖子

1.当我的base receive data 时,
RB0-RB3 用成input.
RB6 as output.
想知道input 0000-1111
4bits 要怎样用一个output 输出?

2.输出的bits我要用max232把他传进pc.
  把0000=22'c 等等。
  又怎样做?
 
解决这我的project就完成了,
小第在此感谢曾帮过我的你们。
^^ tqtq.......
回复

使用道具 举报


ADVERTISEMENT

发表于 27-12-2006 09:34 AM | 显示全部楼层
原帖由 w0t3rf15h 于 24-11-2006 02:59 PM 发表
1.当我的base receive data 时,
RB0-RB3 用成input.
RB6 as output.
想知道input 0000-1111
4bits 要怎样用一个output 输出?

2.输出的bits我要用max232把他传进pc.
  把0000=22'c 等等。
  又 ...



PIC 是可以set number of bits 的, 就是说你要10bits ADC, 8 bits ADC.

如果你是用C language, 那就很容易了。。。

只要把你所Convert 的 value, output 去其中一个output PORT, 如:PORTB, 那就用LEDS 来检查他的output, 再做一些 Calibration,

再用C language 来调整一下:

if (value==0x07)
temperature = 10;
elseif (value==0x06)
temperature =9;

so on so forth..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2024 05:55 PM , Processed in 0.182426 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表