查看: 1699|回复: 16
|
PIC16F873 + LM335..temperature sensor
[复制链接]
|
|
想问问LM335 是怎样让PIC16F873读到他的温度?
[ 本帖最后由 pic 于 11-3-2007 09:09 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 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 编辑 ] |
|
|
|
|
|
|
|
发表于 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' 酱? |
|
|
|
|
|
|
|
发表于 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....... |
|
|
|
|
|
|
|
发表于 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.. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|