2016-01-24 75 views
1

我想用lm35溫度傳感器和xbee傳感器計算遠程位置的實際溫度。我正從傳感器獲得模擬輸入,但我無法計算溫度。完整的場景如下。將溫度傳感器的讀數轉換爲與XBee連接

場景:

我已連接LM35溫度傳感器的XBee(考慮感測節點)pin0該模數轉換器(ADC)和採樣率是4秒。同樣,我有另一個XBee作爲協調器,它接受來自xbee感應節點的值。協調器通過TX和RX引腳連接到BeagleBone的UART-4。我用python-xbee python庫從串口讀取,即UART-4。我成功地從遠程xbee獲取模擬值。但我無法從接收到的模擬值計算溫度。

樣本幀哪我接收

{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 469, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 468, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 470, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 183, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 178, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 180, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 177, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 183, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 183, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 166, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 166, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'} 
 
{'source_addr_long': '\x00\x13\xa2\[email protected]\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 166, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}

注:

ADC-0是我已連接tempreture傳感器遠程的XBee的銷。

adc-1是我連接溼度傳感器的遠程xbee引腳。

adc-2是我連接CO2傳感器的遠程xbee引腳。

如何計算實際溫度? (當前溫度約爲16〜18)

回答

1

傳感器文檔應該提供一個將電壓轉換爲溫度和溼度的公式。

您可以將ADC讀數轉換爲電壓將讀數乘以參考電壓,然後除以1023。您不會指出您使用的是哪個XBee模塊,因此您必須檢查數據表中的參考電壓 - 它可能位於其中一個引腳上,或者可能是某個固定值。

從Google搜索中,我看到LM35產生的電壓爲每攝氏度10 mV。 182/1023 = 0.178如果您的參考電壓是1V,那麼這是17.8C。

溼度計算將類似。關鍵是將ADC讀數轉換爲電壓,然後將其插入數據表中提供的公式中。

+0

什麼是1023? –

+0

它是0x3FF,即ADC讀數的最大值。用它除以讀數得到參考電壓的百分比。 – tomlogic

+0

感謝@tomlogic,真的很有用!你能告訴我如何將溼度模擬值轉換爲實際百分比?我的第二個參數是溼度,對於上述樣品,溼度幾乎恆定爲466。 –